== 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@37ae08f7, [path=hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-quantity-kpi-service/internal/data-snapshot/10000002108/0_1_10000002108], Overwrite
(3) LogicalRelation
Arguments: parquet, [product#142980, plant#142981, orderDateTime#142982, planningStartDateTime#142983], false
(4) RepartitionByExpression
Arguments: [product#142980, plant#142981], 25
(5) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982]
(6) LogicalRelation
Arguments: parquet, [systemId#142985, internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992], false
(7) Repartition
Arguments: 25, true
(8) Project
Arguments: [systemId#142985, internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992, struct(systemId, systemId#142985, internalUUID, internalUUID#142986, plant, plant#142987, product, product#142988, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#142989, productionAspect, productionAspect#142990, salesPlant, salesPlant#142991, listing, listing#142992) AS productPlant#142994]
(9) Project
Arguments: [productPlant#142994]
(10) Join
Arguments: LeftOuter, ((product#142980 <=> productPlant#142994.product.internalRefUUID) AND (plant#142981 <=> productPlant#142994.plant.internalRefUUID))
(11) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994]
(12) SubqueryAlias
Arguments: wl
(13) LogicalRelation
Arguments: parquet, [systemId#142997, internalUUID#142998, id#142999, displayId#143000, name#143001, category#143002, companyCode#143003, address#143004, mainDistributionChain#143005, mainPurchasingOrganization#143006, validPurchasingOrganizations#143007, productGroup#143008], false
(14) Repartition
Arguments: 25, true
(15) Project
Arguments: [internalUUID#142998, address#143004.timeZone.code AS timezonecode#143009]
(16) Join
Arguments: LeftOuter, (plant#142981 <=> internalUUID#142998)
(17) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, internalUUID#142998, CASE WHEN isnotnull(timezonecode#143009) THEN timezonecode#143009 ELSE UTC END AS timezonecode#143012]
(18) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012]
(19) LogicalRelation
Arguments: parquet, [systemId#143013, internalUUID#143014, id#143015, displayId#143016, name#143017, baseUnitOfMeasure#143018, unitOfMeasures#143019, unitOfMeasureConversions#143020, productionAspect#143021, salesAspect#143022, procurementAspect#143023, productGroup#143024], false
(20) Repartition
Arguments: 25, true
(21) Join
Arguments: LeftOuter, (product#142980 = internalUUID#143014)
(22) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, systemId#143013, internalUUID#143014, id#143015, displayId#143016, name#143017, baseUnitOfMeasure#143018, unitOfMeasures#143019, unitOfMeasureConversions#143020, productionAspect#143021, salesAspect#143022, procurementAspect#143023, productGroup#143024, filter(unitOfMeasureConversions#143020, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#142994.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#142994.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143018.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143018.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143026]
(23) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143026.quantityNumerator), true, [quantityNumerator#143034]
(24) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, systemId#143013, internalUUID#143014, id#143015, displayId#143016, name#143017, baseUnitOfMeasure#143018, unitOfMeasures#143019, unitOfMeasureConversions#143020, productionAspect#143021, salesAspect#143022, procurementAspect#143023, productGroup#143024, filteredUnitOfMeasureConversions#143026, quantityNumerator#143034]
(25) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143026.quantityDenominator), true, [quantityDenominator#143037]
(26) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, systemId#143013, internalUUID#143014, id#143015, displayId#143016, name#143017, baseUnitOfMeasure#143018, unitOfMeasures#143019, unitOfMeasureConversions#143020, productionAspect#143021, salesAspect#143022, procurementAspect#143023, productGroup#143024, filteredUnitOfMeasureConversions#143026, quantityNumerator#143034, quantityDenominator#143037]
(27) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, systemId#143013, internalUUID#143014, id#143015, displayId#143016, name#143017, baseUnitOfMeasure#143018, unitOfMeasures#143019, unitOfMeasureConversions#143020, productionAspect#143021, salesAspect#143022, procurementAspect#143023, productGroup#143024, filteredUnitOfMeasureConversions#143026, quantityNumerator#143034, quantityDenominator#143037, (cast(quantityNumerator#143034 as double) / cast(quantityDenominator#143037 as double)) AS outboundUnit#143038]
(28) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, systemId#143013, internalUUID#143014, id#143015, displayId#143016, name#143017, baseUnitOfMeasure#143018, unitOfMeasures#143019, unitOfMeasureConversions#143020, productionAspect#143021, salesAspect#143022, procurementAspect#143023, productGroup#143024, filteredUnitOfMeasureConversions#143026, quantityNumerator#143034, quantityDenominator#143037, CASE WHEN (isnull(outboundUnit#143038) OR (outboundUnit#143038 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#143038 END AS outboundUnit#143039]
(29) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039]
(30) LogicalRelation
Arguments: parquet, [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081], false
(31) Repartition
Arguments: 25, true
(32) LogicalRelation
Arguments: parquet, [marketUnit#143040, description#143041, articleHierarchy#143042, defaultCurrency#143043, responsibilities#143044, replenishmentTypes#143045, distributionCenters#143046, assignedArticleHierarchyNodes#143047, minOrderQtySetting#143048, listingCheck#143049, odsSelection#143050, demandProfiles#143051, constraintProfiles#143052, optimizationProfiles#143053, orderGroupSplitProfiles#143054, supplierMinimumProfiles#143055, multipleRestrictionProfiles#143056, preferredUomSource#143057, handlingOfUnfulfilledDemands#143058, negligibleQuantitiesThreshold#143059, eventtype#143060, minOrderQtySettingInternal#143061], false
(33) Repartition
Arguments: 25, true
(34) Filter
Arguments: (marketUnit#143040 <=> Daily_grocery)
(35) Project
Arguments: [marketUnit#143040, description#143041, articleHierarchy#143042, defaultCurrency#143043, responsibilities#143044, replenishmentTypes#143045, distributionCenters#143046, assignedArticleHierarchyNodes#143047, minOrderQtySetting#143048, listingCheck#143049, odsSelection#143050, demandProfiles#143051, constraintProfiles#143052, optimizationProfiles#143053, orderGroupSplitProfiles#143054, supplierMinimumProfiles#143055, multipleRestrictionProfiles#143056, preferredUomSource#143057, handlingOfUnfulfilledDemands#143058, negligibleQuantitiesThreshold#143059, eventtype#143060, minOrderQtySettingInternal#143061]
(36) Project
Arguments: [distributionCenters#143046]
(37) Generate
Arguments: explode(distributionCenters#143046), false, [distributionCenters#143064]
(38) Project
Arguments: [distributionCenters#143064]
(39) Generate
Arguments: explode(distributionCenters#143064.storageLocations), false, [storageLocations#143071]
(40) Project
Arguments: [distributionCenters#143064.id AS plantId#143065, distributionCenters#143064.internalRefUUID AS plantUuid#143066, storageLocations#143071]
(41) Project
Arguments: [plantId#143065, plantUuid#143066, storageLocations#143071.id AS storageLocId#143072, storageLocations#143071.internalRefUUID AS storageLocUuid#143073]
(42) LogicalRelation
Arguments: parquet, [product#143336, plant#143337, orderDateTime#143338, planningStartDateTime#143339], false
(43) RepartitionByExpression
Arguments: [product#143336, plant#143337], 25
(44) Project
Arguments: [product#143336, plant#143337, orderDateTime#143338]
(45) LogicalRelation
Arguments: parquet, [systemId#143340, internalUUID#143341, plant#143342, product#143343, blockedForReplenishmentStartingFrom#143344, productionAspect#143345, salesPlant#143346, listing#143347], false
(46) Repartition
Arguments: 25, true
(47) Project
Arguments: [systemId#143340, internalUUID#143341, plant#143342, product#143343, blockedForReplenishmentStartingFrom#143344, productionAspect#143345, salesPlant#143346, listing#143347, struct(systemId, systemId#143340, internalUUID, internalUUID#143341, plant, plant#143342, product, product#143343, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143344, productionAspect, productionAspect#143345, salesPlant, salesPlant#143346, listing, listing#143347) AS productPlant#143348]
(48) Project
Arguments: [productPlant#143348]
(49) Join
Arguments: LeftOuter, ((product#143336 <=> productPlant#143348.product.internalRefUUID) AND (plant#143337 <=> productPlant#143348.plant.internalRefUUID))
(50) Project
Arguments: [product#143336, plant#143337, orderDateTime#143338, productPlant#143348]
(51) SubqueryAlias
Arguments: wl
(52) LogicalRelation
Arguments: parquet, [systemId#143349, internalUUID#143350, id#143351, displayId#143352, name#143353, category#143354, companyCode#143355, address#143356, mainDistributionChain#143357, mainPurchasingOrganization#143358, validPurchasingOrganizations#143359, productGroup#143360], false
(53) Repartition
Arguments: 25, true
(54) Project
Arguments: [internalUUID#143350, address#143356.timeZone.code AS timezonecode#143361]
(55) Join
Arguments: LeftOuter, (plant#143337 <=> internalUUID#143350)
(56) Project
Arguments: [product#143336, plant#143337, orderDateTime#143338, productPlant#143348, internalUUID#143350, CASE WHEN isnotnull(timezonecode#143361) THEN timezonecode#143361 ELSE UTC END AS timezonecode#143362]
(57) Project
Arguments: [product#143336, plant#143337, orderDateTime#143338, productPlant#143348, timezonecode#143362]
(58) LogicalRelation
Arguments: parquet, [systemId#143363, internalUUID#143364, id#143365, displayId#143366, name#143367, baseUnitOfMeasure#143368, unitOfMeasures#143369, unitOfMeasureConversions#143370, productionAspect#143371, salesAspect#143372, procurementAspect#143373, productGroup#143374], false
(59) Repartition
Arguments: 25, true
(60) Join
Arguments: LeftOuter, (product#143336 = internalUUID#143364)
(61) Project
Arguments: [product#143336, plant#143337, orderDateTime#143338, productPlant#143348, timezonecode#143362, systemId#143363, internalUUID#143364, id#143365, displayId#143366, name#143367, baseUnitOfMeasure#143368, unitOfMeasures#143369, unitOfMeasureConversions#143370, productionAspect#143371, salesAspect#143372, procurementAspect#143373, productGroup#143374, filter(unitOfMeasureConversions#143370, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143348.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143348.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143368.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143368.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143375]
(62) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143375.quantityNumerator), true, [quantityNumerator#143376]
(63) Project
Arguments: [product#143336, plant#143337, orderDateTime#143338, productPlant#143348, timezonecode#143362, systemId#143363, internalUUID#143364, id#143365, displayId#143366, name#143367, baseUnitOfMeasure#143368, unitOfMeasures#143369, unitOfMeasureConversions#143370, productionAspect#143371, salesAspect#143372, procurementAspect#143373, productGroup#143374, filteredUnitOfMeasureConversions#143375, quantityNumerator#143376]
(64) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143375.quantityDenominator), true, [quantityDenominator#143377]
(65) Project
Arguments: [product#143336, plant#143337, orderDateTime#143338, productPlant#143348, timezonecode#143362, systemId#143363, internalUUID#143364, id#143365, displayId#143366, name#143367, baseUnitOfMeasure#143368, unitOfMeasures#143369, unitOfMeasureConversions#143370, productionAspect#143371, salesAspect#143372, procurementAspect#143373, productGroup#143374, filteredUnitOfMeasureConversions#143375, quantityNumerator#143376, quantityDenominator#143377]
(66) Project
Arguments: [product#143336, plant#143337, orderDateTime#143338, productPlant#143348, timezonecode#143362, systemId#143363, internalUUID#143364, id#143365, displayId#143366, name#143367, baseUnitOfMeasure#143368, unitOfMeasures#143369, unitOfMeasureConversions#143370, productionAspect#143371, salesAspect#143372, procurementAspect#143373, productGroup#143374, filteredUnitOfMeasureConversions#143375, quantityNumerator#143376, quantityDenominator#143377, (cast(quantityNumerator#143376 as double) / cast(quantityDenominator#143377 as double)) AS outboundUnit#143378]
(67) Project
Arguments: [product#143336, plant#143337, orderDateTime#143338, productPlant#143348, timezonecode#143362, systemId#143363, internalUUID#143364, id#143365, displayId#143366, name#143367, baseUnitOfMeasure#143368, unitOfMeasures#143369, unitOfMeasureConversions#143370, productionAspect#143371, salesAspect#143372, procurementAspect#143373, productGroup#143374, filteredUnitOfMeasureConversions#143375, quantityNumerator#143376, quantityDenominator#143377, CASE WHEN (isnull(outboundUnit#143378) OR (outboundUnit#143378 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#143378 END AS outboundUnit#143379]
(68) Project
Arguments: [product#143336, plant#143337, orderDateTime#143338, productPlant#143348, timezonecode#143362, outboundUnit#143379]
(69) Project
Arguments: [plant#143337]
(70) Deduplicate
Arguments: [plant#143337]
(71) Join
Arguments: Inner, (plantUuid#143066 = plant#143337)
(72) Project
Arguments: [plantId#143065, plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
(73) Join
Arguments: Inner, (plant#143079.internalRefUUID <=> plantUuid#143066)
(74) Generate
Arguments: explode(filter(stockQuantities#143081, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143073) AND (lambda x#143085.storageLocation.Id = storageLocId#143072)), lambda x#143085, false))), false, [stockQuantity#143086]
(75) Project
Arguments: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, plantId#143065, plantUuid#143066, storageLocId#143072, storageLocUuid#143073, stockQuantity#143086]
(76) Aggregate
Arguments: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076], [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076, first(calculationDateTime#143080, false) AS calculationDateTime#143087, collect_list(stockQuantity#143086, 0, 0) AS stockQuantities#143088]
(77) Project
Arguments: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143087, stockQuantities#143088]
(78) Generate
Arguments: explode(stockQuantities#143088), false, [stockQuantity#143103]
(79) Project
Arguments: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143087, stockQuantities#143088, stockQuantity#143103]
(80) Project
Arguments: [plant#143079.id AS plant#143104, plant#143079.internalRefUUID AS plantUuid#143105, product#143078.id AS product#143106, product#143078.internalRefUUID AS productUuid#143107, calculationDateTime#143087, stockQuantity#143103.storagelocation.id AS storageLocId#143108, stockQuantity#143103.storagelocation.internalRefUUID AS storageLocUuid#143109, stockQuantity#143103.quantity.measure AS quantity#143110, stockQuantity#143103.specialStockIndicator.code AS specialStockIndicator#143111, stockQuantity#143103.stockType.code AS stockType#143112]
(81) Filter
Arguments: ((specialStockIndicator#143111 = ) AND (stockType#143112 = 01))
(82) LogicalRelation
Arguments: parquet, [product#143122, plant#143123, orderDateTime#143124, planningStartDateTime#143125], false
(83) RepartitionByExpression
Arguments: [product#143122, plant#143123], 25
(84) Project
Arguments: [product#143122, plant#143123, orderDateTime#143124]
(85) LogicalRelation
Arguments: parquet, [systemId#143126, internalUUID#143127, plant#143128, product#143129, blockedForReplenishmentStartingFrom#143130, productionAspect#143131, salesPlant#143132, listing#143133], false
(86) Repartition
Arguments: 25, true
(87) Project
Arguments: [systemId#143126, internalUUID#143127, plant#143128, product#143129, blockedForReplenishmentStartingFrom#143130, productionAspect#143131, salesPlant#143132, listing#143133, struct(systemId, systemId#143126, internalUUID, internalUUID#143127, plant, plant#143128, product, product#143129, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143130, productionAspect, productionAspect#143131, salesPlant, salesPlant#143132, listing, listing#143133) AS productPlant#143134]
(88) Project
Arguments: [productPlant#143134]
(89) Join
Arguments: LeftOuter, ((product#143122 <=> productPlant#143134.product.internalRefUUID) AND (plant#143123 <=> productPlant#143134.plant.internalRefUUID))
(90) Project
Arguments: [product#143122, plant#143123, orderDateTime#143124, productPlant#143134]
(91) SubqueryAlias
Arguments: wl
(92) LogicalRelation
Arguments: parquet, [systemId#143135, internalUUID#143136, id#143137, displayId#143138, name#143139, category#143140, companyCode#143141, address#143142, mainDistributionChain#143143, mainPurchasingOrganization#143144, validPurchasingOrganizations#143145, productGroup#143146], false
(93) Repartition
Arguments: 25, true
(94) Project
Arguments: [internalUUID#143136, address#143142.timeZone.code AS timezonecode#143147]
(95) Join
Arguments: LeftOuter, (plant#143123 <=> internalUUID#143136)
(96) Project
Arguments: [product#143122, plant#143123, orderDateTime#143124, productPlant#143134, internalUUID#143136, CASE WHEN isnotnull(timezonecode#143147) THEN timezonecode#143147 ELSE UTC END AS timezonecode#143148]
(97) Project
Arguments: [product#143122, plant#143123, orderDateTime#143124, productPlant#143134, timezonecode#143148]
(98) LogicalRelation
Arguments: parquet, [systemId#143149, internalUUID#143150, id#143151, displayId#143152, name#143153, baseUnitOfMeasure#143154, unitOfMeasures#143155, unitOfMeasureConversions#143156, productionAspect#143157, salesAspect#143158, procurementAspect#143159, productGroup#143160], false
(99) Repartition
Arguments: 25, true
(100) Join
Arguments: LeftOuter, (product#143122 = internalUUID#143150)
(101) Project
Arguments: [product#143122, plant#143123, orderDateTime#143124, productPlant#143134, timezonecode#143148, systemId#143149, internalUUID#143150, id#143151, displayId#143152, name#143153, baseUnitOfMeasure#143154, unitOfMeasures#143155, unitOfMeasureConversions#143156, productionAspect#143157, salesAspect#143158, procurementAspect#143159, productGroup#143160, filter(unitOfMeasureConversions#143156, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143134.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143134.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143154.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143154.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143161]
(102) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143161.quantityNumerator), true, [quantityNumerator#143162]
(103) Project
Arguments: [product#143122, plant#143123, orderDateTime#143124, productPlant#143134, timezonecode#143148, systemId#143149, internalUUID#143150, id#143151, displayId#143152, name#143153, baseUnitOfMeasure#143154, unitOfMeasures#143155, unitOfMeasureConversions#143156, productionAspect#143157, salesAspect#143158, procurementAspect#143159, productGroup#143160, filteredUnitOfMeasureConversions#143161, quantityNumerator#143162]
(104) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143161.quantityDenominator), true, [quantityDenominator#143163]
(105) Project
Arguments: [product#143122, plant#143123, orderDateTime#143124, productPlant#143134, timezonecode#143148, systemId#143149, internalUUID#143150, id#143151, displayId#143152, name#143153, baseUnitOfMeasure#143154, unitOfMeasures#143155, unitOfMeasureConversions#143156, productionAspect#143157, salesAspect#143158, procurementAspect#143159, productGroup#143160, filteredUnitOfMeasureConversions#143161, quantityNumerator#143162, quantityDenominator#143163]
(106) Project
Arguments: [product#143122, plant#143123, orderDateTime#143124, productPlant#143134, timezonecode#143148, systemId#143149, internalUUID#143150, id#143151, displayId#143152, name#143153, baseUnitOfMeasure#143154, unitOfMeasures#143155, unitOfMeasureConversions#143156, productionAspect#143157, salesAspect#143158, procurementAspect#143159, productGroup#143160, filteredUnitOfMeasureConversions#143161, quantityNumerator#143162, quantityDenominator#143163, (cast(quantityNumerator#143162 as double) / cast(quantityDenominator#143163 as double)) AS outboundUnit#143164]
(107) Project
Arguments: [product#143122, plant#143123, orderDateTime#143124, productPlant#143134, timezonecode#143148, systemId#143149, internalUUID#143150, id#143151, displayId#143152, name#143153, baseUnitOfMeasure#143154, unitOfMeasures#143155, unitOfMeasureConversions#143156, productionAspect#143157, salesAspect#143158, procurementAspect#143159, productGroup#143160, filteredUnitOfMeasureConversions#143161, quantityNumerator#143162, quantityDenominator#143163, CASE WHEN (isnull(outboundUnit#143164) OR (outboundUnit#143164 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#143164 END AS outboundUnit#143165]
(108) Project
Arguments: [product#143122, plant#143123, orderDateTime#143124, productPlant#143134, timezonecode#143148, outboundUnit#143165]
(109) Join
Arguments: Inner, ((plantUuid#143105 = plant#143123) AND (productUuid#143107 = product#143122))
(110) Filter
Arguments: (calculationDateTime#143087 <= orderDateTime#143124)
(111) Project
Arguments: [plantUuid#143105 AS plant#143170, productUuid#143107 AS product#143171, storageLocId#143108, calculationDateTime#143087, quantity#143110]
(112) LogicalRelation
Arguments: parquet, [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184], false
(113) Repartition
Arguments: 25, true
(114) LogicalRelation
Arguments: parquet, [marketUnit#143185, description#143186, articleHierarchy#143187, defaultCurrency#143188, responsibilities#143189, replenishmentTypes#143190, distributionCenters#143191, assignedArticleHierarchyNodes#143192, minOrderQtySetting#143193, listingCheck#143194, odsSelection#143195, demandProfiles#143196, constraintProfiles#143197, optimizationProfiles#143198, orderGroupSplitProfiles#143199, supplierMinimumProfiles#143200, multipleRestrictionProfiles#143201, preferredUomSource#143202, handlingOfUnfulfilledDemands#143203, negligibleQuantitiesThreshold#143204, eventtype#143205, minOrderQtySettingInternal#143206], false
(115) Repartition
Arguments: 25, true
(116) Filter
Arguments: (marketUnit#143185 <=> Daily_grocery)
(117) Project
Arguments: [marketUnit#143185, description#143186, articleHierarchy#143187, defaultCurrency#143188, responsibilities#143189, replenishmentTypes#143190, distributionCenters#143191, assignedArticleHierarchyNodes#143192, minOrderQtySetting#143193, listingCheck#143194, odsSelection#143195, demandProfiles#143196, constraintProfiles#143197, optimizationProfiles#143198, orderGroupSplitProfiles#143199, supplierMinimumProfiles#143200, multipleRestrictionProfiles#143201, preferredUomSource#143202, handlingOfUnfulfilledDemands#143203, negligibleQuantitiesThreshold#143204, eventtype#143205, minOrderQtySettingInternal#143206]
(118) Project
Arguments: [distributionCenters#143191]
(119) Generate
Arguments: explode(distributionCenters#143191), false, [distributionCenters#143207]
(120) Project
Arguments: [distributionCenters#143207]
(121) Generate
Arguments: explode(distributionCenters#143207.storageLocations), false, [storageLocations#143208]
(122) Project
Arguments: [distributionCenters#143207.id AS plantId#143209, distributionCenters#143207.internalRefUUID AS plantUuid#143210, storageLocations#143208]
(123) Project
Arguments: [plantId#143209, plantUuid#143210, storageLocations#143208.id AS storageLocId#143211, storageLocations#143208.internalRefUUID AS storageLocUuid#143212]
(124) LogicalRelation
Arguments: parquet, [product#143213, plant#143214, orderDateTime#143215, planningStartDateTime#143216], false
(125) RepartitionByExpression
Arguments: [product#143213, plant#143214], 25
(126) Project
Arguments: [product#143213, plant#143214, orderDateTime#143215]
(127) LogicalRelation
Arguments: parquet, [systemId#143217, internalUUID#143218, plant#143219, product#143220, blockedForReplenishmentStartingFrom#143221, productionAspect#143222, salesPlant#143223, listing#143224], false
(128) Repartition
Arguments: 25, true
(129) Project
Arguments: [systemId#143217, internalUUID#143218, plant#143219, product#143220, blockedForReplenishmentStartingFrom#143221, productionAspect#143222, salesPlant#143223, listing#143224, struct(systemId, systemId#143217, internalUUID, internalUUID#143218, plant, plant#143219, product, product#143220, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143221, productionAspect, productionAspect#143222, salesPlant, salesPlant#143223, listing, listing#143224) AS productPlant#143225]
(130) Project
Arguments: [productPlant#143225]
(131) Join
Arguments: LeftOuter, ((product#143213 <=> productPlant#143225.product.internalRefUUID) AND (plant#143214 <=> productPlant#143225.plant.internalRefUUID))
(132) Project
Arguments: [product#143213, plant#143214, orderDateTime#143215, productPlant#143225]
(133) SubqueryAlias
Arguments: wl
(134) LogicalRelation
Arguments: parquet, [systemId#143226, internalUUID#143227, id#143228, displayId#143229, name#143230, category#143231, companyCode#143232, address#143233, mainDistributionChain#143234, mainPurchasingOrganization#143235, validPurchasingOrganizations#143236, productGroup#143237], false
(135) Repartition
Arguments: 25, true
(136) Project
Arguments: [internalUUID#143227, address#143233.timeZone.code AS timezonecode#143238]
(137) Join
Arguments: LeftOuter, (plant#143214 <=> internalUUID#143227)
(138) Project
Arguments: [product#143213, plant#143214, orderDateTime#143215, productPlant#143225, internalUUID#143227, CASE WHEN isnotnull(timezonecode#143238) THEN timezonecode#143238 ELSE UTC END AS timezonecode#143239]
(139) Project
Arguments: [product#143213, plant#143214, orderDateTime#143215, productPlant#143225, timezonecode#143239]
(140) LogicalRelation
Arguments: parquet, [systemId#143240, internalUUID#143241, id#143242, displayId#143243, name#143244, baseUnitOfMeasure#143245, unitOfMeasures#143246, unitOfMeasureConversions#143247, productionAspect#143248, salesAspect#143249, procurementAspect#143250, productGroup#143251], false
(141) Repartition
Arguments: 25, true
(142) Join
Arguments: LeftOuter, (product#143213 = internalUUID#143241)
(143) Project
Arguments: [product#143213, plant#143214, orderDateTime#143215, productPlant#143225, timezonecode#143239, systemId#143240, internalUUID#143241, id#143242, displayId#143243, name#143244, baseUnitOfMeasure#143245, unitOfMeasures#143246, unitOfMeasureConversions#143247, productionAspect#143248, salesAspect#143249, procurementAspect#143250, productGroup#143251, filter(unitOfMeasureConversions#143247, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143225.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143225.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143245.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143245.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143252]
(144) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143252.quantityNumerator), true, [quantityNumerator#143253]
(145) Project
Arguments: [product#143213, plant#143214, orderDateTime#143215, productPlant#143225, timezonecode#143239, systemId#143240, internalUUID#143241, id#143242, displayId#143243, name#143244, baseUnitOfMeasure#143245, unitOfMeasures#143246, unitOfMeasureConversions#143247, productionAspect#143248, salesAspect#143249, procurementAspect#143250, productGroup#143251, filteredUnitOfMeasureConversions#143252, quantityNumerator#143253]
(146) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143252.quantityDenominator), true, [quantityDenominator#143254]
(147) Project
Arguments: [product#143213, plant#143214, orderDateTime#143215, productPlant#143225, timezonecode#143239, systemId#143240, internalUUID#143241, id#143242, displayId#143243, name#143244, baseUnitOfMeasure#143245, unitOfMeasures#143246, unitOfMeasureConversions#143247, productionAspect#143248, salesAspect#143249, procurementAspect#143250, productGroup#143251, filteredUnitOfMeasureConversions#143252, quantityNumerator#143253, quantityDenominator#143254]
(148) Project
Arguments: [product#143213, plant#143214, orderDateTime#143215, productPlant#143225, timezonecode#143239, systemId#143240, internalUUID#143241, id#143242, displayId#143243, name#143244, baseUnitOfMeasure#143245, unitOfMeasures#143246, unitOfMeasureConversions#143247, productionAspect#143248, salesAspect#143249, procurementAspect#143250, productGroup#143251, filteredUnitOfMeasureConversions#143252, quantityNumerator#143253, quantityDenominator#143254, (cast(quantityNumerator#143253 as double) / cast(quantityDenominator#143254 as double)) AS outboundUnit#143255]
(149) Project
Arguments: [product#143213, plant#143214, orderDateTime#143215, productPlant#143225, timezonecode#143239, systemId#143240, internalUUID#143241, id#143242, displayId#143243, name#143244, baseUnitOfMeasure#143245, unitOfMeasures#143246, unitOfMeasureConversions#143247, productionAspect#143248, salesAspect#143249, procurementAspect#143250, productGroup#143251, filteredUnitOfMeasureConversions#143252, quantityNumerator#143253, quantityDenominator#143254, CASE WHEN (isnull(outboundUnit#143255) OR (outboundUnit#143255 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#143255 END AS outboundUnit#143256]
(150) Project
Arguments: [product#143213, plant#143214, orderDateTime#143215, productPlant#143225, timezonecode#143239, outboundUnit#143256]
(151) Project
Arguments: [plant#143214]
(152) Deduplicate
Arguments: [plant#143214]
(153) Join
Arguments: Inner, (plantUuid#143210 = plant#143214)
(154) Project
Arguments: [plantId#143209, plantUuid#143210, storageLocId#143211, storageLocUuid#143212]
(155) Join
Arguments: Inner, (plant#143182.internalRefUUID <=> plantUuid#143210)
(156) Generate
Arguments: explode(filter(stockQuantities#143184, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143212) AND (lambda x#143085.storageLocation.Id = storageLocId#143211)), lambda x#143085, false))), false, [stockQuantity#143257]
(157) Project
Arguments: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184, plantId#143209, plantUuid#143210, storageLocId#143211, storageLocUuid#143212, stockQuantity#143257]
(158) Aggregate
Arguments: [plantUuid#143210, internalUUID#143180, plant#143182, product#143181, systemId#143179], [plantUuid#143210, internalUUID#143180, plant#143182, product#143181, systemId#143179, first(calculationDateTime#143183, false) AS calculationDateTime#143258, collect_list(stockQuantity#143257, 0, 0) AS stockQuantities#143259]
(159) Project
Arguments: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143258, stockQuantities#143259]
(160) Generate
Arguments: explode(stockQuantities#143259), false, [stockQuantity#143260]
(161) Project
Arguments: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143258, stockQuantities#143259, stockQuantity#143260]
(162) Project
Arguments: [plant#143182.id AS plant#143261, plant#143182.internalRefUUID AS plantUuid#143262, product#143181.id AS product#143263, product#143181.internalRefUUID AS productUuid#143264, calculationDateTime#143258, stockQuantity#143260.storagelocation.id AS storageLocId#143265, stockQuantity#143260.storagelocation.internalRefUUID AS storageLocUuid#143266, stockQuantity#143260.quantity.measure AS quantity#143267, stockQuantity#143260.specialStockIndicator.code AS specialStockIndicator#143268, stockQuantity#143260.stockType.code AS stockType#143269]
(163) Filter
Arguments: ((specialStockIndicator#143268 = ) AND (stockType#143269 = 01))
(164) LogicalRelation
Arguments: parquet, [product#143270, plant#143271, orderDateTime#143272, planningStartDateTime#143273], false
(165) RepartitionByExpression
Arguments: [product#143270, plant#143271], 25
(166) Project
Arguments: [product#143270, plant#143271, orderDateTime#143272]
(167) LogicalRelation
Arguments: parquet, [systemId#143274, internalUUID#143275, plant#143276, product#143277, blockedForReplenishmentStartingFrom#143278, productionAspect#143279, salesPlant#143280, listing#143281], false
(168) Repartition
Arguments: 25, true
(169) Project
Arguments: [systemId#143274, internalUUID#143275, plant#143276, product#143277, blockedForReplenishmentStartingFrom#143278, productionAspect#143279, salesPlant#143280, listing#143281, struct(systemId, systemId#143274, internalUUID, internalUUID#143275, plant, plant#143276, product, product#143277, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143278, productionAspect, productionAspect#143279, salesPlant, salesPlant#143280, listing, listing#143281) AS productPlant#143282]
(170) Project
Arguments: [productPlant#143282]
(171) Join
Arguments: LeftOuter, ((product#143270 <=> productPlant#143282.product.internalRefUUID) AND (plant#143271 <=> productPlant#143282.plant.internalRefUUID))
(172) Project
Arguments: [product#143270, plant#143271, orderDateTime#143272, productPlant#143282]
(173) SubqueryAlias
Arguments: wl
(174) LogicalRelation
Arguments: parquet, [systemId#143283, internalUUID#143284, id#143285, displayId#143286, name#143287, category#143288, companyCode#143289, address#143290, mainDistributionChain#143291, mainPurchasingOrganization#143292, validPurchasingOrganizations#143293, productGroup#143294], false
(175) Repartition
Arguments: 25, true
(176) Project
Arguments: [internalUUID#143284, address#143290.timeZone.code AS timezonecode#143295]
(177) Join
Arguments: LeftOuter, (plant#143271 <=> internalUUID#143284)
(178) Project
Arguments: [product#143270, plant#143271, orderDateTime#143272, productPlant#143282, internalUUID#143284, CASE WHEN isnotnull(timezonecode#143295) THEN timezonecode#143295 ELSE UTC END AS timezonecode#143296]
(179) Project
Arguments: [product#143270, plant#143271, orderDateTime#143272, productPlant#143282, timezonecode#143296]
(180) LogicalRelation
Arguments: parquet, [systemId#143297, internalUUID#143298, id#143299, displayId#143300, name#143301, baseUnitOfMeasure#143302, unitOfMeasures#143303, unitOfMeasureConversions#143304, productionAspect#143305, salesAspect#143306, procurementAspect#143307, productGroup#143308], false
(181) Repartition
Arguments: 25, true
(182) Join
Arguments: LeftOuter, (product#143270 = internalUUID#143298)
(183) Project
Arguments: [product#143270, plant#143271, orderDateTime#143272, productPlant#143282, timezonecode#143296, systemId#143297, internalUUID#143298, id#143299, displayId#143300, name#143301, baseUnitOfMeasure#143302, unitOfMeasures#143303, unitOfMeasureConversions#143304, productionAspect#143305, salesAspect#143306, procurementAspect#143307, productGroup#143308, filter(unitOfMeasureConversions#143304, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143282.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143282.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143302.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143302.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143309]
(184) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143309.quantityNumerator), true, [quantityNumerator#143310]
(185) Project
Arguments: [product#143270, plant#143271, orderDateTime#143272, productPlant#143282, timezonecode#143296, systemId#143297, internalUUID#143298, id#143299, displayId#143300, name#143301, baseUnitOfMeasure#143302, unitOfMeasures#143303, unitOfMeasureConversions#143304, productionAspect#143305, salesAspect#143306, procurementAspect#143307, productGroup#143308, filteredUnitOfMeasureConversions#143309, quantityNumerator#143310]
(186) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143309.quantityDenominator), true, [quantityDenominator#143311]
(187) Project
Arguments: [product#143270, plant#143271, orderDateTime#143272, productPlant#143282, timezonecode#143296, systemId#143297, internalUUID#143298, id#143299, displayId#143300, name#143301, baseUnitOfMeasure#143302, unitOfMeasures#143303, unitOfMeasureConversions#143304, productionAspect#143305, salesAspect#143306, procurementAspect#143307, productGroup#143308, filteredUnitOfMeasureConversions#143309, quantityNumerator#143310, quantityDenominator#143311]
(188) Project
Arguments: [product#143270, plant#143271, orderDateTime#143272, productPlant#143282, timezonecode#143296, systemId#143297, internalUUID#143298, id#143299, displayId#143300, name#143301, baseUnitOfMeasure#143302, unitOfMeasures#143303, unitOfMeasureConversions#143304, productionAspect#143305, salesAspect#143306, procurementAspect#143307, productGroup#143308, filteredUnitOfMeasureConversions#143309, quantityNumerator#143310, quantityDenominator#143311, (cast(quantityNumerator#143310 as double) / cast(quantityDenominator#143311 as double)) AS outboundUnit#143312]
(189) Project
Arguments: [product#143270, plant#143271, orderDateTime#143272, productPlant#143282, timezonecode#143296, systemId#143297, internalUUID#143298, id#143299, displayId#143300, name#143301, baseUnitOfMeasure#143302, unitOfMeasures#143303, unitOfMeasureConversions#143304, productionAspect#143305, salesAspect#143306, procurementAspect#143307, productGroup#143308, filteredUnitOfMeasureConversions#143309, quantityNumerator#143310, quantityDenominator#143311, CASE WHEN (isnull(outboundUnit#143312) OR (outboundUnit#143312 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#143312 END AS outboundUnit#143313]
(190) Project
Arguments: [product#143270, plant#143271, orderDateTime#143272, productPlant#143282, timezonecode#143296, outboundUnit#143313]
(191) Join
Arguments: Inner, ((plantUuid#143262 = plant#143271) AND (productUuid#143264 = product#143270))
(192) Filter
Arguments: (calculationDateTime#143258 <= orderDateTime#143272)
(193) Project
Arguments: [plantUuid#143262 AS plant#143314, productUuid#143264 AS product#143315, storageLocId#143265, calculationDateTime#143258, quantity#143267]
(194) Aggregate
Arguments: [plant#143314, product#143315, storageLocId#143265], [plant#143314, product#143315, storageLocId#143265, max(calculationDateTime#143258) AS max_calc_datetime#143172]
(195) Join
Arguments: Inner, ((((plant#143170 <=> plant#143314) AND (product#143171 <=> product#143315)) AND (storageLocId#143108 <=> storageLocId#143265)) AND (calculationDateTime#143087 <=> max_calc_datetime#143172))
(196) Project
Arguments: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087, quantity#143110]
(197) Aggregate
Arguments: [product#143171, plant#143170], [product#143171, plant#143170, sum(quantity#143110) AS quantitySum#143326, min(calculationDateTime#143087) AS minCalculationDateTime#143327]
(198) Project
Arguments: [product#143171, plant#143170, quantitySum#143326, minCalculationDateTime#143327, round(quantitySum#143326, 0) AS roundedQuantitySum#143335]
(199) Join
Arguments: LeftOuter, ((plant#142981 = plant#143170) AND (product#142980 = product#143171))
(200) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, roundedQuantitySum#143335, minCalculationDateTime#143327]
(201) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, roundedQuantitySum#143335, minCalculationDateTime#143327, CASE WHEN isnotnull(minCalculationDateTime#143327) THEN minCalculationDateTime#143327 ELSE orderDateTime#142982 END AS stockDatetime#143384]
(202) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, roundedQuantitySum#143335, minCalculationDateTime#143327, stockDatetime#143384, CASE WHEN isnotnull(roundedQuantitySum#143335) THEN array(roundedQuantitySum#143335) ELSE array(0.0) END AS stockBatchQuantities#143385]
(203) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, roundedQuantitySum#143335, minCalculationDateTime#143327, stockDatetime#143384, stockBatchQuantities#143385, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#143386]
(204) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, roundedQuantitySum#143335, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386]
(205) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386]
(206) LogicalRelation
Arguments: parquet, [product#143466, plant#143467, orderDateTime#143468, planningStartDateTime#143469], false
(207) RepartitionByExpression
Arguments: [product#143466, plant#143467], 25
(208) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468]
(209) LogicalRelation
Arguments: parquet, [systemId#143470, internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477], false
(210) Repartition
Arguments: 25, true
(211) Project
Arguments: [systemId#143470, internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477, struct(systemId, systemId#143470, internalUUID, internalUUID#143471, plant, plant#143472, product, product#143473, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143474, productionAspect, productionAspect#143475, salesPlant, salesPlant#143476, listing, listing#143477) AS productPlant#143478]
(212) Project
Arguments: [productPlant#143478]
(213) Join
Arguments: LeftOuter, ((product#143466 <=> productPlant#143478.product.internalRefUUID) AND (plant#143467 <=> productPlant#143478.plant.internalRefUUID))
(214) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478]
(215) SubqueryAlias
Arguments: wl
(216) LogicalRelation
Arguments: parquet, [systemId#143479, internalUUID#143480, id#143481, displayId#143482, name#143483, category#143484, companyCode#143485, address#143486, mainDistributionChain#143487, mainPurchasingOrganization#143488, validPurchasingOrganizations#143489, productGroup#143490], false
(217) Repartition
Arguments: 25, true
(218) Project
Arguments: [internalUUID#143480, address#143486.timeZone.code AS timezonecode#143491]
(219) Join
Arguments: LeftOuter, (plant#143467 <=> internalUUID#143480)
(220) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, internalUUID#143480, CASE WHEN isnotnull(timezonecode#143491) THEN timezonecode#143491 ELSE UTC END AS timezonecode#143492]
(221) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492]
(222) LogicalRelation
Arguments: parquet, [systemId#143493, internalUUID#143494, id#143495, displayId#143496, name#143497, baseUnitOfMeasure#143498, unitOfMeasures#143499, unitOfMeasureConversions#143500, productionAspect#143501, salesAspect#143502, procurementAspect#143503, productGroup#143504], false
(223) Repartition
Arguments: 25, true
(224) Join
Arguments: LeftOuter, (product#143466 = internalUUID#143494)
(225) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, systemId#143493, internalUUID#143494, id#143495, displayId#143496, name#143497, baseUnitOfMeasure#143498, unitOfMeasures#143499, unitOfMeasureConversions#143500, productionAspect#143501, salesAspect#143502, procurementAspect#143503, productGroup#143504, filter(unitOfMeasureConversions#143500, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143498.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143498.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143505]
(226) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143505.quantityNumerator), true, [quantityNumerator#143506]
(227) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, systemId#143493, internalUUID#143494, id#143495, displayId#143496, name#143497, baseUnitOfMeasure#143498, unitOfMeasures#143499, unitOfMeasureConversions#143500, productionAspect#143501, salesAspect#143502, procurementAspect#143503, productGroup#143504, filteredUnitOfMeasureConversions#143505, quantityNumerator#143506]
(228) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143505.quantityDenominator), true, [quantityDenominator#143507]
(229) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, systemId#143493, internalUUID#143494, id#143495, displayId#143496, name#143497, baseUnitOfMeasure#143498, unitOfMeasures#143499, unitOfMeasureConversions#143500, productionAspect#143501, salesAspect#143502, procurementAspect#143503, productGroup#143504, filteredUnitOfMeasureConversions#143505, quantityNumerator#143506, quantityDenominator#143507]
(230) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, systemId#143493, internalUUID#143494, id#143495, displayId#143496, name#143497, baseUnitOfMeasure#143498, unitOfMeasures#143499, unitOfMeasureConversions#143500, productionAspect#143501, salesAspect#143502, procurementAspect#143503, productGroup#143504, filteredUnitOfMeasureConversions#143505, quantityNumerator#143506, quantityDenominator#143507, (cast(quantityNumerator#143506 as double) / cast(quantityDenominator#143507 as double)) AS outboundUnit#143508]
(231) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, systemId#143493, internalUUID#143494, id#143495, displayId#143496, name#143497, baseUnitOfMeasure#143498, unitOfMeasures#143499, unitOfMeasureConversions#143500, productionAspect#143501, salesAspect#143502, procurementAspect#143503, productGroup#143504, filteredUnitOfMeasureConversions#143505, quantityNumerator#143506, quantityDenominator#143507, CASE WHEN (isnull(outboundUnit#143508) OR (outboundUnit#143508 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#143508 END AS outboundUnit#143509]
(232) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509]
(233) LogicalRelation
Arguments: parquet, [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515], false
(234) Repartition
Arguments: 25, true
(235) LogicalRelation
Arguments: parquet, [marketUnit#143516, description#143517, articleHierarchy#143518, defaultCurrency#143519, responsibilities#143520, replenishmentTypes#143521, distributionCenters#143522, assignedArticleHierarchyNodes#143523, minOrderQtySetting#143524, listingCheck#143525, odsSelection#143526, demandProfiles#143527, constraintProfiles#143528, optimizationProfiles#143529, orderGroupSplitProfiles#143530, supplierMinimumProfiles#143531, multipleRestrictionProfiles#143532, preferredUomSource#143533, handlingOfUnfulfilledDemands#143534, negligibleQuantitiesThreshold#143535, eventtype#143536, minOrderQtySettingInternal#143537], false
(236) Repartition
Arguments: 25, true
(237) Filter
Arguments: (marketUnit#143516 <=> Daily_grocery)
(238) Project
Arguments: [marketUnit#143516, description#143517, articleHierarchy#143518, defaultCurrency#143519, responsibilities#143520, replenishmentTypes#143521, distributionCenters#143522, assignedArticleHierarchyNodes#143523, minOrderQtySetting#143524, listingCheck#143525, odsSelection#143526, demandProfiles#143527, constraintProfiles#143528, optimizationProfiles#143529, orderGroupSplitProfiles#143530, supplierMinimumProfiles#143531, multipleRestrictionProfiles#143532, preferredUomSource#143533, handlingOfUnfulfilledDemands#143534, negligibleQuantitiesThreshold#143535, eventtype#143536, minOrderQtySettingInternal#143537]
(239) Project
Arguments: [distributionCenters#143522]
(240) Generate
Arguments: explode(distributionCenters#143522), false, [distributionCenters#143538]
(241) Project
Arguments: [distributionCenters#143538]
(242) Generate
Arguments: explode(distributionCenters#143538.storageLocations), false, [storageLocations#143539]
(243) Project
Arguments: [distributionCenters#143538.id AS plantId#143540, distributionCenters#143538.internalRefUUID AS plantUuid#143541, storageLocations#143539]
(244) Project
Arguments: [plantId#143540, plantUuid#143541, storageLocations#143539.id AS storageLocId#143542, storageLocations#143539.internalRefUUID AS storageLocUuid#143543]
(245) LogicalRelation
Arguments: parquet, [product#143544, plant#143545, orderDateTime#143546, planningStartDateTime#143547], false
(246) RepartitionByExpression
Arguments: [product#143544, plant#143545], 25
(247) Project
Arguments: [product#143544, plant#143545, orderDateTime#143546]
(248) LogicalRelation
Arguments: parquet, [systemId#143548, internalUUID#143549, plant#143550, product#143551, blockedForReplenishmentStartingFrom#143552, productionAspect#143553, salesPlant#143554, listing#143555], false
(249) Repartition
Arguments: 25, true
(250) Project
Arguments: [systemId#143548, internalUUID#143549, plant#143550, product#143551, blockedForReplenishmentStartingFrom#143552, productionAspect#143553, salesPlant#143554, listing#143555, struct(systemId, systemId#143548, internalUUID, internalUUID#143549, plant, plant#143550, product, product#143551, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143552, productionAspect, productionAspect#143553, salesPlant, salesPlant#143554, listing, listing#143555) AS productPlant#143556]
(251) Project
Arguments: [productPlant#143556]
(252) Join
Arguments: LeftOuter, ((product#143544 <=> productPlant#143556.product.internalRefUUID) AND (plant#143545 <=> productPlant#143556.plant.internalRefUUID))
(253) Project
Arguments: [product#143544, plant#143545, orderDateTime#143546, productPlant#143556]
(254) SubqueryAlias
Arguments: wl
(255) LogicalRelation
Arguments: parquet, [systemId#143557, internalUUID#143558, id#143559, displayId#143560, name#143561, category#143562, companyCode#143563, address#143564, mainDistributionChain#143565, mainPurchasingOrganization#143566, validPurchasingOrganizations#143567, productGroup#143568], false
(256) Repartition
Arguments: 25, true
(257) Project
Arguments: [internalUUID#143558, address#143564.timeZone.code AS timezonecode#143569]
(258) Join
Arguments: LeftOuter, (plant#143545 <=> internalUUID#143558)
(259) Project
Arguments: [product#143544, plant#143545, orderDateTime#143546, productPlant#143556, internalUUID#143558, CASE WHEN isnotnull(timezonecode#143569) THEN timezonecode#143569 ELSE UTC END AS timezonecode#143570]
(260) Project
Arguments: [product#143544, plant#143545, orderDateTime#143546, productPlant#143556, timezonecode#143570]
(261) LogicalRelation
Arguments: parquet, [systemId#143571, internalUUID#143572, id#143573, displayId#143574, name#143575, baseUnitOfMeasure#143576, unitOfMeasures#143577, unitOfMeasureConversions#143578, productionAspect#143579, salesAspect#143580, procurementAspect#143581, productGroup#143582], false
(262) Repartition
Arguments: 25, true
(263) Join
Arguments: LeftOuter, (product#143544 = internalUUID#143572)
(264) Project
Arguments: [product#143544, plant#143545, orderDateTime#143546, productPlant#143556, timezonecode#143570, systemId#143571, internalUUID#143572, id#143573, displayId#143574, name#143575, baseUnitOfMeasure#143576, unitOfMeasures#143577, unitOfMeasureConversions#143578, productionAspect#143579, salesAspect#143580, procurementAspect#143581, productGroup#143582, filter(unitOfMeasureConversions#143578, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143556.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143556.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143576.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143576.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143583]
(265) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143583.quantityNumerator), true, [quantityNumerator#143584]
(266) Project
Arguments: [product#143544, plant#143545, orderDateTime#143546, productPlant#143556, timezonecode#143570, systemId#143571, internalUUID#143572, id#143573, displayId#143574, name#143575, baseUnitOfMeasure#143576, unitOfMeasures#143577, unitOfMeasureConversions#143578, productionAspect#143579, salesAspect#143580, procurementAspect#143581, productGroup#143582, filteredUnitOfMeasureConversions#143583, quantityNumerator#143584]
(267) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143583.quantityDenominator), true, [quantityDenominator#143585]
(268) Project
Arguments: [product#143544, plant#143545, orderDateTime#143546, productPlant#143556, timezonecode#143570, systemId#143571, internalUUID#143572, id#143573, displayId#143574, name#143575, baseUnitOfMeasure#143576, unitOfMeasures#143577, unitOfMeasureConversions#143578, productionAspect#143579, salesAspect#143580, procurementAspect#143581, productGroup#143582, filteredUnitOfMeasureConversions#143583, quantityNumerator#143584, quantityDenominator#143585]
(269) Project
Arguments: [product#143544, plant#143545, orderDateTime#143546, productPlant#143556, timezonecode#143570, systemId#143571, internalUUID#143572, id#143573, displayId#143574, name#143575, baseUnitOfMeasure#143576, unitOfMeasures#143577, unitOfMeasureConversions#143578, productionAspect#143579, salesAspect#143580, procurementAspect#143581, productGroup#143582, filteredUnitOfMeasureConversions#143583, quantityNumerator#143584, quantityDenominator#143585, (cast(quantityNumerator#143584 as double) / cast(quantityDenominator#143585 as double)) AS outboundUnit#143586]
(270) Project
Arguments: [product#143544, plant#143545, orderDateTime#143546, productPlant#143556, timezonecode#143570, systemId#143571, internalUUID#143572, id#143573, displayId#143574, name#143575, baseUnitOfMeasure#143576, unitOfMeasures#143577, unitOfMeasureConversions#143578, productionAspect#143579, salesAspect#143580, procurementAspect#143581, productGroup#143582, filteredUnitOfMeasureConversions#143583, quantityNumerator#143584, quantityDenominator#143585, CASE WHEN (isnull(outboundUnit#143586) OR (outboundUnit#143586 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#143586 END AS outboundUnit#143587]
(271) Project
Arguments: [product#143544, plant#143545, orderDateTime#143546, productPlant#143556, timezonecode#143570, outboundUnit#143587]
(272) Project
Arguments: [plant#143545]
(273) Deduplicate
Arguments: [plant#143545]
(274) Join
Arguments: Inner, (plantUuid#143541 = plant#143545)
(275) Project
Arguments: [plantId#143540, plantUuid#143541, storageLocId#143542, storageLocUuid#143543]
(276) Join
Arguments: Inner, (plant#143513.internalRefUUID <=> plantUuid#143541)
(277) Generate
Arguments: explode(filter(stockQuantities#143515, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143543) AND (lambda x#143085.storageLocation.Id = storageLocId#143542)), lambda x#143085, false))), false, [stockQuantity#143588]
(278) Project
Arguments: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515, plantId#143540, plantUuid#143541, storageLocId#143542, storageLocUuid#143543, stockQuantity#143588]
(279) Aggregate
Arguments: [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510], [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510, first(calculationDateTime#143514, false) AS calculationDateTime#143589, collect_list(stockQuantity#143588, 0, 0) AS stockQuantities#143590]
(280) Project
Arguments: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143589, stockQuantities#143590]
(281) Generate
Arguments: explode(stockQuantities#143590), false, [stockQuantity#143591]
(282) Project
Arguments: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143589, stockQuantities#143590, stockQuantity#143591]
(283) Project
Arguments: [plant#143513.id AS plant#143592, plant#143513.internalRefUUID AS plantUuid#143593, product#143512.id AS product#143594, product#143512.internalRefUUID AS productUuid#143595, calculationDateTime#143589, stockQuantity#143591.storagelocation.id AS storageLocId#143596, stockQuantity#143591.storagelocation.internalRefUUID AS storageLocUuid#143597, stockQuantity#143591.quantity.measure AS quantity#143598, stockQuantity#143591.specialStockIndicator.code AS specialStockIndicator#143599, stockQuantity#143591.stockType.code AS stockType#143600]
(284) Filter
Arguments: ((specialStockIndicator#143599 = ) AND (stockType#143600 = 01))
(285) LogicalRelation
Arguments: parquet, [product#143601, plant#143602, orderDateTime#143603, planningStartDateTime#143604], false
(286) RepartitionByExpression
Arguments: [product#143601, plant#143602], 25
(287) Project
Arguments: [product#143601, plant#143602, orderDateTime#143603]
(288) LogicalRelation
Arguments: parquet, [systemId#143605, internalUUID#143606, plant#143607, product#143608, blockedForReplenishmentStartingFrom#143609, productionAspect#143610, salesPlant#143611, listing#143612], false
(289) Repartition
Arguments: 25, true
(290) Project
Arguments: [systemId#143605, internalUUID#143606, plant#143607, product#143608, blockedForReplenishmentStartingFrom#143609, productionAspect#143610, salesPlant#143611, listing#143612, struct(systemId, systemId#143605, internalUUID, internalUUID#143606, plant, plant#143607, product, product#143608, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143609, productionAspect, productionAspect#143610, salesPlant, salesPlant#143611, listing, listing#143612) AS productPlant#143613]
(291) Project
Arguments: [productPlant#143613]
(292) Join
Arguments: LeftOuter, ((product#143601 <=> productPlant#143613.product.internalRefUUID) AND (plant#143602 <=> productPlant#143613.plant.internalRefUUID))
(293) Project
Arguments: [product#143601, plant#143602, orderDateTime#143603, productPlant#143613]
(294) SubqueryAlias
Arguments: wl
(295) LogicalRelation
Arguments: parquet, [systemId#143614, internalUUID#143615, id#143616, displayId#143617, name#143618, category#143619, companyCode#143620, address#143621, mainDistributionChain#143622, mainPurchasingOrganization#143623, validPurchasingOrganizations#143624, productGroup#143625], false
(296) Repartition
Arguments: 25, true
(297) Project
Arguments: [internalUUID#143615, address#143621.timeZone.code AS timezonecode#143626]
(298) Join
Arguments: LeftOuter, (plant#143602 <=> internalUUID#143615)
(299) Project
Arguments: [product#143601, plant#143602, orderDateTime#143603, productPlant#143613, internalUUID#143615, CASE WHEN isnotnull(timezonecode#143626) THEN timezonecode#143626 ELSE UTC END AS timezonecode#143627]
(300) Project
Arguments: [product#143601, plant#143602, orderDateTime#143603, productPlant#143613, timezonecode#143627]
(301) LogicalRelation
Arguments: parquet, [systemId#143628, internalUUID#143629, id#143630, displayId#143631, name#143632, baseUnitOfMeasure#143633, unitOfMeasures#143634, unitOfMeasureConversions#143635, productionAspect#143636, salesAspect#143637, procurementAspect#143638, productGroup#143639], false
(302) Repartition
Arguments: 25, true
(303) Join
Arguments: LeftOuter, (product#143601 = internalUUID#143629)
(304) Project
Arguments: [product#143601, plant#143602, orderDateTime#143603, productPlant#143613, timezonecode#143627, systemId#143628, internalUUID#143629, id#143630, displayId#143631, name#143632, baseUnitOfMeasure#143633, unitOfMeasures#143634, unitOfMeasureConversions#143635, productionAspect#143636, salesAspect#143637, procurementAspect#143638, productGroup#143639, filter(unitOfMeasureConversions#143635, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143613.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143613.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143633.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143633.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143640]
(305) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143640.quantityNumerator), true, [quantityNumerator#143641]
(306) Project
Arguments: [product#143601, plant#143602, orderDateTime#143603, productPlant#143613, timezonecode#143627, systemId#143628, internalUUID#143629, id#143630, displayId#143631, name#143632, baseUnitOfMeasure#143633, unitOfMeasures#143634, unitOfMeasureConversions#143635, productionAspect#143636, salesAspect#143637, procurementAspect#143638, productGroup#143639, filteredUnitOfMeasureConversions#143640, quantityNumerator#143641]
(307) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143640.quantityDenominator), true, [quantityDenominator#143642]
(308) Project
Arguments: [product#143601, plant#143602, orderDateTime#143603, productPlant#143613, timezonecode#143627, systemId#143628, internalUUID#143629, id#143630, displayId#143631, name#143632, baseUnitOfMeasure#143633, unitOfMeasures#143634, unitOfMeasureConversions#143635, productionAspect#143636, salesAspect#143637, procurementAspect#143638, productGroup#143639, filteredUnitOfMeasureConversions#143640, quantityNumerator#143641, quantityDenominator#143642]
(309) Project
Arguments: [product#143601, plant#143602, orderDateTime#143603, productPlant#143613, timezonecode#143627, systemId#143628, internalUUID#143629, id#143630, displayId#143631, name#143632, baseUnitOfMeasure#143633, unitOfMeasures#143634, unitOfMeasureConversions#143635, productionAspect#143636, salesAspect#143637, procurementAspect#143638, productGroup#143639, filteredUnitOfMeasureConversions#143640, quantityNumerator#143641, quantityDenominator#143642, (cast(quantityNumerator#143641 as double) / cast(quantityDenominator#143642 as double)) AS outboundUnit#143643]
(310) Project
Arguments: [product#143601, plant#143602, orderDateTime#143603, productPlant#143613, timezonecode#143627, systemId#143628, internalUUID#143629, id#143630, displayId#143631, name#143632, baseUnitOfMeasure#143633, unitOfMeasures#143634, unitOfMeasureConversions#143635, productionAspect#143636, salesAspect#143637, procurementAspect#143638, productGroup#143639, filteredUnitOfMeasureConversions#143640, quantityNumerator#143641, quantityDenominator#143642, CASE WHEN (isnull(outboundUnit#143643) OR (outboundUnit#143643 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#143643 END AS outboundUnit#143644]
(311) Project
Arguments: [product#143601, plant#143602, orderDateTime#143603, productPlant#143613, timezonecode#143627, outboundUnit#143644]
(312) Join
Arguments: Inner, ((plantUuid#143593 = plant#143602) AND (productUuid#143595 = product#143601))
(313) Filter
Arguments: (calculationDateTime#143589 <= orderDateTime#143603)
(314) Project
Arguments: [plantUuid#143593 AS plant#143645, productUuid#143595 AS product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598]
(315) LogicalRelation
Arguments: parquet, [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652], false
(316) Repartition
Arguments: 25, true
(317) LogicalRelation
Arguments: parquet, [marketUnit#143653, description#143654, articleHierarchy#143655, defaultCurrency#143656, responsibilities#143657, replenishmentTypes#143658, distributionCenters#143659, assignedArticleHierarchyNodes#143660, minOrderQtySetting#143661, listingCheck#143662, odsSelection#143663, demandProfiles#143664, constraintProfiles#143665, optimizationProfiles#143666, orderGroupSplitProfiles#143667, supplierMinimumProfiles#143668, multipleRestrictionProfiles#143669, preferredUomSource#143670, handlingOfUnfulfilledDemands#143671, negligibleQuantitiesThreshold#143672, eventtype#143673, minOrderQtySettingInternal#143674], false
(318) Repartition
Arguments: 25, true
(319) Filter
Arguments: (marketUnit#143653 <=> Daily_grocery)
(320) Project
Arguments: [marketUnit#143653, description#143654, articleHierarchy#143655, defaultCurrency#143656, responsibilities#143657, replenishmentTypes#143658, distributionCenters#143659, assignedArticleHierarchyNodes#143660, minOrderQtySetting#143661, listingCheck#143662, odsSelection#143663, demandProfiles#143664, constraintProfiles#143665, optimizationProfiles#143666, orderGroupSplitProfiles#143667, supplierMinimumProfiles#143668, multipleRestrictionProfiles#143669, preferredUomSource#143670, handlingOfUnfulfilledDemands#143671, negligibleQuantitiesThreshold#143672, eventtype#143673, minOrderQtySettingInternal#143674]
(321) Project
Arguments: [distributionCenters#143659]
(322) Generate
Arguments: explode(distributionCenters#143659), false, [distributionCenters#143675]
(323) Project
Arguments: [distributionCenters#143675]
(324) Generate
Arguments: explode(distributionCenters#143675.storageLocations), false, [storageLocations#143676]
(325) Project
Arguments: [distributionCenters#143675.id AS plantId#143677, distributionCenters#143675.internalRefUUID AS plantUuid#143678, storageLocations#143676]
(326) Project
Arguments: [plantId#143677, plantUuid#143678, storageLocations#143676.id AS storageLocId#143679, storageLocations#143676.internalRefUUID AS storageLocUuid#143680]
(327) LogicalRelation
Arguments: parquet, [product#143681, plant#143682, orderDateTime#143683, planningStartDateTime#143684], false
(328) RepartitionByExpression
Arguments: [product#143681, plant#143682], 25
(329) Project
Arguments: [product#143681, plant#143682, orderDateTime#143683]
(330) LogicalRelation
Arguments: parquet, [systemId#143685, internalUUID#143686, plant#143687, product#143688, blockedForReplenishmentStartingFrom#143689, productionAspect#143690, salesPlant#143691, listing#143692], false
(331) Repartition
Arguments: 25, true
(332) Project
Arguments: [systemId#143685, internalUUID#143686, plant#143687, product#143688, blockedForReplenishmentStartingFrom#143689, productionAspect#143690, salesPlant#143691, listing#143692, struct(systemId, systemId#143685, internalUUID, internalUUID#143686, plant, plant#143687, product, product#143688, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143689, productionAspect, productionAspect#143690, salesPlant, salesPlant#143691, listing, listing#143692) AS productPlant#143693]
(333) Project
Arguments: [productPlant#143693]
(334) Join
Arguments: LeftOuter, ((product#143681 <=> productPlant#143693.product.internalRefUUID) AND (plant#143682 <=> productPlant#143693.plant.internalRefUUID))
(335) Project
Arguments: [product#143681, plant#143682, orderDateTime#143683, productPlant#143693]
(336) SubqueryAlias
Arguments: wl
(337) LogicalRelation
Arguments: parquet, [systemId#143694, internalUUID#143695, id#143696, displayId#143697, name#143698, category#143699, companyCode#143700, address#143701, mainDistributionChain#143702, mainPurchasingOrganization#143703, validPurchasingOrganizations#143704, productGroup#143705], false
(338) Repartition
Arguments: 25, true
(339) Project
Arguments: [internalUUID#143695, address#143701.timeZone.code AS timezonecode#143706]
(340) Join
Arguments: LeftOuter, (plant#143682 <=> internalUUID#143695)
(341) Project
Arguments: [product#143681, plant#143682, orderDateTime#143683, productPlant#143693, internalUUID#143695, CASE WHEN isnotnull(timezonecode#143706) THEN timezonecode#143706 ELSE UTC END AS timezonecode#143707]
(342) Project
Arguments: [product#143681, plant#143682, orderDateTime#143683, productPlant#143693, timezonecode#143707]
(343) LogicalRelation
Arguments: parquet, [systemId#143708, internalUUID#143709, id#143710, displayId#143711, name#143712, baseUnitOfMeasure#143713, unitOfMeasures#143714, unitOfMeasureConversions#143715, productionAspect#143716, salesAspect#143717, procurementAspect#143718, productGroup#143719], false
(344) Repartition
Arguments: 25, true
(345) Join
Arguments: LeftOuter, (product#143681 = internalUUID#143709)
(346) Project
Arguments: [product#143681, plant#143682, orderDateTime#143683, productPlant#143693, timezonecode#143707, systemId#143708, internalUUID#143709, id#143710, displayId#143711, name#143712, baseUnitOfMeasure#143713, unitOfMeasures#143714, unitOfMeasureConversions#143715, productionAspect#143716, salesAspect#143717, procurementAspect#143718, productGroup#143719, filter(unitOfMeasureConversions#143715, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143693.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143693.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143713.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143713.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143720]
(347) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143720.quantityNumerator), true, [quantityNumerator#143721]
(348) Project
Arguments: [product#143681, plant#143682, orderDateTime#143683, productPlant#143693, timezonecode#143707, systemId#143708, internalUUID#143709, id#143710, displayId#143711, name#143712, baseUnitOfMeasure#143713, unitOfMeasures#143714, unitOfMeasureConversions#143715, productionAspect#143716, salesAspect#143717, procurementAspect#143718, productGroup#143719, filteredUnitOfMeasureConversions#143720, quantityNumerator#143721]
(349) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143720.quantityDenominator), true, [quantityDenominator#143722]
(350) Project
Arguments: [product#143681, plant#143682, orderDateTime#143683, productPlant#143693, timezonecode#143707, systemId#143708, internalUUID#143709, id#143710, displayId#143711, name#143712, baseUnitOfMeasure#143713, unitOfMeasures#143714, unitOfMeasureConversions#143715, productionAspect#143716, salesAspect#143717, procurementAspect#143718, productGroup#143719, filteredUnitOfMeasureConversions#143720, quantityNumerator#143721, quantityDenominator#143722]
(351) Project
Arguments: [product#143681, plant#143682, orderDateTime#143683, productPlant#143693, timezonecode#143707, systemId#143708, internalUUID#143709, id#143710, displayId#143711, name#143712, baseUnitOfMeasure#143713, unitOfMeasures#143714, unitOfMeasureConversions#143715, productionAspect#143716, salesAspect#143717, procurementAspect#143718, productGroup#143719, filteredUnitOfMeasureConversions#143720, quantityNumerator#143721, quantityDenominator#143722, (cast(quantityNumerator#143721 as double) / cast(quantityDenominator#143722 as double)) AS outboundUnit#143723]
(352) Project
Arguments: [product#143681, plant#143682, orderDateTime#143683, productPlant#143693, timezonecode#143707, systemId#143708, internalUUID#143709, id#143710, displayId#143711, name#143712, baseUnitOfMeasure#143713, unitOfMeasures#143714, unitOfMeasureConversions#143715, productionAspect#143716, salesAspect#143717, procurementAspect#143718, productGroup#143719, filteredUnitOfMeasureConversions#143720, quantityNumerator#143721, quantityDenominator#143722, CASE WHEN (isnull(outboundUnit#143723) OR (outboundUnit#143723 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#143723 END AS outboundUnit#143724]
(353) Project
Arguments: [product#143681, plant#143682, orderDateTime#143683, productPlant#143693, timezonecode#143707, outboundUnit#143724]
(354) Project
Arguments: [plant#143682]
(355) Deduplicate
Arguments: [plant#143682]
(356) Join
Arguments: Inner, (plantUuid#143678 = plant#143682)
(357) Project
Arguments: [plantId#143677, plantUuid#143678, storageLocId#143679, storageLocUuid#143680]
(358) Join
Arguments: Inner, (plant#143650.internalRefUUID <=> plantUuid#143678)
(359) Generate
Arguments: explode(filter(stockQuantities#143652, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143680) AND (lambda x#143085.storageLocation.Id = storageLocId#143679)), lambda x#143085, false))), false, [stockQuantity#143725]
(360) Project
Arguments: [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652, plantId#143677, plantUuid#143678, storageLocId#143679, storageLocUuid#143680, stockQuantity#143725]
(361) Aggregate
Arguments: [plantUuid#143678, internalUUID#143648, plant#143650, product#143649, systemId#143647], [plantUuid#143678, internalUUID#143648, plant#143650, product#143649, systemId#143647, first(calculationDateTime#143651, false) AS calculationDateTime#143726, collect_list(stockQuantity#143725, 0, 0) AS stockQuantities#143727]
(362) Project
Arguments: [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143726, stockQuantities#143727]
(363) Generate
Arguments: explode(stockQuantities#143727), false, [stockQuantity#143728]
(364) Project
Arguments: [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143726, stockQuantities#143727, stockQuantity#143728]
(365) Project
Arguments: [plant#143650.id AS plant#143729, plant#143650.internalRefUUID AS plantUuid#143730, product#143649.id AS product#143731, product#143649.internalRefUUID AS productUuid#143732, calculationDateTime#143726, stockQuantity#143728.storagelocation.id AS storageLocId#143733, stockQuantity#143728.storagelocation.internalRefUUID AS storageLocUuid#143734, stockQuantity#143728.quantity.measure AS quantity#143735, stockQuantity#143728.specialStockIndicator.code AS specialStockIndicator#143736, stockQuantity#143728.stockType.code AS stockType#143737]
(366) Filter
Arguments: ((specialStockIndicator#143736 = ) AND (stockType#143737 = 01))
(367) LogicalRelation
Arguments: parquet, [product#143738, plant#143739, orderDateTime#143740, planningStartDateTime#143741], false
(368) RepartitionByExpression
Arguments: [product#143738, plant#143739], 25
(369) Project
Arguments: [product#143738, plant#143739, orderDateTime#143740]
(370) LogicalRelation
Arguments: parquet, [systemId#143742, internalUUID#143743, plant#143744, product#143745, blockedForReplenishmentStartingFrom#143746, productionAspect#143747, salesPlant#143748, listing#143749], false
(371) Repartition
Arguments: 25, true
(372) Project
Arguments: [systemId#143742, internalUUID#143743, plant#143744, product#143745, blockedForReplenishmentStartingFrom#143746, productionAspect#143747, salesPlant#143748, listing#143749, struct(systemId, systemId#143742, internalUUID, internalUUID#143743, plant, plant#143744, product, product#143745, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143746, productionAspect, productionAspect#143747, salesPlant, salesPlant#143748, listing, listing#143749) AS productPlant#143750]
(373) Project
Arguments: [productPlant#143750]
(374) Join
Arguments: LeftOuter, ((product#143738 <=> productPlant#143750.product.internalRefUUID) AND (plant#143739 <=> productPlant#143750.plant.internalRefUUID))
(375) Project
Arguments: [product#143738, plant#143739, orderDateTime#143740, productPlant#143750]
(376) SubqueryAlias
Arguments: wl
(377) LogicalRelation
Arguments: parquet, [systemId#143751, internalUUID#143752, id#143753, displayId#143754, name#143755, category#143756, companyCode#143757, address#143758, mainDistributionChain#143759, mainPurchasingOrganization#143760, validPurchasingOrganizations#143761, productGroup#143762], false
(378) Repartition
Arguments: 25, true
(379) Project
Arguments: [internalUUID#143752, address#143758.timeZone.code AS timezonecode#143763]
(380) Join
Arguments: LeftOuter, (plant#143739 <=> internalUUID#143752)
(381) Project
Arguments: [product#143738, plant#143739, orderDateTime#143740, productPlant#143750, internalUUID#143752, CASE WHEN isnotnull(timezonecode#143763) THEN timezonecode#143763 ELSE UTC END AS timezonecode#143764]
(382) Project
Arguments: [product#143738, plant#143739, orderDateTime#143740, productPlant#143750, timezonecode#143764]
(383) LogicalRelation
Arguments: parquet, [systemId#143765, internalUUID#143766, id#143767, displayId#143768, name#143769, baseUnitOfMeasure#143770, unitOfMeasures#143771, unitOfMeasureConversions#143772, productionAspect#143773, salesAspect#143774, procurementAspect#143775, productGroup#143776], false
(384) Repartition
Arguments: 25, true
(385) Join
Arguments: LeftOuter, (product#143738 = internalUUID#143766)
(386) Project
Arguments: [product#143738, plant#143739, orderDateTime#143740, productPlant#143750, timezonecode#143764, systemId#143765, internalUUID#143766, id#143767, displayId#143768, name#143769, baseUnitOfMeasure#143770, unitOfMeasures#143771, unitOfMeasureConversions#143772, productionAspect#143773, salesAspect#143774, procurementAspect#143775, productGroup#143776, filter(unitOfMeasureConversions#143772, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143750.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143750.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143770.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143770.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143777]
(387) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143777.quantityNumerator), true, [quantityNumerator#143778]
(388) Project
Arguments: [product#143738, plant#143739, orderDateTime#143740, productPlant#143750, timezonecode#143764, systemId#143765, internalUUID#143766, id#143767, displayId#143768, name#143769, baseUnitOfMeasure#143770, unitOfMeasures#143771, unitOfMeasureConversions#143772, productionAspect#143773, salesAspect#143774, procurementAspect#143775, productGroup#143776, filteredUnitOfMeasureConversions#143777, quantityNumerator#143778]
(389) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143777.quantityDenominator), true, [quantityDenominator#143779]
(390) Project
Arguments: [product#143738, plant#143739, orderDateTime#143740, productPlant#143750, timezonecode#143764, systemId#143765, internalUUID#143766, id#143767, displayId#143768, name#143769, baseUnitOfMeasure#143770, unitOfMeasures#143771, unitOfMeasureConversions#143772, productionAspect#143773, salesAspect#143774, procurementAspect#143775, productGroup#143776, filteredUnitOfMeasureConversions#143777, quantityNumerator#143778, quantityDenominator#143779]
(391) Project
Arguments: [product#143738, plant#143739, orderDateTime#143740, productPlant#143750, timezonecode#143764, systemId#143765, internalUUID#143766, id#143767, displayId#143768, name#143769, baseUnitOfMeasure#143770, unitOfMeasures#143771, unitOfMeasureConversions#143772, productionAspect#143773, salesAspect#143774, procurementAspect#143775, productGroup#143776, filteredUnitOfMeasureConversions#143777, quantityNumerator#143778, quantityDenominator#143779, (cast(quantityNumerator#143778 as double) / cast(quantityDenominator#143779 as double)) AS outboundUnit#143780]
(392) Project
Arguments: [product#143738, plant#143739, orderDateTime#143740, productPlant#143750, timezonecode#143764, systemId#143765, internalUUID#143766, id#143767, displayId#143768, name#143769, baseUnitOfMeasure#143770, unitOfMeasures#143771, unitOfMeasureConversions#143772, productionAspect#143773, salesAspect#143774, procurementAspect#143775, productGroup#143776, filteredUnitOfMeasureConversions#143777, quantityNumerator#143778, quantityDenominator#143779, CASE WHEN (isnull(outboundUnit#143780) OR (outboundUnit#143780 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#143780 END AS outboundUnit#143781]
(393) Project
Arguments: [product#143738, plant#143739, orderDateTime#143740, productPlant#143750, timezonecode#143764, outboundUnit#143781]
(394) Join
Arguments: Inner, ((plantUuid#143730 = plant#143739) AND (productUuid#143732 = product#143738))
(395) Filter
Arguments: (calculationDateTime#143726 <= orderDateTime#143740)
(396) Project
Arguments: [plantUuid#143730 AS plant#143782, productUuid#143732 AS product#143783, storageLocId#143733, calculationDateTime#143726, quantity#143735]
(397) Aggregate
Arguments: [plant#143782, product#143783, storageLocId#143733], [plant#143782, product#143783, storageLocId#143733, max(calculationDateTime#143726) AS max_calc_datetime#143784]
(398) Join
Arguments: Inner, ((((plant#143645 <=> plant#143782) AND (product#143646 <=> product#143783)) AND (storageLocId#143596 <=> storageLocId#143733)) AND (calculationDateTime#143589 <=> max_calc_datetime#143784))
(399) Project
Arguments: [plant#143645, product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598]
(400) Aggregate
Arguments: [product#143646, plant#143645], [product#143646, plant#143645, sum(quantity#143598) AS quantitySum#143785, min(calculationDateTime#143589) AS minCalculationDateTime#143786]
(401) Project
Arguments: [product#143646, plant#143645, quantitySum#143785, minCalculationDateTime#143786, round(quantitySum#143785, 0) AS roundedQuantitySum#143787]
(402) Join
Arguments: LeftOuter, ((plant#143467 = plant#143645) AND (product#143466 = product#143646))
(403) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, roundedQuantitySum#143787, minCalculationDateTime#143786]
(404) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, roundedQuantitySum#143787, minCalculationDateTime#143786, CASE WHEN isnotnull(minCalculationDateTime#143786) THEN minCalculationDateTime#143786 ELSE orderDateTime#143468 END AS stockDatetime#143788]
(405) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, roundedQuantitySum#143787, minCalculationDateTime#143786, stockDatetime#143788, CASE WHEN isnotnull(roundedQuantitySum#143787) THEN array(roundedQuantitySum#143787) ELSE array(0.0) END AS stockBatchQuantities#143789]
(406) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, roundedQuantitySum#143787, minCalculationDateTime#143786, stockDatetime#143788, stockBatchQuantities#143789, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#143790]
(407) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, roundedQuantitySum#143787, stockDatetime#143788, stockBatchQuantities#143789, stockBatchShelfLifeEndDatetimes#143790]
(408) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, stockBatchShelfLifeEndDatetimes#143790]
(409) LogicalRelation
Arguments: parquet, [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395], false
(410) Join
Arguments: LeftOuter, ((product#143466 = product#143387) AND (plant#143467 = plant#143388))
(411) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, stockBatchShelfLifeEndDatetimes#143790, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395, product#143387, plant#143388]
(412) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, stockBatchShelfLifeEndDatetimes#143790, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395, CASE WHEN isnotnull(product#143387) THEN struct(demandChannel, demandChannel#143389, demandStream, demandStream#143390, considerVariance, considerVariance#143391, demandTimeBuckets, demandTimeBuckets#143392, demandPointInTimeStart, demandPointInTimeStart#143393, demandPointInTimeEnd, demandPointInTimeEnd#143394, demandPointInTime, demandPointInTime#143395) 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#143412]
(413) Aggregate
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, stockBatchShelfLifeEndDatetimes#143790], [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, stockBatchShelfLifeEndDatetimes#143790, collect_list(rawDemands#143412, 0, 0) AS rawDemands#143413]
(414) DeserializeToObject
Arguments: createexternalrow(invoke(product#143466.toString()), invoke(plant#143467.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#143468)), if (isnull(productPlant#143478)) null else createexternalrow(invoke(productPlant#143478.systemId.toString()), invoke(productPlant#143478.internalUUID.toString()), if (isnull(productPlant#143478.plant)) null else createexternalrow(invoke(productPlant#143478.plant.internalRefUUID.toString()), invoke(productPlant#143478.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#143478.product)) null else createexternalrow(invoke(productPlant#143478.product.internalRefUUID.toString()), invoke(productPlant#143478.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#143478.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#143478.productionAspect)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#143478.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#143478.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#143478.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#143478.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#143478.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#143478.salesPlant)) null else createexternalrow(if (isnull(productPlant#143478.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#143478.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#143478.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, 20030), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 20030))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 20030).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 20030).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 20030).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#143478.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#143492.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#143509)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#143788)), mapobjects(lambdavariable(MapObject, DoubleType, true, 20031), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 20031) as double))), stockBatchQuantities#143789, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 20032), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 20032) as timestamp)))), stockBatchShelfLifeEndDatetimes#143790, 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, 20033), 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, 20033))) 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, 20033).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, 20033).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, 20033).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20034), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20034))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20034).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20034).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20034).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, 20033).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, 20033).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, 20033).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20035), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20035))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20035).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20035).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20035).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, 20033).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#143413, 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#143452: org.apache.spark.sql.Row
(415) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@2d5ca6d1, 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#143457: 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#143462, 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#143463, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20021), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20021), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20022), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20022), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20023), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20023), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20024), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20024), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20025), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20025), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#143464, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20027), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20027), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20028), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20028), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20029), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20029), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#143465]
(417) Join
Arguments: LeftOuter, ((plant#143463 <=> plant#142981) AND (product#143462 <=> product#142980))
(418) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386, plant#143463, dayBucketDemands#143464, pointInTimeDemands#143465]
(419) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386, dayBucketDemands#143464, pointInTimeDemands#143465]
(420) LogicalRelation
Arguments: parquet, [product#146447, plant#146448, orderDateTime#146449, planningStartDateTime#146450], false
(421) RepartitionByExpression
Arguments: [product#146447, plant#146448], 25
(422) Project
Arguments: [product#146447, plant#146448, orderDateTime#146449]
(423) LogicalRelation
Arguments: parquet, [systemId#146451, internalUUID#146452, plant#146453, product#146454, blockedForReplenishmentStartingFrom#146455, productionAspect#146456, salesPlant#146457, listing#146458], false
(424) Repartition
Arguments: 25, true
(425) Project
Arguments: [systemId#146451, internalUUID#146452, plant#146453, product#146454, blockedForReplenishmentStartingFrom#146455, productionAspect#146456, salesPlant#146457, listing#146458, struct(systemId, systemId#146451, internalUUID, internalUUID#146452, plant, plant#146453, product, product#146454, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#146455, productionAspect, productionAspect#146456, salesPlant, salesPlant#146457, listing, listing#146458) AS productPlant#146459]
(426) Project
Arguments: [productPlant#146459]
(427) Join
Arguments: LeftOuter, ((product#146447 <=> productPlant#146459.product.internalRefUUID) AND (plant#146448 <=> productPlant#146459.plant.internalRefUUID))
(428) Project
Arguments: [product#146447, plant#146448, orderDateTime#146449, productPlant#146459]
(429) SubqueryAlias
Arguments: wl
(430) LogicalRelation
Arguments: parquet, [systemId#146460, internalUUID#146461, id#146462, displayId#146463, name#146464, category#146465, companyCode#146466, address#146467, mainDistributionChain#146468, mainPurchasingOrganization#146469, validPurchasingOrganizations#146470, productGroup#146471], false
(431) Repartition
Arguments: 25, true
(432) Project
Arguments: [internalUUID#146461, address#146467.timeZone.code AS timezonecode#146472]
(433) Join
Arguments: LeftOuter, (plant#146448 <=> internalUUID#146461)
(434) Project
Arguments: [product#146447, plant#146448, orderDateTime#146449, productPlant#146459, internalUUID#146461, CASE WHEN isnotnull(timezonecode#146472) THEN timezonecode#146472 ELSE UTC END AS timezonecode#146473]
(435) Project
Arguments: [product#146447, plant#146448, orderDateTime#146449, productPlant#146459, timezonecode#146473]
(436) LogicalRelation
Arguments: parquet, [systemId#146474, internalUUID#146475, id#146476, displayId#146477, name#146478, baseUnitOfMeasure#146479, unitOfMeasures#146480, unitOfMeasureConversions#146481, productionAspect#146482, salesAspect#146483, procurementAspect#146484, productGroup#146485], false
(437) Repartition
Arguments: 25, true
(438) Join
Arguments: LeftOuter, (product#146447 = internalUUID#146475)
(439) Project
Arguments: [product#146447, plant#146448, orderDateTime#146449, productPlant#146459, timezonecode#146473, systemId#146474, internalUUID#146475, id#146476, displayId#146477, name#146478, baseUnitOfMeasure#146479, unitOfMeasures#146480, unitOfMeasureConversions#146481, productionAspect#146482, salesAspect#146483, procurementAspect#146484, productGroup#146485, filter(unitOfMeasureConversions#146481, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#146459.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#146459.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#146479.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#146479.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#146486]
(440) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146486.quantityNumerator), true, [quantityNumerator#146487]
(441) Project
Arguments: [product#146447, plant#146448, orderDateTime#146449, productPlant#146459, timezonecode#146473, systemId#146474, internalUUID#146475, id#146476, displayId#146477, name#146478, baseUnitOfMeasure#146479, unitOfMeasures#146480, unitOfMeasureConversions#146481, productionAspect#146482, salesAspect#146483, procurementAspect#146484, productGroup#146485, filteredUnitOfMeasureConversions#146486, quantityNumerator#146487]
(442) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146486.quantityDenominator), true, [quantityDenominator#146488]
(443) Project
Arguments: [product#146447, plant#146448, orderDateTime#146449, productPlant#146459, timezonecode#146473, systemId#146474, internalUUID#146475, id#146476, displayId#146477, name#146478, baseUnitOfMeasure#146479, unitOfMeasures#146480, unitOfMeasureConversions#146481, productionAspect#146482, salesAspect#146483, procurementAspect#146484, productGroup#146485, filteredUnitOfMeasureConversions#146486, quantityNumerator#146487, quantityDenominator#146488]
(444) Project
Arguments: [product#146447, plant#146448, orderDateTime#146449, productPlant#146459, timezonecode#146473, systemId#146474, internalUUID#146475, id#146476, displayId#146477, name#146478, baseUnitOfMeasure#146479, unitOfMeasures#146480, unitOfMeasureConversions#146481, productionAspect#146482, salesAspect#146483, procurementAspect#146484, productGroup#146485, filteredUnitOfMeasureConversions#146486, quantityNumerator#146487, quantityDenominator#146488, (cast(quantityNumerator#146487 as double) / cast(quantityDenominator#146488 as double)) AS outboundUnit#146489]
(445) Project
Arguments: [product#146447, plant#146448, orderDateTime#146449, productPlant#146459, timezonecode#146473, systemId#146474, internalUUID#146475, id#146476, displayId#146477, name#146478, baseUnitOfMeasure#146479, unitOfMeasures#146480, unitOfMeasureConversions#146481, productionAspect#146482, salesAspect#146483, procurementAspect#146484, productGroup#146485, filteredUnitOfMeasureConversions#146486, quantityNumerator#146487, quantityDenominator#146488, CASE WHEN (isnull(outboundUnit#146489) OR (outboundUnit#146489 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#146489 END AS outboundUnit#146490]
(446) Project
Arguments: [product#146447, plant#146448, orderDateTime#146449, productPlant#146459, timezonecode#146473, outboundUnit#146490]
(447) LogicalRelation
Arguments: parquet, [systemId#146491, internalUUID#146492, product#146493, plant#146494, calculationDateTime#146495, stockQuantities#146496], false
(448) Repartition
Arguments: 25, true
(449) LogicalRelation
Arguments: parquet, [marketUnit#146497, description#146498, articleHierarchy#146499, defaultCurrency#146500, responsibilities#146501, replenishmentTypes#146502, distributionCenters#146503, assignedArticleHierarchyNodes#146504, minOrderQtySetting#146505, listingCheck#146506, odsSelection#146507, demandProfiles#146508, constraintProfiles#146509, optimizationProfiles#146510, orderGroupSplitProfiles#146511, supplierMinimumProfiles#146512, multipleRestrictionProfiles#146513, preferredUomSource#146514, handlingOfUnfulfilledDemands#146515, negligibleQuantitiesThreshold#146516, eventtype#146517, minOrderQtySettingInternal#146518], false
(450) Repartition
Arguments: 25, true
(451) Filter
Arguments: (marketUnit#146497 <=> Daily_grocery)
(452) Project
Arguments: [marketUnit#146497, description#146498, articleHierarchy#146499, defaultCurrency#146500, responsibilities#146501, replenishmentTypes#146502, distributionCenters#146503, assignedArticleHierarchyNodes#146504, minOrderQtySetting#146505, listingCheck#146506, odsSelection#146507, demandProfiles#146508, constraintProfiles#146509, optimizationProfiles#146510, orderGroupSplitProfiles#146511, supplierMinimumProfiles#146512, multipleRestrictionProfiles#146513, preferredUomSource#146514, handlingOfUnfulfilledDemands#146515, negligibleQuantitiesThreshold#146516, eventtype#146517, minOrderQtySettingInternal#146518]
(453) Project
Arguments: [distributionCenters#146503]
(454) Generate
Arguments: explode(distributionCenters#146503), false, [distributionCenters#146519]
(455) Project
Arguments: [distributionCenters#146519]
(456) Generate
Arguments: explode(distributionCenters#146519.storageLocations), false, [storageLocations#146520]
(457) Project
Arguments: [distributionCenters#146519.id AS plantId#146521, distributionCenters#146519.internalRefUUID AS plantUuid#146522, storageLocations#146520]
(458) Project
Arguments: [plantId#146521, plantUuid#146522, storageLocations#146520.id AS storageLocId#146523, storageLocations#146520.internalRefUUID AS storageLocUuid#146524]
(459) LogicalRelation
Arguments: parquet, [product#146525, plant#146526, orderDateTime#146527, planningStartDateTime#146528], false
(460) RepartitionByExpression
Arguments: [product#146525, plant#146526], 25
(461) Project
Arguments: [product#146525, plant#146526, orderDateTime#146527]
(462) LogicalRelation
Arguments: parquet, [systemId#146529, internalUUID#146530, plant#146531, product#146532, blockedForReplenishmentStartingFrom#146533, productionAspect#146534, salesPlant#146535, listing#146536], false
(463) Repartition
Arguments: 25, true
(464) Project
Arguments: [systemId#146529, internalUUID#146530, plant#146531, product#146532, blockedForReplenishmentStartingFrom#146533, productionAspect#146534, salesPlant#146535, listing#146536, struct(systemId, systemId#146529, internalUUID, internalUUID#146530, plant, plant#146531, product, product#146532, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#146533, productionAspect, productionAspect#146534, salesPlant, salesPlant#146535, listing, listing#146536) AS productPlant#146537]
(465) Project
Arguments: [productPlant#146537]
(466) Join
Arguments: LeftOuter, ((product#146525 <=> productPlant#146537.product.internalRefUUID) AND (plant#146526 <=> productPlant#146537.plant.internalRefUUID))
(467) Project
Arguments: [product#146525, plant#146526, orderDateTime#146527, productPlant#146537]
(468) SubqueryAlias
Arguments: wl
(469) LogicalRelation
Arguments: parquet, [systemId#146538, internalUUID#146539, id#146540, displayId#146541, name#146542, category#146543, companyCode#146544, address#146545, mainDistributionChain#146546, mainPurchasingOrganization#146547, validPurchasingOrganizations#146548, productGroup#146549], false
(470) Repartition
Arguments: 25, true
(471) Project
Arguments: [internalUUID#146539, address#146545.timeZone.code AS timezonecode#146550]
(472) Join
Arguments: LeftOuter, (plant#146526 <=> internalUUID#146539)
(473) Project
Arguments: [product#146525, plant#146526, orderDateTime#146527, productPlant#146537, internalUUID#146539, CASE WHEN isnotnull(timezonecode#146550) THEN timezonecode#146550 ELSE UTC END AS timezonecode#146551]
(474) Project
Arguments: [product#146525, plant#146526, orderDateTime#146527, productPlant#146537, timezonecode#146551]
(475) LogicalRelation
Arguments: parquet, [systemId#146552, internalUUID#146553, id#146554, displayId#146555, name#146556, baseUnitOfMeasure#146557, unitOfMeasures#146558, unitOfMeasureConversions#146559, productionAspect#146560, salesAspect#146561, procurementAspect#146562, productGroup#146563], false
(476) Repartition
Arguments: 25, true
(477) Join
Arguments: LeftOuter, (product#146525 = internalUUID#146553)
(478) Project
Arguments: [product#146525, plant#146526, orderDateTime#146527, productPlant#146537, timezonecode#146551, systemId#146552, internalUUID#146553, id#146554, displayId#146555, name#146556, baseUnitOfMeasure#146557, unitOfMeasures#146558, unitOfMeasureConversions#146559, productionAspect#146560, salesAspect#146561, procurementAspect#146562, productGroup#146563, filter(unitOfMeasureConversions#146559, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#146537.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#146537.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#146557.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#146557.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#146564]
(479) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146564.quantityNumerator), true, [quantityNumerator#146565]
(480) Project
Arguments: [product#146525, plant#146526, orderDateTime#146527, productPlant#146537, timezonecode#146551, systemId#146552, internalUUID#146553, id#146554, displayId#146555, name#146556, baseUnitOfMeasure#146557, unitOfMeasures#146558, unitOfMeasureConversions#146559, productionAspect#146560, salesAspect#146561, procurementAspect#146562, productGroup#146563, filteredUnitOfMeasureConversions#146564, quantityNumerator#146565]
(481) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146564.quantityDenominator), true, [quantityDenominator#146566]
(482) Project
Arguments: [product#146525, plant#146526, orderDateTime#146527, productPlant#146537, timezonecode#146551, systemId#146552, internalUUID#146553, id#146554, displayId#146555, name#146556, baseUnitOfMeasure#146557, unitOfMeasures#146558, unitOfMeasureConversions#146559, productionAspect#146560, salesAspect#146561, procurementAspect#146562, productGroup#146563, filteredUnitOfMeasureConversions#146564, quantityNumerator#146565, quantityDenominator#146566]
(483) Project
Arguments: [product#146525, plant#146526, orderDateTime#146527, productPlant#146537, timezonecode#146551, systemId#146552, internalUUID#146553, id#146554, displayId#146555, name#146556, baseUnitOfMeasure#146557, unitOfMeasures#146558, unitOfMeasureConversions#146559, productionAspect#146560, salesAspect#146561, procurementAspect#146562, productGroup#146563, filteredUnitOfMeasureConversions#146564, quantityNumerator#146565, quantityDenominator#146566, (cast(quantityNumerator#146565 as double) / cast(quantityDenominator#146566 as double)) AS outboundUnit#146567]
(484) Project
Arguments: [product#146525, plant#146526, orderDateTime#146527, productPlant#146537, timezonecode#146551, systemId#146552, internalUUID#146553, id#146554, displayId#146555, name#146556, baseUnitOfMeasure#146557, unitOfMeasures#146558, unitOfMeasureConversions#146559, productionAspect#146560, salesAspect#146561, procurementAspect#146562, productGroup#146563, filteredUnitOfMeasureConversions#146564, quantityNumerator#146565, quantityDenominator#146566, CASE WHEN (isnull(outboundUnit#146567) OR (outboundUnit#146567 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#146567 END AS outboundUnit#146568]
(485) Project
Arguments: [product#146525, plant#146526, orderDateTime#146527, productPlant#146537, timezonecode#146551, outboundUnit#146568]
(486) Project
Arguments: [plant#146526]
(487) Deduplicate
Arguments: [plant#146526]
(488) Join
Arguments: Inner, (plantUuid#146522 = plant#146526)
(489) Project
Arguments: [plantId#146521, plantUuid#146522, storageLocId#146523, storageLocUuid#146524]
(490) Join
Arguments: Inner, (plant#146494.internalRefUUID <=> plantUuid#146522)
(491) Generate
Arguments: explode(filter(stockQuantities#146496, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#146524) AND (lambda x#143085.storageLocation.Id = storageLocId#146523)), lambda x#143085, false))), false, [stockQuantity#146569]
(492) Project
Arguments: [systemId#146491, internalUUID#146492, product#146493, plant#146494, calculationDateTime#146495, stockQuantities#146496, plantId#146521, plantUuid#146522, storageLocId#146523, storageLocUuid#146524, stockQuantity#146569]
(493) Aggregate
Arguments: [plantUuid#146522, internalUUID#146492, plant#146494, product#146493, systemId#146491], [plantUuid#146522, internalUUID#146492, plant#146494, product#146493, systemId#146491, first(calculationDateTime#146495, false) AS calculationDateTime#146570, collect_list(stockQuantity#146569, 0, 0) AS stockQuantities#146571]
(494) Project
Arguments: [systemId#146491, internalUUID#146492, product#146493, plant#146494, calculationDateTime#146570, stockQuantities#146571]
(495) Generate
Arguments: explode(stockQuantities#146571), false, [stockQuantity#146572]
(496) Project
Arguments: [systemId#146491, internalUUID#146492, product#146493, plant#146494, calculationDateTime#146570, stockQuantities#146571, stockQuantity#146572]
(497) Project
Arguments: [plant#146494.id AS plant#146573, plant#146494.internalRefUUID AS plantUuid#146574, product#146493.id AS product#146575, product#146493.internalRefUUID AS productUuid#146576, calculationDateTime#146570, stockQuantity#146572.storagelocation.id AS storageLocId#146577, stockQuantity#146572.storagelocation.internalRefUUID AS storageLocUuid#146578, stockQuantity#146572.quantity.measure AS quantity#146579, stockQuantity#146572.specialStockIndicator.code AS specialStockIndicator#146580, stockQuantity#146572.stockType.code AS stockType#146581]
(498) Filter
Arguments: ((specialStockIndicator#146580 = ) AND (stockType#146581 = 01))
(499) LogicalRelation
Arguments: parquet, [product#146582, plant#146583, orderDateTime#146584, planningStartDateTime#146585], false
(500) RepartitionByExpression
Arguments: [product#146582, plant#146583], 25
(501) Project
Arguments: [product#146582, plant#146583, orderDateTime#146584]
(502) LogicalRelation
Arguments: parquet, [systemId#146586, internalUUID#146587, plant#146588, product#146589, blockedForReplenishmentStartingFrom#146590, productionAspect#146591, salesPlant#146592, listing#146593], false
(503) Repartition
Arguments: 25, true
(504) Project
Arguments: [systemId#146586, internalUUID#146587, plant#146588, product#146589, blockedForReplenishmentStartingFrom#146590, productionAspect#146591, salesPlant#146592, listing#146593, struct(systemId, systemId#146586, internalUUID, internalUUID#146587, plant, plant#146588, product, product#146589, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#146590, productionAspect, productionAspect#146591, salesPlant, salesPlant#146592, listing, listing#146593) AS productPlant#146594]
(505) Project
Arguments: [productPlant#146594]
(506) Join
Arguments: LeftOuter, ((product#146582 <=> productPlant#146594.product.internalRefUUID) AND (plant#146583 <=> productPlant#146594.plant.internalRefUUID))
(507) Project
Arguments: [product#146582, plant#146583, orderDateTime#146584, productPlant#146594]
(508) SubqueryAlias
Arguments: wl
(509) LogicalRelation
Arguments: parquet, [systemId#146595, internalUUID#146596, id#146597, displayId#146598, name#146599, category#146600, companyCode#146601, address#146602, mainDistributionChain#146603, mainPurchasingOrganization#146604, validPurchasingOrganizations#146605, productGroup#146606], false
(510) Repartition
Arguments: 25, true
(511) Project
Arguments: [internalUUID#146596, address#146602.timeZone.code AS timezonecode#146607]
(512) Join
Arguments: LeftOuter, (plant#146583 <=> internalUUID#146596)
(513) Project
Arguments: [product#146582, plant#146583, orderDateTime#146584, productPlant#146594, internalUUID#146596, CASE WHEN isnotnull(timezonecode#146607) THEN timezonecode#146607 ELSE UTC END AS timezonecode#146608]
(514) Project
Arguments: [product#146582, plant#146583, orderDateTime#146584, productPlant#146594, timezonecode#146608]
(515) LogicalRelation
Arguments: parquet, [systemId#146609, internalUUID#146610, id#146611, displayId#146612, name#146613, baseUnitOfMeasure#146614, unitOfMeasures#146615, unitOfMeasureConversions#146616, productionAspect#146617, salesAspect#146618, procurementAspect#146619, productGroup#146620], false
(516) Repartition
Arguments: 25, true
(517) Join
Arguments: LeftOuter, (product#146582 = internalUUID#146610)
(518) Project
Arguments: [product#146582, plant#146583, orderDateTime#146584, productPlant#146594, timezonecode#146608, systemId#146609, internalUUID#146610, id#146611, displayId#146612, name#146613, baseUnitOfMeasure#146614, unitOfMeasures#146615, unitOfMeasureConversions#146616, productionAspect#146617, salesAspect#146618, procurementAspect#146619, productGroup#146620, filter(unitOfMeasureConversions#146616, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#146594.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#146594.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#146614.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#146614.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#146621]
(519) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146621.quantityNumerator), true, [quantityNumerator#146622]
(520) Project
Arguments: [product#146582, plant#146583, orderDateTime#146584, productPlant#146594, timezonecode#146608, systemId#146609, internalUUID#146610, id#146611, displayId#146612, name#146613, baseUnitOfMeasure#146614, unitOfMeasures#146615, unitOfMeasureConversions#146616, productionAspect#146617, salesAspect#146618, procurementAspect#146619, productGroup#146620, filteredUnitOfMeasureConversions#146621, quantityNumerator#146622]
(521) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146621.quantityDenominator), true, [quantityDenominator#146623]
(522) Project
Arguments: [product#146582, plant#146583, orderDateTime#146584, productPlant#146594, timezonecode#146608, systemId#146609, internalUUID#146610, id#146611, displayId#146612, name#146613, baseUnitOfMeasure#146614, unitOfMeasures#146615, unitOfMeasureConversions#146616, productionAspect#146617, salesAspect#146618, procurementAspect#146619, productGroup#146620, filteredUnitOfMeasureConversions#146621, quantityNumerator#146622, quantityDenominator#146623]
(523) Project
Arguments: [product#146582, plant#146583, orderDateTime#146584, productPlant#146594, timezonecode#146608, systemId#146609, internalUUID#146610, id#146611, displayId#146612, name#146613, baseUnitOfMeasure#146614, unitOfMeasures#146615, unitOfMeasureConversions#146616, productionAspect#146617, salesAspect#146618, procurementAspect#146619, productGroup#146620, filteredUnitOfMeasureConversions#146621, quantityNumerator#146622, quantityDenominator#146623, (cast(quantityNumerator#146622 as double) / cast(quantityDenominator#146623 as double)) AS outboundUnit#146624]
(524) Project
Arguments: [product#146582, plant#146583, orderDateTime#146584, productPlant#146594, timezonecode#146608, systemId#146609, internalUUID#146610, id#146611, displayId#146612, name#146613, baseUnitOfMeasure#146614, unitOfMeasures#146615, unitOfMeasureConversions#146616, productionAspect#146617, salesAspect#146618, procurementAspect#146619, productGroup#146620, filteredUnitOfMeasureConversions#146621, quantityNumerator#146622, quantityDenominator#146623, CASE WHEN (isnull(outboundUnit#146624) OR (outboundUnit#146624 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#146624 END AS outboundUnit#146625]
(525) Project
Arguments: [product#146582, plant#146583, orderDateTime#146584, productPlant#146594, timezonecode#146608, outboundUnit#146625]
(526) Join
Arguments: Inner, ((plantUuid#146574 = plant#146583) AND (productUuid#146576 = product#146582))
(527) Filter
Arguments: (calculationDateTime#146570 <= orderDateTime#146584)
(528) Project
Arguments: [plantUuid#146574 AS plant#146626, productUuid#146576 AS product#146627, storageLocId#146577, calculationDateTime#146570, quantity#146579]
(529) LogicalRelation
Arguments: parquet, [systemId#146628, internalUUID#146629, product#146630, plant#146631, calculationDateTime#146632, stockQuantities#146633], false
(530) Repartition
Arguments: 25, true
(531) LogicalRelation
Arguments: parquet, [marketUnit#146634, description#146635, articleHierarchy#146636, defaultCurrency#146637, responsibilities#146638, replenishmentTypes#146639, distributionCenters#146640, assignedArticleHierarchyNodes#146641, minOrderQtySetting#146642, listingCheck#146643, odsSelection#146644, demandProfiles#146645, constraintProfiles#146646, optimizationProfiles#146647, orderGroupSplitProfiles#146648, supplierMinimumProfiles#146649, multipleRestrictionProfiles#146650, preferredUomSource#146651, handlingOfUnfulfilledDemands#146652, negligibleQuantitiesThreshold#146653, eventtype#146654, minOrderQtySettingInternal#146655], false
(532) Repartition
Arguments: 25, true
(533) Filter
Arguments: (marketUnit#146634 <=> Daily_grocery)
(534) Project
Arguments: [marketUnit#146634, description#146635, articleHierarchy#146636, defaultCurrency#146637, responsibilities#146638, replenishmentTypes#146639, distributionCenters#146640, assignedArticleHierarchyNodes#146641, minOrderQtySetting#146642, listingCheck#146643, odsSelection#146644, demandProfiles#146645, constraintProfiles#146646, optimizationProfiles#146647, orderGroupSplitProfiles#146648, supplierMinimumProfiles#146649, multipleRestrictionProfiles#146650, preferredUomSource#146651, handlingOfUnfulfilledDemands#146652, negligibleQuantitiesThreshold#146653, eventtype#146654, minOrderQtySettingInternal#146655]
(535) Project
Arguments: [distributionCenters#146640]
(536) Generate
Arguments: explode(distributionCenters#146640), false, [distributionCenters#146656]
(537) Project
Arguments: [distributionCenters#146656]
(538) Generate
Arguments: explode(distributionCenters#146656.storageLocations), false, [storageLocations#146657]
(539) Project
Arguments: [distributionCenters#146656.id AS plantId#146658, distributionCenters#146656.internalRefUUID AS plantUuid#146659, storageLocations#146657]
(540) Project
Arguments: [plantId#146658, plantUuid#146659, storageLocations#146657.id AS storageLocId#146660, storageLocations#146657.internalRefUUID AS storageLocUuid#146661]
(541) LogicalRelation
Arguments: parquet, [product#146662, plant#146663, orderDateTime#146664, planningStartDateTime#146665], false
(542) RepartitionByExpression
Arguments: [product#146662, plant#146663], 25
(543) Project
Arguments: [product#146662, plant#146663, orderDateTime#146664]
(544) LogicalRelation
Arguments: parquet, [systemId#146666, internalUUID#146667, plant#146668, product#146669, blockedForReplenishmentStartingFrom#146670, productionAspect#146671, salesPlant#146672, listing#146673], false
(545) Repartition
Arguments: 25, true
(546) Project
Arguments: [systemId#146666, internalUUID#146667, plant#146668, product#146669, blockedForReplenishmentStartingFrom#146670, productionAspect#146671, salesPlant#146672, listing#146673, struct(systemId, systemId#146666, internalUUID, internalUUID#146667, plant, plant#146668, product, product#146669, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#146670, productionAspect, productionAspect#146671, salesPlant, salesPlant#146672, listing, listing#146673) AS productPlant#146674]
(547) Project
Arguments: [productPlant#146674]
(548) Join
Arguments: LeftOuter, ((product#146662 <=> productPlant#146674.product.internalRefUUID) AND (plant#146663 <=> productPlant#146674.plant.internalRefUUID))
(549) Project
Arguments: [product#146662, plant#146663, orderDateTime#146664, productPlant#146674]
(550) SubqueryAlias
Arguments: wl
(551) LogicalRelation
Arguments: parquet, [systemId#146675, internalUUID#146676, id#146677, displayId#146678, name#146679, category#146680, companyCode#146681, address#146682, mainDistributionChain#146683, mainPurchasingOrganization#146684, validPurchasingOrganizations#146685, productGroup#146686], false
(552) Repartition
Arguments: 25, true
(553) Project
Arguments: [internalUUID#146676, address#146682.timeZone.code AS timezonecode#146687]
(554) Join
Arguments: LeftOuter, (plant#146663 <=> internalUUID#146676)
(555) Project
Arguments: [product#146662, plant#146663, orderDateTime#146664, productPlant#146674, internalUUID#146676, CASE WHEN isnotnull(timezonecode#146687) THEN timezonecode#146687 ELSE UTC END AS timezonecode#146688]
(556) Project
Arguments: [product#146662, plant#146663, orderDateTime#146664, productPlant#146674, timezonecode#146688]
(557) LogicalRelation
Arguments: parquet, [systemId#146689, internalUUID#146690, id#146691, displayId#146692, name#146693, baseUnitOfMeasure#146694, unitOfMeasures#146695, unitOfMeasureConversions#146696, productionAspect#146697, salesAspect#146698, procurementAspect#146699, productGroup#146700], false
(558) Repartition
Arguments: 25, true
(559) Join
Arguments: LeftOuter, (product#146662 = internalUUID#146690)
(560) Project
Arguments: [product#146662, plant#146663, orderDateTime#146664, productPlant#146674, timezonecode#146688, systemId#146689, internalUUID#146690, id#146691, displayId#146692, name#146693, baseUnitOfMeasure#146694, unitOfMeasures#146695, unitOfMeasureConversions#146696, productionAspect#146697, salesAspect#146698, procurementAspect#146699, productGroup#146700, filter(unitOfMeasureConversions#146696, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#146674.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#146674.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#146694.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#146694.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#146701]
(561) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146701.quantityNumerator), true, [quantityNumerator#146702]
(562) Project
Arguments: [product#146662, plant#146663, orderDateTime#146664, productPlant#146674, timezonecode#146688, systemId#146689, internalUUID#146690, id#146691, displayId#146692, name#146693, baseUnitOfMeasure#146694, unitOfMeasures#146695, unitOfMeasureConversions#146696, productionAspect#146697, salesAspect#146698, procurementAspect#146699, productGroup#146700, filteredUnitOfMeasureConversions#146701, quantityNumerator#146702]
(563) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146701.quantityDenominator), true, [quantityDenominator#146703]
(564) Project
Arguments: [product#146662, plant#146663, orderDateTime#146664, productPlant#146674, timezonecode#146688, systemId#146689, internalUUID#146690, id#146691, displayId#146692, name#146693, baseUnitOfMeasure#146694, unitOfMeasures#146695, unitOfMeasureConversions#146696, productionAspect#146697, salesAspect#146698, procurementAspect#146699, productGroup#146700, filteredUnitOfMeasureConversions#146701, quantityNumerator#146702, quantityDenominator#146703]
(565) Project
Arguments: [product#146662, plant#146663, orderDateTime#146664, productPlant#146674, timezonecode#146688, systemId#146689, internalUUID#146690, id#146691, displayId#146692, name#146693, baseUnitOfMeasure#146694, unitOfMeasures#146695, unitOfMeasureConversions#146696, productionAspect#146697, salesAspect#146698, procurementAspect#146699, productGroup#146700, filteredUnitOfMeasureConversions#146701, quantityNumerator#146702, quantityDenominator#146703, (cast(quantityNumerator#146702 as double) / cast(quantityDenominator#146703 as double)) AS outboundUnit#146704]
(566) Project
Arguments: [product#146662, plant#146663, orderDateTime#146664, productPlant#146674, timezonecode#146688, systemId#146689, internalUUID#146690, id#146691, displayId#146692, name#146693, baseUnitOfMeasure#146694, unitOfMeasures#146695, unitOfMeasureConversions#146696, productionAspect#146697, salesAspect#146698, procurementAspect#146699, productGroup#146700, filteredUnitOfMeasureConversions#146701, quantityNumerator#146702, quantityDenominator#146703, CASE WHEN (isnull(outboundUnit#146704) OR (outboundUnit#146704 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#146704 END AS outboundUnit#146705]
(567) Project
Arguments: [product#146662, plant#146663, orderDateTime#146664, productPlant#146674, timezonecode#146688, outboundUnit#146705]
(568) Project
Arguments: [plant#146663]
(569) Deduplicate
Arguments: [plant#146663]
(570) Join
Arguments: Inner, (plantUuid#146659 = plant#146663)
(571) Project
Arguments: [plantId#146658, plantUuid#146659, storageLocId#146660, storageLocUuid#146661]
(572) Join
Arguments: Inner, (plant#146631.internalRefUUID <=> plantUuid#146659)
(573) Generate
Arguments: explode(filter(stockQuantities#146633, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#146661) AND (lambda x#143085.storageLocation.Id = storageLocId#146660)), lambda x#143085, false))), false, [stockQuantity#146706]
(574) Project
Arguments: [systemId#146628, internalUUID#146629, product#146630, plant#146631, calculationDateTime#146632, stockQuantities#146633, plantId#146658, plantUuid#146659, storageLocId#146660, storageLocUuid#146661, stockQuantity#146706]
(575) Aggregate
Arguments: [plantUuid#146659, internalUUID#146629, plant#146631, product#146630, systemId#146628], [plantUuid#146659, internalUUID#146629, plant#146631, product#146630, systemId#146628, first(calculationDateTime#146632, false) AS calculationDateTime#146707, collect_list(stockQuantity#146706, 0, 0) AS stockQuantities#146708]
(576) Project
Arguments: [systemId#146628, internalUUID#146629, product#146630, plant#146631, calculationDateTime#146707, stockQuantities#146708]
(577) Generate
Arguments: explode(stockQuantities#146708), false, [stockQuantity#146709]
(578) Project
Arguments: [systemId#146628, internalUUID#146629, product#146630, plant#146631, calculationDateTime#146707, stockQuantities#146708, stockQuantity#146709]
(579) Project
Arguments: [plant#146631.id AS plant#146710, plant#146631.internalRefUUID AS plantUuid#146711, product#146630.id AS product#146712, product#146630.internalRefUUID AS productUuid#146713, calculationDateTime#146707, stockQuantity#146709.storagelocation.id AS storageLocId#146714, stockQuantity#146709.storagelocation.internalRefUUID AS storageLocUuid#146715, stockQuantity#146709.quantity.measure AS quantity#146716, stockQuantity#146709.specialStockIndicator.code AS specialStockIndicator#146717, stockQuantity#146709.stockType.code AS stockType#146718]
(580) Filter
Arguments: ((specialStockIndicator#146717 = ) AND (stockType#146718 = 01))
(581) LogicalRelation
Arguments: parquet, [product#146719, plant#146720, orderDateTime#146721, planningStartDateTime#146722], false
(582) RepartitionByExpression
Arguments: [product#146719, plant#146720], 25
(583) Project
Arguments: [product#146719, plant#146720, orderDateTime#146721]
(584) LogicalRelation
Arguments: parquet, [systemId#146723, internalUUID#146724, plant#146725, product#146726, blockedForReplenishmentStartingFrom#146727, productionAspect#146728, salesPlant#146729, listing#146730], false
(585) Repartition
Arguments: 25, true
(586) Project
Arguments: [systemId#146723, internalUUID#146724, plant#146725, product#146726, blockedForReplenishmentStartingFrom#146727, productionAspect#146728, salesPlant#146729, listing#146730, struct(systemId, systemId#146723, internalUUID, internalUUID#146724, plant, plant#146725, product, product#146726, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#146727, productionAspect, productionAspect#146728, salesPlant, salesPlant#146729, listing, listing#146730) AS productPlant#146731]
(587) Project
Arguments: [productPlant#146731]
(588) Join
Arguments: LeftOuter, ((product#146719 <=> productPlant#146731.product.internalRefUUID) AND (plant#146720 <=> productPlant#146731.plant.internalRefUUID))
(589) Project
Arguments: [product#146719, plant#146720, orderDateTime#146721, productPlant#146731]
(590) SubqueryAlias
Arguments: wl
(591) LogicalRelation
Arguments: parquet, [systemId#146732, internalUUID#146733, id#146734, displayId#146735, name#146736, category#146737, companyCode#146738, address#146739, mainDistributionChain#146740, mainPurchasingOrganization#146741, validPurchasingOrganizations#146742, productGroup#146743], false
(592) Repartition
Arguments: 25, true
(593) Project
Arguments: [internalUUID#146733, address#146739.timeZone.code AS timezonecode#146744]
(594) Join
Arguments: LeftOuter, (plant#146720 <=> internalUUID#146733)
(595) Project
Arguments: [product#146719, plant#146720, orderDateTime#146721, productPlant#146731, internalUUID#146733, CASE WHEN isnotnull(timezonecode#146744) THEN timezonecode#146744 ELSE UTC END AS timezonecode#146745]
(596) Project
Arguments: [product#146719, plant#146720, orderDateTime#146721, productPlant#146731, timezonecode#146745]
(597) LogicalRelation
Arguments: parquet, [systemId#146746, internalUUID#146747, id#146748, displayId#146749, name#146750, baseUnitOfMeasure#146751, unitOfMeasures#146752, unitOfMeasureConversions#146753, productionAspect#146754, salesAspect#146755, procurementAspect#146756, productGroup#146757], false
(598) Repartition
Arguments: 25, true
(599) Join
Arguments: LeftOuter, (product#146719 = internalUUID#146747)
(600) Project
Arguments: [product#146719, plant#146720, orderDateTime#146721, productPlant#146731, timezonecode#146745, systemId#146746, internalUUID#146747, id#146748, displayId#146749, name#146750, baseUnitOfMeasure#146751, unitOfMeasures#146752, unitOfMeasureConversions#146753, productionAspect#146754, salesAspect#146755, procurementAspect#146756, productGroup#146757, filter(unitOfMeasureConversions#146753, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#146731.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#146731.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#146751.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#146751.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#146758]
(601) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146758.quantityNumerator), true, [quantityNumerator#146759]
(602) Project
Arguments: [product#146719, plant#146720, orderDateTime#146721, productPlant#146731, timezonecode#146745, systemId#146746, internalUUID#146747, id#146748, displayId#146749, name#146750, baseUnitOfMeasure#146751, unitOfMeasures#146752, unitOfMeasureConversions#146753, productionAspect#146754, salesAspect#146755, procurementAspect#146756, productGroup#146757, filteredUnitOfMeasureConversions#146758, quantityNumerator#146759]
(603) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146758.quantityDenominator), true, [quantityDenominator#146760]
(604) Project
Arguments: [product#146719, plant#146720, orderDateTime#146721, productPlant#146731, timezonecode#146745, systemId#146746, internalUUID#146747, id#146748, displayId#146749, name#146750, baseUnitOfMeasure#146751, unitOfMeasures#146752, unitOfMeasureConversions#146753, productionAspect#146754, salesAspect#146755, procurementAspect#146756, productGroup#146757, filteredUnitOfMeasureConversions#146758, quantityNumerator#146759, quantityDenominator#146760]
(605) Project
Arguments: [product#146719, plant#146720, orderDateTime#146721, productPlant#146731, timezonecode#146745, systemId#146746, internalUUID#146747, id#146748, displayId#146749, name#146750, baseUnitOfMeasure#146751, unitOfMeasures#146752, unitOfMeasureConversions#146753, productionAspect#146754, salesAspect#146755, procurementAspect#146756, productGroup#146757, filteredUnitOfMeasureConversions#146758, quantityNumerator#146759, quantityDenominator#146760, (cast(quantityNumerator#146759 as double) / cast(quantityDenominator#146760 as double)) AS outboundUnit#146761]
(606) Project
Arguments: [product#146719, plant#146720, orderDateTime#146721, productPlant#146731, timezonecode#146745, systemId#146746, internalUUID#146747, id#146748, displayId#146749, name#146750, baseUnitOfMeasure#146751, unitOfMeasures#146752, unitOfMeasureConversions#146753, productionAspect#146754, salesAspect#146755, procurementAspect#146756, productGroup#146757, filteredUnitOfMeasureConversions#146758, quantityNumerator#146759, quantityDenominator#146760, CASE WHEN (isnull(outboundUnit#146761) OR (outboundUnit#146761 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#146761 END AS outboundUnit#146762]
(607) Project
Arguments: [product#146719, plant#146720, orderDateTime#146721, productPlant#146731, timezonecode#146745, outboundUnit#146762]
(608) Join
Arguments: Inner, ((plantUuid#146711 = plant#146720) AND (productUuid#146713 = product#146719))
(609) Filter
Arguments: (calculationDateTime#146707 <= orderDateTime#146721)
(610) Project
Arguments: [plantUuid#146711 AS plant#146763, productUuid#146713 AS product#146764, storageLocId#146714, calculationDateTime#146707, quantity#146716]
(611) Aggregate
Arguments: [plant#146763, product#146764, storageLocId#146714], [plant#146763, product#146764, storageLocId#146714, max(calculationDateTime#146707) AS max_calc_datetime#146765]
(612) Join
Arguments: Inner, ((((plant#146626 <=> plant#146763) AND (product#146627 <=> product#146764)) AND (storageLocId#146577 <=> storageLocId#146714)) AND (calculationDateTime#146570 <=> max_calc_datetime#146765))
(613) Project
Arguments: [plant#146626, product#146627, storageLocId#146577, calculationDateTime#146570, quantity#146579]
(614) Aggregate
Arguments: [product#146627, plant#146626], [product#146627, plant#146626, sum(quantity#146579) AS quantitySum#146766, min(calculationDateTime#146570) AS minCalculationDateTime#146767]
(615) Project
Arguments: [product#146627, plant#146626, quantitySum#146766, minCalculationDateTime#146767, round(quantitySum#146766, 0) AS roundedQuantitySum#146768]
(616) Join
Arguments: LeftOuter, ((plant#146448 = plant#146626) AND (product#146447 = product#146627))
(617) Project
Arguments: [product#146447, plant#146448, orderDateTime#146449, productPlant#146459, timezonecode#146473, outboundUnit#146490, roundedQuantitySum#146768, minCalculationDateTime#146767]
(618) Project
Arguments: [product#146447, plant#146448, orderDateTime#146449, productPlant#146459, timezonecode#146473, outboundUnit#146490, roundedQuantitySum#146768, minCalculationDateTime#146767, CASE WHEN isnotnull(minCalculationDateTime#146767) THEN minCalculationDateTime#146767 ELSE orderDateTime#146449 END AS stockDatetime#146769]
(619) Project
Arguments: [product#146447, plant#146448, orderDateTime#146449, productPlant#146459, timezonecode#146473, outboundUnit#146490, roundedQuantitySum#146768, minCalculationDateTime#146767, stockDatetime#146769, CASE WHEN isnotnull(roundedQuantitySum#146768) THEN array(roundedQuantitySum#146768) ELSE array(0.0) END AS stockBatchQuantities#146770]
(620) Project
Arguments: [product#146447, plant#146448, orderDateTime#146449, productPlant#146459, timezonecode#146473, outboundUnit#146490, roundedQuantitySum#146768, minCalculationDateTime#146767, stockDatetime#146769, stockBatchQuantities#146770, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#146771]
(621) Project
Arguments: [product#146447, plant#146448, orderDateTime#146449, productPlant#146459, timezonecode#146473, outboundUnit#146490, roundedQuantitySum#146768, stockDatetime#146769, stockBatchQuantities#146770, stockBatchShelfLifeEndDatetimes#146771]
(622) Project
Arguments: [product#146447, plant#146448, orderDateTime#146449, productPlant#146459, timezonecode#146473, outboundUnit#146490, stockDatetime#146769, stockBatchQuantities#146770, stockBatchShelfLifeEndDatetimes#146771]
(623) LogicalRelation
Arguments: parquet, [product#146772, plant#146773, orderDateTime#146774, planningStartDateTime#146775], false
(624) RepartitionByExpression
Arguments: [product#146772, plant#146773], 25
(625) Project
Arguments: [product#146772, plant#146773, orderDateTime#146774]
(626) LogicalRelation
Arguments: parquet, [systemId#146776, internalUUID#146777, plant#146778, product#146779, blockedForReplenishmentStartingFrom#146780, productionAspect#146781, salesPlant#146782, listing#146783], false
(627) Repartition
Arguments: 25, true
(628) Project
Arguments: [systemId#146776, internalUUID#146777, plant#146778, product#146779, blockedForReplenishmentStartingFrom#146780, productionAspect#146781, salesPlant#146782, listing#146783, struct(systemId, systemId#146776, internalUUID, internalUUID#146777, plant, plant#146778, product, product#146779, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#146780, productionAspect, productionAspect#146781, salesPlant, salesPlant#146782, listing, listing#146783) AS productPlant#146784]
(629) Project
Arguments: [productPlant#146784]
(630) Join
Arguments: LeftOuter, ((product#146772 <=> productPlant#146784.product.internalRefUUID) AND (plant#146773 <=> productPlant#146784.plant.internalRefUUID))
(631) Project
Arguments: [product#146772, plant#146773, orderDateTime#146774, productPlant#146784]
(632) SubqueryAlias
Arguments: wl
(633) LogicalRelation
Arguments: parquet, [systemId#146785, internalUUID#146786, id#146787, displayId#146788, name#146789, category#146790, companyCode#146791, address#146792, mainDistributionChain#146793, mainPurchasingOrganization#146794, validPurchasingOrganizations#146795, productGroup#146796], false
(634) Repartition
Arguments: 25, true
(635) Project
Arguments: [internalUUID#146786, address#146792.timeZone.code AS timezonecode#146797]
(636) Join
Arguments: LeftOuter, (plant#146773 <=> internalUUID#146786)
(637) Project
Arguments: [product#146772, plant#146773, orderDateTime#146774, productPlant#146784, internalUUID#146786, CASE WHEN isnotnull(timezonecode#146797) THEN timezonecode#146797 ELSE UTC END AS timezonecode#146798]
(638) Project
Arguments: [product#146772, plant#146773, orderDateTime#146774, productPlant#146784, timezonecode#146798]
(639) LogicalRelation
Arguments: parquet, [systemId#146799, internalUUID#146800, id#146801, displayId#146802, name#146803, baseUnitOfMeasure#146804, unitOfMeasures#146805, unitOfMeasureConversions#146806, productionAspect#146807, salesAspect#146808, procurementAspect#146809, productGroup#146810], false
(640) Repartition
Arguments: 25, true
(641) Join
Arguments: LeftOuter, (product#146772 = internalUUID#146800)
(642) Project
Arguments: [product#146772, plant#146773, orderDateTime#146774, productPlant#146784, timezonecode#146798, systemId#146799, internalUUID#146800, id#146801, displayId#146802, name#146803, baseUnitOfMeasure#146804, unitOfMeasures#146805, unitOfMeasureConversions#146806, productionAspect#146807, salesAspect#146808, procurementAspect#146809, productGroup#146810, filter(unitOfMeasureConversions#146806, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#146784.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#146784.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#146804.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#146804.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#146811]
(643) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146811.quantityNumerator), true, [quantityNumerator#146812]
(644) Project
Arguments: [product#146772, plant#146773, orderDateTime#146774, productPlant#146784, timezonecode#146798, systemId#146799, internalUUID#146800, id#146801, displayId#146802, name#146803, baseUnitOfMeasure#146804, unitOfMeasures#146805, unitOfMeasureConversions#146806, productionAspect#146807, salesAspect#146808, procurementAspect#146809, productGroup#146810, filteredUnitOfMeasureConversions#146811, quantityNumerator#146812]
(645) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146811.quantityDenominator), true, [quantityDenominator#146813]
(646) Project
Arguments: [product#146772, plant#146773, orderDateTime#146774, productPlant#146784, timezonecode#146798, systemId#146799, internalUUID#146800, id#146801, displayId#146802, name#146803, baseUnitOfMeasure#146804, unitOfMeasures#146805, unitOfMeasureConversions#146806, productionAspect#146807, salesAspect#146808, procurementAspect#146809, productGroup#146810, filteredUnitOfMeasureConversions#146811, quantityNumerator#146812, quantityDenominator#146813]
(647) Project
Arguments: [product#146772, plant#146773, orderDateTime#146774, productPlant#146784, timezonecode#146798, systemId#146799, internalUUID#146800, id#146801, displayId#146802, name#146803, baseUnitOfMeasure#146804, unitOfMeasures#146805, unitOfMeasureConversions#146806, productionAspect#146807, salesAspect#146808, procurementAspect#146809, productGroup#146810, filteredUnitOfMeasureConversions#146811, quantityNumerator#146812, quantityDenominator#146813, (cast(quantityNumerator#146812 as double) / cast(quantityDenominator#146813 as double)) AS outboundUnit#146814]
(648) Project
Arguments: [product#146772, plant#146773, orderDateTime#146774, productPlant#146784, timezonecode#146798, systemId#146799, internalUUID#146800, id#146801, displayId#146802, name#146803, baseUnitOfMeasure#146804, unitOfMeasures#146805, unitOfMeasureConversions#146806, productionAspect#146807, salesAspect#146808, procurementAspect#146809, productGroup#146810, filteredUnitOfMeasureConversions#146811, quantityNumerator#146812, quantityDenominator#146813, CASE WHEN (isnull(outboundUnit#146814) OR (outboundUnit#146814 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#146814 END AS outboundUnit#146815]
(649) Project
Arguments: [product#146772, plant#146773, orderDateTime#146774, productPlant#146784, timezonecode#146798, outboundUnit#146815]
(650) LogicalRelation
Arguments: parquet, [systemId#146816, internalUUID#146817, product#146818, plant#146819, calculationDateTime#146820, stockQuantities#146821], false
(651) Repartition
Arguments: 25, true
(652) LogicalRelation
Arguments: parquet, [marketUnit#146822, description#146823, articleHierarchy#146824, defaultCurrency#146825, responsibilities#146826, replenishmentTypes#146827, distributionCenters#146828, assignedArticleHierarchyNodes#146829, minOrderQtySetting#146830, listingCheck#146831, odsSelection#146832, demandProfiles#146833, constraintProfiles#146834, optimizationProfiles#146835, orderGroupSplitProfiles#146836, supplierMinimumProfiles#146837, multipleRestrictionProfiles#146838, preferredUomSource#146839, handlingOfUnfulfilledDemands#146840, negligibleQuantitiesThreshold#146841, eventtype#146842, minOrderQtySettingInternal#146843], false
(653) Repartition
Arguments: 25, true
(654) Filter
Arguments: (marketUnit#146822 <=> Daily_grocery)
(655) Project
Arguments: [marketUnit#146822, description#146823, articleHierarchy#146824, defaultCurrency#146825, responsibilities#146826, replenishmentTypes#146827, distributionCenters#146828, assignedArticleHierarchyNodes#146829, minOrderQtySetting#146830, listingCheck#146831, odsSelection#146832, demandProfiles#146833, constraintProfiles#146834, optimizationProfiles#146835, orderGroupSplitProfiles#146836, supplierMinimumProfiles#146837, multipleRestrictionProfiles#146838, preferredUomSource#146839, handlingOfUnfulfilledDemands#146840, negligibleQuantitiesThreshold#146841, eventtype#146842, minOrderQtySettingInternal#146843]
(656) Project
Arguments: [distributionCenters#146828]
(657) Generate
Arguments: explode(distributionCenters#146828), false, [distributionCenters#146844]
(658) Project
Arguments: [distributionCenters#146844]
(659) Generate
Arguments: explode(distributionCenters#146844.storageLocations), false, [storageLocations#146845]
(660) Project
Arguments: [distributionCenters#146844.id AS plantId#146846, distributionCenters#146844.internalRefUUID AS plantUuid#146847, storageLocations#146845]
(661) Project
Arguments: [plantId#146846, plantUuid#146847, storageLocations#146845.id AS storageLocId#146848, storageLocations#146845.internalRefUUID AS storageLocUuid#146849]
(662) LogicalRelation
Arguments: parquet, [product#146850, plant#146851, orderDateTime#146852, planningStartDateTime#146853], false
(663) RepartitionByExpression
Arguments: [product#146850, plant#146851], 25
(664) Project
Arguments: [product#146850, plant#146851, orderDateTime#146852]
(665) LogicalRelation
Arguments: parquet, [systemId#146854, internalUUID#146855, plant#146856, product#146857, blockedForReplenishmentStartingFrom#146858, productionAspect#146859, salesPlant#146860, listing#146861], false
(666) Repartition
Arguments: 25, true
(667) Project
Arguments: [systemId#146854, internalUUID#146855, plant#146856, product#146857, blockedForReplenishmentStartingFrom#146858, productionAspect#146859, salesPlant#146860, listing#146861, struct(systemId, systemId#146854, internalUUID, internalUUID#146855, plant, plant#146856, product, product#146857, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#146858, productionAspect, productionAspect#146859, salesPlant, salesPlant#146860, listing, listing#146861) AS productPlant#146862]
(668) Project
Arguments: [productPlant#146862]
(669) Join
Arguments: LeftOuter, ((product#146850 <=> productPlant#146862.product.internalRefUUID) AND (plant#146851 <=> productPlant#146862.plant.internalRefUUID))
(670) Project
Arguments: [product#146850, plant#146851, orderDateTime#146852, productPlant#146862]
(671) SubqueryAlias
Arguments: wl
(672) LogicalRelation
Arguments: parquet, [systemId#146863, internalUUID#146864, id#146865, displayId#146866, name#146867, category#146868, companyCode#146869, address#146870, mainDistributionChain#146871, mainPurchasingOrganization#146872, validPurchasingOrganizations#146873, productGroup#146874], false
(673) Repartition
Arguments: 25, true
(674) Project
Arguments: [internalUUID#146864, address#146870.timeZone.code AS timezonecode#146875]
(675) Join
Arguments: LeftOuter, (plant#146851 <=> internalUUID#146864)
(676) Project
Arguments: [product#146850, plant#146851, orderDateTime#146852, productPlant#146862, internalUUID#146864, CASE WHEN isnotnull(timezonecode#146875) THEN timezonecode#146875 ELSE UTC END AS timezonecode#146876]
(677) Project
Arguments: [product#146850, plant#146851, orderDateTime#146852, productPlant#146862, timezonecode#146876]
(678) LogicalRelation
Arguments: parquet, [systemId#146877, internalUUID#146878, id#146879, displayId#146880, name#146881, baseUnitOfMeasure#146882, unitOfMeasures#146883, unitOfMeasureConversions#146884, productionAspect#146885, salesAspect#146886, procurementAspect#146887, productGroup#146888], false
(679) Repartition
Arguments: 25, true
(680) Join
Arguments: LeftOuter, (product#146850 = internalUUID#146878)
(681) Project
Arguments: [product#146850, plant#146851, orderDateTime#146852, productPlant#146862, timezonecode#146876, systemId#146877, internalUUID#146878, id#146879, displayId#146880, name#146881, baseUnitOfMeasure#146882, unitOfMeasures#146883, unitOfMeasureConversions#146884, productionAspect#146885, salesAspect#146886, procurementAspect#146887, productGroup#146888, filter(unitOfMeasureConversions#146884, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#146862.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#146862.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#146882.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#146882.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#146889]
(682) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146889.quantityNumerator), true, [quantityNumerator#146890]
(683) Project
Arguments: [product#146850, plant#146851, orderDateTime#146852, productPlant#146862, timezonecode#146876, systemId#146877, internalUUID#146878, id#146879, displayId#146880, name#146881, baseUnitOfMeasure#146882, unitOfMeasures#146883, unitOfMeasureConversions#146884, productionAspect#146885, salesAspect#146886, procurementAspect#146887, productGroup#146888, filteredUnitOfMeasureConversions#146889, quantityNumerator#146890]
(684) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146889.quantityDenominator), true, [quantityDenominator#146891]
(685) Project
Arguments: [product#146850, plant#146851, orderDateTime#146852, productPlant#146862, timezonecode#146876, systemId#146877, internalUUID#146878, id#146879, displayId#146880, name#146881, baseUnitOfMeasure#146882, unitOfMeasures#146883, unitOfMeasureConversions#146884, productionAspect#146885, salesAspect#146886, procurementAspect#146887, productGroup#146888, filteredUnitOfMeasureConversions#146889, quantityNumerator#146890, quantityDenominator#146891]
(686) Project
Arguments: [product#146850, plant#146851, orderDateTime#146852, productPlant#146862, timezonecode#146876, systemId#146877, internalUUID#146878, id#146879, displayId#146880, name#146881, baseUnitOfMeasure#146882, unitOfMeasures#146883, unitOfMeasureConversions#146884, productionAspect#146885, salesAspect#146886, procurementAspect#146887, productGroup#146888, filteredUnitOfMeasureConversions#146889, quantityNumerator#146890, quantityDenominator#146891, (cast(quantityNumerator#146890 as double) / cast(quantityDenominator#146891 as double)) AS outboundUnit#146892]
(687) Project
Arguments: [product#146850, plant#146851, orderDateTime#146852, productPlant#146862, timezonecode#146876, systemId#146877, internalUUID#146878, id#146879, displayId#146880, name#146881, baseUnitOfMeasure#146882, unitOfMeasures#146883, unitOfMeasureConversions#146884, productionAspect#146885, salesAspect#146886, procurementAspect#146887, productGroup#146888, filteredUnitOfMeasureConversions#146889, quantityNumerator#146890, quantityDenominator#146891, CASE WHEN (isnull(outboundUnit#146892) OR (outboundUnit#146892 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#146892 END AS outboundUnit#146893]
(688) Project
Arguments: [product#146850, plant#146851, orderDateTime#146852, productPlant#146862, timezonecode#146876, outboundUnit#146893]
(689) Project
Arguments: [plant#146851]
(690) Deduplicate
Arguments: [plant#146851]
(691) Join
Arguments: Inner, (plantUuid#146847 = plant#146851)
(692) Project
Arguments: [plantId#146846, plantUuid#146847, storageLocId#146848, storageLocUuid#146849]
(693) Join
Arguments: Inner, (plant#146819.internalRefUUID <=> plantUuid#146847)
(694) Generate
Arguments: explode(filter(stockQuantities#146821, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#146849) AND (lambda x#143085.storageLocation.Id = storageLocId#146848)), lambda x#143085, false))), false, [stockQuantity#146894]
(695) Project
Arguments: [systemId#146816, internalUUID#146817, product#146818, plant#146819, calculationDateTime#146820, stockQuantities#146821, plantId#146846, plantUuid#146847, storageLocId#146848, storageLocUuid#146849, stockQuantity#146894]
(696) Aggregate
Arguments: [plantUuid#146847, internalUUID#146817, plant#146819, product#146818, systemId#146816], [plantUuid#146847, internalUUID#146817, plant#146819, product#146818, systemId#146816, first(calculationDateTime#146820, false) AS calculationDateTime#146895, collect_list(stockQuantity#146894, 0, 0) AS stockQuantities#146896]
(697) Project
Arguments: [systemId#146816, internalUUID#146817, product#146818, plant#146819, calculationDateTime#146895, stockQuantities#146896]
(698) Generate
Arguments: explode(stockQuantities#146896), false, [stockQuantity#146897]
(699) Project
Arguments: [systemId#146816, internalUUID#146817, product#146818, plant#146819, calculationDateTime#146895, stockQuantities#146896, stockQuantity#146897]
(700) Project
Arguments: [plant#146819.id AS plant#146898, plant#146819.internalRefUUID AS plantUuid#146899, product#146818.id AS product#146900, product#146818.internalRefUUID AS productUuid#146901, calculationDateTime#146895, stockQuantity#146897.storagelocation.id AS storageLocId#146902, stockQuantity#146897.storagelocation.internalRefUUID AS storageLocUuid#146903, stockQuantity#146897.quantity.measure AS quantity#146904, stockQuantity#146897.specialStockIndicator.code AS specialStockIndicator#146905, stockQuantity#146897.stockType.code AS stockType#146906]
(701) Filter
Arguments: ((specialStockIndicator#146905 = ) AND (stockType#146906 = 01))
(702) LogicalRelation
Arguments: parquet, [product#146907, plant#146908, orderDateTime#146909, planningStartDateTime#146910], false
(703) RepartitionByExpression
Arguments: [product#146907, plant#146908], 25
(704) Project
Arguments: [product#146907, plant#146908, orderDateTime#146909]
(705) LogicalRelation
Arguments: parquet, [systemId#146911, internalUUID#146912, plant#146913, product#146914, blockedForReplenishmentStartingFrom#146915, productionAspect#146916, salesPlant#146917, listing#146918], false
(706) Repartition
Arguments: 25, true
(707) Project
Arguments: [systemId#146911, internalUUID#146912, plant#146913, product#146914, blockedForReplenishmentStartingFrom#146915, productionAspect#146916, salesPlant#146917, listing#146918, struct(systemId, systemId#146911, internalUUID, internalUUID#146912, plant, plant#146913, product, product#146914, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#146915, productionAspect, productionAspect#146916, salesPlant, salesPlant#146917, listing, listing#146918) AS productPlant#146919]
(708) Project
Arguments: [productPlant#146919]
(709) Join
Arguments: LeftOuter, ((product#146907 <=> productPlant#146919.product.internalRefUUID) AND (plant#146908 <=> productPlant#146919.plant.internalRefUUID))
(710) Project
Arguments: [product#146907, plant#146908, orderDateTime#146909, productPlant#146919]
(711) SubqueryAlias
Arguments: wl
(712) LogicalRelation
Arguments: parquet, [systemId#146920, internalUUID#146921, id#146922, displayId#146923, name#146924, category#146925, companyCode#146926, address#146927, mainDistributionChain#146928, mainPurchasingOrganization#146929, validPurchasingOrganizations#146930, productGroup#146931], false
(713) Repartition
Arguments: 25, true
(714) Project
Arguments: [internalUUID#146921, address#146927.timeZone.code AS timezonecode#146932]
(715) Join
Arguments: LeftOuter, (plant#146908 <=> internalUUID#146921)
(716) Project
Arguments: [product#146907, plant#146908, orderDateTime#146909, productPlant#146919, internalUUID#146921, CASE WHEN isnotnull(timezonecode#146932) THEN timezonecode#146932 ELSE UTC END AS timezonecode#146933]
(717) Project
Arguments: [product#146907, plant#146908, orderDateTime#146909, productPlant#146919, timezonecode#146933]
(718) LogicalRelation
Arguments: parquet, [systemId#146934, internalUUID#146935, id#146936, displayId#146937, name#146938, baseUnitOfMeasure#146939, unitOfMeasures#146940, unitOfMeasureConversions#146941, productionAspect#146942, salesAspect#146943, procurementAspect#146944, productGroup#146945], false
(719) Repartition
Arguments: 25, true
(720) Join
Arguments: LeftOuter, (product#146907 = internalUUID#146935)
(721) Project
Arguments: [product#146907, plant#146908, orderDateTime#146909, productPlant#146919, timezonecode#146933, systemId#146934, internalUUID#146935, id#146936, displayId#146937, name#146938, baseUnitOfMeasure#146939, unitOfMeasures#146940, unitOfMeasureConversions#146941, productionAspect#146942, salesAspect#146943, procurementAspect#146944, productGroup#146945, filter(unitOfMeasureConversions#146941, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#146919.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#146919.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#146939.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#146939.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#146946]
(722) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146946.quantityNumerator), true, [quantityNumerator#146947]
(723) Project
Arguments: [product#146907, plant#146908, orderDateTime#146909, productPlant#146919, timezonecode#146933, systemId#146934, internalUUID#146935, id#146936, displayId#146937, name#146938, baseUnitOfMeasure#146939, unitOfMeasures#146940, unitOfMeasureConversions#146941, productionAspect#146942, salesAspect#146943, procurementAspect#146944, productGroup#146945, filteredUnitOfMeasureConversions#146946, quantityNumerator#146947]
(724) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146946.quantityDenominator), true, [quantityDenominator#146948]
(725) Project
Arguments: [product#146907, plant#146908, orderDateTime#146909, productPlant#146919, timezonecode#146933, systemId#146934, internalUUID#146935, id#146936, displayId#146937, name#146938, baseUnitOfMeasure#146939, unitOfMeasures#146940, unitOfMeasureConversions#146941, productionAspect#146942, salesAspect#146943, procurementAspect#146944, productGroup#146945, filteredUnitOfMeasureConversions#146946, quantityNumerator#146947, quantityDenominator#146948]
(726) Project
Arguments: [product#146907, plant#146908, orderDateTime#146909, productPlant#146919, timezonecode#146933, systemId#146934, internalUUID#146935, id#146936, displayId#146937, name#146938, baseUnitOfMeasure#146939, unitOfMeasures#146940, unitOfMeasureConversions#146941, productionAspect#146942, salesAspect#146943, procurementAspect#146944, productGroup#146945, filteredUnitOfMeasureConversions#146946, quantityNumerator#146947, quantityDenominator#146948, (cast(quantityNumerator#146947 as double) / cast(quantityDenominator#146948 as double)) AS outboundUnit#146949]
(727) Project
Arguments: [product#146907, plant#146908, orderDateTime#146909, productPlant#146919, timezonecode#146933, systemId#146934, internalUUID#146935, id#146936, displayId#146937, name#146938, baseUnitOfMeasure#146939, unitOfMeasures#146940, unitOfMeasureConversions#146941, productionAspect#146942, salesAspect#146943, procurementAspect#146944, productGroup#146945, filteredUnitOfMeasureConversions#146946, quantityNumerator#146947, quantityDenominator#146948, CASE WHEN (isnull(outboundUnit#146949) OR (outboundUnit#146949 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#146949 END AS outboundUnit#146950]
(728) Project
Arguments: [product#146907, plant#146908, orderDateTime#146909, productPlant#146919, timezonecode#146933, outboundUnit#146950]
(729) Join
Arguments: Inner, ((plantUuid#146899 = plant#146908) AND (productUuid#146901 = product#146907))
(730) Filter
Arguments: (calculationDateTime#146895 <= orderDateTime#146909)
(731) Project
Arguments: [plantUuid#146899 AS plant#146951, productUuid#146901 AS product#146952, storageLocId#146902, calculationDateTime#146895, quantity#146904]
(732) LogicalRelation
Arguments: parquet, [systemId#146953, internalUUID#146954, product#146955, plant#146956, calculationDateTime#146957, stockQuantities#146958], false
(733) Repartition
Arguments: 25, true
(734) LogicalRelation
Arguments: parquet, [marketUnit#146959, description#146960, articleHierarchy#146961, defaultCurrency#146962, responsibilities#146963, replenishmentTypes#146964, distributionCenters#146965, assignedArticleHierarchyNodes#146966, minOrderQtySetting#146967, listingCheck#146968, odsSelection#146969, demandProfiles#146970, constraintProfiles#146971, optimizationProfiles#146972, orderGroupSplitProfiles#146973, supplierMinimumProfiles#146974, multipleRestrictionProfiles#146975, preferredUomSource#146976, handlingOfUnfulfilledDemands#146977, negligibleQuantitiesThreshold#146978, eventtype#146979, minOrderQtySettingInternal#146980], false
(735) Repartition
Arguments: 25, true
(736) Filter
Arguments: (marketUnit#146959 <=> Daily_grocery)
(737) Project
Arguments: [marketUnit#146959, description#146960, articleHierarchy#146961, defaultCurrency#146962, responsibilities#146963, replenishmentTypes#146964, distributionCenters#146965, assignedArticleHierarchyNodes#146966, minOrderQtySetting#146967, listingCheck#146968, odsSelection#146969, demandProfiles#146970, constraintProfiles#146971, optimizationProfiles#146972, orderGroupSplitProfiles#146973, supplierMinimumProfiles#146974, multipleRestrictionProfiles#146975, preferredUomSource#146976, handlingOfUnfulfilledDemands#146977, negligibleQuantitiesThreshold#146978, eventtype#146979, minOrderQtySettingInternal#146980]
(738) Project
Arguments: [distributionCenters#146965]
(739) Generate
Arguments: explode(distributionCenters#146965), false, [distributionCenters#146981]
(740) Project
Arguments: [distributionCenters#146981]
(741) Generate
Arguments: explode(distributionCenters#146981.storageLocations), false, [storageLocations#146982]
(742) Project
Arguments: [distributionCenters#146981.id AS plantId#146983, distributionCenters#146981.internalRefUUID AS plantUuid#146984, storageLocations#146982]
(743) Project
Arguments: [plantId#146983, plantUuid#146984, storageLocations#146982.id AS storageLocId#146985, storageLocations#146982.internalRefUUID AS storageLocUuid#146986]
(744) LogicalRelation
Arguments: parquet, [product#146987, plant#146988, orderDateTime#146989, planningStartDateTime#146990], false
(745) RepartitionByExpression
Arguments: [product#146987, plant#146988], 25
(746) Project
Arguments: [product#146987, plant#146988, orderDateTime#146989]
(747) LogicalRelation
Arguments: parquet, [systemId#146991, internalUUID#146992, plant#146993, product#146994, blockedForReplenishmentStartingFrom#146995, productionAspect#146996, salesPlant#146997, listing#146998], false
(748) Repartition
Arguments: 25, true
(749) Project
Arguments: [systemId#146991, internalUUID#146992, plant#146993, product#146994, blockedForReplenishmentStartingFrom#146995, productionAspect#146996, salesPlant#146997, listing#146998, struct(systemId, systemId#146991, internalUUID, internalUUID#146992, plant, plant#146993, product, product#146994, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#146995, productionAspect, productionAspect#146996, salesPlant, salesPlant#146997, listing, listing#146998) AS productPlant#146999]
(750) Project
Arguments: [productPlant#146999]
(751) Join
Arguments: LeftOuter, ((product#146987 <=> productPlant#146999.product.internalRefUUID) AND (plant#146988 <=> productPlant#146999.plant.internalRefUUID))
(752) Project
Arguments: [product#146987, plant#146988, orderDateTime#146989, productPlant#146999]
(753) SubqueryAlias
Arguments: wl
(754) LogicalRelation
Arguments: parquet, [systemId#147000, internalUUID#147001, id#147002, displayId#147003, name#147004, category#147005, companyCode#147006, address#147007, mainDistributionChain#147008, mainPurchasingOrganization#147009, validPurchasingOrganizations#147010, productGroup#147011], false
(755) Repartition
Arguments: 25, true
(756) Project
Arguments: [internalUUID#147001, address#147007.timeZone.code AS timezonecode#147012]
(757) Join
Arguments: LeftOuter, (plant#146988 <=> internalUUID#147001)
(758) Project
Arguments: [product#146987, plant#146988, orderDateTime#146989, productPlant#146999, internalUUID#147001, CASE WHEN isnotnull(timezonecode#147012) THEN timezonecode#147012 ELSE UTC END AS timezonecode#147013]
(759) Project
Arguments: [product#146987, plant#146988, orderDateTime#146989, productPlant#146999, timezonecode#147013]
(760) LogicalRelation
Arguments: parquet, [systemId#147014, internalUUID#147015, id#147016, displayId#147017, name#147018, baseUnitOfMeasure#147019, unitOfMeasures#147020, unitOfMeasureConversions#147021, productionAspect#147022, salesAspect#147023, procurementAspect#147024, productGroup#147025], false
(761) Repartition
Arguments: 25, true
(762) Join
Arguments: LeftOuter, (product#146987 = internalUUID#147015)
(763) Project
Arguments: [product#146987, plant#146988, orderDateTime#146989, productPlant#146999, timezonecode#147013, systemId#147014, internalUUID#147015, id#147016, displayId#147017, name#147018, baseUnitOfMeasure#147019, unitOfMeasures#147020, unitOfMeasureConversions#147021, productionAspect#147022, salesAspect#147023, procurementAspect#147024, productGroup#147025, filter(unitOfMeasureConversions#147021, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#146999.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#146999.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#147019.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#147019.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#147026]
(764) Generate
Arguments: explode(filteredUnitOfMeasureConversions#147026.quantityNumerator), true, [quantityNumerator#147027]
(765) Project
Arguments: [product#146987, plant#146988, orderDateTime#146989, productPlant#146999, timezonecode#147013, systemId#147014, internalUUID#147015, id#147016, displayId#147017, name#147018, baseUnitOfMeasure#147019, unitOfMeasures#147020, unitOfMeasureConversions#147021, productionAspect#147022, salesAspect#147023, procurementAspect#147024, productGroup#147025, filteredUnitOfMeasureConversions#147026, quantityNumerator#147027]
(766) Generate
Arguments: explode(filteredUnitOfMeasureConversions#147026.quantityDenominator), true, [quantityDenominator#147028]
(767) Project
Arguments: [product#146987, plant#146988, orderDateTime#146989, productPlant#146999, timezonecode#147013, systemId#147014, internalUUID#147015, id#147016, displayId#147017, name#147018, baseUnitOfMeasure#147019, unitOfMeasures#147020, unitOfMeasureConversions#147021, productionAspect#147022, salesAspect#147023, procurementAspect#147024, productGroup#147025, filteredUnitOfMeasureConversions#147026, quantityNumerator#147027, quantityDenominator#147028]
(768) Project
Arguments: [product#146987, plant#146988, orderDateTime#146989, productPlant#146999, timezonecode#147013, systemId#147014, internalUUID#147015, id#147016, displayId#147017, name#147018, baseUnitOfMeasure#147019, unitOfMeasures#147020, unitOfMeasureConversions#147021, productionAspect#147022, salesAspect#147023, procurementAspect#147024, productGroup#147025, filteredUnitOfMeasureConversions#147026, quantityNumerator#147027, quantityDenominator#147028, (cast(quantityNumerator#147027 as double) / cast(quantityDenominator#147028 as double)) AS outboundUnit#147029]
(769) Project
Arguments: [product#146987, plant#146988, orderDateTime#146989, productPlant#146999, timezonecode#147013, systemId#147014, internalUUID#147015, id#147016, displayId#147017, name#147018, baseUnitOfMeasure#147019, unitOfMeasures#147020, unitOfMeasureConversions#147021, productionAspect#147022, salesAspect#147023, procurementAspect#147024, productGroup#147025, filteredUnitOfMeasureConversions#147026, quantityNumerator#147027, quantityDenominator#147028, CASE WHEN (isnull(outboundUnit#147029) OR (outboundUnit#147029 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#147029 END AS outboundUnit#147030]
(770) Project
Arguments: [product#146987, plant#146988, orderDateTime#146989, productPlant#146999, timezonecode#147013, outboundUnit#147030]
(771) Project
Arguments: [plant#146988]
(772) Deduplicate
Arguments: [plant#146988]
(773) Join
Arguments: Inner, (plantUuid#146984 = plant#146988)
(774) Project
Arguments: [plantId#146983, plantUuid#146984, storageLocId#146985, storageLocUuid#146986]
(775) Join
Arguments: Inner, (plant#146956.internalRefUUID <=> plantUuid#146984)
(776) Generate
Arguments: explode(filter(stockQuantities#146958, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#146986) AND (lambda x#143085.storageLocation.Id = storageLocId#146985)), lambda x#143085, false))), false, [stockQuantity#147031]
(777) Project
Arguments: [systemId#146953, internalUUID#146954, product#146955, plant#146956, calculationDateTime#146957, stockQuantities#146958, plantId#146983, plantUuid#146984, storageLocId#146985, storageLocUuid#146986, stockQuantity#147031]
(778) Aggregate
Arguments: [plantUuid#146984, internalUUID#146954, plant#146956, product#146955, systemId#146953], [plantUuid#146984, internalUUID#146954, plant#146956, product#146955, systemId#146953, first(calculationDateTime#146957, false) AS calculationDateTime#147032, collect_list(stockQuantity#147031, 0, 0) AS stockQuantities#147033]
(779) Project
Arguments: [systemId#146953, internalUUID#146954, product#146955, plant#146956, calculationDateTime#147032, stockQuantities#147033]
(780) Generate
Arguments: explode(stockQuantities#147033), false, [stockQuantity#147034]
(781) Project
Arguments: [systemId#146953, internalUUID#146954, product#146955, plant#146956, calculationDateTime#147032, stockQuantities#147033, stockQuantity#147034]
(782) Project
Arguments: [plant#146956.id AS plant#147035, plant#146956.internalRefUUID AS plantUuid#147036, product#146955.id AS product#147037, product#146955.internalRefUUID AS productUuid#147038, calculationDateTime#147032, stockQuantity#147034.storagelocation.id AS storageLocId#147039, stockQuantity#147034.storagelocation.internalRefUUID AS storageLocUuid#147040, stockQuantity#147034.quantity.measure AS quantity#147041, stockQuantity#147034.specialStockIndicator.code AS specialStockIndicator#147042, stockQuantity#147034.stockType.code AS stockType#147043]
(783) Filter
Arguments: ((specialStockIndicator#147042 = ) AND (stockType#147043 = 01))
(784) LogicalRelation
Arguments: parquet, [product#147044, plant#147045, orderDateTime#147046, planningStartDateTime#147047], false
(785) RepartitionByExpression
Arguments: [product#147044, plant#147045], 25
(786) Project
Arguments: [product#147044, plant#147045, orderDateTime#147046]
(787) LogicalRelation
Arguments: parquet, [systemId#147048, internalUUID#147049, plant#147050, product#147051, blockedForReplenishmentStartingFrom#147052, productionAspect#147053, salesPlant#147054, listing#147055], false
(788) Repartition
Arguments: 25, true
(789) Project
Arguments: [systemId#147048, internalUUID#147049, plant#147050, product#147051, blockedForReplenishmentStartingFrom#147052, productionAspect#147053, salesPlant#147054, listing#147055, struct(systemId, systemId#147048, internalUUID, internalUUID#147049, plant, plant#147050, product, product#147051, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#147052, productionAspect, productionAspect#147053, salesPlant, salesPlant#147054, listing, listing#147055) AS productPlant#147056]
(790) Project
Arguments: [productPlant#147056]
(791) Join
Arguments: LeftOuter, ((product#147044 <=> productPlant#147056.product.internalRefUUID) AND (plant#147045 <=> productPlant#147056.plant.internalRefUUID))
(792) Project
Arguments: [product#147044, plant#147045, orderDateTime#147046, productPlant#147056]
(793) SubqueryAlias
Arguments: wl
(794) LogicalRelation
Arguments: parquet, [systemId#147057, internalUUID#147058, id#147059, displayId#147060, name#147061, category#147062, companyCode#147063, address#147064, mainDistributionChain#147065, mainPurchasingOrganization#147066, validPurchasingOrganizations#147067, productGroup#147068], false
(795) Repartition
Arguments: 25, true
(796) Project
Arguments: [internalUUID#147058, address#147064.timeZone.code AS timezonecode#147069]
(797) Join
Arguments: LeftOuter, (plant#147045 <=> internalUUID#147058)
(798) Project
Arguments: [product#147044, plant#147045, orderDateTime#147046, productPlant#147056, internalUUID#147058, CASE WHEN isnotnull(timezonecode#147069) THEN timezonecode#147069 ELSE UTC END AS timezonecode#147070]
(799) Project
Arguments: [product#147044, plant#147045, orderDateTime#147046, productPlant#147056, timezonecode#147070]
(800) LogicalRelation
Arguments: parquet, [systemId#147071, internalUUID#147072, id#147073, displayId#147074, name#147075, baseUnitOfMeasure#147076, unitOfMeasures#147077, unitOfMeasureConversions#147078, productionAspect#147079, salesAspect#147080, procurementAspect#147081, productGroup#147082], false
(801) Repartition
Arguments: 25, true
(802) Join
Arguments: LeftOuter, (product#147044 = internalUUID#147072)
(803) Project
Arguments: [product#147044, plant#147045, orderDateTime#147046, productPlant#147056, timezonecode#147070, systemId#147071, internalUUID#147072, id#147073, displayId#147074, name#147075, baseUnitOfMeasure#147076, unitOfMeasures#147077, unitOfMeasureConversions#147078, productionAspect#147079, salesAspect#147080, procurementAspect#147081, productGroup#147082, filter(unitOfMeasureConversions#147078, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#147056.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#147056.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#147076.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#147076.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#147083]
(804) Generate
Arguments: explode(filteredUnitOfMeasureConversions#147083.quantityNumerator), true, [quantityNumerator#147084]
(805) Project
Arguments: [product#147044, plant#147045, orderDateTime#147046, productPlant#147056, timezonecode#147070, systemId#147071, internalUUID#147072, id#147073, displayId#147074, name#147075, baseUnitOfMeasure#147076, unitOfMeasures#147077, unitOfMeasureConversions#147078, productionAspect#147079, salesAspect#147080, procurementAspect#147081, productGroup#147082, filteredUnitOfMeasureConversions#147083, quantityNumerator#147084]
(806) Generate
Arguments: explode(filteredUnitOfMeasureConversions#147083.quantityDenominator), true, [quantityDenominator#147085]
(807) Project
Arguments: [product#147044, plant#147045, orderDateTime#147046, productPlant#147056, timezonecode#147070, systemId#147071, internalUUID#147072, id#147073, displayId#147074, name#147075, baseUnitOfMeasure#147076, unitOfMeasures#147077, unitOfMeasureConversions#147078, productionAspect#147079, salesAspect#147080, procurementAspect#147081, productGroup#147082, filteredUnitOfMeasureConversions#147083, quantityNumerator#147084, quantityDenominator#147085]
(808) Project
Arguments: [product#147044, plant#147045, orderDateTime#147046, productPlant#147056, timezonecode#147070, systemId#147071, internalUUID#147072, id#147073, displayId#147074, name#147075, baseUnitOfMeasure#147076, unitOfMeasures#147077, unitOfMeasureConversions#147078, productionAspect#147079, salesAspect#147080, procurementAspect#147081, productGroup#147082, filteredUnitOfMeasureConversions#147083, quantityNumerator#147084, quantityDenominator#147085, (cast(quantityNumerator#147084 as double) / cast(quantityDenominator#147085 as double)) AS outboundUnit#147086]
(809) Project
Arguments: [product#147044, plant#147045, orderDateTime#147046, productPlant#147056, timezonecode#147070, systemId#147071, internalUUID#147072, id#147073, displayId#147074, name#147075, baseUnitOfMeasure#147076, unitOfMeasures#147077, unitOfMeasureConversions#147078, productionAspect#147079, salesAspect#147080, procurementAspect#147081, productGroup#147082, filteredUnitOfMeasureConversions#147083, quantityNumerator#147084, quantityDenominator#147085, CASE WHEN (isnull(outboundUnit#147086) OR (outboundUnit#147086 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#147086 END AS outboundUnit#147087]
(810) Project
Arguments: [product#147044, plant#147045, orderDateTime#147046, productPlant#147056, timezonecode#147070, outboundUnit#147087]
(811) Join
Arguments: Inner, ((plantUuid#147036 = plant#147045) AND (productUuid#147038 = product#147044))
(812) Filter
Arguments: (calculationDateTime#147032 <= orderDateTime#147046)
(813) Project
Arguments: [plantUuid#147036 AS plant#147088, productUuid#147038 AS product#147089, storageLocId#147039, calculationDateTime#147032, quantity#147041]
(814) Aggregate
Arguments: [plant#147088, product#147089, storageLocId#147039], [plant#147088, product#147089, storageLocId#147039, max(calculationDateTime#147032) AS max_calc_datetime#147090]
(815) Join
Arguments: Inner, ((((plant#146951 <=> plant#147088) AND (product#146952 <=> product#147089)) AND (storageLocId#146902 <=> storageLocId#147039)) AND (calculationDateTime#146895 <=> max_calc_datetime#147090))
(816) Project
Arguments: [plant#146951, product#146952, storageLocId#146902, calculationDateTime#146895, quantity#146904]
(817) Aggregate
Arguments: [product#146952, plant#146951], [product#146952, plant#146951, sum(quantity#146904) AS quantitySum#147091, min(calculationDateTime#146895) AS minCalculationDateTime#147092]
(818) Project
Arguments: [product#146952, plant#146951, quantitySum#147091, minCalculationDateTime#147092, round(quantitySum#147091, 0) AS roundedQuantitySum#147093]
(819) Join
Arguments: LeftOuter, ((plant#146773 = plant#146951) AND (product#146772 = product#146952))
(820) Project
Arguments: [product#146772, plant#146773, orderDateTime#146774, productPlant#146784, timezonecode#146798, outboundUnit#146815, roundedQuantitySum#147093, minCalculationDateTime#147092]
(821) Project
Arguments: [product#146772, plant#146773, orderDateTime#146774, productPlant#146784, timezonecode#146798, outboundUnit#146815, roundedQuantitySum#147093, minCalculationDateTime#147092, CASE WHEN isnotnull(minCalculationDateTime#147092) THEN minCalculationDateTime#147092 ELSE orderDateTime#146774 END AS stockDatetime#147094]
(822) Project
Arguments: [product#146772, plant#146773, orderDateTime#146774, productPlant#146784, timezonecode#146798, outboundUnit#146815, roundedQuantitySum#147093, minCalculationDateTime#147092, stockDatetime#147094, CASE WHEN isnotnull(roundedQuantitySum#147093) THEN array(roundedQuantitySum#147093) ELSE array(0.0) END AS stockBatchQuantities#147095]
(823) Project
Arguments: [product#146772, plant#146773, orderDateTime#146774, productPlant#146784, timezonecode#146798, outboundUnit#146815, roundedQuantitySum#147093, minCalculationDateTime#147092, stockDatetime#147094, stockBatchQuantities#147095, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#147096]
(824) Project
Arguments: [product#146772, plant#146773, orderDateTime#146774, productPlant#146784, timezonecode#146798, outboundUnit#146815, roundedQuantitySum#147093, stockDatetime#147094, stockBatchQuantities#147095, stockBatchShelfLifeEndDatetimes#147096]
(825) Project
Arguments: [product#146772, plant#146773, orderDateTime#146774, productPlant#146784, timezonecode#146798, outboundUnit#146815, stockDatetime#147094, stockBatchQuantities#147095, stockBatchShelfLifeEndDatetimes#147096]
(826) LogicalRelation
Arguments: parquet, [product#147097, plant#147098, demandChannel#147099, demandStream#147100, considerVariance#147101, demandTimeBuckets#147102, demandPointInTimeStart#147103, demandPointInTimeEnd#147104, demandPointInTime#147105], false
(827) Join
Arguments: LeftOuter, ((product#146772 = product#147097) AND (plant#146773 = plant#147098))
(828) Project
Arguments: [product#146772, plant#146773, orderDateTime#146774, productPlant#146784, timezonecode#146798, outboundUnit#146815, stockDatetime#147094, stockBatchQuantities#147095, stockBatchShelfLifeEndDatetimes#147096, demandChannel#147099, demandStream#147100, considerVariance#147101, demandTimeBuckets#147102, demandPointInTimeStart#147103, demandPointInTimeEnd#147104, demandPointInTime#147105, product#147097, plant#147098]
(829) Project
Arguments: [product#146772, plant#146773, orderDateTime#146774, productPlant#146784, timezonecode#146798, outboundUnit#146815, stockDatetime#147094, stockBatchQuantities#147095, stockBatchShelfLifeEndDatetimes#147096, demandChannel#147099, demandStream#147100, considerVariance#147101, demandTimeBuckets#147102, demandPointInTimeStart#147103, demandPointInTimeEnd#147104, demandPointInTime#147105, CASE WHEN isnotnull(product#147097) THEN struct(demandChannel, demandChannel#147099, demandStream, demandStream#147100, considerVariance, considerVariance#147101, demandTimeBuckets, demandTimeBuckets#147102, demandPointInTimeStart, demandPointInTimeStart#147103, demandPointInTimeEnd, demandPointInTimeEnd#147104, demandPointInTime, demandPointInTime#147105) 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#147106]
(830) Aggregate
Arguments: [product#146772, plant#146773, orderDateTime#146774, productPlant#146784, timezonecode#146798, outboundUnit#146815, stockDatetime#147094, stockBatchQuantities#147095, stockBatchShelfLifeEndDatetimes#147096], [product#146772, plant#146773, orderDateTime#146774, productPlant#146784, timezonecode#146798, outboundUnit#146815, stockDatetime#147094, stockBatchQuantities#147095, stockBatchShelfLifeEndDatetimes#147096, collect_list(rawDemands#147106, 0, 0) AS rawDemands#147107]
(831) DeserializeToObject
Arguments: createexternalrow(invoke(product#146772.toString()), invoke(plant#146773.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#146774)), if (isnull(productPlant#146784)) null else createexternalrow(invoke(productPlant#146784.systemId.toString()), invoke(productPlant#146784.internalUUID.toString()), if (isnull(productPlant#146784.plant)) null else createexternalrow(invoke(productPlant#146784.plant.internalRefUUID.toString()), invoke(productPlant#146784.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#146784.product)) null else createexternalrow(invoke(productPlant#146784.product.internalRefUUID.toString()), invoke(productPlant#146784.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#146784.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#146784.productionAspect)) null else createexternalrow(if (isnull(productPlant#146784.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#146784.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#146784.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#146784.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#146784.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#146784.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#146784.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#146784.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#146784.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#146784.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#146784.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#146784.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#146784.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#146784.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#146784.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#146784.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#146784.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#146784.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#146784.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#146784.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#146784.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#146784.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#146784.salesPlant)) null else createexternalrow(if (isnull(productPlant#146784.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#146784.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#146784.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, 20030), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 20030))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 20030).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 20030).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 20030).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#146784.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#146798.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#146815)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#147094)), mapobjects(lambdavariable(MapObject, DoubleType, true, 20031), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 20031) as double))), stockBatchQuantities#147095, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 20032), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 20032) as timestamp)))), stockBatchShelfLifeEndDatetimes#147096, 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, 20033), 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, 20033))) 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, 20033).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, 20033).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, 20033).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20034), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20034))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20034).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20034).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20034).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, 20033).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, 20033).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, 20033).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20035), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20035))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20035).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20035).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20035).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, 20033).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#147107, 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#143452: org.apache.spark.sql.Row
(832) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@2d5ca6d1, 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#143457: 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#147108, 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#147109, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20021), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20021), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20022), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20022), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20023), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20023), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20024), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20024), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20025), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20025), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#147110, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20027), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20027), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20028), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20028), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20029), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20029), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#147111]
(834) Join
Arguments: LeftOuter, ((plant#147109 <=> plant#146448) AND (product#147108 <=> product#146447))
(835) Project
Arguments: [product#146447, plant#146448, orderDateTime#146449, productPlant#146459, timezonecode#146473, outboundUnit#146490, stockDatetime#146769, stockBatchQuantities#146770, stockBatchShelfLifeEndDatetimes#146771, plant#147109, dayBucketDemands#147110, pointInTimeDemands#147111]
(836) Project
Arguments: [product#146447, plant#146448, orderDateTime#146449, productPlant#146459, timezonecode#146473, outboundUnit#146490, stockDatetime#146769, stockBatchQuantities#146770, stockBatchShelfLifeEndDatetimes#146771, dayBucketDemands#147110, pointInTimeDemands#147111]
(837) LogicalRelation
Arguments: parquet, [marketUnit#143855, description#143856, articleHierarchy#143857, defaultCurrency#143858, responsibilities#143859, replenishmentTypes#143860, distributionCenters#143861, assignedArticleHierarchyNodes#143862, minOrderQtySetting#143863, listingCheck#143864, odsSelection#143865, demandProfiles#143866, constraintProfiles#143867, optimizationProfiles#143868, orderGroupSplitProfiles#143869, supplierMinimumProfiles#143870, multipleRestrictionProfiles#143871, preferredUomSource#143872, handlingOfUnfulfilledDemands#143873, negligibleQuantitiesThreshold#143874, eventtype#143875, minOrderQtySettingInternal#143876], false
(838) Repartition
Arguments: 25, true
(839) Filter
Arguments: (marketUnit#143855 <=> Daily_grocery)
(840) Project
Arguments: [marketUnit#143855, description#143856, articleHierarchy#143857, defaultCurrency#143858, responsibilities#143859, replenishmentTypes#143860, distributionCenters#143861, assignedArticleHierarchyNodes#143862, minOrderQtySetting#143863, listingCheck#143864, odsSelection#143865, demandProfiles#143866, constraintProfiles#143867, optimizationProfiles#143868, orderGroupSplitProfiles#143869, supplierMinimumProfiles#143870, multipleRestrictionProfiles#143871, preferredUomSource#143872, handlingOfUnfulfilledDemands#143873, negligibleQuantitiesThreshold#143874, eventtype#143875, minOrderQtySettingInternal#143876]
(841) Project
Arguments: [distributionCenters#143861]
(842) Generate
Arguments: explode(distributionCenters#143861), false, [distributionCenters#143877]
(843) Project
Arguments: [distributionCenters#143877]
(844) Generate
Arguments: explode(distributionCenters#143877.storageLocations), false, [storageLocations#143878]
(845) Project
Arguments: [distributionCenters#143877.id AS plantId#143879, distributionCenters#143877.internalRefUUID AS plantUuid#143880, storageLocations#143878]
(846) Project
Arguments: [plantId#143879, plantUuid#143880, storageLocations#143878.id AS storageLocId#143881, storageLocations#143878.internalRefUUID AS storageLocUuid#143882]
(847) LogicalRelation
Arguments: parquet, [product#143883, plant#143884, orderDateTime#143885, planningStartDateTime#143886], false
(848) RepartitionByExpression
Arguments: [product#143883, plant#143884], 25
(849) Project
Arguments: [product#143883, plant#143884, orderDateTime#143885]
(850) LogicalRelation
Arguments: parquet, [systemId#143887, internalUUID#143888, plant#143889, product#143890, blockedForReplenishmentStartingFrom#143891, productionAspect#143892, salesPlant#143893, listing#143894], false
(851) Repartition
Arguments: 25, true
(852) Project
Arguments: [systemId#143887, internalUUID#143888, plant#143889, product#143890, blockedForReplenishmentStartingFrom#143891, productionAspect#143892, salesPlant#143893, listing#143894, struct(systemId, systemId#143887, internalUUID, internalUUID#143888, plant, plant#143889, product, product#143890, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143891, productionAspect, productionAspect#143892, salesPlant, salesPlant#143893, listing, listing#143894) AS productPlant#143895]
(853) Project
Arguments: [productPlant#143895]
(854) Join
Arguments: LeftOuter, ((product#143883 <=> productPlant#143895.product.internalRefUUID) AND (plant#143884 <=> productPlant#143895.plant.internalRefUUID))
(855) Project
Arguments: [product#143883, plant#143884, orderDateTime#143885, productPlant#143895]
(856) SubqueryAlias
Arguments: wl
(857) LogicalRelation
Arguments: parquet, [systemId#143896, internalUUID#143897, id#143898, displayId#143899, name#143900, category#143901, companyCode#143902, address#143903, mainDistributionChain#143904, mainPurchasingOrganization#143905, validPurchasingOrganizations#143906, productGroup#143907], false
(858) Repartition
Arguments: 25, true
(859) Project
Arguments: [internalUUID#143897, address#143903.timeZone.code AS timezonecode#143908]
(860) Join
Arguments: LeftOuter, (plant#143884 <=> internalUUID#143897)
(861) Project
Arguments: [product#143883, plant#143884, orderDateTime#143885, productPlant#143895, internalUUID#143897, CASE WHEN isnotnull(timezonecode#143908) THEN timezonecode#143908 ELSE UTC END AS timezonecode#143909]
(862) Project
Arguments: [product#143883, plant#143884, orderDateTime#143885, productPlant#143895, timezonecode#143909]
(863) LogicalRelation
Arguments: parquet, [systemId#143910, internalUUID#143911, id#143912, displayId#143913, name#143914, baseUnitOfMeasure#143915, unitOfMeasures#143916, unitOfMeasureConversions#143917, productionAspect#143918, salesAspect#143919, procurementAspect#143920, productGroup#143921], false
(864) Repartition
Arguments: 25, true
(865) Join
Arguments: LeftOuter, (product#143883 = internalUUID#143911)
(866) Project
Arguments: [product#143883, plant#143884, orderDateTime#143885, productPlant#143895, timezonecode#143909, systemId#143910, internalUUID#143911, id#143912, displayId#143913, name#143914, baseUnitOfMeasure#143915, unitOfMeasures#143916, unitOfMeasureConversions#143917, productionAspect#143918, salesAspect#143919, procurementAspect#143920, productGroup#143921, filter(unitOfMeasureConversions#143917, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143895.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143895.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143915.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143915.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143922]
(867) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143922.quantityNumerator), true, [quantityNumerator#143923]
(868) Project
Arguments: [product#143883, plant#143884, orderDateTime#143885, productPlant#143895, timezonecode#143909, systemId#143910, internalUUID#143911, id#143912, displayId#143913, name#143914, baseUnitOfMeasure#143915, unitOfMeasures#143916, unitOfMeasureConversions#143917, productionAspect#143918, salesAspect#143919, procurementAspect#143920, productGroup#143921, filteredUnitOfMeasureConversions#143922, quantityNumerator#143923]
(869) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143922.quantityDenominator), true, [quantityDenominator#143924]
(870) Project
Arguments: [product#143883, plant#143884, orderDateTime#143885, productPlant#143895, timezonecode#143909, systemId#143910, internalUUID#143911, id#143912, displayId#143913, name#143914, baseUnitOfMeasure#143915, unitOfMeasures#143916, unitOfMeasureConversions#143917, productionAspect#143918, salesAspect#143919, procurementAspect#143920, productGroup#143921, filteredUnitOfMeasureConversions#143922, quantityNumerator#143923, quantityDenominator#143924]
(871) Project
Arguments: [product#143883, plant#143884, orderDateTime#143885, productPlant#143895, timezonecode#143909, systemId#143910, internalUUID#143911, id#143912, displayId#143913, name#143914, baseUnitOfMeasure#143915, unitOfMeasures#143916, unitOfMeasureConversions#143917, productionAspect#143918, salesAspect#143919, procurementAspect#143920, productGroup#143921, filteredUnitOfMeasureConversions#143922, quantityNumerator#143923, quantityDenominator#143924, (cast(quantityNumerator#143923 as double) / cast(quantityDenominator#143924 as double)) AS outboundUnit#143925]
(872) Project
Arguments: [product#143883, plant#143884, orderDateTime#143885, productPlant#143895, timezonecode#143909, systemId#143910, internalUUID#143911, id#143912, displayId#143913, name#143914, baseUnitOfMeasure#143915, unitOfMeasures#143916, unitOfMeasureConversions#143917, productionAspect#143918, salesAspect#143919, procurementAspect#143920, productGroup#143921, filteredUnitOfMeasureConversions#143922, quantityNumerator#143923, quantityDenominator#143924, CASE WHEN (isnull(outboundUnit#143925) OR (outboundUnit#143925 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#143925 END AS outboundUnit#143926]
(873) Project
Arguments: [product#143883, plant#143884, orderDateTime#143885, productPlant#143895, timezonecode#143909, outboundUnit#143926]
(874) Project
Arguments: [plant#143884]
(875) Deduplicate
Arguments: [plant#143884]
(876) Join
Arguments: Inner, (plantUuid#143880 = plant#143884)
(877) Project
Arguments: [plantId#143879, plantUuid#143880, storageLocId#143881, storageLocUuid#143882]
(878) Project
Arguments: [plantId#143879, plantUuid#143880 AS plant#143854, storageLocId#143881, storageLocUuid#143882]
(879) Join
Arguments: Inner, (plant#146448 = plant#143854)
(880) Project
Arguments: [plant#146448, product#146447, orderDateTime#146449, productPlant#146459, timezonecode#146473, outboundUnit#146490, stockDatetime#146769, stockBatchQuantities#146770, stockBatchShelfLifeEndDatetimes#146771, dayBucketDemands#147110, pointInTimeDemands#147111, plantId#143879, storageLocId#143881, storageLocUuid#143882, plant#143854]
(881) LogicalRelation
Arguments: parquet, [systemId#143815, internalUUID#143816, id#143817, displayId#143818, supplier#143819, type#143820, status#143821, isMarkedForDeletion#143822, items#143823], false
(882) Repartition
Arguments: 25, true
(883) Generate
Arguments: explode(items#143823), false, [item#143827]
(884) Project
Arguments: [id#143817, internalUUID#143816, isMarkedForDeletion#143822, supplier#143819.internalRefUUID AS supplierUuid#143824, item#143827]
(885) Filter
Arguments: (((NOT isMarkedForDeletion#143822 AND NOT item#143827.deletionIndicator) AND NOT item#143827.completeIndicator) AND NOT item#143827.returnIndicator)
(886) Project
Arguments: [id#143817, internalUUID#143816, supplierUuid#143824, item#143827.plant.internalRefUUID AS plant#143832, item#143827.product.internalRefUUID AS product#143833, item#143827.plant.id AS externalPlantId#143834, item#143827.product.id AS externalProductId#143835, item#143827.storageLocation.internalRefUUID AS storageLocUuid#143836, item#143827.quantityUnit.code AS quantityUom#143837, item#143827.quantityUnit.internalRefUUID AS quantityUomUuid#143838, item#143827.quantityNumerator AS quantityNumerator#143839, item#143827.quantityDenominator AS quantityDenominator#143840, item#143827.scheduleLines AS scheduleLines#143841, item#143827.confirmations AS confirmations#143842]
(887) Join
Arguments: Inner, (((product#146447 = product#143833) AND (plant#146448 = plant#143832)) AND (storageLocUuid#143882 = storageLocUuid#143836))
(888) Project
Arguments: [product#146447, plant#146448, storageLocUuid#143882, orderDateTime#146449, productPlant#146459, timezonecode#146473, outboundUnit#146490, stockDatetime#146769, stockBatchQuantities#146770, stockBatchShelfLifeEndDatetimes#146771, dayBucketDemands#147110, pointInTimeDemands#147111, plantId#143879, storageLocId#143881, id#143817, internalUUID#143816, supplierUuid#143824, externalPlantId#143834, externalProductId#143835, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842, ... 4 more fields]
(889) Project
Arguments: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842, stockDatetime#146769, timezonecode#146473]
(890) Project
Arguments: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842, stockDatetime#146769, timezonecode#146473, filter(confirmations#143842, lambdafunction((((lambda x_29#143933.deletionIndicator = false) AND (lambda x_29#143933.isRelevantForConfirmation = true)) AND isnotnull(lambda x_29#143933.confirmedDeliveryAt)), lambda x_29#143933, false)) AS validConfirmations#143932]
(891) Project
Arguments: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842, stockDatetime#146769, timezonecode#146473, validConfirmations#143932, array_size(validConfirmations#143932) AS _w0#145380]
(892) Window
Arguments: [sum(_w0#145380) windowspecdefinition(internalUUID#143816, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#145381L], [internalUUID#143816]
(893) Project
Arguments: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842, stockDatetime#146769, timezonecode#146473, validConfirmations#143932, _w0#145380, _we0#145381L, filter(transform(CASE WHEN (_we0#145381L > cast(0 as bigint)) THEN transform(validConfirmations#143932, lambdafunction(struct(openQty, greatest((lambda x_35#145376.confirmedQuantity - coalesce(lambda x_35#145376.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_35#145376.confirmedDeliveryAt), lambda x_35#145376, false)) ELSE transform(scheduleLines#143841, lambdafunction(struct(openQty, greatest((lambda x_34#145377.quantity - coalesce(lambda x_34#145377.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_34#145377.deliveryAt), lambda x_34#145377, false)) END, lambdafunction(struct(documentId, id#143817, documentUuid, internalUUID#143816, openQty, lambda x_36#145378.openQty, openQtyInBaseUnit, ((lambda x_36#145378.openQty * quantityNumerator#143839) / quantityDenominator#143840), qtyUom, quantityUom#143837, qtyUomUuid, quantityUomUuid#143838, availabilityDatetime, lambda x_36#145378.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_36#145378, false)), lambdafunction(NOT (lambda x_37#145379.openQty = 0.0), lambda x_37#145379, false)) AS openGoodsMovements#145374]
(894) Project
Arguments: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842, stockDatetime#146769, timezonecode#146473, validConfirmations#143932, openGoodsMovements#145374]
(895) Aggregate
Arguments: [product#143833, plant#143832], [product#143833, plant#143832, flatten(collect_list(openGoodsMovements#145374, 0, 0)) AS openGoodsMovements#145382]
(896) Filter
Arguments: (array_size(openGoodsMovements#145382) > 0)
(897) LogicalRelation
Arguments: parquet, [product#145705, plant#145706, orderDateTime#145707, planningStartDateTime#145708], false
(898) RepartitionByExpression
Arguments: [product#145705, plant#145706], 25
(899) Project
Arguments: [product#145705, plant#145706, orderDateTime#145707]
(900) LogicalRelation
Arguments: parquet, [systemId#145709, internalUUID#145710, plant#145711, product#145712, blockedForReplenishmentStartingFrom#145713, productionAspect#145714, salesPlant#145715, listing#145716], false
(901) Repartition
Arguments: 25, true
(902) Project
Arguments: [systemId#145709, internalUUID#145710, plant#145711, product#145712, blockedForReplenishmentStartingFrom#145713, productionAspect#145714, salesPlant#145715, listing#145716, struct(systemId, systemId#145709, internalUUID, internalUUID#145710, plant, plant#145711, product, product#145712, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#145713, productionAspect, productionAspect#145714, salesPlant, salesPlant#145715, listing, listing#145716) AS productPlant#145717]
(903) Project
Arguments: [productPlant#145717]
(904) Join
Arguments: LeftOuter, ((product#145705 <=> productPlant#145717.product.internalRefUUID) AND (plant#145706 <=> productPlant#145717.plant.internalRefUUID))
(905) Project
Arguments: [product#145705, plant#145706, orderDateTime#145707, productPlant#145717]
(906) SubqueryAlias
Arguments: wl
(907) LogicalRelation
Arguments: parquet, [systemId#145718, internalUUID#145719, id#145720, displayId#145721, name#145722, category#145723, companyCode#145724, address#145725, mainDistributionChain#145726, mainPurchasingOrganization#145727, validPurchasingOrganizations#145728, productGroup#145729], false
(908) Repartition
Arguments: 25, true
(909) Project
Arguments: [internalUUID#145719, address#145725.timeZone.code AS timezonecode#145730]
(910) Join
Arguments: LeftOuter, (plant#145706 <=> internalUUID#145719)
(911) Project
Arguments: [product#145705, plant#145706, orderDateTime#145707, productPlant#145717, internalUUID#145719, CASE WHEN isnotnull(timezonecode#145730) THEN timezonecode#145730 ELSE UTC END AS timezonecode#145731]
(912) Project
Arguments: [product#145705, plant#145706, orderDateTime#145707, productPlant#145717, timezonecode#145731]
(913) LogicalRelation
Arguments: parquet, [systemId#145732, internalUUID#145733, id#145734, displayId#145735, name#145736, baseUnitOfMeasure#145737, unitOfMeasures#145738, unitOfMeasureConversions#145739, productionAspect#145740, salesAspect#145741, procurementAspect#145742, productGroup#145743], false
(914) Repartition
Arguments: 25, true
(915) Join
Arguments: LeftOuter, (product#145705 = internalUUID#145733)
(916) Project
Arguments: [product#145705, plant#145706, orderDateTime#145707, productPlant#145717, timezonecode#145731, systemId#145732, internalUUID#145733, id#145734, displayId#145735, name#145736, baseUnitOfMeasure#145737, unitOfMeasures#145738, unitOfMeasureConversions#145739, productionAspect#145740, salesAspect#145741, procurementAspect#145742, productGroup#145743, filter(unitOfMeasureConversions#145739, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#145717.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#145717.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#145737.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#145737.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#145744]
(917) Generate
Arguments: explode(filteredUnitOfMeasureConversions#145744.quantityNumerator), true, [quantityNumerator#145745]
(918) Project
Arguments: [product#145705, plant#145706, orderDateTime#145707, productPlant#145717, timezonecode#145731, systemId#145732, internalUUID#145733, id#145734, displayId#145735, name#145736, baseUnitOfMeasure#145737, unitOfMeasures#145738, unitOfMeasureConversions#145739, productionAspect#145740, salesAspect#145741, procurementAspect#145742, productGroup#145743, filteredUnitOfMeasureConversions#145744, quantityNumerator#145745]
(919) Generate
Arguments: explode(filteredUnitOfMeasureConversions#145744.quantityDenominator), true, [quantityDenominator#145746]
(920) Project
Arguments: [product#145705, plant#145706, orderDateTime#145707, productPlant#145717, timezonecode#145731, systemId#145732, internalUUID#145733, id#145734, displayId#145735, name#145736, baseUnitOfMeasure#145737, unitOfMeasures#145738, unitOfMeasureConversions#145739, productionAspect#145740, salesAspect#145741, procurementAspect#145742, productGroup#145743, filteredUnitOfMeasureConversions#145744, quantityNumerator#145745, quantityDenominator#145746]
(921) Project
Arguments: [product#145705, plant#145706, orderDateTime#145707, productPlant#145717, timezonecode#145731, systemId#145732, internalUUID#145733, id#145734, displayId#145735, name#145736, baseUnitOfMeasure#145737, unitOfMeasures#145738, unitOfMeasureConversions#145739, productionAspect#145740, salesAspect#145741, procurementAspect#145742, productGroup#145743, filteredUnitOfMeasureConversions#145744, quantityNumerator#145745, quantityDenominator#145746, (cast(quantityNumerator#145745 as double) / cast(quantityDenominator#145746 as double)) AS outboundUnit#145747]
(922) Project
Arguments: [product#145705, plant#145706, orderDateTime#145707, productPlant#145717, timezonecode#145731, systemId#145732, internalUUID#145733, id#145734, displayId#145735, name#145736, baseUnitOfMeasure#145737, unitOfMeasures#145738, unitOfMeasureConversions#145739, productionAspect#145740, salesAspect#145741, procurementAspect#145742, productGroup#145743, filteredUnitOfMeasureConversions#145744, quantityNumerator#145745, quantityDenominator#145746, CASE WHEN (isnull(outboundUnit#145747) OR (outboundUnit#145747 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#145747 END AS outboundUnit#145748]
(923) Project
Arguments: [product#145705, plant#145706, orderDateTime#145707, productPlant#145717, timezonecode#145731, outboundUnit#145748]
(924) LogicalRelation
Arguments: parquet, [systemId#145749, internalUUID#145750, product#145751, plant#145752, calculationDateTime#145753, stockQuantities#145754], false
(925) Repartition
Arguments: 25, true
(926) LogicalRelation
Arguments: parquet, [marketUnit#145755, description#145756, articleHierarchy#145757, defaultCurrency#145758, responsibilities#145759, replenishmentTypes#145760, distributionCenters#145761, assignedArticleHierarchyNodes#145762, minOrderQtySetting#145763, listingCheck#145764, odsSelection#145765, demandProfiles#145766, constraintProfiles#145767, optimizationProfiles#145768, orderGroupSplitProfiles#145769, supplierMinimumProfiles#145770, multipleRestrictionProfiles#145771, preferredUomSource#145772, handlingOfUnfulfilledDemands#145773, negligibleQuantitiesThreshold#145774, eventtype#145775, minOrderQtySettingInternal#145776], false
(927) Repartition
Arguments: 25, true
(928) Filter
Arguments: (marketUnit#145755 <=> Daily_grocery)
(929) Project
Arguments: [marketUnit#145755, description#145756, articleHierarchy#145757, defaultCurrency#145758, responsibilities#145759, replenishmentTypes#145760, distributionCenters#145761, assignedArticleHierarchyNodes#145762, minOrderQtySetting#145763, listingCheck#145764, odsSelection#145765, demandProfiles#145766, constraintProfiles#145767, optimizationProfiles#145768, orderGroupSplitProfiles#145769, supplierMinimumProfiles#145770, multipleRestrictionProfiles#145771, preferredUomSource#145772, handlingOfUnfulfilledDemands#145773, negligibleQuantitiesThreshold#145774, eventtype#145775, minOrderQtySettingInternal#145776]
(930) Project
Arguments: [distributionCenters#145761]
(931) Generate
Arguments: explode(distributionCenters#145761), false, [distributionCenters#145777]
(932) Project
Arguments: [distributionCenters#145777]
(933) Generate
Arguments: explode(distributionCenters#145777.storageLocations), false, [storageLocations#145778]
(934) Project
Arguments: [distributionCenters#145777.id AS plantId#145779, distributionCenters#145777.internalRefUUID AS plantUuid#145780, storageLocations#145778]
(935) Project
Arguments: [plantId#145779, plantUuid#145780, storageLocations#145778.id AS storageLocId#145781, storageLocations#145778.internalRefUUID AS storageLocUuid#145782]
(936) LogicalRelation
Arguments: parquet, [product#145783, plant#145784, orderDateTime#145785, planningStartDateTime#145786], false
(937) RepartitionByExpression
Arguments: [product#145783, plant#145784], 25
(938) Project
Arguments: [product#145783, plant#145784, orderDateTime#145785]
(939) LogicalRelation
Arguments: parquet, [systemId#145787, internalUUID#145788, plant#145789, product#145790, blockedForReplenishmentStartingFrom#145791, productionAspect#145792, salesPlant#145793, listing#145794], false
(940) Repartition
Arguments: 25, true
(941) Project
Arguments: [systemId#145787, internalUUID#145788, plant#145789, product#145790, blockedForReplenishmentStartingFrom#145791, productionAspect#145792, salesPlant#145793, listing#145794, struct(systemId, systemId#145787, internalUUID, internalUUID#145788, plant, plant#145789, product, product#145790, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#145791, productionAspect, productionAspect#145792, salesPlant, salesPlant#145793, listing, listing#145794) AS productPlant#145795]
(942) Project
Arguments: [productPlant#145795]
(943) Join
Arguments: LeftOuter, ((product#145783 <=> productPlant#145795.product.internalRefUUID) AND (plant#145784 <=> productPlant#145795.plant.internalRefUUID))
(944) Project
Arguments: [product#145783, plant#145784, orderDateTime#145785, productPlant#145795]
(945) SubqueryAlias
Arguments: wl
(946) LogicalRelation
Arguments: parquet, [systemId#145796, internalUUID#145797, id#145798, displayId#145799, name#145800, category#145801, companyCode#145802, address#145803, mainDistributionChain#145804, mainPurchasingOrganization#145805, validPurchasingOrganizations#145806, productGroup#145807], false
(947) Repartition
Arguments: 25, true
(948) Project
Arguments: [internalUUID#145797, address#145803.timeZone.code AS timezonecode#145808]
(949) Join
Arguments: LeftOuter, (plant#145784 <=> internalUUID#145797)
(950) Project
Arguments: [product#145783, plant#145784, orderDateTime#145785, productPlant#145795, internalUUID#145797, CASE WHEN isnotnull(timezonecode#145808) THEN timezonecode#145808 ELSE UTC END AS timezonecode#145809]
(951) Project
Arguments: [product#145783, plant#145784, orderDateTime#145785, productPlant#145795, timezonecode#145809]
(952) LogicalRelation
Arguments: parquet, [systemId#145810, internalUUID#145811, id#145812, displayId#145813, name#145814, baseUnitOfMeasure#145815, unitOfMeasures#145816, unitOfMeasureConversions#145817, productionAspect#145818, salesAspect#145819, procurementAspect#145820, productGroup#145821], false
(953) Repartition
Arguments: 25, true
(954) Join
Arguments: LeftOuter, (product#145783 = internalUUID#145811)
(955) Project
Arguments: [product#145783, plant#145784, orderDateTime#145785, productPlant#145795, timezonecode#145809, systemId#145810, internalUUID#145811, id#145812, displayId#145813, name#145814, baseUnitOfMeasure#145815, unitOfMeasures#145816, unitOfMeasureConversions#145817, productionAspect#145818, salesAspect#145819, procurementAspect#145820, productGroup#145821, filter(unitOfMeasureConversions#145817, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#145795.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#145795.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#145815.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#145815.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#145822]
(956) Generate
Arguments: explode(filteredUnitOfMeasureConversions#145822.quantityNumerator), true, [quantityNumerator#145823]
(957) Project
Arguments: [product#145783, plant#145784, orderDateTime#145785, productPlant#145795, timezonecode#145809, systemId#145810, internalUUID#145811, id#145812, displayId#145813, name#145814, baseUnitOfMeasure#145815, unitOfMeasures#145816, unitOfMeasureConversions#145817, productionAspect#145818, salesAspect#145819, procurementAspect#145820, productGroup#145821, filteredUnitOfMeasureConversions#145822, quantityNumerator#145823]
(958) Generate
Arguments: explode(filteredUnitOfMeasureConversions#145822.quantityDenominator), true, [quantityDenominator#145824]
(959) Project
Arguments: [product#145783, plant#145784, orderDateTime#145785, productPlant#145795, timezonecode#145809, systemId#145810, internalUUID#145811, id#145812, displayId#145813, name#145814, baseUnitOfMeasure#145815, unitOfMeasures#145816, unitOfMeasureConversions#145817, productionAspect#145818, salesAspect#145819, procurementAspect#145820, productGroup#145821, filteredUnitOfMeasureConversions#145822, quantityNumerator#145823, quantityDenominator#145824]
(960) Project
Arguments: [product#145783, plant#145784, orderDateTime#145785, productPlant#145795, timezonecode#145809, systemId#145810, internalUUID#145811, id#145812, displayId#145813, name#145814, baseUnitOfMeasure#145815, unitOfMeasures#145816, unitOfMeasureConversions#145817, productionAspect#145818, salesAspect#145819, procurementAspect#145820, productGroup#145821, filteredUnitOfMeasureConversions#145822, quantityNumerator#145823, quantityDenominator#145824, (cast(quantityNumerator#145823 as double) / cast(quantityDenominator#145824 as double)) AS outboundUnit#145825]
(961) Project
Arguments: [product#145783, plant#145784, orderDateTime#145785, productPlant#145795, timezonecode#145809, systemId#145810, internalUUID#145811, id#145812, displayId#145813, name#145814, baseUnitOfMeasure#145815, unitOfMeasures#145816, unitOfMeasureConversions#145817, productionAspect#145818, salesAspect#145819, procurementAspect#145820, productGroup#145821, filteredUnitOfMeasureConversions#145822, quantityNumerator#145823, quantityDenominator#145824, CASE WHEN (isnull(outboundUnit#145825) OR (outboundUnit#145825 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#145825 END AS outboundUnit#145826]
(962) Project
Arguments: [product#145783, plant#145784, orderDateTime#145785, productPlant#145795, timezonecode#145809, outboundUnit#145826]
(963) Project
Arguments: [plant#145784]
(964) Deduplicate
Arguments: [plant#145784]
(965) Join
Arguments: Inner, (plantUuid#145780 = plant#145784)
(966) Project
Arguments: [plantId#145779, plantUuid#145780, storageLocId#145781, storageLocUuid#145782]
(967) Join
Arguments: Inner, (plant#145752.internalRefUUID <=> plantUuid#145780)
(968) Generate
Arguments: explode(filter(stockQuantities#145754, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#145782) AND (lambda x#143085.storageLocation.Id = storageLocId#145781)), lambda x#143085, false))), false, [stockQuantity#145827]
(969) Project
Arguments: [systemId#145749, internalUUID#145750, product#145751, plant#145752, calculationDateTime#145753, stockQuantities#145754, plantId#145779, plantUuid#145780, storageLocId#145781, storageLocUuid#145782, stockQuantity#145827]
(970) Aggregate
Arguments: [plantUuid#145780, internalUUID#145750, plant#145752, product#145751, systemId#145749], [plantUuid#145780, internalUUID#145750, plant#145752, product#145751, systemId#145749, first(calculationDateTime#145753, false) AS calculationDateTime#145828, collect_list(stockQuantity#145827, 0, 0) AS stockQuantities#145829]
(971) Project
Arguments: [systemId#145749, internalUUID#145750, product#145751, plant#145752, calculationDateTime#145828, stockQuantities#145829]
(972) Generate
Arguments: explode(stockQuantities#145829), false, [stockQuantity#145830]
(973) Project
Arguments: [systemId#145749, internalUUID#145750, product#145751, plant#145752, calculationDateTime#145828, stockQuantities#145829, stockQuantity#145830]
(974) Project
Arguments: [plant#145752.id AS plant#145831, plant#145752.internalRefUUID AS plantUuid#145832, product#145751.id AS product#145833, product#145751.internalRefUUID AS productUuid#145834, calculationDateTime#145828, stockQuantity#145830.storagelocation.id AS storageLocId#145835, stockQuantity#145830.storagelocation.internalRefUUID AS storageLocUuid#145836, stockQuantity#145830.quantity.measure AS quantity#145837, stockQuantity#145830.specialStockIndicator.code AS specialStockIndicator#145838, stockQuantity#145830.stockType.code AS stockType#145839]
(975) Filter
Arguments: ((specialStockIndicator#145838 = ) AND (stockType#145839 = 01))
(976) LogicalRelation
Arguments: parquet, [product#145840, plant#145841, orderDateTime#145842, planningStartDateTime#145843], false
(977) RepartitionByExpression
Arguments: [product#145840, plant#145841], 25
(978) Project
Arguments: [product#145840, plant#145841, orderDateTime#145842]
(979) LogicalRelation
Arguments: parquet, [systemId#145844, internalUUID#145845, plant#145846, product#145847, blockedForReplenishmentStartingFrom#145848, productionAspect#145849, salesPlant#145850, listing#145851], false
(980) Repartition
Arguments: 25, true
(981) Project
Arguments: [systemId#145844, internalUUID#145845, plant#145846, product#145847, blockedForReplenishmentStartingFrom#145848, productionAspect#145849, salesPlant#145850, listing#145851, struct(systemId, systemId#145844, internalUUID, internalUUID#145845, plant, plant#145846, product, product#145847, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#145848, productionAspect, productionAspect#145849, salesPlant, salesPlant#145850, listing, listing#145851) AS productPlant#145852]
(982) Project
Arguments: [productPlant#145852]
(983) Join
Arguments: LeftOuter, ((product#145840 <=> productPlant#145852.product.internalRefUUID) AND (plant#145841 <=> productPlant#145852.plant.internalRefUUID))
(984) Project
Arguments: [product#145840, plant#145841, orderDateTime#145842, productPlant#145852]
(985) SubqueryAlias
Arguments: wl
(986) LogicalRelation
Arguments: parquet, [systemId#145853, internalUUID#145854, id#145855, displayId#145856, name#145857, category#145858, companyCode#145859, address#145860, mainDistributionChain#145861, mainPurchasingOrganization#145862, validPurchasingOrganizations#145863, productGroup#145864], false
(987) Repartition
Arguments: 25, true
(988) Project
Arguments: [internalUUID#145854, address#145860.timeZone.code AS timezonecode#145865]
(989) Join
Arguments: LeftOuter, (plant#145841 <=> internalUUID#145854)
(990) Project
Arguments: [product#145840, plant#145841, orderDateTime#145842, productPlant#145852, internalUUID#145854, CASE WHEN isnotnull(timezonecode#145865) THEN timezonecode#145865 ELSE UTC END AS timezonecode#145866]
(991) Project
Arguments: [product#145840, plant#145841, orderDateTime#145842, productPlant#145852, timezonecode#145866]
(992) LogicalRelation
Arguments: parquet, [systemId#145867, internalUUID#145868, id#145869, displayId#145870, name#145871, baseUnitOfMeasure#145872, unitOfMeasures#145873, unitOfMeasureConversions#145874, productionAspect#145875, salesAspect#145876, procurementAspect#145877, productGroup#145878], false
(993) Repartition
Arguments: 25, true
(994) Join
Arguments: LeftOuter, (product#145840 = internalUUID#145868)
(995) Project
Arguments: [product#145840, plant#145841, orderDateTime#145842, productPlant#145852, timezonecode#145866, systemId#145867, internalUUID#145868, id#145869, displayId#145870, name#145871, baseUnitOfMeasure#145872, unitOfMeasures#145873, unitOfMeasureConversions#145874, productionAspect#145875, salesAspect#145876, procurementAspect#145877, productGroup#145878, filter(unitOfMeasureConversions#145874, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#145852.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#145852.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#145872.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#145872.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#145879]
(996) Generate
Arguments: explode(filteredUnitOfMeasureConversions#145879.quantityNumerator), true, [quantityNumerator#145880]
(997) Project
Arguments: [product#145840, plant#145841, orderDateTime#145842, productPlant#145852, timezonecode#145866, systemId#145867, internalUUID#145868, id#145869, displayId#145870, name#145871, baseUnitOfMeasure#145872, unitOfMeasures#145873, unitOfMeasureConversions#145874, productionAspect#145875, salesAspect#145876, procurementAspect#145877, productGroup#145878, filteredUnitOfMeasureConversions#145879, quantityNumerator#145880]
(998) Generate
Arguments: explode(filteredUnitOfMeasureConversions#145879.quantityDenominator), true, [quantityDenominator#145881]
(999) Project
Arguments: [product#145840, plant#145841, orderDateTime#145842, productPlant#145852, timezonecode#145866, systemId#145867, internalUUID#145868, id#145869, displayId#145870, name#145871, baseUnitOfMeasure#145872, unitOfMeasures#145873, unitOfMeasureConversions#145874, productionAspect#145875, salesAspect#145876, procurementAspect#145877, productGroup#145878, filteredUnitOfMeasureConversions#145879, quantityNumerator#145880, quantityDenominator#145881]
(1000) Project
Arguments: [product#145840, plant#145841, orderDateTime#145842, productPlant#145852, timezonecode#145866, systemId#145867, internalUUID#145868, id#145869, displayId#145870, name#145871, baseUnitOfMeasure#145872, unitOfMeasures#145873, unitOfMeasureConversions#145874, productionAspect#145875, salesAspect#145876, procurementAspect#145877, productGroup#145878, filteredUnitOfMeasureConversions#145879, quantityNumerator#145880, quantityDenominator#145881, (cast(quantityNumerator#145880 as double) / cast(quantityDenominator#145881 as double)) AS outboundUnit#145882]
(1001) Project
Arguments: [product#145840, plant#145841, orderDateTime#145842, productPlant#145852, timezonecode#145866, systemId#145867, internalUUID#145868, id#145869, displayId#145870, name#145871, baseUnitOfMeasure#145872, unitOfMeasures#145873, unitOfMeasureConversions#145874, productionAspect#145875, salesAspect#145876, procurementAspect#145877, productGroup#145878, filteredUnitOfMeasureConversions#145879, quantityNumerator#145880, quantityDenominator#145881, CASE WHEN (isnull(outboundUnit#145882) OR (outboundUnit#145882 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#145882 END AS outboundUnit#145883]
(1002) Project
Arguments: [product#145840, plant#145841, orderDateTime#145842, productPlant#145852, timezonecode#145866, outboundUnit#145883]
(1003) Join
Arguments: Inner, ((plantUuid#145832 = plant#145841) AND (productUuid#145834 = product#145840))
(1004) Filter
Arguments: (calculationDateTime#145828 <= orderDateTime#145842)
(1005) Project
Arguments: [plantUuid#145832 AS plant#145884, productUuid#145834 AS product#145885, storageLocId#145835, calculationDateTime#145828, quantity#145837]
(1006) LogicalRelation
Arguments: parquet, [systemId#145886, internalUUID#145887, product#145888, plant#145889, calculationDateTime#145890, stockQuantities#145891], false
(1007) Repartition
Arguments: 25, true
(1008) LogicalRelation
Arguments: parquet, [marketUnit#145892, description#145893, articleHierarchy#145894, defaultCurrency#145895, responsibilities#145896, replenishmentTypes#145897, distributionCenters#145898, assignedArticleHierarchyNodes#145899, minOrderQtySetting#145900, listingCheck#145901, odsSelection#145902, demandProfiles#145903, constraintProfiles#145904, optimizationProfiles#145905, orderGroupSplitProfiles#145906, supplierMinimumProfiles#145907, multipleRestrictionProfiles#145908, preferredUomSource#145909, handlingOfUnfulfilledDemands#145910, negligibleQuantitiesThreshold#145911, eventtype#145912, minOrderQtySettingInternal#145913], false
(1009) Repartition
Arguments: 25, true
(1010) Filter
Arguments: (marketUnit#145892 <=> Daily_grocery)
(1011) Project
Arguments: [marketUnit#145892, description#145893, articleHierarchy#145894, defaultCurrency#145895, responsibilities#145896, replenishmentTypes#145897, distributionCenters#145898, assignedArticleHierarchyNodes#145899, minOrderQtySetting#145900, listingCheck#145901, odsSelection#145902, demandProfiles#145903, constraintProfiles#145904, optimizationProfiles#145905, orderGroupSplitProfiles#145906, supplierMinimumProfiles#145907, multipleRestrictionProfiles#145908, preferredUomSource#145909, handlingOfUnfulfilledDemands#145910, negligibleQuantitiesThreshold#145911, eventtype#145912, minOrderQtySettingInternal#145913]
(1012) Project
Arguments: [distributionCenters#145898]
(1013) Generate
Arguments: explode(distributionCenters#145898), false, [distributionCenters#145914]
(1014) Project
Arguments: [distributionCenters#145914]
(1015) Generate
Arguments: explode(distributionCenters#145914.storageLocations), false, [storageLocations#145915]
(1016) Project
Arguments: [distributionCenters#145914.id AS plantId#145916, distributionCenters#145914.internalRefUUID AS plantUuid#145917, storageLocations#145915]
(1017) Project
Arguments: [plantId#145916, plantUuid#145917, storageLocations#145915.id AS storageLocId#145918, storageLocations#145915.internalRefUUID AS storageLocUuid#145919]
(1018) LogicalRelation
Arguments: parquet, [product#145920, plant#145921, orderDateTime#145922, planningStartDateTime#145923], false
(1019) RepartitionByExpression
Arguments: [product#145920, plant#145921], 25
(1020) Project
Arguments: [product#145920, plant#145921, orderDateTime#145922]
(1021) LogicalRelation
Arguments: parquet, [systemId#145924, internalUUID#145925, plant#145926, product#145927, blockedForReplenishmentStartingFrom#145928, productionAspect#145929, salesPlant#145930, listing#145931], false
(1022) Repartition
Arguments: 25, true
(1023) Project
Arguments: [systemId#145924, internalUUID#145925, plant#145926, product#145927, blockedForReplenishmentStartingFrom#145928, productionAspect#145929, salesPlant#145930, listing#145931, struct(systemId, systemId#145924, internalUUID, internalUUID#145925, plant, plant#145926, product, product#145927, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#145928, productionAspect, productionAspect#145929, salesPlant, salesPlant#145930, listing, listing#145931) AS productPlant#145932]
(1024) Project
Arguments: [productPlant#145932]
(1025) Join
Arguments: LeftOuter, ((product#145920 <=> productPlant#145932.product.internalRefUUID) AND (plant#145921 <=> productPlant#145932.plant.internalRefUUID))
(1026) Project
Arguments: [product#145920, plant#145921, orderDateTime#145922, productPlant#145932]
(1027) SubqueryAlias
Arguments: wl
(1028) LogicalRelation
Arguments: parquet, [systemId#145933, internalUUID#145934, id#145935, displayId#145936, name#145937, category#145938, companyCode#145939, address#145940, mainDistributionChain#145941, mainPurchasingOrganization#145942, validPurchasingOrganizations#145943, productGroup#145944], false
(1029) Repartition
Arguments: 25, true
(1030) Project
Arguments: [internalUUID#145934, address#145940.timeZone.code AS timezonecode#145945]
(1031) Join
Arguments: LeftOuter, (plant#145921 <=> internalUUID#145934)
(1032) Project
Arguments: [product#145920, plant#145921, orderDateTime#145922, productPlant#145932, internalUUID#145934, CASE WHEN isnotnull(timezonecode#145945) THEN timezonecode#145945 ELSE UTC END AS timezonecode#145946]
(1033) Project
Arguments: [product#145920, plant#145921, orderDateTime#145922, productPlant#145932, timezonecode#145946]
(1034) LogicalRelation
Arguments: parquet, [systemId#145947, internalUUID#145948, id#145949, displayId#145950, name#145951, baseUnitOfMeasure#145952, unitOfMeasures#145953, unitOfMeasureConversions#145954, productionAspect#145955, salesAspect#145956, procurementAspect#145957, productGroup#145958], false
(1035) Repartition
Arguments: 25, true
(1036) Join
Arguments: LeftOuter, (product#145920 = internalUUID#145948)
(1037) Project
Arguments: [product#145920, plant#145921, orderDateTime#145922, productPlant#145932, timezonecode#145946, systemId#145947, internalUUID#145948, id#145949, displayId#145950, name#145951, baseUnitOfMeasure#145952, unitOfMeasures#145953, unitOfMeasureConversions#145954, productionAspect#145955, salesAspect#145956, procurementAspect#145957, productGroup#145958, filter(unitOfMeasureConversions#145954, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#145932.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#145932.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#145952.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#145952.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#145959]
(1038) Generate
Arguments: explode(filteredUnitOfMeasureConversions#145959.quantityNumerator), true, [quantityNumerator#145960]
(1039) Project
Arguments: [product#145920, plant#145921, orderDateTime#145922, productPlant#145932, timezonecode#145946, systemId#145947, internalUUID#145948, id#145949, displayId#145950, name#145951, baseUnitOfMeasure#145952, unitOfMeasures#145953, unitOfMeasureConversions#145954, productionAspect#145955, salesAspect#145956, procurementAspect#145957, productGroup#145958, filteredUnitOfMeasureConversions#145959, quantityNumerator#145960]
(1040) Generate
Arguments: explode(filteredUnitOfMeasureConversions#145959.quantityDenominator), true, [quantityDenominator#145961]
(1041) Project
Arguments: [product#145920, plant#145921, orderDateTime#145922, productPlant#145932, timezonecode#145946, systemId#145947, internalUUID#145948, id#145949, displayId#145950, name#145951, baseUnitOfMeasure#145952, unitOfMeasures#145953, unitOfMeasureConversions#145954, productionAspect#145955, salesAspect#145956, procurementAspect#145957, productGroup#145958, filteredUnitOfMeasureConversions#145959, quantityNumerator#145960, quantityDenominator#145961]
(1042) Project
Arguments: [product#145920, plant#145921, orderDateTime#145922, productPlant#145932, timezonecode#145946, systemId#145947, internalUUID#145948, id#145949, displayId#145950, name#145951, baseUnitOfMeasure#145952, unitOfMeasures#145953, unitOfMeasureConversions#145954, productionAspect#145955, salesAspect#145956, procurementAspect#145957, productGroup#145958, filteredUnitOfMeasureConversions#145959, quantityNumerator#145960, quantityDenominator#145961, (cast(quantityNumerator#145960 as double) / cast(quantityDenominator#145961 as double)) AS outboundUnit#145962]
(1043) Project
Arguments: [product#145920, plant#145921, orderDateTime#145922, productPlant#145932, timezonecode#145946, systemId#145947, internalUUID#145948, id#145949, displayId#145950, name#145951, baseUnitOfMeasure#145952, unitOfMeasures#145953, unitOfMeasureConversions#145954, productionAspect#145955, salesAspect#145956, procurementAspect#145957, productGroup#145958, filteredUnitOfMeasureConversions#145959, quantityNumerator#145960, quantityDenominator#145961, CASE WHEN (isnull(outboundUnit#145962) OR (outboundUnit#145962 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#145962 END AS outboundUnit#145963]
(1044) Project
Arguments: [product#145920, plant#145921, orderDateTime#145922, productPlant#145932, timezonecode#145946, outboundUnit#145963]
(1045) Project
Arguments: [plant#145921]
(1046) Deduplicate
Arguments: [plant#145921]
(1047) Join
Arguments: Inner, (plantUuid#145917 = plant#145921)
(1048) Project
Arguments: [plantId#145916, plantUuid#145917, storageLocId#145918, storageLocUuid#145919]
(1049) Join
Arguments: Inner, (plant#145889.internalRefUUID <=> plantUuid#145917)
(1050) Generate
Arguments: explode(filter(stockQuantities#145891, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#145919) AND (lambda x#143085.storageLocation.Id = storageLocId#145918)), lambda x#143085, false))), false, [stockQuantity#145964]
(1051) Project
Arguments: [systemId#145886, internalUUID#145887, product#145888, plant#145889, calculationDateTime#145890, stockQuantities#145891, plantId#145916, plantUuid#145917, storageLocId#145918, storageLocUuid#145919, stockQuantity#145964]
(1052) Aggregate
Arguments: [plantUuid#145917, internalUUID#145887, plant#145889, product#145888, systemId#145886], [plantUuid#145917, internalUUID#145887, plant#145889, product#145888, systemId#145886, first(calculationDateTime#145890, false) AS calculationDateTime#145965, collect_list(stockQuantity#145964, 0, 0) AS stockQuantities#145966]
(1053) Project
Arguments: [systemId#145886, internalUUID#145887, product#145888, plant#145889, calculationDateTime#145965, stockQuantities#145966]
(1054) Generate
Arguments: explode(stockQuantities#145966), false, [stockQuantity#145967]
(1055) Project
Arguments: [systemId#145886, internalUUID#145887, product#145888, plant#145889, calculationDateTime#145965, stockQuantities#145966, stockQuantity#145967]
(1056) Project
Arguments: [plant#145889.id AS plant#145968, plant#145889.internalRefUUID AS plantUuid#145969, product#145888.id AS product#145970, product#145888.internalRefUUID AS productUuid#145971, calculationDateTime#145965, stockQuantity#145967.storagelocation.id AS storageLocId#145972, stockQuantity#145967.storagelocation.internalRefUUID AS storageLocUuid#145973, stockQuantity#145967.quantity.measure AS quantity#145974, stockQuantity#145967.specialStockIndicator.code AS specialStockIndicator#145975, stockQuantity#145967.stockType.code AS stockType#145976]
(1057) Filter
Arguments: ((specialStockIndicator#145975 = ) AND (stockType#145976 = 01))
(1058) LogicalRelation
Arguments: parquet, [product#145977, plant#145978, orderDateTime#145979, planningStartDateTime#145980], false
(1059) RepartitionByExpression
Arguments: [product#145977, plant#145978], 25
(1060) Project
Arguments: [product#145977, plant#145978, orderDateTime#145979]
(1061) LogicalRelation
Arguments: parquet, [systemId#145981, internalUUID#145982, plant#145983, product#145984, blockedForReplenishmentStartingFrom#145985, productionAspect#145986, salesPlant#145987, listing#145988], false
(1062) Repartition
Arguments: 25, true
(1063) Project
Arguments: [systemId#145981, internalUUID#145982, plant#145983, product#145984, blockedForReplenishmentStartingFrom#145985, productionAspect#145986, salesPlant#145987, listing#145988, struct(systemId, systemId#145981, internalUUID, internalUUID#145982, plant, plant#145983, product, product#145984, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#145985, productionAspect, productionAspect#145986, salesPlant, salesPlant#145987, listing, listing#145988) AS productPlant#145989]
(1064) Project
Arguments: [productPlant#145989]
(1065) Join
Arguments: LeftOuter, ((product#145977 <=> productPlant#145989.product.internalRefUUID) AND (plant#145978 <=> productPlant#145989.plant.internalRefUUID))
(1066) Project
Arguments: [product#145977, plant#145978, orderDateTime#145979, productPlant#145989]
(1067) SubqueryAlias
Arguments: wl
(1068) LogicalRelation
Arguments: parquet, [systemId#145990, internalUUID#145991, id#145992, displayId#145993, name#145994, category#145995, companyCode#145996, address#145997, mainDistributionChain#145998, mainPurchasingOrganization#145999, validPurchasingOrganizations#146000, productGroup#146001], false
(1069) Repartition
Arguments: 25, true
(1070) Project
Arguments: [internalUUID#145991, address#145997.timeZone.code AS timezonecode#146002]
(1071) Join
Arguments: LeftOuter, (plant#145978 <=> internalUUID#145991)
(1072) Project
Arguments: [product#145977, plant#145978, orderDateTime#145979, productPlant#145989, internalUUID#145991, CASE WHEN isnotnull(timezonecode#146002) THEN timezonecode#146002 ELSE UTC END AS timezonecode#146003]
(1073) Project
Arguments: [product#145977, plant#145978, orderDateTime#145979, productPlant#145989, timezonecode#146003]
(1074) LogicalRelation
Arguments: parquet, [systemId#146004, internalUUID#146005, id#146006, displayId#146007, name#146008, baseUnitOfMeasure#146009, unitOfMeasures#146010, unitOfMeasureConversions#146011, productionAspect#146012, salesAspect#146013, procurementAspect#146014, productGroup#146015], false
(1075) Repartition
Arguments: 25, true
(1076) Join
Arguments: LeftOuter, (product#145977 = internalUUID#146005)
(1077) Project
Arguments: [product#145977, plant#145978, orderDateTime#145979, productPlant#145989, timezonecode#146003, systemId#146004, internalUUID#146005, id#146006, displayId#146007, name#146008, baseUnitOfMeasure#146009, unitOfMeasures#146010, unitOfMeasureConversions#146011, productionAspect#146012, salesAspect#146013, procurementAspect#146014, productGroup#146015, filter(unitOfMeasureConversions#146011, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#145989.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#145989.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#146009.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#146009.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#146016]
(1078) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146016.quantityNumerator), true, [quantityNumerator#146017]
(1079) Project
Arguments: [product#145977, plant#145978, orderDateTime#145979, productPlant#145989, timezonecode#146003, systemId#146004, internalUUID#146005, id#146006, displayId#146007, name#146008, baseUnitOfMeasure#146009, unitOfMeasures#146010, unitOfMeasureConversions#146011, productionAspect#146012, salesAspect#146013, procurementAspect#146014, productGroup#146015, filteredUnitOfMeasureConversions#146016, quantityNumerator#146017]
(1080) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146016.quantityDenominator), true, [quantityDenominator#146018]
(1081) Project
Arguments: [product#145977, plant#145978, orderDateTime#145979, productPlant#145989, timezonecode#146003, systemId#146004, internalUUID#146005, id#146006, displayId#146007, name#146008, baseUnitOfMeasure#146009, unitOfMeasures#146010, unitOfMeasureConversions#146011, productionAspect#146012, salesAspect#146013, procurementAspect#146014, productGroup#146015, filteredUnitOfMeasureConversions#146016, quantityNumerator#146017, quantityDenominator#146018]
(1082) Project
Arguments: [product#145977, plant#145978, orderDateTime#145979, productPlant#145989, timezonecode#146003, systemId#146004, internalUUID#146005, id#146006, displayId#146007, name#146008, baseUnitOfMeasure#146009, unitOfMeasures#146010, unitOfMeasureConversions#146011, productionAspect#146012, salesAspect#146013, procurementAspect#146014, productGroup#146015, filteredUnitOfMeasureConversions#146016, quantityNumerator#146017, quantityDenominator#146018, (cast(quantityNumerator#146017 as double) / cast(quantityDenominator#146018 as double)) AS outboundUnit#146019]
(1083) Project
Arguments: [product#145977, plant#145978, orderDateTime#145979, productPlant#145989, timezonecode#146003, systemId#146004, internalUUID#146005, id#146006, displayId#146007, name#146008, baseUnitOfMeasure#146009, unitOfMeasures#146010, unitOfMeasureConversions#146011, productionAspect#146012, salesAspect#146013, procurementAspect#146014, productGroup#146015, filteredUnitOfMeasureConversions#146016, quantityNumerator#146017, quantityDenominator#146018, CASE WHEN (isnull(outboundUnit#146019) OR (outboundUnit#146019 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#146019 END AS outboundUnit#146020]
(1084) Project
Arguments: [product#145977, plant#145978, orderDateTime#145979, productPlant#145989, timezonecode#146003, outboundUnit#146020]
(1085) Join
Arguments: Inner, ((plantUuid#145969 = plant#145978) AND (productUuid#145971 = product#145977))
(1086) Filter
Arguments: (calculationDateTime#145965 <= orderDateTime#145979)
(1087) Project
Arguments: [plantUuid#145969 AS plant#146021, productUuid#145971 AS product#146022, storageLocId#145972, calculationDateTime#145965, quantity#145974]
(1088) Aggregate
Arguments: [plant#146021, product#146022, storageLocId#145972], [plant#146021, product#146022, storageLocId#145972, max(calculationDateTime#145965) AS max_calc_datetime#146023]
(1089) Join
Arguments: Inner, ((((plant#145884 <=> plant#146021) AND (product#145885 <=> product#146022)) AND (storageLocId#145835 <=> storageLocId#145972)) AND (calculationDateTime#145828 <=> max_calc_datetime#146023))
(1090) Project
Arguments: [plant#145884, product#145885, storageLocId#145835, calculationDateTime#145828, quantity#145837]
(1091) Aggregate
Arguments: [product#145885, plant#145884], [product#145885, plant#145884, sum(quantity#145837) AS quantitySum#146024, min(calculationDateTime#145828) AS minCalculationDateTime#146025]
(1092) Project
Arguments: [product#145885, plant#145884, quantitySum#146024, minCalculationDateTime#146025, round(quantitySum#146024, 0) AS roundedQuantitySum#146026]
(1093) Join
Arguments: LeftOuter, ((plant#145706 = plant#145884) AND (product#145705 = product#145885))
(1094) Project
Arguments: [product#145705, plant#145706, orderDateTime#145707, productPlant#145717, timezonecode#145731, outboundUnit#145748, roundedQuantitySum#146026, minCalculationDateTime#146025]
(1095) Project
Arguments: [product#145705, plant#145706, orderDateTime#145707, productPlant#145717, timezonecode#145731, outboundUnit#145748, roundedQuantitySum#146026, minCalculationDateTime#146025, CASE WHEN isnotnull(minCalculationDateTime#146025) THEN minCalculationDateTime#146025 ELSE orderDateTime#145707 END AS stockDatetime#146027]
(1096) Project
Arguments: [product#145705, plant#145706, orderDateTime#145707, productPlant#145717, timezonecode#145731, outboundUnit#145748, roundedQuantitySum#146026, minCalculationDateTime#146025, stockDatetime#146027, CASE WHEN isnotnull(roundedQuantitySum#146026) THEN array(roundedQuantitySum#146026) ELSE array(0.0) END AS stockBatchQuantities#146028]
(1097) Project
Arguments: [product#145705, plant#145706, orderDateTime#145707, productPlant#145717, timezonecode#145731, outboundUnit#145748, roundedQuantitySum#146026, minCalculationDateTime#146025, stockDatetime#146027, stockBatchQuantities#146028, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#146029]
(1098) Project
Arguments: [product#145705, plant#145706, orderDateTime#145707, productPlant#145717, timezonecode#145731, outboundUnit#145748, roundedQuantitySum#146026, stockDatetime#146027, stockBatchQuantities#146028, stockBatchShelfLifeEndDatetimes#146029]
(1099) Project
Arguments: [product#145705, plant#145706, orderDateTime#145707, productPlant#145717, timezonecode#145731, outboundUnit#145748, stockDatetime#146027, stockBatchQuantities#146028, stockBatchShelfLifeEndDatetimes#146029]
(1100) LogicalRelation
Arguments: parquet, [product#146030, plant#146031, orderDateTime#146032, planningStartDateTime#146033], false
(1101) RepartitionByExpression
Arguments: [product#146030, plant#146031], 25
(1102) Project
Arguments: [product#146030, plant#146031, orderDateTime#146032]
(1103) LogicalRelation
Arguments: parquet, [systemId#146034, internalUUID#146035, plant#146036, product#146037, blockedForReplenishmentStartingFrom#146038, productionAspect#146039, salesPlant#146040, listing#146041], false
(1104) Repartition
Arguments: 25, true
(1105) Project
Arguments: [systemId#146034, internalUUID#146035, plant#146036, product#146037, blockedForReplenishmentStartingFrom#146038, productionAspect#146039, salesPlant#146040, listing#146041, struct(systemId, systemId#146034, internalUUID, internalUUID#146035, plant, plant#146036, product, product#146037, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#146038, productionAspect, productionAspect#146039, salesPlant, salesPlant#146040, listing, listing#146041) AS productPlant#146042]
(1106) Project
Arguments: [productPlant#146042]
(1107) Join
Arguments: LeftOuter, ((product#146030 <=> productPlant#146042.product.internalRefUUID) AND (plant#146031 <=> productPlant#146042.plant.internalRefUUID))
(1108) Project
Arguments: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042]
(1109) SubqueryAlias
Arguments: wl
(1110) LogicalRelation
Arguments: parquet, [systemId#146043, internalUUID#146044, id#146045, displayId#146046, name#146047, category#146048, companyCode#146049, address#146050, mainDistributionChain#146051, mainPurchasingOrganization#146052, validPurchasingOrganizations#146053, productGroup#146054], false
(1111) Repartition
Arguments: 25, true
(1112) Project
Arguments: [internalUUID#146044, address#146050.timeZone.code AS timezonecode#146055]
(1113) Join
Arguments: LeftOuter, (plant#146031 <=> internalUUID#146044)
(1114) Project
Arguments: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, internalUUID#146044, CASE WHEN isnotnull(timezonecode#146055) THEN timezonecode#146055 ELSE UTC END AS timezonecode#146056]
(1115) Project
Arguments: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056]
(1116) LogicalRelation
Arguments: parquet, [systemId#146057, internalUUID#146058, id#146059, displayId#146060, name#146061, baseUnitOfMeasure#146062, unitOfMeasures#146063, unitOfMeasureConversions#146064, productionAspect#146065, salesAspect#146066, procurementAspect#146067, productGroup#146068], false
(1117) Repartition
Arguments: 25, true
(1118) Join
Arguments: LeftOuter, (product#146030 = internalUUID#146058)
(1119) Project
Arguments: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, systemId#146057, internalUUID#146058, id#146059, displayId#146060, name#146061, baseUnitOfMeasure#146062, unitOfMeasures#146063, unitOfMeasureConversions#146064, productionAspect#146065, salesAspect#146066, procurementAspect#146067, productGroup#146068, filter(unitOfMeasureConversions#146064, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#146042.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#146042.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#146062.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#146062.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#146069]
(1120) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146069.quantityNumerator), true, [quantityNumerator#146070]
(1121) Project
Arguments: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, systemId#146057, internalUUID#146058, id#146059, displayId#146060, name#146061, baseUnitOfMeasure#146062, unitOfMeasures#146063, unitOfMeasureConversions#146064, productionAspect#146065, salesAspect#146066, procurementAspect#146067, productGroup#146068, filteredUnitOfMeasureConversions#146069, quantityNumerator#146070]
(1122) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146069.quantityDenominator), true, [quantityDenominator#146071]
(1123) Project
Arguments: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, systemId#146057, internalUUID#146058, id#146059, displayId#146060, name#146061, baseUnitOfMeasure#146062, unitOfMeasures#146063, unitOfMeasureConversions#146064, productionAspect#146065, salesAspect#146066, procurementAspect#146067, productGroup#146068, filteredUnitOfMeasureConversions#146069, quantityNumerator#146070, quantityDenominator#146071]
(1124) Project
Arguments: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, systemId#146057, internalUUID#146058, id#146059, displayId#146060, name#146061, baseUnitOfMeasure#146062, unitOfMeasures#146063, unitOfMeasureConversions#146064, productionAspect#146065, salesAspect#146066, procurementAspect#146067, productGroup#146068, filteredUnitOfMeasureConversions#146069, quantityNumerator#146070, quantityDenominator#146071, (cast(quantityNumerator#146070 as double) / cast(quantityDenominator#146071 as double)) AS outboundUnit#146072]
(1125) Project
Arguments: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, systemId#146057, internalUUID#146058, id#146059, displayId#146060, name#146061, baseUnitOfMeasure#146062, unitOfMeasures#146063, unitOfMeasureConversions#146064, productionAspect#146065, salesAspect#146066, procurementAspect#146067, productGroup#146068, filteredUnitOfMeasureConversions#146069, quantityNumerator#146070, quantityDenominator#146071, CASE WHEN (isnull(outboundUnit#146072) OR (outboundUnit#146072 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#146072 END AS outboundUnit#146073]
(1126) Project
Arguments: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146073]
(1127) LogicalRelation
Arguments: parquet, [systemId#146074, internalUUID#146075, product#146076, plant#146077, calculationDateTime#146078, stockQuantities#146079], false
(1128) Repartition
Arguments: 25, true
(1129) LogicalRelation
Arguments: parquet, [marketUnit#146080, description#146081, articleHierarchy#146082, defaultCurrency#146083, responsibilities#146084, replenishmentTypes#146085, distributionCenters#146086, assignedArticleHierarchyNodes#146087, minOrderQtySetting#146088, listingCheck#146089, odsSelection#146090, demandProfiles#146091, constraintProfiles#146092, optimizationProfiles#146093, orderGroupSplitProfiles#146094, supplierMinimumProfiles#146095, multipleRestrictionProfiles#146096, preferredUomSource#146097, handlingOfUnfulfilledDemands#146098, negligibleQuantitiesThreshold#146099, eventtype#146100, minOrderQtySettingInternal#146101], false
(1130) Repartition
Arguments: 25, true
(1131) Filter
Arguments: (marketUnit#146080 <=> Daily_grocery)
(1132) Project
Arguments: [marketUnit#146080, description#146081, articleHierarchy#146082, defaultCurrency#146083, responsibilities#146084, replenishmentTypes#146085, distributionCenters#146086, assignedArticleHierarchyNodes#146087, minOrderQtySetting#146088, listingCheck#146089, odsSelection#146090, demandProfiles#146091, constraintProfiles#146092, optimizationProfiles#146093, orderGroupSplitProfiles#146094, supplierMinimumProfiles#146095, multipleRestrictionProfiles#146096, preferredUomSource#146097, handlingOfUnfulfilledDemands#146098, negligibleQuantitiesThreshold#146099, eventtype#146100, minOrderQtySettingInternal#146101]
(1133) Project
Arguments: [distributionCenters#146086]
(1134) Generate
Arguments: explode(distributionCenters#146086), false, [distributionCenters#146102]
(1135) Project
Arguments: [distributionCenters#146102]
(1136) Generate
Arguments: explode(distributionCenters#146102.storageLocations), false, [storageLocations#146103]
(1137) Project
Arguments: [distributionCenters#146102.id AS plantId#146104, distributionCenters#146102.internalRefUUID AS plantUuid#146105, storageLocations#146103]
(1138) Project
Arguments: [plantId#146104, plantUuid#146105, storageLocations#146103.id AS storageLocId#146106, storageLocations#146103.internalRefUUID AS storageLocUuid#146107]
(1139) LogicalRelation
Arguments: parquet, [product#146108, plant#146109, orderDateTime#146110, planningStartDateTime#146111], false
(1140) RepartitionByExpression
Arguments: [product#146108, plant#146109], 25
(1141) Project
Arguments: [product#146108, plant#146109, orderDateTime#146110]
(1142) LogicalRelation
Arguments: parquet, [systemId#146112, internalUUID#146113, plant#146114, product#146115, blockedForReplenishmentStartingFrom#146116, productionAspect#146117, salesPlant#146118, listing#146119], false
(1143) Repartition
Arguments: 25, true
(1144) Project
Arguments: [systemId#146112, internalUUID#146113, plant#146114, product#146115, blockedForReplenishmentStartingFrom#146116, productionAspect#146117, salesPlant#146118, listing#146119, struct(systemId, systemId#146112, internalUUID, internalUUID#146113, plant, plant#146114, product, product#146115, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#146116, productionAspect, productionAspect#146117, salesPlant, salesPlant#146118, listing, listing#146119) AS productPlant#146120]
(1145) Project
Arguments: [productPlant#146120]
(1146) Join
Arguments: LeftOuter, ((product#146108 <=> productPlant#146120.product.internalRefUUID) AND (plant#146109 <=> productPlant#146120.plant.internalRefUUID))
(1147) Project
Arguments: [product#146108, plant#146109, orderDateTime#146110, productPlant#146120]
(1148) SubqueryAlias
Arguments: wl
(1149) LogicalRelation
Arguments: parquet, [systemId#146121, internalUUID#146122, id#146123, displayId#146124, name#146125, category#146126, companyCode#146127, address#146128, mainDistributionChain#146129, mainPurchasingOrganization#146130, validPurchasingOrganizations#146131, productGroup#146132], false
(1150) Repartition
Arguments: 25, true
(1151) Project
Arguments: [internalUUID#146122, address#146128.timeZone.code AS timezonecode#146133]
(1152) Join
Arguments: LeftOuter, (plant#146109 <=> internalUUID#146122)
(1153) Project
Arguments: [product#146108, plant#146109, orderDateTime#146110, productPlant#146120, internalUUID#146122, CASE WHEN isnotnull(timezonecode#146133) THEN timezonecode#146133 ELSE UTC END AS timezonecode#146134]
(1154) Project
Arguments: [product#146108, plant#146109, orderDateTime#146110, productPlant#146120, timezonecode#146134]
(1155) LogicalRelation
Arguments: parquet, [systemId#146135, internalUUID#146136, id#146137, displayId#146138, name#146139, baseUnitOfMeasure#146140, unitOfMeasures#146141, unitOfMeasureConversions#146142, productionAspect#146143, salesAspect#146144, procurementAspect#146145, productGroup#146146], false
(1156) Repartition
Arguments: 25, true
(1157) Join
Arguments: LeftOuter, (product#146108 = internalUUID#146136)
(1158) Project
Arguments: [product#146108, plant#146109, orderDateTime#146110, productPlant#146120, timezonecode#146134, systemId#146135, internalUUID#146136, id#146137, displayId#146138, name#146139, baseUnitOfMeasure#146140, unitOfMeasures#146141, unitOfMeasureConversions#146142, productionAspect#146143, salesAspect#146144, procurementAspect#146145, productGroup#146146, filter(unitOfMeasureConversions#146142, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#146120.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#146120.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#146140.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#146140.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#146147]
(1159) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146147.quantityNumerator), true, [quantityNumerator#146148]
(1160) Project
Arguments: [product#146108, plant#146109, orderDateTime#146110, productPlant#146120, timezonecode#146134, systemId#146135, internalUUID#146136, id#146137, displayId#146138, name#146139, baseUnitOfMeasure#146140, unitOfMeasures#146141, unitOfMeasureConversions#146142, productionAspect#146143, salesAspect#146144, procurementAspect#146145, productGroup#146146, filteredUnitOfMeasureConversions#146147, quantityNumerator#146148]
(1161) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146147.quantityDenominator), true, [quantityDenominator#146149]
(1162) Project
Arguments: [product#146108, plant#146109, orderDateTime#146110, productPlant#146120, timezonecode#146134, systemId#146135, internalUUID#146136, id#146137, displayId#146138, name#146139, baseUnitOfMeasure#146140, unitOfMeasures#146141, unitOfMeasureConversions#146142, productionAspect#146143, salesAspect#146144, procurementAspect#146145, productGroup#146146, filteredUnitOfMeasureConversions#146147, quantityNumerator#146148, quantityDenominator#146149]
(1163) Project
Arguments: [product#146108, plant#146109, orderDateTime#146110, productPlant#146120, timezonecode#146134, systemId#146135, internalUUID#146136, id#146137, displayId#146138, name#146139, baseUnitOfMeasure#146140, unitOfMeasures#146141, unitOfMeasureConversions#146142, productionAspect#146143, salesAspect#146144, procurementAspect#146145, productGroup#146146, filteredUnitOfMeasureConversions#146147, quantityNumerator#146148, quantityDenominator#146149, (cast(quantityNumerator#146148 as double) / cast(quantityDenominator#146149 as double)) AS outboundUnit#146150]
(1164) Project
Arguments: [product#146108, plant#146109, orderDateTime#146110, productPlant#146120, timezonecode#146134, systemId#146135, internalUUID#146136, id#146137, displayId#146138, name#146139, baseUnitOfMeasure#146140, unitOfMeasures#146141, unitOfMeasureConversions#146142, productionAspect#146143, salesAspect#146144, procurementAspect#146145, productGroup#146146, filteredUnitOfMeasureConversions#146147, quantityNumerator#146148, quantityDenominator#146149, CASE WHEN (isnull(outboundUnit#146150) OR (outboundUnit#146150 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#146150 END AS outboundUnit#146151]
(1165) Project
Arguments: [product#146108, plant#146109, orderDateTime#146110, productPlant#146120, timezonecode#146134, outboundUnit#146151]
(1166) Project
Arguments: [plant#146109]
(1167) Deduplicate
Arguments: [plant#146109]
(1168) Join
Arguments: Inner, (plantUuid#146105 = plant#146109)
(1169) Project
Arguments: [plantId#146104, plantUuid#146105, storageLocId#146106, storageLocUuid#146107]
(1170) Join
Arguments: Inner, (plant#146077.internalRefUUID <=> plantUuid#146105)
(1171) Generate
Arguments: explode(filter(stockQuantities#146079, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#146107) AND (lambda x#143085.storageLocation.Id = storageLocId#146106)), lambda x#143085, false))), false, [stockQuantity#146152]
(1172) Project
Arguments: [systemId#146074, internalUUID#146075, product#146076, plant#146077, calculationDateTime#146078, stockQuantities#146079, plantId#146104, plantUuid#146105, storageLocId#146106, storageLocUuid#146107, stockQuantity#146152]
(1173) Aggregate
Arguments: [plantUuid#146105, internalUUID#146075, plant#146077, product#146076, systemId#146074], [plantUuid#146105, internalUUID#146075, plant#146077, product#146076, systemId#146074, first(calculationDateTime#146078, false) AS calculationDateTime#146153, collect_list(stockQuantity#146152, 0, 0) AS stockQuantities#146154]
(1174) Project
Arguments: [systemId#146074, internalUUID#146075, product#146076, plant#146077, calculationDateTime#146153, stockQuantities#146154]
(1175) Generate
Arguments: explode(stockQuantities#146154), false, [stockQuantity#146155]
(1176) Project
Arguments: [systemId#146074, internalUUID#146075, product#146076, plant#146077, calculationDateTime#146153, stockQuantities#146154, stockQuantity#146155]
(1177) Project
Arguments: [plant#146077.id AS plant#146156, plant#146077.internalRefUUID AS plantUuid#146157, product#146076.id AS product#146158, product#146076.internalRefUUID AS productUuid#146159, calculationDateTime#146153, stockQuantity#146155.storagelocation.id AS storageLocId#146160, stockQuantity#146155.storagelocation.internalRefUUID AS storageLocUuid#146161, stockQuantity#146155.quantity.measure AS quantity#146162, stockQuantity#146155.specialStockIndicator.code AS specialStockIndicator#146163, stockQuantity#146155.stockType.code AS stockType#146164]
(1178) Filter
Arguments: ((specialStockIndicator#146163 = ) AND (stockType#146164 = 01))
(1179) LogicalRelation
Arguments: parquet, [product#146165, plant#146166, orderDateTime#146167, planningStartDateTime#146168], false
(1180) RepartitionByExpression
Arguments: [product#146165, plant#146166], 25
(1181) Project
Arguments: [product#146165, plant#146166, orderDateTime#146167]
(1182) LogicalRelation
Arguments: parquet, [systemId#146169, internalUUID#146170, plant#146171, product#146172, blockedForReplenishmentStartingFrom#146173, productionAspect#146174, salesPlant#146175, listing#146176], false
(1183) Repartition
Arguments: 25, true
(1184) Project
Arguments: [systemId#146169, internalUUID#146170, plant#146171, product#146172, blockedForReplenishmentStartingFrom#146173, productionAspect#146174, salesPlant#146175, listing#146176, struct(systemId, systemId#146169, internalUUID, internalUUID#146170, plant, plant#146171, product, product#146172, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#146173, productionAspect, productionAspect#146174, salesPlant, salesPlant#146175, listing, listing#146176) AS productPlant#146177]
(1185) Project
Arguments: [productPlant#146177]
(1186) Join
Arguments: LeftOuter, ((product#146165 <=> productPlant#146177.product.internalRefUUID) AND (plant#146166 <=> productPlant#146177.plant.internalRefUUID))
(1187) Project
Arguments: [product#146165, plant#146166, orderDateTime#146167, productPlant#146177]
(1188) SubqueryAlias
Arguments: wl
(1189) LogicalRelation
Arguments: parquet, [systemId#146178, internalUUID#146179, id#146180, displayId#146181, name#146182, category#146183, companyCode#146184, address#146185, mainDistributionChain#146186, mainPurchasingOrganization#146187, validPurchasingOrganizations#146188, productGroup#146189], false
(1190) Repartition
Arguments: 25, true
(1191) Project
Arguments: [internalUUID#146179, address#146185.timeZone.code AS timezonecode#146190]
(1192) Join
Arguments: LeftOuter, (plant#146166 <=> internalUUID#146179)
(1193) Project
Arguments: [product#146165, plant#146166, orderDateTime#146167, productPlant#146177, internalUUID#146179, CASE WHEN isnotnull(timezonecode#146190) THEN timezonecode#146190 ELSE UTC END AS timezonecode#146191]
(1194) Project
Arguments: [product#146165, plant#146166, orderDateTime#146167, productPlant#146177, timezonecode#146191]
(1195) LogicalRelation
Arguments: parquet, [systemId#146192, internalUUID#146193, id#146194, displayId#146195, name#146196, baseUnitOfMeasure#146197, unitOfMeasures#146198, unitOfMeasureConversions#146199, productionAspect#146200, salesAspect#146201, procurementAspect#146202, productGroup#146203], false
(1196) Repartition
Arguments: 25, true
(1197) Join
Arguments: LeftOuter, (product#146165 = internalUUID#146193)
(1198) Project
Arguments: [product#146165, plant#146166, orderDateTime#146167, productPlant#146177, timezonecode#146191, systemId#146192, internalUUID#146193, id#146194, displayId#146195, name#146196, baseUnitOfMeasure#146197, unitOfMeasures#146198, unitOfMeasureConversions#146199, productionAspect#146200, salesAspect#146201, procurementAspect#146202, productGroup#146203, filter(unitOfMeasureConversions#146199, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#146177.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#146177.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#146197.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#146197.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#146204]
(1199) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146204.quantityNumerator), true, [quantityNumerator#146205]
(1200) Project
Arguments: [product#146165, plant#146166, orderDateTime#146167, productPlant#146177, timezonecode#146191, systemId#146192, internalUUID#146193, id#146194, displayId#146195, name#146196, baseUnitOfMeasure#146197, unitOfMeasures#146198, unitOfMeasureConversions#146199, productionAspect#146200, salesAspect#146201, procurementAspect#146202, productGroup#146203, filteredUnitOfMeasureConversions#146204, quantityNumerator#146205]
(1201) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146204.quantityDenominator), true, [quantityDenominator#146206]
(1202) Project
Arguments: [product#146165, plant#146166, orderDateTime#146167, productPlant#146177, timezonecode#146191, systemId#146192, internalUUID#146193, id#146194, displayId#146195, name#146196, baseUnitOfMeasure#146197, unitOfMeasures#146198, unitOfMeasureConversions#146199, productionAspect#146200, salesAspect#146201, procurementAspect#146202, productGroup#146203, filteredUnitOfMeasureConversions#146204, quantityNumerator#146205, quantityDenominator#146206]
(1203) Project
Arguments: [product#146165, plant#146166, orderDateTime#146167, productPlant#146177, timezonecode#146191, systemId#146192, internalUUID#146193, id#146194, displayId#146195, name#146196, baseUnitOfMeasure#146197, unitOfMeasures#146198, unitOfMeasureConversions#146199, productionAspect#146200, salesAspect#146201, procurementAspect#146202, productGroup#146203, filteredUnitOfMeasureConversions#146204, quantityNumerator#146205, quantityDenominator#146206, (cast(quantityNumerator#146205 as double) / cast(quantityDenominator#146206 as double)) AS outboundUnit#146207]
(1204) Project
Arguments: [product#146165, plant#146166, orderDateTime#146167, productPlant#146177, timezonecode#146191, systemId#146192, internalUUID#146193, id#146194, displayId#146195, name#146196, baseUnitOfMeasure#146197, unitOfMeasures#146198, unitOfMeasureConversions#146199, productionAspect#146200, salesAspect#146201, procurementAspect#146202, productGroup#146203, filteredUnitOfMeasureConversions#146204, quantityNumerator#146205, quantityDenominator#146206, CASE WHEN (isnull(outboundUnit#146207) OR (outboundUnit#146207 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#146207 END AS outboundUnit#146208]
(1205) Project
Arguments: [product#146165, plant#146166, orderDateTime#146167, productPlant#146177, timezonecode#146191, outboundUnit#146208]
(1206) Join
Arguments: Inner, ((plantUuid#146157 = plant#146166) AND (productUuid#146159 = product#146165))
(1207) Filter
Arguments: (calculationDateTime#146153 <= orderDateTime#146167)
(1208) Project
Arguments: [plantUuid#146157 AS plant#146209, productUuid#146159 AS product#146210, storageLocId#146160, calculationDateTime#146153, quantity#146162]
(1209) LogicalRelation
Arguments: parquet, [systemId#146211, internalUUID#146212, product#146213, plant#146214, calculationDateTime#146215, stockQuantities#146216], false
(1210) Repartition
Arguments: 25, true
(1211) LogicalRelation
Arguments: parquet, [marketUnit#146217, description#146218, articleHierarchy#146219, defaultCurrency#146220, responsibilities#146221, replenishmentTypes#146222, distributionCenters#146223, assignedArticleHierarchyNodes#146224, minOrderQtySetting#146225, listingCheck#146226, odsSelection#146227, demandProfiles#146228, constraintProfiles#146229, optimizationProfiles#146230, orderGroupSplitProfiles#146231, supplierMinimumProfiles#146232, multipleRestrictionProfiles#146233, preferredUomSource#146234, handlingOfUnfulfilledDemands#146235, negligibleQuantitiesThreshold#146236, eventtype#146237, minOrderQtySettingInternal#146238], false
(1212) Repartition
Arguments: 25, true
(1213) Filter
Arguments: (marketUnit#146217 <=> Daily_grocery)
(1214) Project
Arguments: [marketUnit#146217, description#146218, articleHierarchy#146219, defaultCurrency#146220, responsibilities#146221, replenishmentTypes#146222, distributionCenters#146223, assignedArticleHierarchyNodes#146224, minOrderQtySetting#146225, listingCheck#146226, odsSelection#146227, demandProfiles#146228, constraintProfiles#146229, optimizationProfiles#146230, orderGroupSplitProfiles#146231, supplierMinimumProfiles#146232, multipleRestrictionProfiles#146233, preferredUomSource#146234, handlingOfUnfulfilledDemands#146235, negligibleQuantitiesThreshold#146236, eventtype#146237, minOrderQtySettingInternal#146238]
(1215) Project
Arguments: [distributionCenters#146223]
(1216) Generate
Arguments: explode(distributionCenters#146223), false, [distributionCenters#146239]
(1217) Project
Arguments: [distributionCenters#146239]
(1218) Generate
Arguments: explode(distributionCenters#146239.storageLocations), false, [storageLocations#146240]
(1219) Project
Arguments: [distributionCenters#146239.id AS plantId#146241, distributionCenters#146239.internalRefUUID AS plantUuid#146242, storageLocations#146240]
(1220) Project
Arguments: [plantId#146241, plantUuid#146242, storageLocations#146240.id AS storageLocId#146243, storageLocations#146240.internalRefUUID AS storageLocUuid#146244]
(1221) LogicalRelation
Arguments: parquet, [product#146245, plant#146246, orderDateTime#146247, planningStartDateTime#146248], false
(1222) RepartitionByExpression
Arguments: [product#146245, plant#146246], 25
(1223) Project
Arguments: [product#146245, plant#146246, orderDateTime#146247]
(1224) LogicalRelation
Arguments: parquet, [systemId#146249, internalUUID#146250, plant#146251, product#146252, blockedForReplenishmentStartingFrom#146253, productionAspect#146254, salesPlant#146255, listing#146256], false
(1225) Repartition
Arguments: 25, true
(1226) Project
Arguments: [systemId#146249, internalUUID#146250, plant#146251, product#146252, blockedForReplenishmentStartingFrom#146253, productionAspect#146254, salesPlant#146255, listing#146256, struct(systemId, systemId#146249, internalUUID, internalUUID#146250, plant, plant#146251, product, product#146252, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#146253, productionAspect, productionAspect#146254, salesPlant, salesPlant#146255, listing, listing#146256) AS productPlant#146257]
(1227) Project
Arguments: [productPlant#146257]
(1228) Join
Arguments: LeftOuter, ((product#146245 <=> productPlant#146257.product.internalRefUUID) AND (plant#146246 <=> productPlant#146257.plant.internalRefUUID))
(1229) Project
Arguments: [product#146245, plant#146246, orderDateTime#146247, productPlant#146257]
(1230) SubqueryAlias
Arguments: wl
(1231) LogicalRelation
Arguments: parquet, [systemId#146258, internalUUID#146259, id#146260, displayId#146261, name#146262, category#146263, companyCode#146264, address#146265, mainDistributionChain#146266, mainPurchasingOrganization#146267, validPurchasingOrganizations#146268, productGroup#146269], false
(1232) Repartition
Arguments: 25, true
(1233) Project
Arguments: [internalUUID#146259, address#146265.timeZone.code AS timezonecode#146270]
(1234) Join
Arguments: LeftOuter, (plant#146246 <=> internalUUID#146259)
(1235) Project
Arguments: [product#146245, plant#146246, orderDateTime#146247, productPlant#146257, internalUUID#146259, CASE WHEN isnotnull(timezonecode#146270) THEN timezonecode#146270 ELSE UTC END AS timezonecode#146271]
(1236) Project
Arguments: [product#146245, plant#146246, orderDateTime#146247, productPlant#146257, timezonecode#146271]
(1237) LogicalRelation
Arguments: parquet, [systemId#146272, internalUUID#146273, id#146274, displayId#146275, name#146276, baseUnitOfMeasure#146277, unitOfMeasures#146278, unitOfMeasureConversions#146279, productionAspect#146280, salesAspect#146281, procurementAspect#146282, productGroup#146283], false
(1238) Repartition
Arguments: 25, true
(1239) Join
Arguments: LeftOuter, (product#146245 = internalUUID#146273)
(1240) Project
Arguments: [product#146245, plant#146246, orderDateTime#146247, productPlant#146257, timezonecode#146271, systemId#146272, internalUUID#146273, id#146274, displayId#146275, name#146276, baseUnitOfMeasure#146277, unitOfMeasures#146278, unitOfMeasureConversions#146279, productionAspect#146280, salesAspect#146281, procurementAspect#146282, productGroup#146283, filter(unitOfMeasureConversions#146279, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#146257.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#146257.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#146277.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#146277.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#146284]
(1241) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146284.quantityNumerator), true, [quantityNumerator#146285]
(1242) Project
Arguments: [product#146245, plant#146246, orderDateTime#146247, productPlant#146257, timezonecode#146271, systemId#146272, internalUUID#146273, id#146274, displayId#146275, name#146276, baseUnitOfMeasure#146277, unitOfMeasures#146278, unitOfMeasureConversions#146279, productionAspect#146280, salesAspect#146281, procurementAspect#146282, productGroup#146283, filteredUnitOfMeasureConversions#146284, quantityNumerator#146285]
(1243) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146284.quantityDenominator), true, [quantityDenominator#146286]
(1244) Project
Arguments: [product#146245, plant#146246, orderDateTime#146247, productPlant#146257, timezonecode#146271, systemId#146272, internalUUID#146273, id#146274, displayId#146275, name#146276, baseUnitOfMeasure#146277, unitOfMeasures#146278, unitOfMeasureConversions#146279, productionAspect#146280, salesAspect#146281, procurementAspect#146282, productGroup#146283, filteredUnitOfMeasureConversions#146284, quantityNumerator#146285, quantityDenominator#146286]
(1245) Project
Arguments: [product#146245, plant#146246, orderDateTime#146247, productPlant#146257, timezonecode#146271, systemId#146272, internalUUID#146273, id#146274, displayId#146275, name#146276, baseUnitOfMeasure#146277, unitOfMeasures#146278, unitOfMeasureConversions#146279, productionAspect#146280, salesAspect#146281, procurementAspect#146282, productGroup#146283, filteredUnitOfMeasureConversions#146284, quantityNumerator#146285, quantityDenominator#146286, (cast(quantityNumerator#146285 as double) / cast(quantityDenominator#146286 as double)) AS outboundUnit#146287]
(1246) Project
Arguments: [product#146245, plant#146246, orderDateTime#146247, productPlant#146257, timezonecode#146271, systemId#146272, internalUUID#146273, id#146274, displayId#146275, name#146276, baseUnitOfMeasure#146277, unitOfMeasures#146278, unitOfMeasureConversions#146279, productionAspect#146280, salesAspect#146281, procurementAspect#146282, productGroup#146283, filteredUnitOfMeasureConversions#146284, quantityNumerator#146285, quantityDenominator#146286, CASE WHEN (isnull(outboundUnit#146287) OR (outboundUnit#146287 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#146287 END AS outboundUnit#146288]
(1247) Project
Arguments: [product#146245, plant#146246, orderDateTime#146247, productPlant#146257, timezonecode#146271, outboundUnit#146288]
(1248) Project
Arguments: [plant#146246]
(1249) Deduplicate
Arguments: [plant#146246]
(1250) Join
Arguments: Inner, (plantUuid#146242 = plant#146246)
(1251) Project
Arguments: [plantId#146241, plantUuid#146242, storageLocId#146243, storageLocUuid#146244]
(1252) Join
Arguments: Inner, (plant#146214.internalRefUUID <=> plantUuid#146242)
(1253) Generate
Arguments: explode(filter(stockQuantities#146216, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#146244) AND (lambda x#143085.storageLocation.Id = storageLocId#146243)), lambda x#143085, false))), false, [stockQuantity#146289]
(1254) Project
Arguments: [systemId#146211, internalUUID#146212, product#146213, plant#146214, calculationDateTime#146215, stockQuantities#146216, plantId#146241, plantUuid#146242, storageLocId#146243, storageLocUuid#146244, stockQuantity#146289]
(1255) Aggregate
Arguments: [plantUuid#146242, internalUUID#146212, plant#146214, product#146213, systemId#146211], [plantUuid#146242, internalUUID#146212, plant#146214, product#146213, systemId#146211, first(calculationDateTime#146215, false) AS calculationDateTime#146290, collect_list(stockQuantity#146289, 0, 0) AS stockQuantities#146291]
(1256) Project
Arguments: [systemId#146211, internalUUID#146212, product#146213, plant#146214, calculationDateTime#146290, stockQuantities#146291]
(1257) Generate
Arguments: explode(stockQuantities#146291), false, [stockQuantity#146292]
(1258) Project
Arguments: [systemId#146211, internalUUID#146212, product#146213, plant#146214, calculationDateTime#146290, stockQuantities#146291, stockQuantity#146292]
(1259) Project
Arguments: [plant#146214.id AS plant#146293, plant#146214.internalRefUUID AS plantUuid#146294, product#146213.id AS product#146295, product#146213.internalRefUUID AS productUuid#146296, calculationDateTime#146290, stockQuantity#146292.storagelocation.id AS storageLocId#146297, stockQuantity#146292.storagelocation.internalRefUUID AS storageLocUuid#146298, stockQuantity#146292.quantity.measure AS quantity#146299, stockQuantity#146292.specialStockIndicator.code AS specialStockIndicator#146300, stockQuantity#146292.stockType.code AS stockType#146301]
(1260) Filter
Arguments: ((specialStockIndicator#146300 = ) AND (stockType#146301 = 01))
(1261) LogicalRelation
Arguments: parquet, [product#146302, plant#146303, orderDateTime#146304, planningStartDateTime#146305], false
(1262) RepartitionByExpression
Arguments: [product#146302, plant#146303], 25
(1263) Project
Arguments: [product#146302, plant#146303, orderDateTime#146304]
(1264) LogicalRelation
Arguments: parquet, [systemId#146306, internalUUID#146307, plant#146308, product#146309, blockedForReplenishmentStartingFrom#146310, productionAspect#146311, salesPlant#146312, listing#146313], false
(1265) Repartition
Arguments: 25, true
(1266) Project
Arguments: [systemId#146306, internalUUID#146307, plant#146308, product#146309, blockedForReplenishmentStartingFrom#146310, productionAspect#146311, salesPlant#146312, listing#146313, struct(systemId, systemId#146306, internalUUID, internalUUID#146307, plant, plant#146308, product, product#146309, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#146310, productionAspect, productionAspect#146311, salesPlant, salesPlant#146312, listing, listing#146313) AS productPlant#146314]
(1267) Project
Arguments: [productPlant#146314]
(1268) Join
Arguments: LeftOuter, ((product#146302 <=> productPlant#146314.product.internalRefUUID) AND (plant#146303 <=> productPlant#146314.plant.internalRefUUID))
(1269) Project
Arguments: [product#146302, plant#146303, orderDateTime#146304, productPlant#146314]
(1270) SubqueryAlias
Arguments: wl
(1271) LogicalRelation
Arguments: parquet, [systemId#146315, internalUUID#146316, id#146317, displayId#146318, name#146319, category#146320, companyCode#146321, address#146322, mainDistributionChain#146323, mainPurchasingOrganization#146324, validPurchasingOrganizations#146325, productGroup#146326], false
(1272) Repartition
Arguments: 25, true
(1273) Project
Arguments: [internalUUID#146316, address#146322.timeZone.code AS timezonecode#146327]
(1274) Join
Arguments: LeftOuter, (plant#146303 <=> internalUUID#146316)
(1275) Project
Arguments: [product#146302, plant#146303, orderDateTime#146304, productPlant#146314, internalUUID#146316, CASE WHEN isnotnull(timezonecode#146327) THEN timezonecode#146327 ELSE UTC END AS timezonecode#146328]
(1276) Project
Arguments: [product#146302, plant#146303, orderDateTime#146304, productPlant#146314, timezonecode#146328]
(1277) LogicalRelation
Arguments: parquet, [systemId#146329, internalUUID#146330, id#146331, displayId#146332, name#146333, baseUnitOfMeasure#146334, unitOfMeasures#146335, unitOfMeasureConversions#146336, productionAspect#146337, salesAspect#146338, procurementAspect#146339, productGroup#146340], false
(1278) Repartition
Arguments: 25, true
(1279) Join
Arguments: LeftOuter, (product#146302 = internalUUID#146330)
(1280) Project
Arguments: [product#146302, plant#146303, orderDateTime#146304, productPlant#146314, timezonecode#146328, systemId#146329, internalUUID#146330, id#146331, displayId#146332, name#146333, baseUnitOfMeasure#146334, unitOfMeasures#146335, unitOfMeasureConversions#146336, productionAspect#146337, salesAspect#146338, procurementAspect#146339, productGroup#146340, filter(unitOfMeasureConversions#146336, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#146314.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#146314.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#146334.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#146334.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#146341]
(1281) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146341.quantityNumerator), true, [quantityNumerator#146342]
(1282) Project
Arguments: [product#146302, plant#146303, orderDateTime#146304, productPlant#146314, timezonecode#146328, systemId#146329, internalUUID#146330, id#146331, displayId#146332, name#146333, baseUnitOfMeasure#146334, unitOfMeasures#146335, unitOfMeasureConversions#146336, productionAspect#146337, salesAspect#146338, procurementAspect#146339, productGroup#146340, filteredUnitOfMeasureConversions#146341, quantityNumerator#146342]
(1283) Generate
Arguments: explode(filteredUnitOfMeasureConversions#146341.quantityDenominator), true, [quantityDenominator#146343]
(1284) Project
Arguments: [product#146302, plant#146303, orderDateTime#146304, productPlant#146314, timezonecode#146328, systemId#146329, internalUUID#146330, id#146331, displayId#146332, name#146333, baseUnitOfMeasure#146334, unitOfMeasures#146335, unitOfMeasureConversions#146336, productionAspect#146337, salesAspect#146338, procurementAspect#146339, productGroup#146340, filteredUnitOfMeasureConversions#146341, quantityNumerator#146342, quantityDenominator#146343]
(1285) Project
Arguments: [product#146302, plant#146303, orderDateTime#146304, productPlant#146314, timezonecode#146328, systemId#146329, internalUUID#146330, id#146331, displayId#146332, name#146333, baseUnitOfMeasure#146334, unitOfMeasures#146335, unitOfMeasureConversions#146336, productionAspect#146337, salesAspect#146338, procurementAspect#146339, productGroup#146340, filteredUnitOfMeasureConversions#146341, quantityNumerator#146342, quantityDenominator#146343, (cast(quantityNumerator#146342 as double) / cast(quantityDenominator#146343 as double)) AS outboundUnit#146344]
(1286) Project
Arguments: [product#146302, plant#146303, orderDateTime#146304, productPlant#146314, timezonecode#146328, systemId#146329, internalUUID#146330, id#146331, displayId#146332, name#146333, baseUnitOfMeasure#146334, unitOfMeasures#146335, unitOfMeasureConversions#146336, productionAspect#146337, salesAspect#146338, procurementAspect#146339, productGroup#146340, filteredUnitOfMeasureConversions#146341, quantityNumerator#146342, quantityDenominator#146343, CASE WHEN (isnull(outboundUnit#146344) OR (outboundUnit#146344 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#146344 END AS outboundUnit#146345]
(1287) Project
Arguments: [product#146302, plant#146303, orderDateTime#146304, productPlant#146314, timezonecode#146328, outboundUnit#146345]
(1288) Join
Arguments: Inner, ((plantUuid#146294 = plant#146303) AND (productUuid#146296 = product#146302))
(1289) Filter
Arguments: (calculationDateTime#146290 <= orderDateTime#146304)
(1290) Project
Arguments: [plantUuid#146294 AS plant#146346, productUuid#146296 AS product#146347, storageLocId#146297, calculationDateTime#146290, quantity#146299]
(1291) Aggregate
Arguments: [plant#146346, product#146347, storageLocId#146297], [plant#146346, product#146347, storageLocId#146297, max(calculationDateTime#146290) AS max_calc_datetime#146348]
(1292) Join
Arguments: Inner, ((((plant#146209 <=> plant#146346) AND (product#146210 <=> product#146347)) AND (storageLocId#146160 <=> storageLocId#146297)) AND (calculationDateTime#146153 <=> max_calc_datetime#146348))
(1293) Project
Arguments: [plant#146209, product#146210, storageLocId#146160, calculationDateTime#146153, quantity#146162]
(1294) Aggregate
Arguments: [product#146210, plant#146209], [product#146210, plant#146209, sum(quantity#146162) AS quantitySum#146349, min(calculationDateTime#146153) AS minCalculationDateTime#146350]
(1295) Project
Arguments: [product#146210, plant#146209, quantitySum#146349, minCalculationDateTime#146350, round(quantitySum#146349, 0) AS roundedQuantitySum#146351]
(1296) Join
Arguments: LeftOuter, ((plant#146031 = plant#146209) AND (product#146030 = product#146210))
(1297) Project
Arguments: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146073, roundedQuantitySum#146351, minCalculationDateTime#146350]
(1298) Project
Arguments: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146073, roundedQuantitySum#146351, minCalculationDateTime#146350, CASE WHEN isnotnull(minCalculationDateTime#146350) THEN minCalculationDateTime#146350 ELSE orderDateTime#146032 END AS stockDatetime#146352]
(1299) Project
Arguments: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146073, roundedQuantitySum#146351, minCalculationDateTime#146350, stockDatetime#146352, CASE WHEN isnotnull(roundedQuantitySum#146351) THEN array(roundedQuantitySum#146351) ELSE array(0.0) END AS stockBatchQuantities#146353]
(1300) Project
Arguments: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146073, roundedQuantitySum#146351, minCalculationDateTime#146350, stockDatetime#146352, stockBatchQuantities#146353, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#146354]
(1301) Project
Arguments: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146073, roundedQuantitySum#146351, stockDatetime#146352, stockBatchQuantities#146353, stockBatchShelfLifeEndDatetimes#146354]
(1302) Project
Arguments: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146073, stockDatetime#146352, stockBatchQuantities#146353, stockBatchShelfLifeEndDatetimes#146354]
(1303) LogicalRelation
Arguments: parquet, [product#146355, plant#146356, demandChannel#146357, demandStream#146358, considerVariance#146359, demandTimeBuckets#146360, demandPointInTimeStart#146361, demandPointInTimeEnd#146362, demandPointInTime#146363], false
(1304) Join
Arguments: LeftOuter, ((product#146030 = product#146355) AND (plant#146031 = plant#146356))
(1305) Project
Arguments: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146073, stockDatetime#146352, stockBatchQuantities#146353, stockBatchShelfLifeEndDatetimes#146354, demandChannel#146357, demandStream#146358, considerVariance#146359, demandTimeBuckets#146360, demandPointInTimeStart#146361, demandPointInTimeEnd#146362, demandPointInTime#146363, product#146355, plant#146356]
(1306) Project
Arguments: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146073, stockDatetime#146352, stockBatchQuantities#146353, stockBatchShelfLifeEndDatetimes#146354, demandChannel#146357, demandStream#146358, considerVariance#146359, demandTimeBuckets#146360, demandPointInTimeStart#146361, demandPointInTimeEnd#146362, demandPointInTime#146363, CASE WHEN isnotnull(product#146355) THEN struct(demandChannel, demandChannel#146357, demandStream, demandStream#146358, considerVariance, considerVariance#146359, demandTimeBuckets, demandTimeBuckets#146360, demandPointInTimeStart, demandPointInTimeStart#146361, demandPointInTimeEnd, demandPointInTimeEnd#146362, demandPointInTime, demandPointInTime#146363) 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#146364]
(1307) Aggregate
Arguments: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146073, stockDatetime#146352, stockBatchQuantities#146353, stockBatchShelfLifeEndDatetimes#146354], [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146073, stockDatetime#146352, stockBatchQuantities#146353, stockBatchShelfLifeEndDatetimes#146354, collect_list(rawDemands#146364, 0, 0) AS rawDemands#146365]
(1308) DeserializeToObject
Arguments: createexternalrow(invoke(product#146030.toString()), invoke(plant#146031.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#146032)), if (isnull(productPlant#146042)) null else createexternalrow(invoke(productPlant#146042.systemId.toString()), invoke(productPlant#146042.internalUUID.toString()), if (isnull(productPlant#146042.plant)) null else createexternalrow(invoke(productPlant#146042.plant.internalRefUUID.toString()), invoke(productPlant#146042.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#146042.product)) null else createexternalrow(invoke(productPlant#146042.product.internalRefUUID.toString()), invoke(productPlant#146042.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#146042.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#146042.productionAspect)) null else createexternalrow(if (isnull(productPlant#146042.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#146042.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#146042.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#146042.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#146042.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#146042.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#146042.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#146042.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#146042.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#146042.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#146042.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#146042.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#146042.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#146042.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#146042.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#146042.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#146042.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#146042.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#146042.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#146042.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#146042.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#146042.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#146042.salesPlant)) null else createexternalrow(if (isnull(productPlant#146042.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#146042.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#146042.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, 20030), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 20030))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 20030).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 20030).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 20030).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#146042.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#146056.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#146073)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#146352)), mapobjects(lambdavariable(MapObject, DoubleType, true, 20031), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 20031) as double))), stockBatchQuantities#146353, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 20032), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 20032) as timestamp)))), stockBatchShelfLifeEndDatetimes#146354, 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, 20033), 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, 20033))) 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, 20033).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, 20033).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, 20033).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20034), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20034))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20034).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20034).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20034).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, 20033).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, 20033).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, 20033).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20035), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20035))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20035).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20035).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20035).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, 20033).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#146365, 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#143452: org.apache.spark.sql.Row
(1309) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@2d5ca6d1, 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#143457: 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#146366, 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#146367, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20021), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20021), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20022), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20022), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20023), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20023), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20024), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20024), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 20025), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20025), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#146368, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20027), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20027), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20028), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20028), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20029), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20029), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#146369]
(1311) Join
Arguments: LeftOuter, ((plant#146367 <=> plant#145706) AND (product#146366 <=> product#145705))
(1312) Project
Arguments: [product#145705, plant#145706, orderDateTime#145707, productPlant#145717, timezonecode#145731, outboundUnit#145748, stockDatetime#146027, stockBatchQuantities#146028, stockBatchShelfLifeEndDatetimes#146029, plant#146367, dayBucketDemands#146368, pointInTimeDemands#146369]
(1313) Project
Arguments: [product#145705, plant#145706, orderDateTime#145707, productPlant#145717, timezonecode#145731, outboundUnit#145748, stockDatetime#146027, stockBatchQuantities#146028, stockBatchShelfLifeEndDatetimes#146029, dayBucketDemands#146368, pointInTimeDemands#146369]
(1314) LogicalRelation
Arguments: parquet, [systemId#146370, internalUUID#146371, id#146372, displayId#146373, supplier#146374, type#146375, status#146376, isMarkedForDeletion#146377, items#146378], false
(1315) Repartition
Arguments: 25, true
(1316) Generate
Arguments: explode(items#146378), false, [item#146379]
(1317) Project
Arguments: [id#146372, internalUUID#146371, isMarkedForDeletion#146377, supplier#146374.internalRefUUID AS supplierUuid#146380, item#146379]
(1318) Filter
Arguments: (((NOT isMarkedForDeletion#146377 AND NOT item#146379.deletionIndicator) AND NOT item#146379.completeIndicator) AND NOT item#146379.returnIndicator)
(1319) Project
Arguments: [id#146372, internalUUID#146371, supplierUuid#146380, item#146379.plant.internalRefUUID AS plant#146381, item#146379.product.internalRefUUID AS product#146382, item#146379.plant.id AS externalPlantId#146383, item#146379.product.id AS externalProductId#146384, item#146379.storageLocation.internalRefUUID AS storageLocUuid#146385, item#146379.quantityUnit.code AS quantityUom#146386, item#146379.quantityUnit.internalRefUUID AS quantityUomUuid#146387, item#146379.quantityNumerator AS quantityNumerator#146388, item#146379.quantityDenominator AS quantityDenominator#146389, item#146379.scheduleLines AS scheduleLines#146390, item#146379.confirmations AS confirmations#146391]
(1320) Join
Arguments: Inner, ((product#145705 <=> product#146382) AND (plant#145706 <=> supplierUuid#146380))
(1321) Project
Arguments: [id#146372, internalUUID#146371, supplierUuid#146380, plant#146381, product#146382, externalPlantId#146383, externalProductId#146384, storageLocUuid#146385, quantityUom#146386, quantityUomUuid#146387, quantityNumerator#146388, quantityDenominator#146389, scheduleLines#146390, confirmations#146391, stockDatetime#146027, plant#145706]
(1322) Project
Arguments: [id#146372, internalUUID#146371, supplierUuid#146380, product#146382, externalPlantId#146383, externalProductId#146384, storageLocUuid#146385, quantityUom#146386, quantityUomUuid#146387, quantityNumerator#146388, quantityDenominator#146389, scheduleLines#146390, confirmations#146391, stockDatetime#146027, plant#145706]
(1323) Project
Arguments: [id#146372, internalUUID#146371, supplierUuid#146380, product#146382, externalPlantId#146383, externalProductId#146384, storageLocUuid#146385, quantityUom#146386, quantityUomUuid#146387, quantityNumerator#146388, quantityDenominator#146389, scheduleLines#146390, confirmations#146391, stockDatetime#146027, plant#145706, filter(transform(filter(transform(scheduleLines#146390, lambdafunction(struct(openQty, (greatest((lambda x_38#145683.quantity - coalesce(lambda x_38#145683.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_38#145683.productAvailabilityDateTime, lambda x_38#145683.deliveryAt)), lambda x_38#145683, false)), lambdafunction((lambda x_39#145684.availabilityDatetime < stockDatetime#146027), lambda x_39#145684, false)), lambdafunction(struct(documentId, id#146372, documentUuid, internalUUID#146371, openQty, lambda x_40#145685.openQty, openQtyInBaseUnit, ((lambda x_40#145685.openQty * quantityNumerator#146388) / quantityDenominator#146389), qtyUom, quantityUom#146386, qtyUomUuid, quantityUomUuid#146387, availabilityDatetime, lambda x_40#145685.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_40#145685, false)), lambdafunction(NOT (lambda x_41#145686.openQty = 0.0), lambda x_41#145686, false)) AS openGoodsMovements#145682]
(1324) Aggregate
Arguments: [product#146382, plant#145706], [product#146382, plant#145706, flatten(collect_list(openGoodsMovements#145682, 0, 0)) AS openGoodsMovements#145687]
(1325) Filter
Arguments: (array_size(openGoodsMovements#145687) > 0)
(1326) Union
Arguments: false, false
(1327) Aggregate
Arguments: [product#143833, plant#143832], [product#143833, plant#143832, flatten(collect_list(openGoodsMovements#145382, 0, 0)) AS openGoodsMovements#146442]
(1328) Join
Arguments: LeftOuter, ((product#142980 = product#143833) AND (plant#142981 = plant#143832))
(1329) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386, dayBucketDemands#143464, pointInTimeDemands#143465, openGoodsMovements#146442]
(1330) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386, dayBucketDemands#143464, pointInTimeDemands#143465, coalesce(openGoodsMovements#146442.openQtyInBaseUnit, cast(array() as array<double>)) AS openGoodsMovementQuantities#147161, coalesce(openGoodsMovements#146442.availabilityDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementAvailabilityDatetimes#147162, coalesce(openGoodsMovements#146442.shelfLifeEndDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementShelfLifeEndDatetimes#147163]
(1331) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386, dayBucketDemands#143464, pointInTimeDemands#143465, openGoodsMovementQuantities#147161, openGoodsMovementAvailabilityDatetimes#147162, openGoodsMovementShelfLifeEndDatetimes#147163, 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#147264]
(1332) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386, dayBucketDemands#143464, pointInTimeDemands#143465, openGoodsMovementQuantities#147161, openGoodsMovementAvailabilityDatetimes#147162, openGoodsMovementShelfLifeEndDatetimes#147163, configuration#147264, array(ListingPeriod) AS timeDependentSettingsName#147403]
(1333) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386, dayBucketDemands#143464, pointInTimeDemands#143465, openGoodsMovementQuantities#147161, openGoodsMovementAvailabilityDatetimes#147162, openGoodsMovementShelfLifeEndDatetimes#147163, configuration#147264, timeDependentSettingsName#147403, array(1900-01-01 00:00:00) AS timeDependentSettingsStartDatetime#147404]
(1334) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386, dayBucketDemands#143464, pointInTimeDemands#143465, openGoodsMovementQuantities#147161, openGoodsMovementAvailabilityDatetimes#147162, openGoodsMovementShelfLifeEndDatetimes#147163, configuration#147264, timeDependentSettingsName#147403, timeDependentSettingsStartDatetime#147404, array(2199-01-01 00:00:00) AS timeDependentSettingsEndDatetime#147405]
(1335) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386, dayBucketDemands#143464, pointInTimeDemands#143465, openGoodsMovementQuantities#147161, openGoodsMovementAvailabilityDatetimes#147162, openGoodsMovementShelfLifeEndDatetimes#147163, configuration#147264, timeDependentSettingsName#147403, timeDependentSettingsStartDatetime#147404, timeDependentSettingsEndDatetime#147405, array(1.0) AS timeDependentSettingsValue#147406]
(1336) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386, dayBucketDemands#143464, pointInTimeDemands#143465, openGoodsMovementQuantities#147161, openGoodsMovementAvailabilityDatetimes#147162, openGoodsMovementShelfLifeEndDatetimes#147163, configuration#147264, concat(coalesce(timeDependentSettingsName#147403, cast(array() as array<string>)), CASE WHEN isnotnull(productPlant#142994.productionAspect.productPlanningPlants.minimumSafetyStock) THEN array(MinStock) ELSE cast(array() as array<string>) END) AS timeDependentSettingsName#147407, timeDependentSettingsStartDatetime#147404, timeDependentSettingsEndDatetime#147405, timeDependentSettingsValue#147406]
(1337) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386, dayBucketDemands#143464, pointInTimeDemands#143465, openGoodsMovementQuantities#147161, openGoodsMovementAvailabilityDatetimes#147162, openGoodsMovementShelfLifeEndDatetimes#147163, configuration#147264, timeDependentSettingsName#147407, concat(coalesce(timeDependentSettingsStartDatetime#147404, cast(array() as array<timestamp>)), CASE WHEN isnotnull(productPlant#142994.productionAspect.productPlanningPlants.minimumSafetyStock) THEN array(1900-01-01 00:00:00) ELSE cast(array() as array<timestamp>) END) AS timeDependentSettingsStartDatetime#147409, timeDependentSettingsEndDatetime#147405, timeDependentSettingsValue#147406]
(1338) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386, dayBucketDemands#143464, pointInTimeDemands#143465, openGoodsMovementQuantities#147161, openGoodsMovementAvailabilityDatetimes#147162, openGoodsMovementShelfLifeEndDatetimes#147163, configuration#147264, timeDependentSettingsName#147407, timeDependentSettingsStartDatetime#147409, concat(coalesce(timeDependentSettingsEndDatetime#147405, cast(array() as array<timestamp>)), CASE WHEN isnotnull(productPlant#142994.productionAspect.productPlanningPlants.minimumSafetyStock) THEN array(2199-01-01 00:00:00) ELSE cast(array() as array<timestamp>) END) AS timeDependentSettingsEndDatetime#147411, timeDependentSettingsValue#147406]
(1339) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386, dayBucketDemands#143464, pointInTimeDemands#143465, openGoodsMovementQuantities#147161, openGoodsMovementAvailabilityDatetimes#147162, openGoodsMovementShelfLifeEndDatetimes#147163, configuration#147264, timeDependentSettingsName#147407, timeDependentSettingsStartDatetime#147409, timeDependentSettingsEndDatetime#147411, concat(coalesce(timeDependentSettingsValue#147406, cast(array() as array<double>)), CASE WHEN isnotnull(productPlant#142994.productionAspect.productPlanningPlants.minimumSafetyStock) THEN array(cast(productPlant#142994.productionAspect.productPlanningPlants.minimumSafetyStock as double)) ELSE cast(array() as array<double>) END) AS timeDependentSettingsValue#147413]
(1340) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386, dayBucketDemands#143464, pointInTimeDemands#143465, openGoodsMovementQuantities#147161, openGoodsMovementAvailabilityDatetimes#147162, openGoodsMovementShelfLifeEndDatetimes#147163, configuration#147264, timeDependentSettingsName#147407, timeDependentSettingsStartDatetime#147409, timeDependentSettingsEndDatetime#147411, timeDependentSettingsValue#147413]
(1341) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386, dayBucketDemands#143464, pointInTimeDemands#143465, openGoodsMovementQuantities#147161, openGoodsMovementAvailabilityDatetimes#147162, openGoodsMovementShelfLifeEndDatetimes#147163, configuration#147264, timeDependentSettingsName#147407, timeDependentSettingsStartDatetime#147409, timeDependentSettingsEndDatetime#147411, timeDependentSettingsValue#147413]
(1342) Project
Arguments: [product#142980, plant#142981, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386, dayBucketDemands#143464, pointInTimeDemands#143465, openGoodsMovementQuantities#147161, openGoodsMovementAvailabilityDatetimes#147162, openGoodsMovementShelfLifeEndDatetimes#147163, configuration#147264, timeDependentSettingsName#147407, timeDependentSettingsStartDatetime#147409, timeDependentSettingsEndDatetime#147411, timeDependentSettingsValue#147413]