== Physical Plan ==
Execute SaveIntoDataSourceCommand (1)
+- SaveIntoDataSourceCommand (2)
+- Project (716)
+- Project (715)
+- Project (714)
+- Union (713)
:- Project (219)
: +- Project (218)
: +- Project (217)
: +- Project (216)
: +- Deduplicate (215)
: +- Project (214)
: +- Project (213)
: +- Project (212)
: +- Project (211)
: +- Project (210)
: +- Filter (209)
: +- Project (208)
: +- Join (207)
: :- 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)
: +- LogicalRelation (206)
+- Project (712)
+- Project (711)
+- Project (710)
+- Project (709)
+- Deduplicate (708)
+- Project (707)
+- Project (706)
+- Project (705)
+- Join (704)
:- SerializeFromObject (696)
: +- MapPartitions (695)
: +- DeserializeToObject (694)
: +- Project (693)
: +- Project (692)
: +- Project (691)
: +- Project (690)
: +- Project (689)
: +- Project (688)
: +- Join (687)
: :- Project (680)
: : +- Join (679)
: : :- Project (636)
: : : +- Project (635)
: : : +- Join (634)
: : : :- Project (422)
: : : : +- Project (421)
: : : : +- Project (420)
: : : : +- Project (419)
: : : : +- Project (418)
: : : : +- Project (417)
: : : : +- Join (416)
: : : : :- Project (246)
: : : : : +- Project (245)
: : : : : +- Project (244)
: : : : : +- Project (243)
: : : : : +- Generate (242)
: : : : : +- Project (241)
: : : : : +- Generate (240)
: : : : : +- Project (239)
: : : : : +- Join (238)
: : : : : :- Project (235)
: : : : : : +- Project (234)
: : : : : : +- Join (233)
: : : : : : :- SubqueryAlias (229)
: : : : : : : +- Project (228)
: : : : : : : +- Join (227)
: : : : : : : :- Project (222)
: : : : : : : : +- RepartitionByExpression (221)
: : : : : : : : +- LogicalRelation (220)
: : : : : : : +- Project (226)
: : : : : : : +- Project (225)
: : : : : : : +- Repartition (224)
: : : : : : : +- LogicalRelation (223)
: : : : : : +- Project (232)
: : : : : : +- Repartition (231)
: : : : : : +- LogicalRelation (230)
: : : : : +- Repartition (237)
: : : : : +- LogicalRelation (236)
: : : : +- Project (415)
: : : : +- Aggregate (414)
: : : : +- Project (413)
: : : : +- Join (412)
: : : : :- Project (328)
: : : : : +- Filter (327)
: : : : : +- Join (326)
: : : : : :- Filter (298)
: : : : : : +- Project (297)
: : : : : : +- Project (296)
: : : : : : +- Generate (295)
: : : : : : +- Project (294)
: : : : : : +- Aggregate (293)
: : : : : : +- Project (292)
: : : : : : +- Generate (291)
: : : : : : +- Join (290)
: : : : : : :- Repartition (248)
: : : : : : : +- LogicalRelation (247)
: : : : : : +- Project (289)
: : : : : : +- Join (288)
: : : : : : :- Project (258)
: : : : : : : +- Project (257)
: : : : : : : +- Generate (256)
: : : : : : : +- Project (255)
: : : : : : : +- Generate (254)
: : : : : : : +- Project (253)
: : : : : : : +- Project (252)
: : : : : : : +- Filter (251)
: : : : : : : +- Repartition (250)
: : : : : : : +- LogicalRelation (249)
: : : : : : +- Deduplicate (287)
: : : : : : +- Project (286)
: : : : : : +- Project (285)
: : : : : : +- Project (284)
: : : : : : +- Project (283)
: : : : : : +- Project (282)
: : : : : : +- Generate (281)
: : : : : : +- Project (280)
: : : : : : +- Generate (279)
: : : : : : +- Project (278)
: : : : : : +- Join (277)
: : : : : : :- Project (274)
: : : : : : : +- Project (273)
: : : : : : : +- Join (272)
: : : : : : : :- SubqueryAlias (268)
: : : : : : : : +- Project (267)
: : : : : : : : +- Join (266)
: : : : : : : : :- Project (261)
: : : : : : : : : +- RepartitionByExpression (260)
: : : : : : : : : +- LogicalRelation (259)
: : : : : : : : +- Project (265)
: : : : : : : : +- Project (264)
: : : : : : : : +- Repartition (263)
: : : : : : : : +- LogicalRelation (262)
: : : : : : : +- Project (271)
: : : : : : : +- Repartition (270)
: : : : : : : +- LogicalRelation (269)
: : : : : : +- Repartition (276)
: : : : : : +- LogicalRelation (275)
: : : : : +- Project (325)
: : : : : +- Project (324)
: : : : : +- Project (323)
: : : : : +- Project (322)
: : : : : +- Generate (321)
: : : : : +- Project (320)
: : : : : +- Generate (319)
: : : : : +- Project (318)
: : : : : +- Join (317)
: : : : : :- Project (314)
: : : : : : +- Project (313)
: : : : : : +- Join (312)
: : : : : : :- SubqueryAlias (308)
: : : : : : : +- Project (307)
: : : : : : : +- Join (306)
: : : : : : : :- Project (301)
: : : : : : : : +- RepartitionByExpression (300)
: : : : : : : : +- LogicalRelation (299)
: : : : : : : +- Project (305)
: : : : : : : +- Project (304)
: : : : : : : +- Repartition (303)
: : : : : : : +- LogicalRelation (302)
: : : : : : +- Project (311)
: : : : : : +- Repartition (310)
: : : : : : +- LogicalRelation (309)
: : : : : +- Repartition (316)
: : : : : +- LogicalRelation (315)
: : : : +- Aggregate (411)
: : : : +- Project (410)
: : : : +- Filter (409)
: : : : +- Join (408)
: : : : :- Filter (380)
: : : : : +- Project (379)
: : : : : +- Project (378)
: : : : : +- Generate (377)
: : : : : +- Project (376)
: : : : : +- Aggregate (375)
: : : : : +- Project (374)
: : : : : +- Generate (373)
: : : : : +- Join (372)
: : : : : :- Repartition (330)
: : : : : : +- LogicalRelation (329)
: : : : : +- Project (371)
: : : : : +- Join (370)
: : : : : :- Project (340)
: : : : : : +- Project (339)
: : : : : : +- Generate (338)
: : : : : : +- Project (337)
: : : : : : +- Generate (336)
: : : : : : +- Project (335)
: : : : : : +- Project (334)
: : : : : : +- Filter (333)
: : : : : : +- Repartition (332)
: : : : : : +- LogicalRelation (331)
: : : : : +- Deduplicate (369)
: : : : : +- Project (368)
: : : : : +- Project (367)
: : : : : +- Project (366)
: : : : : +- Project (365)
: : : : : +- Project (364)
: : : : : +- Generate (363)
: : : : : +- Project (362)
: : : : : +- Generate (361)
: : : : : +- Project (360)
: : : : : +- Join (359)
: : : : : :- Project (356)
: : : : : : +- Project (355)
: : : : : : +- Join (354)
: : : : : : :- SubqueryAlias (350)
: : : : : : : +- Project (349)
: : : : : : : +- Join (348)
: : : : : : : :- Project (343)
: : : : : : : : +- RepartitionByExpression (342)
: : : : : : : : +- LogicalRelation (341)
: : : : : : : +- Project (347)
: : : : : : : +- Project (346)
: : : : : : : +- Repartition (345)
: : : : : : : +- LogicalRelation (344)
: : : : : : +- Project (353)
: : : : : : +- Repartition (352)
: : : : : : +- LogicalRelation (351)
: : : : : +- Repartition (358)
: : : : : +- LogicalRelation (357)
: : : : +- Project (407)
: : : : +- Project (406)
: : : : +- Project (405)
: : : : +- Project (404)
: : : : +- Generate (403)
: : : : +- Project (402)
: : : : +- Generate (401)
: : : : +- Project (400)
: : : : +- Join (399)
: : : : :- Project (396)
: : : : : +- Project (395)
: : : : : +- Join (394)
: : : : : :- SubqueryAlias (390)
: : : : : : +- Project (389)
: : : : : : +- Join (388)
: : : : : : :- Project (383)
: : : : : : : +- RepartitionByExpression (382)
: : : : : : : +- LogicalRelation (381)
: : : : : : +- Project (387)
: : : : : : +- Project (386)
: : : : : : +- Repartition (385)
: : : : : : +- LogicalRelation (384)
: : : : : +- Project (393)
: : : : : +- Repartition (392)
: : : : : +- LogicalRelation (391)
: : : : +- Repartition (398)
: : : : +- LogicalRelation (397)
: : : +- SerializeFromObject (633)
: : : +- MapElements (632)
: : : +- DeserializeToObject (631)
: : : +- Aggregate (630)
: : : +- Project (629)
: : : +- Project (628)
: : : +- Join (627)
: : : :- Project (625)
: : : : +- Project (624)
: : : : +- Project (623)
: : : : +- Project (622)
: : : : +- Project (621)
: : : : +- Project (620)
: : : : +- Join (619)
: : : : :- Project (449)
: : : : : +- Project (448)
: : : : : +- Project (447)
: : : : : +- Project (446)
: : : : : +- Generate (445)
: : : : : +- Project (444)
: : : : : +- Generate (443)
: : : : : +- Project (442)
: : : : : +- Join (441)
: : : : : :- Project (438)
: : : : : : +- Project (437)
: : : : : : +- Join (436)
: : : : : : :- SubqueryAlias (432)
: : : : : : : +- Project (431)
: : : : : : : +- Join (430)
: : : : : : : :- Project (425)
: : : : : : : : +- RepartitionByExpression (424)
: : : : : : : : +- LogicalRelation (423)
: : : : : : : +- Project (429)
: : : : : : : +- Project (428)
: : : : : : : +- Repartition (427)
: : : : : : : +- LogicalRelation (426)
: : : : : : +- Project (435)
: : : : : : +- Repartition (434)
: : : : : : +- LogicalRelation (433)
: : : : : +- Repartition (440)
: : : : : +- LogicalRelation (439)
: : : : +- Project (618)
: : : : +- Aggregate (617)
: : : : +- Project (616)
: : : : +- Join (615)
: : : : :- Project (531)
: : : : : +- Filter (530)
: : : : : +- Join (529)
: : : : : :- Filter (501)
: : : : : : +- Project (500)
: : : : : : +- Project (499)
: : : : : : +- Generate (498)
: : : : : : +- Project (497)
: : : : : : +- Aggregate (496)
: : : : : : +- Project (495)
: : : : : : +- Generate (494)
: : : : : : +- Join (493)
: : : : : : :- Repartition (451)
: : : : : : : +- LogicalRelation (450)
: : : : : : +- Project (492)
: : : : : : +- Join (491)
: : : : : : :- Project (461)
: : : : : : : +- Project (460)
: : : : : : : +- Generate (459)
: : : : : : : +- Project (458)
: : : : : : : +- Generate (457)
: : : : : : : +- Project (456)
: : : : : : : +- Project (455)
: : : : : : : +- Filter (454)
: : : : : : : +- Repartition (453)
: : : : : : : +- LogicalRelation (452)
: : : : : : +- Deduplicate (490)
: : : : : : +- Project (489)
: : : : : : +- Project (488)
: : : : : : +- Project (487)
: : : : : : +- Project (486)
: : : : : : +- Project (485)
: : : : : : +- Generate (484)
: : : : : : +- Project (483)
: : : : : : +- Generate (482)
: : : : : : +- Project (481)
: : : : : : +- Join (480)
: : : : : : :- Project (477)
: : : : : : : +- Project (476)
: : : : : : : +- Join (475)
: : : : : : : :- SubqueryAlias (471)
: : : : : : : : +- Project (470)
: : : : : : : : +- Join (469)
: : : : : : : : :- Project (464)
: : : : : : : : : +- RepartitionByExpression (463)
: : : : : : : : : +- LogicalRelation (462)
: : : : : : : : +- Project (468)
: : : : : : : : +- Project (467)
: : : : : : : : +- Repartition (466)
: : : : : : : : +- LogicalRelation (465)
: : : : : : : +- Project (474)
: : : : : : : +- Repartition (473)
: : : : : : : +- LogicalRelation (472)
: : : : : : +- Repartition (479)
: : : : : : +- LogicalRelation (478)
: : : : : +- Project (528)
: : : : : +- Project (527)
: : : : : +- Project (526)
: : : : : +- Project (525)
: : : : : +- Generate (524)
: : : : : +- Project (523)
: : : : : +- Generate (522)
: : : : : +- Project (521)
: : : : : +- Join (520)
: : : : : :- Project (517)
: : : : : : +- Project (516)
: : : : : : +- Join (515)
: : : : : : :- SubqueryAlias (511)
: : : : : : : +- Project (510)
: : : : : : : +- Join (509)
: : : : : : : :- Project (504)
: : : : : : : : +- RepartitionByExpression (503)
: : : : : : : : +- LogicalRelation (502)
: : : : : : : +- Project (508)
: : : : : : : +- Project (507)
: : : : : : : +- Repartition (506)
: : : : : : : +- LogicalRelation (505)
: : : : : : +- Project (514)
: : : : : : +- Repartition (513)
: : : : : : +- LogicalRelation (512)
: : : : : +- Repartition (519)
: : : : : +- LogicalRelation (518)
: : : : +- Aggregate (614)
: : : : +- Project (613)
: : : : +- Filter (612)
: : : : +- Join (611)
: : : : :- Filter (583)
: : : : : +- Project (582)
: : : : : +- Project (581)
: : : : : +- Generate (580)
: : : : : +- Project (579)
: : : : : +- Aggregate (578)
: : : : : +- Project (577)
: : : : : +- Generate (576)
: : : : : +- Join (575)
: : : : : :- Repartition (533)
: : : : : : +- LogicalRelation (532)
: : : : : +- Project (574)
: : : : : +- Join (573)
: : : : : :- Project (543)
: : : : : : +- Project (542)
: : : : : : +- Generate (541)
: : : : : : +- Project (540)
: : : : : : +- Generate (539)
: : : : : : +- Project (538)
: : : : : : +- Project (537)
: : : : : : +- Filter (536)
: : : : : : +- Repartition (535)
: : : : : : +- LogicalRelation (534)
: : : : : +- Deduplicate (572)
: : : : : +- Project (571)
: : : : : +- Project (570)
: : : : : +- Project (569)
: : : : : +- Project (568)
: : : : : +- Project (567)
: : : : : +- Generate (566)
: : : : : +- Project (565)
: : : : : +- Generate (564)
: : : : : +- Project (563)
: : : : : +- Join (562)
: : : : : :- Project (559)
: : : : : : +- Project (558)
: : : : : : +- Join (557)
: : : : : : :- SubqueryAlias (553)
: : : : : : : +- Project (552)
: : : : : : : +- Join (551)
: : : : : : : :- Project (546)
: : : : : : : : +- RepartitionByExpression (545)
: : : : : : : : +- LogicalRelation (544)
: : : : : : : +- Project (550)
: : : : : : : +- Project (549)
: : : : : : : +- Repartition (548)
: : : : : : : +- LogicalRelation (547)
: : : : : : +- Project (556)
: : : : : : +- Repartition (555)
: : : : : : +- LogicalRelation (554)
: : : : : +- Repartition (561)
: : : : : +- LogicalRelation (560)
: : : : +- Project (610)
: : : : +- Project (609)
: : : : +- Project (608)
: : : : +- Project (607)
: : : : +- Generate (606)
: : : : +- Project (605)
: : : : +- Generate (604)
: : : : +- Project (603)
: : : : +- Join (602)
: : : : :- Project (599)
: : : : : +- Project (598)
: : : : : +- Join (597)
: : : : : :- SubqueryAlias (593)
: : : : : : +- Project (592)
: : : : : : +- Join (591)
: : : : : : :- Project (586)
: : : : : : : +- RepartitionByExpression (585)
: : : : : : : +- LogicalRelation (584)
: : : : : : +- Project (590)
: : : : : : +- Project (589)
: : : : : : +- Repartition (588)
: : : : : : +- LogicalRelation (587)
: : : : : +- Project (596)
: : : : : +- Repartition (595)
: : : : : +- LogicalRelation (594)
: : : : +- Repartition (601)
: : : : +- LogicalRelation (600)
: : : +- LogicalRelation (626)
: : +- Project (678)
: : +- Project (677)
: : +- Join (676)
: : :- Project (646)
: : : +- Project (645)
: : : +- Generate (644)
: : : +- Project (643)
: : : +- Generate (642)
: : : +- Project (641)
: : : +- Project (640)
: : : +- Filter (639)
: : : +- Repartition (638)
: : : +- LogicalRelation (637)
: : +- Deduplicate (675)
: : +- Project (674)
: : +- Project (673)
: : +- Project (672)
: : +- Project (671)
: : +- Project (670)
: : +- Generate (669)
: : +- Project (668)
: : +- Generate (667)
: : +- Project (666)
: : +- Join (665)
: : :- Project (662)
: : : +- Project (661)
: : : +- Join (660)
: : : :- SubqueryAlias (656)
: : : : +- Project (655)
: : : : +- Join (654)
: : : : :- Project (649)
: : : : : +- RepartitionByExpression (648)
: : : : : +- LogicalRelation (647)
: : : : +- Project (653)
: : : : +- Project (652)
: : : : +- Repartition (651)
: : : : +- LogicalRelation (650)
: : : +- Project (659)
: : : +- Repartition (658)
: : : +- LogicalRelation (657)
: : +- Repartition (664)
: : +- LogicalRelation (663)
: +- Project (686)
: +- Filter (685)
: +- Project (684)
: +- Generate (683)
: +- Repartition (682)
: +- LogicalRelation (681)
+- Project (703)
+- Filter (702)
+- Project (701)
+- Aggregate (700)
+- Filter (699)
+- Repartition (698)
+- LogicalRelation (697)
(1) Execute SaveIntoDataSourceCommand
Output: []
(2) SaveIntoDataSourceCommand
Arguments: org.apache.spark.sql.kafka010.KafkaSourceProvider@698ff8e5, [kafka.ssl.keystore.type=PEM, kafka.ssl.truststore.certificates=-----BEGIN CERTIFICATE-----
MIIGDzCCA/egAwIBAgIUJRTgKUjNpiA/y4yfE+RwMDi71fEwDQYJKoZIhvcNAQEL
BQAwgY4xCzAJBgNVBAYTAkRFMRswGQYDVQQIDBJCYWRlbi1XdWVydHRlbWJlcmcx
ETAPBgNVBAcMCFdhbGxkb3JmMQ8wDQYDVQQKDAZTQVAgU0UxHzAdBgNVBAsMFlNB
UCBDUCBEYXRhIE1hbmFnZW1lbnQxHTAbBgNVBAMMFFNBUCBTRSBLYWZrYSBSb290
IENBMB4XDTI0MDIwODEzMTY1NloXDTI3MDUyMzEzMTY1NlowgY4xCzAJBgNVBAYT
AkRFMRswGQYDVQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxETAPBgNVBAcMCFdhbGxk
b3JmMQ8wDQYDVQQKDAZTQVAgU0UxHzAdBgNVBAsMFlNBUCBDUCBEYXRhIE1hbmFn
ZW1lbnQxHTAbBgNVBAMMFFNBUCBTRSBLYWZrYSBSb290IENBMIICIjANBgkqhkiG
9w0BAQEFAAOCAg8AMIICCgKCAgEAoLH563sTndme/L5sUH/LggOO5sgRk6D6eYJi
YgPZFX/o8a0dctgMTBK574kPAZeniwvOIUUeGhKM/Ho4ou/B3XDD/8WtoOIZt4lj
QGyeSlZVFtCI3Ip/ENj5gIuFhO6N209mpw9wIgjhCdCTU+g6uaAe440aqCMhVO5I
54bHp4hSHwkLdNZnsRjSopufEKxWbJm52w7lKHwBwNc0cAckiagne6FbBTliF4K/
bgmfRRwP9fzjcmgno+GGgKastNkJVh6Ku/2NCpOKSzQiGNAQAvqbZbpQIkCt4/PK
Nj4c5pjbRSajwt8JWNHRJ9muJz2Db7ZceQF7H/vcAwlu/IK/ARHygfA72IY164du
QN1qJyi1DkPs1qm5cuA8WbfL8KSqIFeiKoInHL524zeK2Yt5b89sS00ydtLSYbri
1kd31McUCHcj66DDX5xBbNg7bgRx09DNpfwKlUnwC7tphz1DLJprJ9OvhjEZi0w7
TNrL21yETIKGG0qSgebIhLPWTG650i2hEM2dF1t9RfVB4qdhaxS194rkwQPZ2lQ8
74hWnuqiZ3L4XhMp1AO86UoFEWyeCbIFsZ4YHnCNfBOO4t8LSPpUiV9bTIwqG549
upI9tWMZMVV59GiuA4M9oit7vYa1eNxpUhKWpqAVCA66tETln04umAKsywt06pUn
0udI1OsCAwEAAaNjMGEwHQYDVR0OBBYEFGRMbSqCPP1qeNX3hEYn4YAClp/cMB8G
A1UdIwQYMBaAFGRMbSqCPP1qeNX3hEYn4YAClp/cMA8GA1UdEwEB/wQFMAMBAf8w
DgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBfn+8f1fmSSpUCe1ks
OB6A4KubhEDsQ3XUZ7myBU+nMhLAoPflra3+jcUcq3fqR/ybK2rfEK+Vngf8NBou
YP+1p/QaWJPgzzEEGEEAQx5U57HbnPw7DoDJaUkIoqT3gmLkWTw9R1t+AK+neHnL
tfUygvBkLevcXG4klLjFW1B5/8T9hIg7wK5httXgr+P6sic458tB2oImQWkUIaCh
3NkVAWtLjz81LiaM0fgiI0/kiufq0FZWqhazTTz8qY/qocdHbhEUmA4wSjL1XB/K
UrUC0yB7uN5vpCpunWC3EhkzCLgemIm+DPyREg7euGvg6URuP1VIsoaLstxX6caB
DROwWXY3P7kVZtzHXK6g6lrJAYxtP9tf6dyZhFHf0/XL7kwHVabU+s9MgvDvIaxA
V588fCGJbB9A+QrWxF2QKDzUrygHHd8y+EE6Oj6rbnNEgkxxuP+qDiza/46MVPVh
KzF6gepXlv9fgm2+v3Mu/HRKVAoHPOKefC3KeNv8wZkPn76dC4CEZHU+zB+YgvQ3
n1sgzPdcFfV+0wLOhLJkzbTWJ9znspJMZWYn6CR1VWbiWgDMfM9R18onHGxcAxn4
qfoGuXQDP5cnSOsIUVG75z6dfixzzn41hAaW0bQXP8nbMve5LcZhvmDQtxqNiFZu
/jpDfYNIFFeK2b96ea3PMzQYLg==
-----END CERTIFICATE-----, kafka.bootstrap.servers=132.220.198.208:50094,132.220.198.208:50194,132.220.198.208:50294, kafka.ssl.keystore.key=-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDZh6wkSCIlrWOg
Y/75q3QvxBmWBWMsUuQ/NTF5bbZBvmYZj2BhtYr6YPhWxcSGbj4wDugL7NBWlpjk
ESSuCKM67jlrDOzgu1dl2UCHaN4mXgo6CULIPemYX/6fEayZh7sCW3K0ETpuHtD1
1GVxsHh8xhqTcJGgb3sefec+KZ2CQJMyJOiq0q6kNhOEEUxWY5T7q/W6PFzWXuSd
oCKg+J0dIotz3ay61TPryYN8tzxbbgXXeutJD81UqCyGILoBzAzILHJsUE0P/h/K
YzMIY0j3E5jznnp/oT5ZKZXJC9cmEIX6XHxaRv92UJQ0x6GxSNsTZtJj7Lb/vn/8
wGfPJWCPAgMBAAECggEAMsxwoj5oHwVZPSTs79Aev2LbmMGkUb7/x1T8Oz+oLr0w
aaqmVtsG3AaWJ+liRgRrqFxqyxIf6wCbLrNkLfIdcE8egIXRsX9+Xu33mEegjTQr
zjbIbiurJ+bO9sWxWV8tiFTjufJGA15V7PqPQBf2Yyj+Hs1MbLtr9IhxXn5oZniQ
zym7ijt/BbUCLzeq7kX3oOGmBfd4z3GNbekS7/md4jkHfFFeBCDjN2mgVb0rYxvH
sWb+w6lOmvSQ0AaVq6BDWUoUWOFBfTr+RDUyZ67Brr+dZE6xIFag+BH4IQFjSZFT
1E/xDoqOa5aRvbyvTeVnsVm0GR5AgIpxOLDLDdB1FQKBgQDtddvXU4uWx8jUk83W
Btdok3zA32Tztv2SlIb8u8b17jVt7xNbOL6W9wfg5Gxdx+P8BBm8xuWL6i3ky2FF
5Et4SxUIH72+lh8mYM2ieZSGnJrcznwaGf5+GFU/qSLN2UpKhe17M9vUVkKXJKgg
XQqk0VKUUZ9GlmtM6EhWBvcMcwKBgQDqg3Z2MpYQ5Aug1qgj30bkNPpkaHhN1W6S
CLjJJIWZtDWS2oLFXlgYDd/wxXJ8SH+lU4GQBDm5QL2cVWqxrQN6eiPswSZ8IpBs
f/uBkobX32wLiqQuFNTI9NSzeqNJqqL3AVJNj03WjxS7fvdrAWG9JCfwgslTj4Wz
4F9IvtSQdQKBgG+ZBEieKuwh2HCPRh1f+bxcFDVQx9ECHwnUY9xDI65Q1StlQGOO
t4ObdUhsEcHBP5QhGTdvAlJPLGJqcry2HgHax3eZ80KuqtUOiZXiLbtVvjInmItr
y/7W0Lmqc4Dqrc94QbO1G4sfPwxpXdpX37i152ltMr2p06PBRr2naFOhAoGAVLtB
Dv3CCMJMjUVhpOxkUcnuel7gsMaf17W9Bjfi6aEaBkBbJXKsA6znr7e3YL5VGGfu
lRlhvdRtbdHS5fVsH1GIL1+uRwW6BunK9or5m3/HKvhhz6CJLT6Ap4R1AQXdMb/R
e+J+LjquM/xw6sGqDcvFfnnSwhVGKrKz2rXQWY0CgYBtcLIXQMjU22Wi1Qa6ie+/
abDmT9liC4uJXwPRvh5mHUgDyvMiaxscr/SmQfNQr7vyXJVjezEiSkRNaFsa6VtU
v2D99HWZ1H8gdJ6Bf+bFkxdnd7ZUf/RkObFG32sh3XUGhpirqTQOXi/I9X1sdl9a
HG1hbQINTMIJjtIDbm5j0g==
-----END PRIVATE KEY-----, topic=InsightsTopic, kafka.ssl.truststore.type=PEM, kafka.ssl.keystore.certificate.chain=-----BEGIN CERTIFICATE-----
MIIG+jCCBOKgAwIBAgIRAMueG7onFxFz1xcCi5wVLkIwDQYJKoZIhvcNAQELBQAw
eTELMAkGA1UEBhMCREUxDTALBgNVBAcMBEVVMTAxDzANBgNVBAoMBlNBUCBTRTEj
MCEGA1UECwwaU0FQIENsb3VkIFBsYXRmb3JtIENsaWVudHMxJTAjBgNVBAMMHFNB
UCBDbG91ZCBQbGF0Zm9ybSBDbGllbnQgQ0EwHhcNMjYwNTE5MDcwNzQ4WhcNMjcw
NTE5MDgwNzQ4WjCCAfExCzAJBgNVBAYTAkRFMQ8wDQYDVQQKDAZTQVAgU0UxIzAh
BgNVBAsMGlNBUCBDbG91ZCBQbGF0Zm9ybSBDbGllbnRzMRowGAYDVQQLDBFjZi1l
dTIwLXNhcC1rYWZrYTGCAWMwggFfBgNVBAcMggFWRnNPdzFqWm55V3dkVjVGRkxM
bDVEaXJCaTlGQTVLVTdmTHgxYklvSkVZVUZPaTE1OHRMRzk5RTNURU96Y1FzM2tu
aVlPdGdQNE1iaVVMWUhoak8yRVZQZ2hEQ09OOVRKSW5iRWRZeU53LUdBMGJnME1R
SFgxb2tSMnJwMlA1M05nYUp1Q09uaHkxc0wzYVFsS1ZBMmZvR21Dakxvc19vZnB4
cHRHOGxZZXdybzd4eTJIejBYT2E4WGZYdTJNMFBqOHoxRUUzUllldWJCSTFxYUdW
ZExxUGlYR0R6ZHE4RGktRkFyNy1wV0JGcDNhR0FPU2lxUzFjLXUzODFsZzg2NC1l
UlJrclNQVnRjTTh0MzVWSkI3YzNDb0VLb0Rzc3ozSHRraVBwNm5RNmdlcVV2VXZi
OHRoWGVIZWJJcXdkcjZITWFUVnVwMnlYbjV6ODZGUW1tOHNBMSkwJwYDVQQDDCBz
YnNzX2l2Z2V6N2ZodnRxYXk0b2tnMnRsYjJhdmgyeTCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBANmHrCRIIiWtY6Bj/vmrdC/EGZYFYyxS5D81MXlttkG+
ZhmPYGG1ivpg+FbFxIZuPjAO6Avs0FaWmOQRJK4IozruOWsM7OC7V2XZQIdo3iZe
CjoJQsg96Zhf/p8RrJmHuwJbcrQROm4e0PXUZXGweHzGGpNwkaBvex595z4pnYJA
kzIk6KrSrqQ2E4QRTFZjlPur9bo8XNZe5J2gIqD4nR0ii3PdrLrVM+vJg3y3PFtu
Bdd660kPzVSoLIYgugHMDMgscmxQTQ/+H8pjMwhjSPcTmPOeen+hPlkplckL1yYQ
hfpcfFpG/3ZQlDTHobFI2xNm0mPstv++f/zAZ88lYI8CAwEAAaOCAQEwgf4wCQYD
VR0TBAIwADAfBgNVHSMEGDAWgBTtx8AzXhKk93kym3vuCviohXiMLzAdBgNVHQ4E
FgQUgdZcpxA5k3deyQbE+UCnuO2HgWUwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQM
MAoGCCsGAQUFBwMCMIGLBgNVHR8EgYMwgYAwfqB8oHqGeGh0dHA6Ly9zYXAtY2xv
dWQtcGxhdGZvcm0tY2xpZW50LWNhLWV1MTAtY3Jscy5zMy5ldS1jZW50cmFsLTEu
YW1hem9uYXdzLmNvbS9jcmwvMmExYjQ5YWMtZmMwMi00YTQ4LTk5M2EtOWE0ZDBk
ZmVjMzNlLmNybDANBgkqhkiG9w0BAQsFAAOCAgEALo/FgW8ViN4bjBBj9oHJsJ2Q
plCI5YBBFbHoHUQVZUG7sExYr+ZYmEd2OBmEX6G383Tm6alMSfgvuDaEvFk46brt
WQRYIIKl9qfNKCdeltsbSgkTrVByGeUJg3o+PCVTtkoYr5la83kvgZzwTpdI5xRU
OfNnmmHkH6qrBkg9ndksHcDcUVSiYX1q3Hnad/4sWKukcncfnUF9eMTNwDMG1f48
56rC36/JfHaWg3C3Wp9YCOF1du/AzT5/4OvtzM8P41odqnMJphs78bSn/xK86yca
/4clhGChyCRHiHIBXhHx7lvpmRBCDlCU8bSvtdywMlCobobAzGz6hFGHqWt10Pm2
kWXfUPVqfiS4gBPDQxhgfp5nni35UXYUBZH0pwBz6L6ReVtKa2TtPksYlbY0hK+q
0JmZBr4hWmTx02cbZ5ktI8AWfDQCzGExqb2fA789B5+pszaeskxk/EQXth915ZYD
NBkgcSYfhBXws0qwUNcrNztQSidM+p9pBiP/QLkVZ9YlsH34VKi59imbD/4CT/wT
1kcnfvWOwKhrc6ashj1HzupHjFJlKbIJCKDeEiUK/tEd7rLmPyYKaOeP6yjVLkvF
1chyqu8Qf2rQsDkUUlnPhmDlpCX49c+qAHdXy+nMsfpoVoOVldhun7rdUDBSsPiv
4oHoOCJwX+Gen9FfsT0=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGYDCCBEigAwIBAgITcAAAAA0Y1cDKQ147YwAAAAAADTANBgkqhkiG9w0BAQsF
ADBNMQswCQYDVQQGEwJERTERMA8GA1UEBwwIV2FsbGRvcmYxDzANBgNVBAoMBlNB
UCBTRTEaMBgGA1UEAwwRU0FQIENsb3VkIFJvb3QgQ0EwHhcNMjMxMTIxMTAzNjE1
WhcNMzMxMTIxMTA0NjE1WjB5MQswCQYDVQQGEwJERTENMAsGA1UEBwwERVUxMDEP
MA0GA1UECgwGU0FQIFNFMSMwIQYDVQQLDBpTQVAgQ2xvdWQgUGxhdGZvcm0gQ2xp
ZW50czElMCMGA1UEAwwcU0FQIENsb3VkIFBsYXRmb3JtIENsaWVudCBDQTCCAiIw
DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAI8hpWjKK+OzKOPvXmlzD0EaWT9I
sINsnw7ek+BuxCtWnWWX1ILIqHjX+47dhD9IY/tUPiLFEI7WAFGoyzSmjY1qclx4
ZFkqvYhOoZe3r6LWL78TX/o1mRYLgg2SCDkDDsmnrT0l/X2fnW+2hb70s/d7q84M
mbrIC1gI0jtAJvFMZm0+82d+a0b3XYrUmmE6FTN0avFPcW4H83lFQJLJKwQ0HI72
Bno6ptle2k7QLZISkw0Mr76qJuHSi6DZxmGb0Ecp5g6X4Q++YdgmMu5gtQikkfIs
/qFnjPdRMKXblA0szRH2HlgNgmflpB3361oWz8jAwkujQz2VLeL+OGoVscAmLcUn
NYieXdUDnaAuUqgKYnc4QyGygVqMMx3g+1VTnXN+xwZ4oinaDucIWkolRZfuOIXo
g8gh50jAO2qy3Z+l783PCFA2RdncMThEuEctvSQXqQex2w/JpXKk+jkhnNOPYdWS
tbwOjofN/CRmlrOKNw8GRCT0YJCrQ/ZP6/C+yDlgAl617wbzjPNhfTi8T+7k1794
QPTKTRcPyJ6tBv6JOb0A7C6UfAA/pEVDhOX9NnB93mFYZxwEw6n2JLhRG/rNvEdf
7NKAs6M1EYhVNFD8iDWukpR2/jGJTgsxJvRk5nEPavgkIS2Mffv2zFnIpaPqv9ox
M01BXHJs6vK6rePfAgMBAAGjggELMIIBBzASBgNVHRMBAf8ECDAGAQH/AgEAMB0G
A1UdDgQWBBTtx8AzXhKk93kym3vuCviohXiMLzAfBgNVHSMEGDAWgBQcvGYrDsqN
S5+Nk3GpD8pnRmkTIjBKBgNVHR8EQzBBMD+gPaA7hjlodHRwOi8vY2RwLnBraS5j
by5zYXAuY29tL2NkcC9TQVAlMjBDbG91ZCUyMFJvb3QlMjBDQS5jcmwwVQYIKwYB
BQUHAQEESTBHMEUGCCsGAQUFBzAChjlodHRwOi8vYWlhLnBraS5jby5zYXAuY29t
L2FpYS9TQVAlMjBDbG91ZCUyMFJvb3QlMjBDQS5jcnQwDgYDVR0PAQH/BAQDAgEG
MA0GCSqGSIb3DQEBCwUAA4ICAQBWP3oZa36jJ+4JakH1kEkCcoKffY9UYFwuBCAL
3jdBruhHH8aLGseI2Zhl5r7os1rkD0Sl55xrM4i1gyeRAyTM/Pe28cBIxFs2vbBC
+4mpIfKPSuTw61P3FOeaqHUgvVJsIiHgfKbMIDzrvwAUMTr453a77DrKZ/oAXW3K
xelNxhfjiCDsWIs++6NbSIwZsQjxPZp39HyN0XBh6BoxN5dmwT9AnlzkqyBiIPwi
TrNxcdCB4MDrwLRZlW21nRb/nTDCfavITqJNAjz1vzNXpSfda74MINstrOwsAcsX
gkYJpxPK7q9VV3vx2ZfZwRIBIxXlisUD/wIkz7zteStT2yfkV8uoh2pweedBgdX1
yah+dWl5LXvSRtmxgGL2CsxZcbQHbnh10OBS9qXBbeN3UswwoXKigYy9v0JkKmKg
knhhNG5+SYVUUzWBCy9DyM2TDMH2VtiZcu2dFqRuzRTi68GXaN9HCIr6gxjqbaPf
yjtQppmfobrrHpBpuI7jM8RPPg2N3Kmj/Wzmf4uPNJT00WUiCG3FdWO4cCX/UxJs
dxAXH+QhykGB1t28JbYpzO1NQohd2shlShkpgqn4ldS6kPC5VWSGUod3139KCrFO
HYFN+t5tRFJ5amXg7nzYf2tGFzsWfa8qMLtuKZWBo+2hvDaxreSSlfTQ6M8QHvS7
TG767A==
-----END CERTIFICATE-----, kafka.security.protocol=SSL], ErrorIfExists
(3) LogicalRelation
Arguments: parquet, [product#69019, plant#69020, orderDateTime#69021, planningStartDateTime#69022], false
(4) RepartitionByExpression
Arguments: [product#69019, plant#69020], 25
(5) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021]
(6) LogicalRelation
Arguments: parquet, [systemId#69025, internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040], false
(7) Repartition
Arguments: 25, true
(8) Project
Arguments: [systemId#69025, internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040, struct(systemId, systemId#69025, internalUUID, internalUUID#69027, plant, plant#69029, product, product#69031, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69034, productionAspect, productionAspect#69036, salesPlant, salesPlant#69038, listing, listing#69040) AS productPlant#69044]
(9) Project
Arguments: [productPlant#69044]
(10) Join
Arguments: LeftOuter, ((product#69019 <=> productPlant#69044.product.internalRefUUID) AND (plant#69020 <=> productPlant#69044.plant.internalRefUUID))
(11) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044]
(12) SubqueryAlias
Arguments: wl
(13) LogicalRelation
Arguments: parquet, [systemId#69061, internalUUID#69062, id#69063, displayId#69064, name#69065, category#69066, companyCode#69067, address#69068, mainDistributionChain#69069, mainPurchasingOrganization#69070, validPurchasingOrganizations#69071, productGroup#69072], false
(14) Repartition
Arguments: 25, true
(15) Project
Arguments: [internalUUID#69062, address#69068.timeZone.code AS timezonecode#69074]
(16) Join
Arguments: LeftOuter, (plant#69020 <=> internalUUID#69062)
(17) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, internalUUID#69062, CASE WHEN isnotnull(timezonecode#69074) THEN timezonecode#69074 ELSE UTC END AS timezonecode#69079]
(18) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079]
(19) LogicalRelation
Arguments: parquet, [systemId#69093, internalUUID#69094, id#69095, displayId#69096, name#69097, baseUnitOfMeasure#69098, unitOfMeasures#69099, unitOfMeasureConversions#69100, productionAspect#69101, salesAspect#69102, procurementAspect#69103, productGroup#69104], false
(20) Repartition
Arguments: 25, true
(21) Join
Arguments: LeftOuter, (product#69019 = internalUUID#69094)
(22) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, systemId#69093, internalUUID#69094, id#69095, displayId#69096, name#69097, baseUnitOfMeasure#69098, unitOfMeasures#69099, unitOfMeasureConversions#69100, productionAspect#69101, salesAspect#69102, procurementAspect#69103, productGroup#69104, filter(unitOfMeasureConversions#69100, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#69044.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#69044.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69098.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69098.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69107]
(23) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69107.quantityNumerator), true, [quantityNumerator#69124]
(24) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, systemId#69093, internalUUID#69094, id#69095, displayId#69096, name#69097, baseUnitOfMeasure#69098, unitOfMeasures#69099, unitOfMeasureConversions#69100, productionAspect#69101, salesAspect#69102, procurementAspect#69103, productGroup#69104, filteredUnitOfMeasureConversions#69107, quantityNumerator#69124]
(25) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69107.quantityDenominator), true, [quantityDenominator#69129]
(26) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, systemId#69093, internalUUID#69094, id#69095, displayId#69096, name#69097, baseUnitOfMeasure#69098, unitOfMeasures#69099, unitOfMeasureConversions#69100, productionAspect#69101, salesAspect#69102, procurementAspect#69103, productGroup#69104, filteredUnitOfMeasureConversions#69107, quantityNumerator#69124, quantityDenominator#69129]
(27) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, systemId#69093, internalUUID#69094, id#69095, displayId#69096, name#69097, baseUnitOfMeasure#69098, unitOfMeasures#69099, unitOfMeasureConversions#69100, productionAspect#69101, salesAspect#69102, procurementAspect#69103, productGroup#69104, filteredUnitOfMeasureConversions#69107, quantityNumerator#69124, quantityDenominator#69129, (cast(quantityNumerator#69124 as double) / cast(quantityDenominator#69129 as double)) AS outboundUnit#69131]
(28) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, systemId#69093, internalUUID#69094, id#69095, displayId#69096, name#69097, baseUnitOfMeasure#69098, unitOfMeasures#69099, unitOfMeasureConversions#69100, productionAspect#69101, salesAspect#69102, procurementAspect#69103, productGroup#69104, filteredUnitOfMeasureConversions#69107, quantityNumerator#69124, quantityDenominator#69129, CASE WHEN (isnull(outboundUnit#69131) OR (outboundUnit#69131 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#69131 END AS outboundUnit#69134]
(29) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134]
(30) LogicalRelation
Arguments: parquet, [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262], false
(31) Repartition
Arguments: 25, true
(32) LogicalRelation
Arguments: parquet, [marketUnit#69135, description#69136, articleHierarchy#69137, defaultCurrency#69138, responsibilities#69139, replenishmentTypes#69140, distributionCenters#69141, assignedArticleHierarchyNodes#69142, minOrderQtySetting#69143, listingCheck#69144, odsSelection#69145, demandProfiles#69146, constraintProfiles#69148, optimizationProfiles#69149, orderGroupSplitProfiles#69150, supplierMinimumProfiles#69152, multipleRestrictionProfiles#69154, preferredUomSource#69156, handlingOfUnfulfilledDemands#69158, negligibleQuantitiesThreshold#69160, eventtype#69162, minOrderQtySettingInternal#69164], false
(33) Repartition
Arguments: 25, true
(34) Filter
Arguments: (marketUnit#69135 <=> Daily_grocery)
(35) Project
Arguments: [marketUnit#69135, description#69136, articleHierarchy#69137, defaultCurrency#69138, responsibilities#69139, replenishmentTypes#69140, distributionCenters#69141, assignedArticleHierarchyNodes#69142, minOrderQtySetting#69143, listingCheck#69144, odsSelection#69145, demandProfiles#69146, constraintProfiles#69148, optimizationProfiles#69149, orderGroupSplitProfiles#69150, supplierMinimumProfiles#69152, multipleRestrictionProfiles#69154, preferredUomSource#69156, handlingOfUnfulfilledDemands#69158, negligibleQuantitiesThreshold#69160, eventtype#69162, minOrderQtySettingInternal#69164]
(36) Project
Arguments: [distributionCenters#69141]
(37) Generate
Arguments: explode(distributionCenters#69141), false, [distributionCenters#69183]
(38) Project
Arguments: [distributionCenters#69183]
(39) Generate
Arguments: explode(distributionCenters#69183.storageLocations), false, [storageLocations#69197]
(40) Project
Arguments: [distributionCenters#69183.id AS plantId#69185, distributionCenters#69183.internalRefUUID AS plantUuid#69186, storageLocations#69197]
(41) Project
Arguments: [plantId#69185, plantUuid#69186, storageLocations#69197.id AS storageLocId#69199, storageLocations#69197.internalRefUUID AS storageLocUuid#69200]
(42) LogicalRelation
Arguments: parquet, [product#69771, plant#69772, orderDateTime#69773, planningStartDateTime#69774], false
(43) RepartitionByExpression
Arguments: [product#69771, plant#69772], 25
(44) Project
Arguments: [product#69771, plant#69772, orderDateTime#69773]
(45) LogicalRelation
Arguments: parquet, [systemId#69775, internalUUID#69776, plant#69777, product#69778, blockedForReplenishmentStartingFrom#69779, productionAspect#69780, salesPlant#69781, listing#69782], false
(46) Repartition
Arguments: 25, true
(47) Project
Arguments: [systemId#69775, internalUUID#69776, plant#69777, product#69778, blockedForReplenishmentStartingFrom#69779, productionAspect#69780, salesPlant#69781, listing#69782, struct(systemId, systemId#69775, internalUUID, internalUUID#69776, plant, plant#69777, product, product#69778, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69779, productionAspect, productionAspect#69780, salesPlant, salesPlant#69781, listing, listing#69782) AS productPlant#69795]
(48) Project
Arguments: [productPlant#69795]
(49) Join
Arguments: LeftOuter, ((product#69771 <=> productPlant#69795.product.internalRefUUID) AND (plant#69772 <=> productPlant#69795.plant.internalRefUUID))
(50) Project
Arguments: [product#69771, plant#69772, orderDateTime#69773, productPlant#69795]
(51) SubqueryAlias
Arguments: wl
(52) LogicalRelation
Arguments: parquet, [systemId#69797, internalUUID#69798, id#69799, displayId#69800, name#69801, category#69802, companyCode#69803, address#69804, mainDistributionChain#69805, mainPurchasingOrganization#69806, validPurchasingOrganizations#69807, productGroup#69808], false
(53) Repartition
Arguments: 25, true
(54) Project
Arguments: [internalUUID#69798, address#69804.timeZone.code AS timezonecode#69821]
(55) Join
Arguments: LeftOuter, (plant#69772 <=> internalUUID#69798)
(56) Project
Arguments: [product#69771, plant#69772, orderDateTime#69773, productPlant#69795, internalUUID#69798, CASE WHEN isnotnull(timezonecode#69821) THEN timezonecode#69821 ELSE UTC END AS timezonecode#69823]
(57) Project
Arguments: [product#69771, plant#69772, orderDateTime#69773, productPlant#69795, timezonecode#69823]
(58) LogicalRelation
Arguments: parquet, [systemId#69825, internalUUID#69826, id#69827, displayId#69828, name#69829, baseUnitOfMeasure#69830, unitOfMeasures#69831, unitOfMeasureConversions#69832, productionAspect#69833, salesAspect#69834, procurementAspect#69835, productGroup#69836], false
(59) Repartition
Arguments: 25, true
(60) Join
Arguments: LeftOuter, (product#69771 = internalUUID#69826)
(61) Project
Arguments: [product#69771, plant#69772, orderDateTime#69773, productPlant#69795, timezonecode#69823, systemId#69825, internalUUID#69826, id#69827, displayId#69828, name#69829, baseUnitOfMeasure#69830, unitOfMeasures#69831, unitOfMeasureConversions#69832, productionAspect#69833, salesAspect#69834, procurementAspect#69835, productGroup#69836, filter(unitOfMeasureConversions#69832, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#69795.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#69795.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69830.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69830.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69849]
(62) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69849.quantityNumerator), true, [quantityNumerator#69851]
(63) Project
Arguments: [product#69771, plant#69772, orderDateTime#69773, productPlant#69795, timezonecode#69823, systemId#69825, internalUUID#69826, id#69827, displayId#69828, name#69829, baseUnitOfMeasure#69830, unitOfMeasures#69831, unitOfMeasureConversions#69832, productionAspect#69833, salesAspect#69834, procurementAspect#69835, productGroup#69836, filteredUnitOfMeasureConversions#69849, quantityNumerator#69851]
(64) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69849.quantityDenominator), true, [quantityDenominator#69854]
(65) Project
Arguments: [product#69771, plant#69772, orderDateTime#69773, productPlant#69795, timezonecode#69823, systemId#69825, internalUUID#69826, id#69827, displayId#69828, name#69829, baseUnitOfMeasure#69830, unitOfMeasures#69831, unitOfMeasureConversions#69832, productionAspect#69833, salesAspect#69834, procurementAspect#69835, productGroup#69836, filteredUnitOfMeasureConversions#69849, quantityNumerator#69851, quantityDenominator#69854]
(66) Project
Arguments: [product#69771, plant#69772, orderDateTime#69773, productPlant#69795, timezonecode#69823, systemId#69825, internalUUID#69826, id#69827, displayId#69828, name#69829, baseUnitOfMeasure#69830, unitOfMeasures#69831, unitOfMeasureConversions#69832, productionAspect#69833, salesAspect#69834, procurementAspect#69835, productGroup#69836, filteredUnitOfMeasureConversions#69849, quantityNumerator#69851, quantityDenominator#69854, (cast(quantityNumerator#69851 as double) / cast(quantityDenominator#69854 as double)) AS outboundUnit#69856]
(67) Project
Arguments: [product#69771, plant#69772, orderDateTime#69773, productPlant#69795, timezonecode#69823, systemId#69825, internalUUID#69826, id#69827, displayId#69828, name#69829, baseUnitOfMeasure#69830, unitOfMeasures#69831, unitOfMeasureConversions#69832, productionAspect#69833, salesAspect#69834, procurementAspect#69835, productGroup#69836, filteredUnitOfMeasureConversions#69849, quantityNumerator#69851, quantityDenominator#69854, CASE WHEN (isnull(outboundUnit#69856) OR (outboundUnit#69856 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#69856 END AS outboundUnit#69858]
(68) Project
Arguments: [product#69771, plant#69772, orderDateTime#69773, productPlant#69795, timezonecode#69823, outboundUnit#69858]
(69) Project
Arguments: [plant#69772]
(70) Deduplicate
Arguments: [plant#69772]
(71) Join
Arguments: Inner, (plantUuid#69186 = plant#69772)
(72) Project
Arguments: [plantId#69185, plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
(73) Join
Arguments: Inner, (plant#69260.internalRefUUID <=> plantUuid#69186)
(74) Generate
Arguments: explode(filter(stockQuantities#69262, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#69200) AND (lambda x#69269.storageLocation.Id = storageLocId#69199)), lambda x#69269, false))), false, [stockQuantity#69272]
(75) Project
Arguments: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, plantId#69185, plantUuid#69186, storageLocId#69199, storageLocUuid#69200, stockQuantity#69272]
(76) Aggregate
Arguments: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257], [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257, first(calculationDateTime#69261, false) AS calculationDateTime#69273, collect_list(stockQuantity#69272, 0, 0) AS stockQuantities#69274]
(77) Project
Arguments: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69273, stockQuantities#69274]
(78) Generate
Arguments: explode(stockQuantities#69274), false, [stockQuantity#69289]
(79) Project
Arguments: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69273, stockQuantities#69274, stockQuantity#69289]
(80) Project
Arguments: [plant#69260.id AS plant#69290, plant#69260.internalRefUUID AS plantUuid#69291, product#69259.id AS product#69292, product#69259.internalRefUUID AS productUuid#69293, calculationDateTime#69273, stockQuantity#69289.storagelocation.id AS storageLocId#69294, stockQuantity#69289.storagelocation.internalRefUUID AS storageLocUuid#69295, stockQuantity#69289.quantity.measure AS quantity#69296, stockQuantity#69289.specialStockIndicator.code AS specialStockIndicator#69297, stockQuantity#69289.stockType.code AS stockType#69298]
(81) Filter
Arguments: ((specialStockIndicator#69297 = ) AND (stockType#69298 = 01))
(82) LogicalRelation
Arguments: parquet, [product#69323, plant#69324, orderDateTime#69325, planningStartDateTime#69326], false
(83) RepartitionByExpression
Arguments: [product#69323, plant#69324], 25
(84) Project
Arguments: [product#69323, plant#69324, orderDateTime#69325]
(85) LogicalRelation
Arguments: parquet, [systemId#69327, internalUUID#69328, plant#69329, product#69330, blockedForReplenishmentStartingFrom#69331, productionAspect#69332, salesPlant#69333, listing#69334], false
(86) Repartition
Arguments: 25, true
(87) Project
Arguments: [systemId#69327, internalUUID#69328, plant#69329, product#69330, blockedForReplenishmentStartingFrom#69331, productionAspect#69332, salesPlant#69333, listing#69334, struct(systemId, systemId#69327, internalUUID, internalUUID#69328, plant, plant#69329, product, product#69330, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69331, productionAspect, productionAspect#69332, salesPlant, salesPlant#69333, listing, listing#69334) AS productPlant#69336]
(88) Project
Arguments: [productPlant#69336]
(89) Join
Arguments: LeftOuter, ((product#69323 <=> productPlant#69336.product.internalRefUUID) AND (plant#69324 <=> productPlant#69336.plant.internalRefUUID))
(90) Project
Arguments: [product#69323, plant#69324, orderDateTime#69325, productPlant#69336]
(91) SubqueryAlias
Arguments: wl
(92) LogicalRelation
Arguments: parquet, [systemId#69337, internalUUID#69338, id#69339, displayId#69340, name#69341, category#69342, companyCode#69343, address#69344, mainDistributionChain#69345, mainPurchasingOrganization#69346, validPurchasingOrganizations#69347, productGroup#69348], false
(93) Repartition
Arguments: 25, true
(94) Project
Arguments: [internalUUID#69338, address#69344.timeZone.code AS timezonecode#69349]
(95) Join
Arguments: LeftOuter, (plant#69324 <=> internalUUID#69338)
(96) Project
Arguments: [product#69323, plant#69324, orderDateTime#69325, productPlant#69336, internalUUID#69338, CASE WHEN isnotnull(timezonecode#69349) THEN timezonecode#69349 ELSE UTC END AS timezonecode#69350]
(97) Project
Arguments: [product#69323, plant#69324, orderDateTime#69325, productPlant#69336, timezonecode#69350]
(98) LogicalRelation
Arguments: parquet, [systemId#69351, internalUUID#69352, id#69353, displayId#69354, name#69355, baseUnitOfMeasure#69356, unitOfMeasures#69357, unitOfMeasureConversions#69358, productionAspect#69359, salesAspect#69360, procurementAspect#69361, productGroup#69362], false
(99) Repartition
Arguments: 25, true
(100) Join
Arguments: LeftOuter, (product#69323 = internalUUID#69352)
(101) Project
Arguments: [product#69323, plant#69324, orderDateTime#69325, productPlant#69336, timezonecode#69350, systemId#69351, internalUUID#69352, id#69353, displayId#69354, name#69355, baseUnitOfMeasure#69356, unitOfMeasures#69357, unitOfMeasureConversions#69358, productionAspect#69359, salesAspect#69360, procurementAspect#69361, productGroup#69362, filter(unitOfMeasureConversions#69358, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#69336.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#69336.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69356.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69356.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69363]
(102) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69363.quantityNumerator), true, [quantityNumerator#69364]
(103) Project
Arguments: [product#69323, plant#69324, orderDateTime#69325, productPlant#69336, timezonecode#69350, systemId#69351, internalUUID#69352, id#69353, displayId#69354, name#69355, baseUnitOfMeasure#69356, unitOfMeasures#69357, unitOfMeasureConversions#69358, productionAspect#69359, salesAspect#69360, procurementAspect#69361, productGroup#69362, filteredUnitOfMeasureConversions#69363, quantityNumerator#69364]
(104) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69363.quantityDenominator), true, [quantityDenominator#69365]
(105) Project
Arguments: [product#69323, plant#69324, orderDateTime#69325, productPlant#69336, timezonecode#69350, systemId#69351, internalUUID#69352, id#69353, displayId#69354, name#69355, baseUnitOfMeasure#69356, unitOfMeasures#69357, unitOfMeasureConversions#69358, productionAspect#69359, salesAspect#69360, procurementAspect#69361, productGroup#69362, filteredUnitOfMeasureConversions#69363, quantityNumerator#69364, quantityDenominator#69365]
(106) Project
Arguments: [product#69323, plant#69324, orderDateTime#69325, productPlant#69336, timezonecode#69350, systemId#69351, internalUUID#69352, id#69353, displayId#69354, name#69355, baseUnitOfMeasure#69356, unitOfMeasures#69357, unitOfMeasureConversions#69358, productionAspect#69359, salesAspect#69360, procurementAspect#69361, productGroup#69362, filteredUnitOfMeasureConversions#69363, quantityNumerator#69364, quantityDenominator#69365, (cast(quantityNumerator#69364 as double) / cast(quantityDenominator#69365 as double)) AS outboundUnit#69366]
(107) Project
Arguments: [product#69323, plant#69324, orderDateTime#69325, productPlant#69336, timezonecode#69350, systemId#69351, internalUUID#69352, id#69353, displayId#69354, name#69355, baseUnitOfMeasure#69356, unitOfMeasures#69357, unitOfMeasureConversions#69358, productionAspect#69359, salesAspect#69360, procurementAspect#69361, productGroup#69362, filteredUnitOfMeasureConversions#69363, quantityNumerator#69364, quantityDenominator#69365, CASE WHEN (isnull(outboundUnit#69366) OR (outboundUnit#69366 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#69366 END AS outboundUnit#69368]
(108) Project
Arguments: [product#69323, plant#69324, orderDateTime#69325, productPlant#69336, timezonecode#69350, outboundUnit#69368]
(109) Join
Arguments: Inner, ((plantUuid#69291 = plant#69324) AND (productUuid#69293 = product#69323))
(110) Filter
Arguments: (calculationDateTime#69273 <= orderDateTime#69325)
(111) Project
Arguments: [plantUuid#69291 AS plant#69435, productUuid#69293 AS product#69436, storageLocId#69294, calculationDateTime#69273, quantity#69296]
(112) LogicalRelation
Arguments: parquet, [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462], false
(113) Repartition
Arguments: 25, true
(114) LogicalRelation
Arguments: parquet, [marketUnit#69463, description#69464, articleHierarchy#69465, defaultCurrency#69466, responsibilities#69467, replenishmentTypes#69468, distributionCenters#69469, assignedArticleHierarchyNodes#69470, minOrderQtySetting#69471, listingCheck#69472, odsSelection#69473, demandProfiles#69474, constraintProfiles#69475, optimizationProfiles#69476, orderGroupSplitProfiles#69477, supplierMinimumProfiles#69478, multipleRestrictionProfiles#69479, preferredUomSource#69480, handlingOfUnfulfilledDemands#69481, negligibleQuantitiesThreshold#69482, eventtype#69483, minOrderQtySettingInternal#69484], false
(115) Repartition
Arguments: 25, true
(116) Filter
Arguments: (marketUnit#69463 <=> Daily_grocery)
(117) Project
Arguments: [marketUnit#69463, description#69464, articleHierarchy#69465, defaultCurrency#69466, responsibilities#69467, replenishmentTypes#69468, distributionCenters#69469, assignedArticleHierarchyNodes#69470, minOrderQtySetting#69471, listingCheck#69472, odsSelection#69473, demandProfiles#69474, constraintProfiles#69475, optimizationProfiles#69476, orderGroupSplitProfiles#69477, supplierMinimumProfiles#69478, multipleRestrictionProfiles#69479, preferredUomSource#69480, handlingOfUnfulfilledDemands#69481, negligibleQuantitiesThreshold#69482, eventtype#69483, minOrderQtySettingInternal#69484]
(118) Project
Arguments: [distributionCenters#69469]
(119) Generate
Arguments: explode(distributionCenters#69469), false, [distributionCenters#69485]
(120) Project
Arguments: [distributionCenters#69485]
(121) Generate
Arguments: explode(distributionCenters#69485.storageLocations), false, [storageLocations#69486]
(122) Project
Arguments: [distributionCenters#69485.id AS plantId#69487, distributionCenters#69485.internalRefUUID AS plantUuid#69488, storageLocations#69486]
(123) Project
Arguments: [plantId#69487, plantUuid#69488, storageLocations#69486.id AS storageLocId#69489, storageLocations#69486.internalRefUUID AS storageLocUuid#69490]
(124) LogicalRelation
Arguments: parquet, [product#69491, plant#69492, orderDateTime#69493, planningStartDateTime#69494], false
(125) RepartitionByExpression
Arguments: [product#69491, plant#69492], 25
(126) Project
Arguments: [product#69491, plant#69492, orderDateTime#69493]
(127) LogicalRelation
Arguments: parquet, [systemId#69495, internalUUID#69496, plant#69497, product#69498, blockedForReplenishmentStartingFrom#69499, productionAspect#69500, salesPlant#69501, listing#69502], false
(128) Repartition
Arguments: 25, true
(129) Project
Arguments: [systemId#69495, internalUUID#69496, plant#69497, product#69498, blockedForReplenishmentStartingFrom#69499, productionAspect#69500, salesPlant#69501, listing#69502, struct(systemId, systemId#69495, internalUUID, internalUUID#69496, plant, plant#69497, product, product#69498, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69499, productionAspect, productionAspect#69500, salesPlant, salesPlant#69501, listing, listing#69502) AS productPlant#69503]
(130) Project
Arguments: [productPlant#69503]
(131) Join
Arguments: LeftOuter, ((product#69491 <=> productPlant#69503.product.internalRefUUID) AND (plant#69492 <=> productPlant#69503.plant.internalRefUUID))
(132) Project
Arguments: [product#69491, plant#69492, orderDateTime#69493, productPlant#69503]
(133) SubqueryAlias
Arguments: wl
(134) LogicalRelation
Arguments: parquet, [systemId#69504, internalUUID#69505, id#69506, displayId#69507, name#69508, category#69509, companyCode#69510, address#69511, mainDistributionChain#69512, mainPurchasingOrganization#69513, validPurchasingOrganizations#69514, productGroup#69515], false
(135) Repartition
Arguments: 25, true
(136) Project
Arguments: [internalUUID#69505, address#69511.timeZone.code AS timezonecode#69516]
(137) Join
Arguments: LeftOuter, (plant#69492 <=> internalUUID#69505)
(138) Project
Arguments: [product#69491, plant#69492, orderDateTime#69493, productPlant#69503, internalUUID#69505, CASE WHEN isnotnull(timezonecode#69516) THEN timezonecode#69516 ELSE UTC END AS timezonecode#69517]
(139) Project
Arguments: [product#69491, plant#69492, orderDateTime#69493, productPlant#69503, timezonecode#69517]
(140) LogicalRelation
Arguments: parquet, [systemId#69518, internalUUID#69519, id#69520, displayId#69521, name#69522, baseUnitOfMeasure#69523, unitOfMeasures#69524, unitOfMeasureConversions#69525, productionAspect#69526, salesAspect#69527, procurementAspect#69528, productGroup#69529], false
(141) Repartition
Arguments: 25, true
(142) Join
Arguments: LeftOuter, (product#69491 = internalUUID#69519)
(143) Project
Arguments: [product#69491, plant#69492, orderDateTime#69493, productPlant#69503, timezonecode#69517, systemId#69518, internalUUID#69519, id#69520, displayId#69521, name#69522, baseUnitOfMeasure#69523, unitOfMeasures#69524, unitOfMeasureConversions#69525, productionAspect#69526, salesAspect#69527, procurementAspect#69528, productGroup#69529, filter(unitOfMeasureConversions#69525, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#69503.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#69503.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69523.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69523.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69530]
(144) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69530.quantityNumerator), true, [quantityNumerator#69531]
(145) Project
Arguments: [product#69491, plant#69492, orderDateTime#69493, productPlant#69503, timezonecode#69517, systemId#69518, internalUUID#69519, id#69520, displayId#69521, name#69522, baseUnitOfMeasure#69523, unitOfMeasures#69524, unitOfMeasureConversions#69525, productionAspect#69526, salesAspect#69527, procurementAspect#69528, productGroup#69529, filteredUnitOfMeasureConversions#69530, quantityNumerator#69531]
(146) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69530.quantityDenominator), true, [quantityDenominator#69532]
(147) Project
Arguments: [product#69491, plant#69492, orderDateTime#69493, productPlant#69503, timezonecode#69517, systemId#69518, internalUUID#69519, id#69520, displayId#69521, name#69522, baseUnitOfMeasure#69523, unitOfMeasures#69524, unitOfMeasureConversions#69525, productionAspect#69526, salesAspect#69527, procurementAspect#69528, productGroup#69529, filteredUnitOfMeasureConversions#69530, quantityNumerator#69531, quantityDenominator#69532]
(148) Project
Arguments: [product#69491, plant#69492, orderDateTime#69493, productPlant#69503, timezonecode#69517, systemId#69518, internalUUID#69519, id#69520, displayId#69521, name#69522, baseUnitOfMeasure#69523, unitOfMeasures#69524, unitOfMeasureConversions#69525, productionAspect#69526, salesAspect#69527, procurementAspect#69528, productGroup#69529, filteredUnitOfMeasureConversions#69530, quantityNumerator#69531, quantityDenominator#69532, (cast(quantityNumerator#69531 as double) / cast(quantityDenominator#69532 as double)) AS outboundUnit#69533]
(149) Project
Arguments: [product#69491, plant#69492, orderDateTime#69493, productPlant#69503, timezonecode#69517, systemId#69518, internalUUID#69519, id#69520, displayId#69521, name#69522, baseUnitOfMeasure#69523, unitOfMeasures#69524, unitOfMeasureConversions#69525, productionAspect#69526, salesAspect#69527, procurementAspect#69528, productGroup#69529, filteredUnitOfMeasureConversions#69530, quantityNumerator#69531, quantityDenominator#69532, CASE WHEN (isnull(outboundUnit#69533) OR (outboundUnit#69533 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#69533 END AS outboundUnit#69534]
(150) Project
Arguments: [product#69491, plant#69492, orderDateTime#69493, productPlant#69503, timezonecode#69517, outboundUnit#69534]
(151) Project
Arguments: [plant#69492]
(152) Deduplicate
Arguments: [plant#69492]
(153) Join
Arguments: Inner, (plantUuid#69488 = plant#69492)
(154) Project
Arguments: [plantId#69487, plantUuid#69488, storageLocId#69489, storageLocUuid#69490]
(155) Join
Arguments: Inner, (plant#69460.internalRefUUID <=> plantUuid#69488)
(156) Generate
Arguments: explode(filter(stockQuantities#69462, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#69490) AND (lambda x#69269.storageLocation.Id = storageLocId#69489)), lambda x#69269, false))), false, [stockQuantity#69535]
(157) Project
Arguments: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462, plantId#69487, plantUuid#69488, storageLocId#69489, storageLocUuid#69490, stockQuantity#69535]
(158) Aggregate
Arguments: [plantUuid#69488, internalUUID#69458, plant#69460, product#69459, systemId#69457], [plantUuid#69488, internalUUID#69458, plant#69460, product#69459, systemId#69457, first(calculationDateTime#69461, false) AS calculationDateTime#69536, collect_list(stockQuantity#69535, 0, 0) AS stockQuantities#69537]
(159) Project
Arguments: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69536, stockQuantities#69537]
(160) Generate
Arguments: explode(stockQuantities#69537), false, [stockQuantity#69538]
(161) Project
Arguments: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69536, stockQuantities#69537, stockQuantity#69538]
(162) Project
Arguments: [plant#69460.id AS plant#69539, plant#69460.internalRefUUID AS plantUuid#69540, product#69459.id AS product#69541, product#69459.internalRefUUID AS productUuid#69542, calculationDateTime#69536, stockQuantity#69538.storagelocation.id AS storageLocId#69543, stockQuantity#69538.storagelocation.internalRefUUID AS storageLocUuid#69544, stockQuantity#69538.quantity.measure AS quantity#69545, stockQuantity#69538.specialStockIndicator.code AS specialStockIndicator#69546, stockQuantity#69538.stockType.code AS stockType#69547]
(163) Filter
Arguments: ((specialStockIndicator#69546 = ) AND (stockType#69547 = 01))
(164) LogicalRelation
Arguments: parquet, [product#69548, plant#69549, orderDateTime#69550, planningStartDateTime#69551], false
(165) RepartitionByExpression
Arguments: [product#69548, plant#69549], 25
(166) Project
Arguments: [product#69548, plant#69549, orderDateTime#69550]
(167) LogicalRelation
Arguments: parquet, [systemId#69552, internalUUID#69553, plant#69554, product#69555, blockedForReplenishmentStartingFrom#69556, productionAspect#69557, salesPlant#69558, listing#69559], false
(168) Repartition
Arguments: 25, true
(169) Project
Arguments: [systemId#69552, internalUUID#69553, plant#69554, product#69555, blockedForReplenishmentStartingFrom#69556, productionAspect#69557, salesPlant#69558, listing#69559, struct(systemId, systemId#69552, internalUUID, internalUUID#69553, plant, plant#69554, product, product#69555, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69556, productionAspect, productionAspect#69557, salesPlant, salesPlant#69558, listing, listing#69559) AS productPlant#69560]
(170) Project
Arguments: [productPlant#69560]
(171) Join
Arguments: LeftOuter, ((product#69548 <=> productPlant#69560.product.internalRefUUID) AND (plant#69549 <=> productPlant#69560.plant.internalRefUUID))
(172) Project
Arguments: [product#69548, plant#69549, orderDateTime#69550, productPlant#69560]
(173) SubqueryAlias
Arguments: wl
(174) LogicalRelation
Arguments: parquet, [systemId#69561, internalUUID#69562, id#69563, displayId#69564, name#69565, category#69566, companyCode#69567, address#69568, mainDistributionChain#69569, mainPurchasingOrganization#69570, validPurchasingOrganizations#69571, productGroup#69572], false
(175) Repartition
Arguments: 25, true
(176) Project
Arguments: [internalUUID#69562, address#69568.timeZone.code AS timezonecode#69573]
(177) Join
Arguments: LeftOuter, (plant#69549 <=> internalUUID#69562)
(178) Project
Arguments: [product#69548, plant#69549, orderDateTime#69550, productPlant#69560, internalUUID#69562, CASE WHEN isnotnull(timezonecode#69573) THEN timezonecode#69573 ELSE UTC END AS timezonecode#69574]
(179) Project
Arguments: [product#69548, plant#69549, orderDateTime#69550, productPlant#69560, timezonecode#69574]
(180) LogicalRelation
Arguments: parquet, [systemId#69575, internalUUID#69576, id#69577, displayId#69578, name#69579, baseUnitOfMeasure#69580, unitOfMeasures#69581, unitOfMeasureConversions#69582, productionAspect#69583, salesAspect#69584, procurementAspect#69585, productGroup#69586], false
(181) Repartition
Arguments: 25, true
(182) Join
Arguments: LeftOuter, (product#69548 = internalUUID#69576)
(183) Project
Arguments: [product#69548, plant#69549, orderDateTime#69550, productPlant#69560, timezonecode#69574, systemId#69575, internalUUID#69576, id#69577, displayId#69578, name#69579, baseUnitOfMeasure#69580, unitOfMeasures#69581, unitOfMeasureConversions#69582, productionAspect#69583, salesAspect#69584, procurementAspect#69585, productGroup#69586, filter(unitOfMeasureConversions#69582, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#69560.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#69560.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69580.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69580.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69587]
(184) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69587.quantityNumerator), true, [quantityNumerator#69588]
(185) Project
Arguments: [product#69548, plant#69549, orderDateTime#69550, productPlant#69560, timezonecode#69574, systemId#69575, internalUUID#69576, id#69577, displayId#69578, name#69579, baseUnitOfMeasure#69580, unitOfMeasures#69581, unitOfMeasureConversions#69582, productionAspect#69583, salesAspect#69584, procurementAspect#69585, productGroup#69586, filteredUnitOfMeasureConversions#69587, quantityNumerator#69588]
(186) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69587.quantityDenominator), true, [quantityDenominator#69589]
(187) Project
Arguments: [product#69548, plant#69549, orderDateTime#69550, productPlant#69560, timezonecode#69574, systemId#69575, internalUUID#69576, id#69577, displayId#69578, name#69579, baseUnitOfMeasure#69580, unitOfMeasures#69581, unitOfMeasureConversions#69582, productionAspect#69583, salesAspect#69584, procurementAspect#69585, productGroup#69586, filteredUnitOfMeasureConversions#69587, quantityNumerator#69588, quantityDenominator#69589]
(188) Project
Arguments: [product#69548, plant#69549, orderDateTime#69550, productPlant#69560, timezonecode#69574, systemId#69575, internalUUID#69576, id#69577, displayId#69578, name#69579, baseUnitOfMeasure#69580, unitOfMeasures#69581, unitOfMeasureConversions#69582, productionAspect#69583, salesAspect#69584, procurementAspect#69585, productGroup#69586, filteredUnitOfMeasureConversions#69587, quantityNumerator#69588, quantityDenominator#69589, (cast(quantityNumerator#69588 as double) / cast(quantityDenominator#69589 as double)) AS outboundUnit#69590]
(189) Project
Arguments: [product#69548, plant#69549, orderDateTime#69550, productPlant#69560, timezonecode#69574, systemId#69575, internalUUID#69576, id#69577, displayId#69578, name#69579, baseUnitOfMeasure#69580, unitOfMeasures#69581, unitOfMeasureConversions#69582, productionAspect#69583, salesAspect#69584, procurementAspect#69585, productGroup#69586, filteredUnitOfMeasureConversions#69587, quantityNumerator#69588, quantityDenominator#69589, CASE WHEN (isnull(outboundUnit#69590) OR (outboundUnit#69590 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#69590 END AS outboundUnit#69591]
(190) Project
Arguments: [product#69548, plant#69549, orderDateTime#69550, productPlant#69560, timezonecode#69574, outboundUnit#69591]
(191) Join
Arguments: Inner, ((plantUuid#69540 = plant#69549) AND (productUuid#69542 = product#69548))
(192) Filter
Arguments: (calculationDateTime#69536 <= orderDateTime#69550)
(193) Project
Arguments: [plantUuid#69540 AS plant#69620, productUuid#69542 AS product#69621, storageLocId#69543, calculationDateTime#69536, quantity#69545]
(194) Aggregate
Arguments: [plant#69620, product#69621, storageLocId#69543], [plant#69620, product#69621, storageLocId#69543, max(calculationDateTime#69536) AS max_calc_datetime#69441]
(195) Join
Arguments: Inner, ((((plant#69435 <=> plant#69620) AND (product#69436 <=> product#69621)) AND (storageLocId#69294 <=> storageLocId#69543)) AND (calculationDateTime#69273 <=> max_calc_datetime#69441))
(196) Project
Arguments: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273, quantity#69296]
(197) Aggregate
Arguments: [product#69436, plant#69435], [product#69436, plant#69435, sum(quantity#69296) AS quantitySum#69751, min(calculationDateTime#69273) AS minCalculationDateTime#69752]
(198) Project
Arguments: [product#69436, plant#69435, quantitySum#69751, minCalculationDateTime#69752, round(quantitySum#69751, 0) AS roundedQuantitySum#69769]
(199) Join
Arguments: LeftOuter, ((plant#69020 = plant#69435) AND (product#69019 = product#69436))
(200) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, roundedQuantitySum#69769, minCalculationDateTime#69752]
(201) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, roundedQuantitySum#69769, minCalculationDateTime#69752, CASE WHEN isnotnull(minCalculationDateTime#69752) THEN minCalculationDateTime#69752 ELSE orderDateTime#69021 END AS stockDatetime#69868]
(202) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, roundedQuantitySum#69769, minCalculationDateTime#69752, stockDatetime#69868, CASE WHEN isnotnull(roundedQuantitySum#69769) THEN array(roundedQuantitySum#69769) ELSE array(0.0) END AS stockBatchQuantities#69869]
(203) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, roundedQuantitySum#69769, minCalculationDateTime#69752, stockDatetime#69868, stockBatchQuantities#69869, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#69871]
(204) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, roundedQuantitySum#69769, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871]
(205) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871]
(206) LogicalRelation
Arguments: parquet, [product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881], false
(207) Join
Arguments: LeftOuter, ((product#69019 = product#69873) AND (plant#69020 = plant#69874))
(208) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
(209) Filter
Arguments: (((size(demandTimeBuckets#69878, true) = 0) OR isnull(demandTimeBuckets#69878)) AND ((size(demandPointInTime#69881, true) = 0) OR isnull(demandPointInTime#69881)))
(210) Project
Arguments: [productPlant#69044.product.id AS product#69883, productPlant#69044.plant.id AS plant#69884]
(211) Project
Arguments: [product#69883, plant#69884, 1 AS configurationVersion#69887]
(212) Project
Arguments: [product#69883, plant#69884, configurationVersion#69887, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION AS name#69888]
(213) Project
Arguments: [product#69883, plant#69884, configurationVersion#69887, name#69888, array(struct(name, PRODUCT, value, cast(product#69883 as string)), struct(name, PLANT, value, cast(plant#69884 as string))) AS businessContext#69893]
(214) Project
Arguments: [product#69883, plant#69884, configurationVersion#69887, name#69888, businessContext#69893, cast(array() as array<struct<variableName:string,variableValue:string>>) AS messageVariables#69894]
(215) Deduplicate
Arguments: [businessContext#69893, messageVariables#69894, configurationVersion#69887, product#69883, plant#69884, name#69888]
(216) Project
Arguments: [product#69883, plant#69884, configurationVersion#69887, name#69888, businessContext#69893, messageVariables#69894, 10000002106 AS executionId#69895]
(217) Project
Arguments: [product#69883, plant#69884, configurationVersion#69887, name#69888, businessContext#69893, messageVariables#69894, executionId#69895, Daily_grocery AS marketUnit#69896]
(218) Project
Arguments: [product#69883, plant#69884, configurationVersion#69887, name#69888, businessContext#69893, messageVariables#69894, executionId#69895, marketUnit#69896, 2026-08-10T09:23:51.530Z AS createdAt#69897]
(219) Project
Arguments: [name#69888, configurationVersion#69887, executionId#69895, createdAt#69897, marketUnit#69896, businessContext#69893, messageVariables#69894]
(220) LogicalRelation
Arguments: parquet, [product#74630, plant#74631, orderDateTime#74632, planningStartDateTime#74633], false
(221) RepartitionByExpression
Arguments: [product#74630, plant#74631], 25
(222) Project
Arguments: [product#74630, plant#74631, orderDateTime#74632]
(223) LogicalRelation
Arguments: parquet, [systemId#74634, internalUUID#74635, plant#74636, product#74637, blockedForReplenishmentStartingFrom#74638, productionAspect#74639, salesPlant#74640, listing#74641], false
(224) Repartition
Arguments: 25, true
(225) Project
Arguments: [systemId#74634, internalUUID#74635, plant#74636, product#74637, blockedForReplenishmentStartingFrom#74638, productionAspect#74639, salesPlant#74640, listing#74641, struct(systemId, systemId#74634, internalUUID, internalUUID#74635, plant, plant#74636, product, product#74637, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#74638, productionAspect, productionAspect#74639, salesPlant, salesPlant#74640, listing, listing#74641) AS productPlant#74642]
(226) Project
Arguments: [productPlant#74642]
(227) Join
Arguments: LeftOuter, ((product#74630 <=> productPlant#74642.product.internalRefUUID) AND (plant#74631 <=> productPlant#74642.plant.internalRefUUID))
(228) Project
Arguments: [product#74630, plant#74631, orderDateTime#74632, productPlant#74642]
(229) SubqueryAlias
Arguments: wl
(230) LogicalRelation
Arguments: parquet, [systemId#74643, internalUUID#74644, id#74645, displayId#74646, name#74647, category#74648, companyCode#74649, address#74650, mainDistributionChain#74651, mainPurchasingOrganization#74652, validPurchasingOrganizations#74653, productGroup#74654], false
(231) Repartition
Arguments: 25, true
(232) Project
Arguments: [internalUUID#74644, address#74650.timeZone.code AS timezonecode#74655]
(233) Join
Arguments: LeftOuter, (plant#74631 <=> internalUUID#74644)
(234) Project
Arguments: [product#74630, plant#74631, orderDateTime#74632, productPlant#74642, internalUUID#74644, CASE WHEN isnotnull(timezonecode#74655) THEN timezonecode#74655 ELSE UTC END AS timezonecode#74656]
(235) Project
Arguments: [product#74630, plant#74631, orderDateTime#74632, productPlant#74642, timezonecode#74656]
(236) LogicalRelation
Arguments: parquet, [systemId#74657, internalUUID#74658, id#74659, displayId#74660, name#74661, baseUnitOfMeasure#74662, unitOfMeasures#74663, unitOfMeasureConversions#74664, productionAspect#74665, salesAspect#74666, procurementAspect#74667, productGroup#74668], false
(237) Repartition
Arguments: 25, true
(238) Join
Arguments: LeftOuter, (product#74630 = internalUUID#74658)
(239) Project
Arguments: [product#74630, plant#74631, orderDateTime#74632, productPlant#74642, timezonecode#74656, systemId#74657, internalUUID#74658, id#74659, displayId#74660, name#74661, baseUnitOfMeasure#74662, unitOfMeasures#74663, unitOfMeasureConversions#74664, productionAspect#74665, salesAspect#74666, procurementAspect#74667, productGroup#74668, filter(unitOfMeasureConversions#74664, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#74642.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#74642.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#74662.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#74662.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#74669]
(240) Generate
Arguments: explode(filteredUnitOfMeasureConversions#74669.quantityNumerator), true, [quantityNumerator#74670]
(241) Project
Arguments: [product#74630, plant#74631, orderDateTime#74632, productPlant#74642, timezonecode#74656, systemId#74657, internalUUID#74658, id#74659, displayId#74660, name#74661, baseUnitOfMeasure#74662, unitOfMeasures#74663, unitOfMeasureConversions#74664, productionAspect#74665, salesAspect#74666, procurementAspect#74667, productGroup#74668, filteredUnitOfMeasureConversions#74669, quantityNumerator#74670]
(242) Generate
Arguments: explode(filteredUnitOfMeasureConversions#74669.quantityDenominator), true, [quantityDenominator#74671]
(243) Project
Arguments: [product#74630, plant#74631, orderDateTime#74632, productPlant#74642, timezonecode#74656, systemId#74657, internalUUID#74658, id#74659, displayId#74660, name#74661, baseUnitOfMeasure#74662, unitOfMeasures#74663, unitOfMeasureConversions#74664, productionAspect#74665, salesAspect#74666, procurementAspect#74667, productGroup#74668, filteredUnitOfMeasureConversions#74669, quantityNumerator#74670, quantityDenominator#74671]
(244) Project
Arguments: [product#74630, plant#74631, orderDateTime#74632, productPlant#74642, timezonecode#74656, systemId#74657, internalUUID#74658, id#74659, displayId#74660, name#74661, baseUnitOfMeasure#74662, unitOfMeasures#74663, unitOfMeasureConversions#74664, productionAspect#74665, salesAspect#74666, procurementAspect#74667, productGroup#74668, filteredUnitOfMeasureConversions#74669, quantityNumerator#74670, quantityDenominator#74671, (cast(quantityNumerator#74670 as double) / cast(quantityDenominator#74671 as double)) AS outboundUnit#74672]
(245) Project
Arguments: [product#74630, plant#74631, orderDateTime#74632, productPlant#74642, timezonecode#74656, systemId#74657, internalUUID#74658, id#74659, displayId#74660, name#74661, baseUnitOfMeasure#74662, unitOfMeasures#74663, unitOfMeasureConversions#74664, productionAspect#74665, salesAspect#74666, procurementAspect#74667, productGroup#74668, filteredUnitOfMeasureConversions#74669, quantityNumerator#74670, quantityDenominator#74671, CASE WHEN (isnull(outboundUnit#74672) OR (outboundUnit#74672 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#74672 END AS outboundUnit#74673]
(246) Project
Arguments: [product#74630, plant#74631, orderDateTime#74632, productPlant#74642, timezonecode#74656, outboundUnit#74673]
(247) LogicalRelation
Arguments: parquet, [systemId#74674, internalUUID#74675, product#74676, plant#74677, calculationDateTime#74678, stockQuantities#74679], false
(248) Repartition
Arguments: 25, true
(249) LogicalRelation
Arguments: parquet, [marketUnit#74680, description#74681, articleHierarchy#74682, defaultCurrency#74683, responsibilities#74684, replenishmentTypes#74685, distributionCenters#74686, assignedArticleHierarchyNodes#74687, minOrderQtySetting#74688, listingCheck#74689, odsSelection#74690, demandProfiles#74691, constraintProfiles#74692, optimizationProfiles#74693, orderGroupSplitProfiles#74694, supplierMinimumProfiles#74695, multipleRestrictionProfiles#74696, preferredUomSource#74697, handlingOfUnfulfilledDemands#74698, negligibleQuantitiesThreshold#74699, eventtype#74700, minOrderQtySettingInternal#74701], false
(250) Repartition
Arguments: 25, true
(251) Filter
Arguments: (marketUnit#74680 <=> Daily_grocery)
(252) Project
Arguments: [marketUnit#74680, description#74681, articleHierarchy#74682, defaultCurrency#74683, responsibilities#74684, replenishmentTypes#74685, distributionCenters#74686, assignedArticleHierarchyNodes#74687, minOrderQtySetting#74688, listingCheck#74689, odsSelection#74690, demandProfiles#74691, constraintProfiles#74692, optimizationProfiles#74693, orderGroupSplitProfiles#74694, supplierMinimumProfiles#74695, multipleRestrictionProfiles#74696, preferredUomSource#74697, handlingOfUnfulfilledDemands#74698, negligibleQuantitiesThreshold#74699, eventtype#74700, minOrderQtySettingInternal#74701]
(253) Project
Arguments: [distributionCenters#74686]
(254) Generate
Arguments: explode(distributionCenters#74686), false, [distributionCenters#74702]
(255) Project
Arguments: [distributionCenters#74702]
(256) Generate
Arguments: explode(distributionCenters#74702.storageLocations), false, [storageLocations#74703]
(257) Project
Arguments: [distributionCenters#74702.id AS plantId#74704, distributionCenters#74702.internalRefUUID AS plantUuid#74705, storageLocations#74703]
(258) Project
Arguments: [plantId#74704, plantUuid#74705, storageLocations#74703.id AS storageLocId#74707, storageLocations#74703.internalRefUUID AS storageLocUuid#74708]
(259) LogicalRelation
Arguments: parquet, [product#74709, plant#74710, orderDateTime#74711, planningStartDateTime#74712], false
(260) RepartitionByExpression
Arguments: [product#74709, plant#74710], 25
(261) Project
Arguments: [product#74709, plant#74710, orderDateTime#74711]
(262) LogicalRelation
Arguments: parquet, [systemId#74714, internalUUID#74715, plant#74716, product#74717, blockedForReplenishmentStartingFrom#74718, productionAspect#74719, salesPlant#74720, listing#74721], false
(263) Repartition
Arguments: 25, true
(264) Project
Arguments: [systemId#74714, internalUUID#74715, plant#74716, product#74717, blockedForReplenishmentStartingFrom#74718, productionAspect#74719, salesPlant#74720, listing#74721, struct(systemId, systemId#74714, internalUUID, internalUUID#74715, plant, plant#74716, product, product#74717, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#74718, productionAspect, productionAspect#74719, salesPlant, salesPlant#74720, listing, listing#74721) AS productPlant#74722]
(265) Project
Arguments: [productPlant#74722]
(266) Join
Arguments: LeftOuter, ((product#74709 <=> productPlant#74722.product.internalRefUUID) AND (plant#74710 <=> productPlant#74722.plant.internalRefUUID))
(267) Project
Arguments: [product#74709, plant#74710, orderDateTime#74711, productPlant#74722]
(268) SubqueryAlias
Arguments: wl
(269) LogicalRelation
Arguments: parquet, [systemId#74723, internalUUID#74724, id#74725, displayId#74726, name#74727, category#74728, companyCode#74729, address#74730, mainDistributionChain#74731, mainPurchasingOrganization#74732, validPurchasingOrganizations#74733, productGroup#74734], false
(270) Repartition
Arguments: 25, true
(271) Project
Arguments: [internalUUID#74724, address#74730.timeZone.code AS timezonecode#74735]
(272) Join
Arguments: LeftOuter, (plant#74710 <=> internalUUID#74724)
(273) Project
Arguments: [product#74709, plant#74710, orderDateTime#74711, productPlant#74722, internalUUID#74724, CASE WHEN isnotnull(timezonecode#74735) THEN timezonecode#74735 ELSE UTC END AS timezonecode#74736]
(274) Project
Arguments: [product#74709, plant#74710, orderDateTime#74711, productPlant#74722, timezonecode#74736]
(275) LogicalRelation
Arguments: parquet, [systemId#74737, internalUUID#74738, id#74739, displayId#74740, name#74741, baseUnitOfMeasure#74742, unitOfMeasures#74743, unitOfMeasureConversions#74744, productionAspect#74745, salesAspect#74746, procurementAspect#74747, productGroup#74748], false
(276) Repartition
Arguments: 25, true
(277) Join
Arguments: LeftOuter, (product#74709 = internalUUID#74738)
(278) Project
Arguments: [product#74709, plant#74710, orderDateTime#74711, productPlant#74722, timezonecode#74736, systemId#74737, internalUUID#74738, id#74739, displayId#74740, name#74741, baseUnitOfMeasure#74742, unitOfMeasures#74743, unitOfMeasureConversions#74744, productionAspect#74745, salesAspect#74746, procurementAspect#74747, productGroup#74748, filter(unitOfMeasureConversions#74744, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#74722.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#74722.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#74742.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#74742.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#74749]
(279) Generate
Arguments: explode(filteredUnitOfMeasureConversions#74749.quantityNumerator), true, [quantityNumerator#74750]
(280) Project
Arguments: [product#74709, plant#74710, orderDateTime#74711, productPlant#74722, timezonecode#74736, systemId#74737, internalUUID#74738, id#74739, displayId#74740, name#74741, baseUnitOfMeasure#74742, unitOfMeasures#74743, unitOfMeasureConversions#74744, productionAspect#74745, salesAspect#74746, procurementAspect#74747, productGroup#74748, filteredUnitOfMeasureConversions#74749, quantityNumerator#74750]
(281) Generate
Arguments: explode(filteredUnitOfMeasureConversions#74749.quantityDenominator), true, [quantityDenominator#74751]
(282) Project
Arguments: [product#74709, plant#74710, orderDateTime#74711, productPlant#74722, timezonecode#74736, systemId#74737, internalUUID#74738, id#74739, displayId#74740, name#74741, baseUnitOfMeasure#74742, unitOfMeasures#74743, unitOfMeasureConversions#74744, productionAspect#74745, salesAspect#74746, procurementAspect#74747, productGroup#74748, filteredUnitOfMeasureConversions#74749, quantityNumerator#74750, quantityDenominator#74751]
(283) Project
Arguments: [product#74709, plant#74710, orderDateTime#74711, productPlant#74722, timezonecode#74736, systemId#74737, internalUUID#74738, id#74739, displayId#74740, name#74741, baseUnitOfMeasure#74742, unitOfMeasures#74743, unitOfMeasureConversions#74744, productionAspect#74745, salesAspect#74746, procurementAspect#74747, productGroup#74748, filteredUnitOfMeasureConversions#74749, quantityNumerator#74750, quantityDenominator#74751, (cast(quantityNumerator#74750 as double) / cast(quantityDenominator#74751 as double)) AS outboundUnit#74754]
(284) Project
Arguments: [product#74709, plant#74710, orderDateTime#74711, productPlant#74722, timezonecode#74736, systemId#74737, internalUUID#74738, id#74739, displayId#74740, name#74741, baseUnitOfMeasure#74742, unitOfMeasures#74743, unitOfMeasureConversions#74744, productionAspect#74745, salesAspect#74746, procurementAspect#74747, productGroup#74748, filteredUnitOfMeasureConversions#74749, quantityNumerator#74750, quantityDenominator#74751, CASE WHEN (isnull(outboundUnit#74754) OR (outboundUnit#74754 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#74754 END AS outboundUnit#74757]
(285) Project
Arguments: [product#74709, plant#74710, orderDateTime#74711, productPlant#74722, timezonecode#74736, outboundUnit#74757]
(286) Project
Arguments: [plant#74710]
(287) Deduplicate
Arguments: [plant#74710]
(288) Join
Arguments: Inner, (plantUuid#74705 = plant#74710)
(289) Project
Arguments: [plantId#74704, plantUuid#74705, storageLocId#74707, storageLocUuid#74708]
(290) Join
Arguments: Inner, (plant#74677.internalRefUUID <=> plantUuid#74705)
(291) Generate
Arguments: explode(filter(stockQuantities#74679, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#74708) AND (lambda x#69269.storageLocation.Id = storageLocId#74707)), lambda x#69269, false))), false, [stockQuantity#74761]
(292) Project
Arguments: [systemId#74674, internalUUID#74675, product#74676, plant#74677, calculationDateTime#74678, stockQuantities#74679, plantId#74704, plantUuid#74705, storageLocId#74707, storageLocUuid#74708, stockQuantity#74761]
(293) Aggregate
Arguments: [plantUuid#74705, internalUUID#74675, plant#74677, product#74676, systemId#74674], [plantUuid#74705, internalUUID#74675, plant#74677, product#74676, systemId#74674, first(calculationDateTime#74678, false) AS calculationDateTime#74763, collect_list(stockQuantity#74761, 0, 0) AS stockQuantities#74764]
(294) Project
Arguments: [systemId#74674, internalUUID#74675, product#74676, plant#74677, calculationDateTime#74763, stockQuantities#74764]
(295) Generate
Arguments: explode(stockQuantities#74764), false, [stockQuantity#74765]
(296) Project
Arguments: [systemId#74674, internalUUID#74675, product#74676, plant#74677, calculationDateTime#74763, stockQuantities#74764, stockQuantity#74765]
(297) Project
Arguments: [plant#74677.id AS plant#74766, plant#74677.internalRefUUID AS plantUuid#74767, product#74676.id AS product#74768, product#74676.internalRefUUID AS productUuid#74769, calculationDateTime#74763, stockQuantity#74765.storagelocation.id AS storageLocId#74770, stockQuantity#74765.storagelocation.internalRefUUID AS storageLocUuid#74771, stockQuantity#74765.quantity.measure AS quantity#74772, stockQuantity#74765.specialStockIndicator.code AS specialStockIndicator#74773, stockQuantity#74765.stockType.code AS stockType#74774]
(298) Filter
Arguments: ((specialStockIndicator#74773 = ) AND (stockType#74774 = 01))
(299) LogicalRelation
Arguments: parquet, [product#74775, plant#74776, orderDateTime#74777, planningStartDateTime#74778], false
(300) RepartitionByExpression
Arguments: [product#74775, plant#74776], 25
(301) Project
Arguments: [product#74775, plant#74776, orderDateTime#74777]
(302) LogicalRelation
Arguments: parquet, [systemId#74779, internalUUID#74780, plant#74781, product#74782, blockedForReplenishmentStartingFrom#74783, productionAspect#74784, salesPlant#74785, listing#74786], false
(303) Repartition
Arguments: 25, true
(304) Project
Arguments: [systemId#74779, internalUUID#74780, plant#74781, product#74782, blockedForReplenishmentStartingFrom#74783, productionAspect#74784, salesPlant#74785, listing#74786, struct(systemId, systemId#74779, internalUUID, internalUUID#74780, plant, plant#74781, product, product#74782, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#74783, productionAspect, productionAspect#74784, salesPlant, salesPlant#74785, listing, listing#74786) AS productPlant#74788]
(305) Project
Arguments: [productPlant#74788]
(306) Join
Arguments: LeftOuter, ((product#74775 <=> productPlant#74788.product.internalRefUUID) AND (plant#74776 <=> productPlant#74788.plant.internalRefUUID))
(307) Project
Arguments: [product#74775, plant#74776, orderDateTime#74777, productPlant#74788]
(308) SubqueryAlias
Arguments: wl
(309) LogicalRelation
Arguments: parquet, [systemId#74790, internalUUID#74791, id#74792, displayId#74793, name#74794, category#74795, companyCode#74796, address#74797, mainDistributionChain#74798, mainPurchasingOrganization#74799, validPurchasingOrganizations#74800, productGroup#74801], false
(310) Repartition
Arguments: 25, true
(311) Project
Arguments: [internalUUID#74791, address#74797.timeZone.code AS timezonecode#74802]
(312) Join
Arguments: LeftOuter, (plant#74776 <=> internalUUID#74791)
(313) Project
Arguments: [product#74775, plant#74776, orderDateTime#74777, productPlant#74788, internalUUID#74791, CASE WHEN isnotnull(timezonecode#74802) THEN timezonecode#74802 ELSE UTC END AS timezonecode#74803]
(314) Project
Arguments: [product#74775, plant#74776, orderDateTime#74777, productPlant#74788, timezonecode#74803]
(315) LogicalRelation
Arguments: parquet, [systemId#74804, internalUUID#74805, id#74806, displayId#74807, name#74808, baseUnitOfMeasure#74809, unitOfMeasures#74810, unitOfMeasureConversions#74811, productionAspect#74812, salesAspect#74813, procurementAspect#74814, productGroup#74815], false
(316) Repartition
Arguments: 25, true
(317) Join
Arguments: LeftOuter, (product#74775 = internalUUID#74805)
(318) Project
Arguments: [product#74775, plant#74776, orderDateTime#74777, productPlant#74788, timezonecode#74803, systemId#74804, internalUUID#74805, id#74806, displayId#74807, name#74808, baseUnitOfMeasure#74809, unitOfMeasures#74810, unitOfMeasureConversions#74811, productionAspect#74812, salesAspect#74813, procurementAspect#74814, productGroup#74815, filter(unitOfMeasureConversions#74811, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#74788.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#74788.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#74809.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#74809.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#74818]
(319) Generate
Arguments: explode(filteredUnitOfMeasureConversions#74818.quantityNumerator), true, [quantityNumerator#74820]
(320) Project
Arguments: [product#74775, plant#74776, orderDateTime#74777, productPlant#74788, timezonecode#74803, systemId#74804, internalUUID#74805, id#74806, displayId#74807, name#74808, baseUnitOfMeasure#74809, unitOfMeasures#74810, unitOfMeasureConversions#74811, productionAspect#74812, salesAspect#74813, procurementAspect#74814, productGroup#74815, filteredUnitOfMeasureConversions#74818, quantityNumerator#74820]
(321) Generate
Arguments: explode(filteredUnitOfMeasureConversions#74818.quantityDenominator), true, [quantityDenominator#74822]
(322) Project
Arguments: [product#74775, plant#74776, orderDateTime#74777, productPlant#74788, timezonecode#74803, systemId#74804, internalUUID#74805, id#74806, displayId#74807, name#74808, baseUnitOfMeasure#74809, unitOfMeasures#74810, unitOfMeasureConversions#74811, productionAspect#74812, salesAspect#74813, procurementAspect#74814, productGroup#74815, filteredUnitOfMeasureConversions#74818, quantityNumerator#74820, quantityDenominator#74822]
(323) Project
Arguments: [product#74775, plant#74776, orderDateTime#74777, productPlant#74788, timezonecode#74803, systemId#74804, internalUUID#74805, id#74806, displayId#74807, name#74808, baseUnitOfMeasure#74809, unitOfMeasures#74810, unitOfMeasureConversions#74811, productionAspect#74812, salesAspect#74813, procurementAspect#74814, productGroup#74815, filteredUnitOfMeasureConversions#74818, quantityNumerator#74820, quantityDenominator#74822, (cast(quantityNumerator#74820 as double) / cast(quantityDenominator#74822 as double)) AS outboundUnit#74824]
(324) Project
Arguments: [product#74775, plant#74776, orderDateTime#74777, productPlant#74788, timezonecode#74803, systemId#74804, internalUUID#74805, id#74806, displayId#74807, name#74808, baseUnitOfMeasure#74809, unitOfMeasures#74810, unitOfMeasureConversions#74811, productionAspect#74812, salesAspect#74813, procurementAspect#74814, productGroup#74815, filteredUnitOfMeasureConversions#74818, quantityNumerator#74820, quantityDenominator#74822, CASE WHEN (isnull(outboundUnit#74824) OR (outboundUnit#74824 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#74824 END AS outboundUnit#74828]
(325) Project
Arguments: [product#74775, plant#74776, orderDateTime#74777, productPlant#74788, timezonecode#74803, outboundUnit#74828]
(326) Join
Arguments: Inner, ((plantUuid#74767 = plant#74776) AND (productUuid#74769 = product#74775))
(327) Filter
Arguments: (calculationDateTime#74763 <= orderDateTime#74777)
(328) Project
Arguments: [plantUuid#74767 AS plant#74829, productUuid#74769 AS product#74830, storageLocId#74770, calculationDateTime#74763, quantity#74772]
(329) LogicalRelation
Arguments: parquet, [systemId#74831, internalUUID#74832, product#74833, plant#74834, calculationDateTime#74835, stockQuantities#74836], false
(330) Repartition
Arguments: 25, true
(331) LogicalRelation
Arguments: parquet, [marketUnit#74837, description#74838, articleHierarchy#74839, defaultCurrency#74840, responsibilities#74841, replenishmentTypes#74842, distributionCenters#74843, assignedArticleHierarchyNodes#74844, minOrderQtySetting#74845, listingCheck#74846, odsSelection#74847, demandProfiles#74848, constraintProfiles#74849, optimizationProfiles#74850, orderGroupSplitProfiles#74851, supplierMinimumProfiles#74852, multipleRestrictionProfiles#74853, preferredUomSource#74854, handlingOfUnfulfilledDemands#74855, negligibleQuantitiesThreshold#74856, eventtype#74857, minOrderQtySettingInternal#74858], false
(332) Repartition
Arguments: 25, true
(333) Filter
Arguments: (marketUnit#74837 <=> Daily_grocery)
(334) Project
Arguments: [marketUnit#74837, description#74838, articleHierarchy#74839, defaultCurrency#74840, responsibilities#74841, replenishmentTypes#74842, distributionCenters#74843, assignedArticleHierarchyNodes#74844, minOrderQtySetting#74845, listingCheck#74846, odsSelection#74847, demandProfiles#74848, constraintProfiles#74849, optimizationProfiles#74850, orderGroupSplitProfiles#74851, supplierMinimumProfiles#74852, multipleRestrictionProfiles#74853, preferredUomSource#74854, handlingOfUnfulfilledDemands#74855, negligibleQuantitiesThreshold#74856, eventtype#74857, minOrderQtySettingInternal#74858]
(335) Project
Arguments: [distributionCenters#74843]
(336) Generate
Arguments: explode(distributionCenters#74843), false, [distributionCenters#74859]
(337) Project
Arguments: [distributionCenters#74859]
(338) Generate
Arguments: explode(distributionCenters#74859.storageLocations), false, [storageLocations#74860]
(339) Project
Arguments: [distributionCenters#74859.id AS plantId#74861, distributionCenters#74859.internalRefUUID AS plantUuid#74862, storageLocations#74860]
(340) Project
Arguments: [plantId#74861, plantUuid#74862, storageLocations#74860.id AS storageLocId#74863, storageLocations#74860.internalRefUUID AS storageLocUuid#74864]
(341) LogicalRelation
Arguments: parquet, [product#74865, plant#74866, orderDateTime#74867, planningStartDateTime#74868], false
(342) RepartitionByExpression
Arguments: [product#74865, plant#74866], 25
(343) Project
Arguments: [product#74865, plant#74866, orderDateTime#74867]
(344) LogicalRelation
Arguments: parquet, [systemId#74869, internalUUID#74870, plant#74871, product#74872, blockedForReplenishmentStartingFrom#74873, productionAspect#74874, salesPlant#74875, listing#74876], false
(345) Repartition
Arguments: 25, true
(346) Project
Arguments: [systemId#74869, internalUUID#74870, plant#74871, product#74872, blockedForReplenishmentStartingFrom#74873, productionAspect#74874, salesPlant#74875, listing#74876, struct(systemId, systemId#74869, internalUUID, internalUUID#74870, plant, plant#74871, product, product#74872, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#74873, productionAspect, productionAspect#74874, salesPlant, salesPlant#74875, listing, listing#74876) AS productPlant#74877]
(347) Project
Arguments: [productPlant#74877]
(348) Join
Arguments: LeftOuter, ((product#74865 <=> productPlant#74877.product.internalRefUUID) AND (plant#74866 <=> productPlant#74877.plant.internalRefUUID))
(349) Project
Arguments: [product#74865, plant#74866, orderDateTime#74867, productPlant#74877]
(350) SubqueryAlias
Arguments: wl
(351) LogicalRelation
Arguments: parquet, [systemId#74880, internalUUID#74881, id#74882, displayId#74883, name#74884, category#74885, companyCode#74886, address#74887, mainDistributionChain#74888, mainPurchasingOrganization#74889, validPurchasingOrganizations#74890, productGroup#74891], false
(352) Repartition
Arguments: 25, true
(353) Project
Arguments: [internalUUID#74881, address#74887.timeZone.code AS timezonecode#74892]
(354) Join
Arguments: LeftOuter, (plant#74866 <=> internalUUID#74881)
(355) Project
Arguments: [product#74865, plant#74866, orderDateTime#74867, productPlant#74877, internalUUID#74881, CASE WHEN isnotnull(timezonecode#74892) THEN timezonecode#74892 ELSE UTC END AS timezonecode#74893]
(356) Project
Arguments: [product#74865, plant#74866, orderDateTime#74867, productPlant#74877, timezonecode#74893]
(357) LogicalRelation
Arguments: parquet, [systemId#74896, internalUUID#74897, id#74898, displayId#74899, name#74900, baseUnitOfMeasure#74901, unitOfMeasures#74902, unitOfMeasureConversions#74903, productionAspect#74904, salesAspect#74905, procurementAspect#74906, productGroup#74907], false
(358) Repartition
Arguments: 25, true
(359) Join
Arguments: LeftOuter, (product#74865 = internalUUID#74897)
(360) Project
Arguments: [product#74865, plant#74866, orderDateTime#74867, productPlant#74877, timezonecode#74893, systemId#74896, internalUUID#74897, id#74898, displayId#74899, name#74900, baseUnitOfMeasure#74901, unitOfMeasures#74902, unitOfMeasureConversions#74903, productionAspect#74904, salesAspect#74905, procurementAspect#74906, productGroup#74907, filter(unitOfMeasureConversions#74903, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#74877.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#74877.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#74901.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#74901.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#74909]
(361) Generate
Arguments: explode(filteredUnitOfMeasureConversions#74909.quantityNumerator), true, [quantityNumerator#74910]
(362) Project
Arguments: [product#74865, plant#74866, orderDateTime#74867, productPlant#74877, timezonecode#74893, systemId#74896, internalUUID#74897, id#74898, displayId#74899, name#74900, baseUnitOfMeasure#74901, unitOfMeasures#74902, unitOfMeasureConversions#74903, productionAspect#74904, salesAspect#74905, procurementAspect#74906, productGroup#74907, filteredUnitOfMeasureConversions#74909, quantityNumerator#74910]
(363) Generate
Arguments: explode(filteredUnitOfMeasureConversions#74909.quantityDenominator), true, [quantityDenominator#74911]
(364) Project
Arguments: [product#74865, plant#74866, orderDateTime#74867, productPlant#74877, timezonecode#74893, systemId#74896, internalUUID#74897, id#74898, displayId#74899, name#74900, baseUnitOfMeasure#74901, unitOfMeasures#74902, unitOfMeasureConversions#74903, productionAspect#74904, salesAspect#74905, procurementAspect#74906, productGroup#74907, filteredUnitOfMeasureConversions#74909, quantityNumerator#74910, quantityDenominator#74911]
(365) Project
Arguments: [product#74865, plant#74866, orderDateTime#74867, productPlant#74877, timezonecode#74893, systemId#74896, internalUUID#74897, id#74898, displayId#74899, name#74900, baseUnitOfMeasure#74901, unitOfMeasures#74902, unitOfMeasureConversions#74903, productionAspect#74904, salesAspect#74905, procurementAspect#74906, productGroup#74907, filteredUnitOfMeasureConversions#74909, quantityNumerator#74910, quantityDenominator#74911, (cast(quantityNumerator#74910 as double) / cast(quantityDenominator#74911 as double)) AS outboundUnit#74912]
(366) Project
Arguments: [product#74865, plant#74866, orderDateTime#74867, productPlant#74877, timezonecode#74893, systemId#74896, internalUUID#74897, id#74898, displayId#74899, name#74900, baseUnitOfMeasure#74901, unitOfMeasures#74902, unitOfMeasureConversions#74903, productionAspect#74904, salesAspect#74905, procurementAspect#74906, productGroup#74907, filteredUnitOfMeasureConversions#74909, quantityNumerator#74910, quantityDenominator#74911, CASE WHEN (isnull(outboundUnit#74912) OR (outboundUnit#74912 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#74912 END AS outboundUnit#74913]
(367) Project
Arguments: [product#74865, plant#74866, orderDateTime#74867, productPlant#74877, timezonecode#74893, outboundUnit#74913]
(368) Project
Arguments: [plant#74866]
(369) Deduplicate
Arguments: [plant#74866]
(370) Join
Arguments: Inner, (plantUuid#74862 = plant#74866)
(371) Project
Arguments: [plantId#74861, plantUuid#74862, storageLocId#74863, storageLocUuid#74864]
(372) Join
Arguments: Inner, (plant#74834.internalRefUUID <=> plantUuid#74862)
(373) Generate
Arguments: explode(filter(stockQuantities#74836, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#74864) AND (lambda x#69269.storageLocation.Id = storageLocId#74863)), lambda x#69269, false))), false, [stockQuantity#74914]
(374) Project
Arguments: [systemId#74831, internalUUID#74832, product#74833, plant#74834, calculationDateTime#74835, stockQuantities#74836, plantId#74861, plantUuid#74862, storageLocId#74863, storageLocUuid#74864, stockQuantity#74914]
(375) Aggregate
Arguments: [plantUuid#74862, internalUUID#74832, plant#74834, product#74833, systemId#74831], [plantUuid#74862, internalUUID#74832, plant#74834, product#74833, systemId#74831, first(calculationDateTime#74835, false) AS calculationDateTime#74915, collect_list(stockQuantity#74914, 0, 0) AS stockQuantities#74916]
(376) Project
Arguments: [systemId#74831, internalUUID#74832, product#74833, plant#74834, calculationDateTime#74915, stockQuantities#74916]
(377) Generate
Arguments: explode(stockQuantities#74916), false, [stockQuantity#74917]
(378) Project
Arguments: [systemId#74831, internalUUID#74832, product#74833, plant#74834, calculationDateTime#74915, stockQuantities#74916, stockQuantity#74917]
(379) Project
Arguments: [plant#74834.id AS plant#74918, plant#74834.internalRefUUID AS plantUuid#74919, product#74833.id AS product#74920, product#74833.internalRefUUID AS productUuid#74921, calculationDateTime#74915, stockQuantity#74917.storagelocation.id AS storageLocId#74922, stockQuantity#74917.storagelocation.internalRefUUID AS storageLocUuid#74923, stockQuantity#74917.quantity.measure AS quantity#74924, stockQuantity#74917.specialStockIndicator.code AS specialStockIndicator#74925, stockQuantity#74917.stockType.code AS stockType#74926]
(380) Filter
Arguments: ((specialStockIndicator#74925 = ) AND (stockType#74926 = 01))
(381) LogicalRelation
Arguments: parquet, [product#74927, plant#74928, orderDateTime#74929, planningStartDateTime#74930], false
(382) RepartitionByExpression
Arguments: [product#74927, plant#74928], 25
(383) Project
Arguments: [product#74927, plant#74928, orderDateTime#74929]
(384) LogicalRelation
Arguments: parquet, [systemId#74931, internalUUID#74932, plant#74933, product#74934, blockedForReplenishmentStartingFrom#74935, productionAspect#74936, salesPlant#74937, listing#74938], false
(385) Repartition
Arguments: 25, true
(386) Project
Arguments: [systemId#74931, internalUUID#74932, plant#74933, product#74934, blockedForReplenishmentStartingFrom#74935, productionAspect#74936, salesPlant#74937, listing#74938, struct(systemId, systemId#74931, internalUUID, internalUUID#74932, plant, plant#74933, product, product#74934, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#74935, productionAspect, productionAspect#74936, salesPlant, salesPlant#74937, listing, listing#74938) AS productPlant#74939]
(387) Project
Arguments: [productPlant#74939]
(388) Join
Arguments: LeftOuter, ((product#74927 <=> productPlant#74939.product.internalRefUUID) AND (plant#74928 <=> productPlant#74939.plant.internalRefUUID))
(389) Project
Arguments: [product#74927, plant#74928, orderDateTime#74929, productPlant#74939]
(390) SubqueryAlias
Arguments: wl
(391) LogicalRelation
Arguments: parquet, [systemId#74940, internalUUID#74941, id#74942, displayId#74943, name#74944, category#74945, companyCode#74946, address#74947, mainDistributionChain#74948, mainPurchasingOrganization#74949, validPurchasingOrganizations#74950, productGroup#74951], false
(392) Repartition
Arguments: 25, true
(393) Project
Arguments: [internalUUID#74941, address#74947.timeZone.code AS timezonecode#74952]
(394) Join
Arguments: LeftOuter, (plant#74928 <=> internalUUID#74941)
(395) Project
Arguments: [product#74927, plant#74928, orderDateTime#74929, productPlant#74939, internalUUID#74941, CASE WHEN isnotnull(timezonecode#74952) THEN timezonecode#74952 ELSE UTC END AS timezonecode#74953]
(396) Project
Arguments: [product#74927, plant#74928, orderDateTime#74929, productPlant#74939, timezonecode#74953]
(397) LogicalRelation
Arguments: parquet, [systemId#74954, internalUUID#74955, id#74956, displayId#74957, name#74958, baseUnitOfMeasure#74959, unitOfMeasures#74960, unitOfMeasureConversions#74961, productionAspect#74962, salesAspect#74963, procurementAspect#74964, productGroup#74965], false
(398) Repartition
Arguments: 25, true
(399) Join
Arguments: LeftOuter, (product#74927 = internalUUID#74955)
(400) Project
Arguments: [product#74927, plant#74928, orderDateTime#74929, productPlant#74939, timezonecode#74953, systemId#74954, internalUUID#74955, id#74956, displayId#74957, name#74958, baseUnitOfMeasure#74959, unitOfMeasures#74960, unitOfMeasureConversions#74961, productionAspect#74962, salesAspect#74963, procurementAspect#74964, productGroup#74965, filter(unitOfMeasureConversions#74961, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#74939.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#74939.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#74959.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#74959.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#74966]
(401) Generate
Arguments: explode(filteredUnitOfMeasureConversions#74966.quantityNumerator), true, [quantityNumerator#74967]
(402) Project
Arguments: [product#74927, plant#74928, orderDateTime#74929, productPlant#74939, timezonecode#74953, systemId#74954, internalUUID#74955, id#74956, displayId#74957, name#74958, baseUnitOfMeasure#74959, unitOfMeasures#74960, unitOfMeasureConversions#74961, productionAspect#74962, salesAspect#74963, procurementAspect#74964, productGroup#74965, filteredUnitOfMeasureConversions#74966, quantityNumerator#74967]
(403) Generate
Arguments: explode(filteredUnitOfMeasureConversions#74966.quantityDenominator), true, [quantityDenominator#74968]
(404) Project
Arguments: [product#74927, plant#74928, orderDateTime#74929, productPlant#74939, timezonecode#74953, systemId#74954, internalUUID#74955, id#74956, displayId#74957, name#74958, baseUnitOfMeasure#74959, unitOfMeasures#74960, unitOfMeasureConversions#74961, productionAspect#74962, salesAspect#74963, procurementAspect#74964, productGroup#74965, filteredUnitOfMeasureConversions#74966, quantityNumerator#74967, quantityDenominator#74968]
(405) Project
Arguments: [product#74927, plant#74928, orderDateTime#74929, productPlant#74939, timezonecode#74953, systemId#74954, internalUUID#74955, id#74956, displayId#74957, name#74958, baseUnitOfMeasure#74959, unitOfMeasures#74960, unitOfMeasureConversions#74961, productionAspect#74962, salesAspect#74963, procurementAspect#74964, productGroup#74965, filteredUnitOfMeasureConversions#74966, quantityNumerator#74967, quantityDenominator#74968, (cast(quantityNumerator#74967 as double) / cast(quantityDenominator#74968 as double)) AS outboundUnit#74969]
(406) Project
Arguments: [product#74927, plant#74928, orderDateTime#74929, productPlant#74939, timezonecode#74953, systemId#74954, internalUUID#74955, id#74956, displayId#74957, name#74958, baseUnitOfMeasure#74959, unitOfMeasures#74960, unitOfMeasureConversions#74961, productionAspect#74962, salesAspect#74963, procurementAspect#74964, productGroup#74965, filteredUnitOfMeasureConversions#74966, quantityNumerator#74967, quantityDenominator#74968, CASE WHEN (isnull(outboundUnit#74969) OR (outboundUnit#74969 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#74969 END AS outboundUnit#74970]
(407) Project
Arguments: [product#74927, plant#74928, orderDateTime#74929, productPlant#74939, timezonecode#74953, outboundUnit#74970]
(408) Join
Arguments: Inner, ((plantUuid#74919 = plant#74928) AND (productUuid#74921 = product#74927))
(409) Filter
Arguments: (calculationDateTime#74915 <= orderDateTime#74929)
(410) Project
Arguments: [plantUuid#74919 AS plant#74971, productUuid#74921 AS product#74972, storageLocId#74922, calculationDateTime#74915, quantity#74924]
(411) Aggregate
Arguments: [plant#74971, product#74972, storageLocId#74922], [plant#74971, product#74972, storageLocId#74922, max(calculationDateTime#74915) AS max_calc_datetime#74973]
(412) Join
Arguments: Inner, ((((plant#74829 <=> plant#74971) AND (product#74830 <=> product#74972)) AND (storageLocId#74770 <=> storageLocId#74922)) AND (calculationDateTime#74763 <=> max_calc_datetime#74973))
(413) Project
Arguments: [plant#74829, product#74830, storageLocId#74770, calculationDateTime#74763, quantity#74772]
(414) Aggregate
Arguments: [product#74830, plant#74829], [product#74830, plant#74829, sum(quantity#74772) AS quantitySum#74974, min(calculationDateTime#74763) AS minCalculationDateTime#74975]
(415) Project
Arguments: [product#74830, plant#74829, quantitySum#74974, minCalculationDateTime#74975, round(quantitySum#74974, 0) AS roundedQuantitySum#74976]
(416) Join
Arguments: LeftOuter, ((plant#74631 = plant#74829) AND (product#74630 = product#74830))
(417) Project
Arguments: [product#74630, plant#74631, orderDateTime#74632, productPlant#74642, timezonecode#74656, outboundUnit#74673, roundedQuantitySum#74976, minCalculationDateTime#74975]
(418) Project
Arguments: [product#74630, plant#74631, orderDateTime#74632, productPlant#74642, timezonecode#74656, outboundUnit#74673, roundedQuantitySum#74976, minCalculationDateTime#74975, CASE WHEN isnotnull(minCalculationDateTime#74975) THEN minCalculationDateTime#74975 ELSE orderDateTime#74632 END AS stockDatetime#74977]
(419) Project
Arguments: [product#74630, plant#74631, orderDateTime#74632, productPlant#74642, timezonecode#74656, outboundUnit#74673, roundedQuantitySum#74976, minCalculationDateTime#74975, stockDatetime#74977, CASE WHEN isnotnull(roundedQuantitySum#74976) THEN array(roundedQuantitySum#74976) ELSE array(0.0) END AS stockBatchQuantities#74978]
(420) Project
Arguments: [product#74630, plant#74631, orderDateTime#74632, productPlant#74642, timezonecode#74656, outboundUnit#74673, roundedQuantitySum#74976, minCalculationDateTime#74975, stockDatetime#74977, stockBatchQuantities#74978, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#74979]
(421) Project
Arguments: [product#74630, plant#74631, orderDateTime#74632, productPlant#74642, timezonecode#74656, outboundUnit#74673, roundedQuantitySum#74976, stockDatetime#74977, stockBatchQuantities#74978, stockBatchShelfLifeEndDatetimes#74979]
(422) Project
Arguments: [product#74630, plant#74631, orderDateTime#74632, productPlant#74642, timezonecode#74656, outboundUnit#74673, stockDatetime#74977, stockBatchQuantities#74978, stockBatchShelfLifeEndDatetimes#74979]
(423) LogicalRelation
Arguments: parquet, [product#69978, plant#69979, orderDateTime#69980, planningStartDateTime#69981], false
(424) RepartitionByExpression
Arguments: [product#69978, plant#69979], 25
(425) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980]
(426) LogicalRelation
Arguments: parquet, [systemId#69982, internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989], false
(427) Repartition
Arguments: 25, true
(428) Project
Arguments: [systemId#69982, internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989, struct(systemId, systemId#69982, internalUUID, internalUUID#69983, plant, plant#69984, product, product#69985, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69986, productionAspect, productionAspect#69987, salesPlant, salesPlant#69988, listing, listing#69989) AS productPlant#69990]
(429) Project
Arguments: [productPlant#69990]
(430) Join
Arguments: LeftOuter, ((product#69978 <=> productPlant#69990.product.internalRefUUID) AND (plant#69979 <=> productPlant#69990.plant.internalRefUUID))
(431) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990]
(432) SubqueryAlias
Arguments: wl
(433) LogicalRelation
Arguments: parquet, [systemId#69991, internalUUID#69992, id#69993, displayId#69994, name#69995, category#69996, companyCode#69997, address#69998, mainDistributionChain#69999, mainPurchasingOrganization#70000, validPurchasingOrganizations#70001, productGroup#70002], false
(434) Repartition
Arguments: 25, true
(435) Project
Arguments: [internalUUID#69992, address#69998.timeZone.code AS timezonecode#70003]
(436) Join
Arguments: LeftOuter, (plant#69979 <=> internalUUID#69992)
(437) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, internalUUID#69992, CASE WHEN isnotnull(timezonecode#70003) THEN timezonecode#70003 ELSE UTC END AS timezonecode#70005]
(438) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005]
(439) LogicalRelation
Arguments: parquet, [systemId#70006, internalUUID#70007, id#70008, displayId#70009, name#70010, baseUnitOfMeasure#70011, unitOfMeasures#70012, unitOfMeasureConversions#70013, productionAspect#70014, salesAspect#70015, procurementAspect#70016, productGroup#70017], false
(440) Repartition
Arguments: 25, true
(441) Join
Arguments: LeftOuter, (product#69978 = internalUUID#70007)
(442) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, systemId#70006, internalUUID#70007, id#70008, displayId#70009, name#70010, baseUnitOfMeasure#70011, unitOfMeasures#70012, unitOfMeasureConversions#70013, productionAspect#70014, salesAspect#70015, procurementAspect#70016, productGroup#70017, filter(unitOfMeasureConversions#70013, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70011.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70011.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70018]
(443) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70018.quantityNumerator), true, [quantityNumerator#70019]
(444) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, systemId#70006, internalUUID#70007, id#70008, displayId#70009, name#70010, baseUnitOfMeasure#70011, unitOfMeasures#70012, unitOfMeasureConversions#70013, productionAspect#70014, salesAspect#70015, procurementAspect#70016, productGroup#70017, filteredUnitOfMeasureConversions#70018, quantityNumerator#70019]
(445) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70018.quantityDenominator), true, [quantityDenominator#70020]
(446) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, systemId#70006, internalUUID#70007, id#70008, displayId#70009, name#70010, baseUnitOfMeasure#70011, unitOfMeasures#70012, unitOfMeasureConversions#70013, productionAspect#70014, salesAspect#70015, procurementAspect#70016, productGroup#70017, filteredUnitOfMeasureConversions#70018, quantityNumerator#70019, quantityDenominator#70020]
(447) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, systemId#70006, internalUUID#70007, id#70008, displayId#70009, name#70010, baseUnitOfMeasure#70011, unitOfMeasures#70012, unitOfMeasureConversions#70013, productionAspect#70014, salesAspect#70015, procurementAspect#70016, productGroup#70017, filteredUnitOfMeasureConversions#70018, quantityNumerator#70019, quantityDenominator#70020, (cast(quantityNumerator#70019 as double) / cast(quantityDenominator#70020 as double)) AS outboundUnit#70021]
(448) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, systemId#70006, internalUUID#70007, id#70008, displayId#70009, name#70010, baseUnitOfMeasure#70011, unitOfMeasures#70012, unitOfMeasureConversions#70013, productionAspect#70014, salesAspect#70015, procurementAspect#70016, productGroup#70017, filteredUnitOfMeasureConversions#70018, quantityNumerator#70019, quantityDenominator#70020, CASE WHEN (isnull(outboundUnit#70021) OR (outboundUnit#70021 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70021 END AS outboundUnit#70022]
(449) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022]
(450) LogicalRelation
Arguments: parquet, [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028], false
(451) Repartition
Arguments: 25, true
(452) LogicalRelation
Arguments: parquet, [marketUnit#70029, description#70030, articleHierarchy#70031, defaultCurrency#70032, responsibilities#70033, replenishmentTypes#70034, distributionCenters#70035, assignedArticleHierarchyNodes#70036, minOrderQtySetting#70037, listingCheck#70038, odsSelection#70039, demandProfiles#70040, constraintProfiles#70041, optimizationProfiles#70042, orderGroupSplitProfiles#70043, supplierMinimumProfiles#70044, multipleRestrictionProfiles#70045, preferredUomSource#70046, handlingOfUnfulfilledDemands#70047, negligibleQuantitiesThreshold#70048, eventtype#70049, minOrderQtySettingInternal#70050], false
(453) Repartition
Arguments: 25, true
(454) Filter
Arguments: (marketUnit#70029 <=> Daily_grocery)
(455) Project
Arguments: [marketUnit#70029, description#70030, articleHierarchy#70031, defaultCurrency#70032, responsibilities#70033, replenishmentTypes#70034, distributionCenters#70035, assignedArticleHierarchyNodes#70036, minOrderQtySetting#70037, listingCheck#70038, odsSelection#70039, demandProfiles#70040, constraintProfiles#70041, optimizationProfiles#70042, orderGroupSplitProfiles#70043, supplierMinimumProfiles#70044, multipleRestrictionProfiles#70045, preferredUomSource#70046, handlingOfUnfulfilledDemands#70047, negligibleQuantitiesThreshold#70048, eventtype#70049, minOrderQtySettingInternal#70050]
(456) Project
Arguments: [distributionCenters#70035]
(457) Generate
Arguments: explode(distributionCenters#70035), false, [distributionCenters#70051]
(458) Project
Arguments: [distributionCenters#70051]
(459) Generate
Arguments: explode(distributionCenters#70051.storageLocations), false, [storageLocations#70069]
(460) Project
Arguments: [distributionCenters#70051.id AS plantId#70070, distributionCenters#70051.internalRefUUID AS plantUuid#70071, storageLocations#70069]
(461) Project
Arguments: [plantId#70070, plantUuid#70071, storageLocations#70069.id AS storageLocId#70072, storageLocations#70069.internalRefUUID AS storageLocUuid#70073]
(462) LogicalRelation
Arguments: parquet, [product#70074, plant#70075, orderDateTime#70076, planningStartDateTime#70077], false
(463) RepartitionByExpression
Arguments: [product#70074, plant#70075], 25
(464) Project
Arguments: [product#70074, plant#70075, orderDateTime#70076]
(465) LogicalRelation
Arguments: parquet, [systemId#70078, internalUUID#70079, plant#70080, product#70081, blockedForReplenishmentStartingFrom#70082, productionAspect#70083, salesPlant#70084, listing#70085], false
(466) Repartition
Arguments: 25, true
(467) Project
Arguments: [systemId#70078, internalUUID#70079, plant#70080, product#70081, blockedForReplenishmentStartingFrom#70082, productionAspect#70083, salesPlant#70084, listing#70085, struct(systemId, systemId#70078, internalUUID, internalUUID#70079, plant, plant#70080, product, product#70081, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70082, productionAspect, productionAspect#70083, salesPlant, salesPlant#70084, listing, listing#70085) AS productPlant#70086]
(468) Project
Arguments: [productPlant#70086]
(469) Join
Arguments: LeftOuter, ((product#70074 <=> productPlant#70086.product.internalRefUUID) AND (plant#70075 <=> productPlant#70086.plant.internalRefUUID))
(470) Project
Arguments: [product#70074, plant#70075, orderDateTime#70076, productPlant#70086]
(471) SubqueryAlias
Arguments: wl
(472) LogicalRelation
Arguments: parquet, [systemId#70087, internalUUID#70088, id#70089, displayId#70090, name#70091, category#70092, companyCode#70093, address#70094, mainDistributionChain#70095, mainPurchasingOrganization#70096, validPurchasingOrganizations#70097, productGroup#70098], false
(473) Repartition
Arguments: 25, true
(474) Project
Arguments: [internalUUID#70088, address#70094.timeZone.code AS timezonecode#70099]
(475) Join
Arguments: LeftOuter, (plant#70075 <=> internalUUID#70088)
(476) Project
Arguments: [product#70074, plant#70075, orderDateTime#70076, productPlant#70086, internalUUID#70088, CASE WHEN isnotnull(timezonecode#70099) THEN timezonecode#70099 ELSE UTC END AS timezonecode#70100]
(477) Project
Arguments: [product#70074, plant#70075, orderDateTime#70076, productPlant#70086, timezonecode#70100]
(478) LogicalRelation
Arguments: parquet, [systemId#70101, internalUUID#70102, id#70103, displayId#70104, name#70105, baseUnitOfMeasure#70106, unitOfMeasures#70107, unitOfMeasureConversions#70108, productionAspect#70109, salesAspect#70110, procurementAspect#70111, productGroup#70112], false
(479) Repartition
Arguments: 25, true
(480) Join
Arguments: LeftOuter, (product#70074 = internalUUID#70102)
(481) Project
Arguments: [product#70074, plant#70075, orderDateTime#70076, productPlant#70086, timezonecode#70100, systemId#70101, internalUUID#70102, id#70103, displayId#70104, name#70105, baseUnitOfMeasure#70106, unitOfMeasures#70107, unitOfMeasureConversions#70108, productionAspect#70109, salesAspect#70110, procurementAspect#70111, productGroup#70112, filter(unitOfMeasureConversions#70108, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#70086.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#70086.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70106.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70106.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70113]
(482) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70113.quantityNumerator), true, [quantityNumerator#70114]
(483) Project
Arguments: [product#70074, plant#70075, orderDateTime#70076, productPlant#70086, timezonecode#70100, systemId#70101, internalUUID#70102, id#70103, displayId#70104, name#70105, baseUnitOfMeasure#70106, unitOfMeasures#70107, unitOfMeasureConversions#70108, productionAspect#70109, salesAspect#70110, procurementAspect#70111, productGroup#70112, filteredUnitOfMeasureConversions#70113, quantityNumerator#70114]
(484) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70113.quantityDenominator), true, [quantityDenominator#70115]
(485) Project
Arguments: [product#70074, plant#70075, orderDateTime#70076, productPlant#70086, timezonecode#70100, systemId#70101, internalUUID#70102, id#70103, displayId#70104, name#70105, baseUnitOfMeasure#70106, unitOfMeasures#70107, unitOfMeasureConversions#70108, productionAspect#70109, salesAspect#70110, procurementAspect#70111, productGroup#70112, filteredUnitOfMeasureConversions#70113, quantityNumerator#70114, quantityDenominator#70115]
(486) Project
Arguments: [product#70074, plant#70075, orderDateTime#70076, productPlant#70086, timezonecode#70100, systemId#70101, internalUUID#70102, id#70103, displayId#70104, name#70105, baseUnitOfMeasure#70106, unitOfMeasures#70107, unitOfMeasureConversions#70108, productionAspect#70109, salesAspect#70110, procurementAspect#70111, productGroup#70112, filteredUnitOfMeasureConversions#70113, quantityNumerator#70114, quantityDenominator#70115, (cast(quantityNumerator#70114 as double) / cast(quantityDenominator#70115 as double)) AS outboundUnit#70116]
(487) Project
Arguments: [product#70074, plant#70075, orderDateTime#70076, productPlant#70086, timezonecode#70100, systemId#70101, internalUUID#70102, id#70103, displayId#70104, name#70105, baseUnitOfMeasure#70106, unitOfMeasures#70107, unitOfMeasureConversions#70108, productionAspect#70109, salesAspect#70110, procurementAspect#70111, productGroup#70112, filteredUnitOfMeasureConversions#70113, quantityNumerator#70114, quantityDenominator#70115, CASE WHEN (isnull(outboundUnit#70116) OR (outboundUnit#70116 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70116 END AS outboundUnit#70117]
(488) Project
Arguments: [product#70074, plant#70075, orderDateTime#70076, productPlant#70086, timezonecode#70100, outboundUnit#70117]
(489) Project
Arguments: [plant#70075]
(490) Deduplicate
Arguments: [plant#70075]
(491) Join
Arguments: Inner, (plantUuid#70071 = plant#70075)
(492) Project
Arguments: [plantId#70070, plantUuid#70071, storageLocId#70072, storageLocUuid#70073]
(493) Join
Arguments: Inner, (plant#70026.internalRefUUID <=> plantUuid#70071)
(494) Generate
Arguments: explode(filter(stockQuantities#70028, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#70073) AND (lambda x#69269.storageLocation.Id = storageLocId#70072)), lambda x#69269, false))), false, [stockQuantity#70118]
(495) Project
Arguments: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028, plantId#70070, plantUuid#70071, storageLocId#70072, storageLocUuid#70073, stockQuantity#70118]
(496) Aggregate
Arguments: [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023], [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023, first(calculationDateTime#70027, false) AS calculationDateTime#70119, collect_list(stockQuantity#70118, 0, 0) AS stockQuantities#70120]
(497) Project
Arguments: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70119, stockQuantities#70120]
(498) Generate
Arguments: explode(stockQuantities#70120), false, [stockQuantity#70121]
(499) Project
Arguments: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70119, stockQuantities#70120, stockQuantity#70121]
(500) Project
Arguments: [plant#70026.id AS plant#70122, plant#70026.internalRefUUID AS plantUuid#70123, product#70025.id AS product#70124, product#70025.internalRefUUID AS productUuid#70125, calculationDateTime#70119, stockQuantity#70121.storagelocation.id AS storageLocId#70126, stockQuantity#70121.storagelocation.internalRefUUID AS storageLocUuid#70127, stockQuantity#70121.quantity.measure AS quantity#70128, stockQuantity#70121.specialStockIndicator.code AS specialStockIndicator#70129, stockQuantity#70121.stockType.code AS stockType#70130]
(501) Filter
Arguments: ((specialStockIndicator#70129 = ) AND (stockType#70130 = 01))
(502) LogicalRelation
Arguments: parquet, [product#70131, plant#70132, orderDateTime#70133, planningStartDateTime#70134], false
(503) RepartitionByExpression
Arguments: [product#70131, plant#70132], 25
(504) Project
Arguments: [product#70131, plant#70132, orderDateTime#70133]
(505) LogicalRelation
Arguments: parquet, [systemId#70135, internalUUID#70136, plant#70137, product#70138, blockedForReplenishmentStartingFrom#70139, productionAspect#70140, salesPlant#70141, listing#70142], false
(506) Repartition
Arguments: 25, true
(507) Project
Arguments: [systemId#70135, internalUUID#70136, plant#70137, product#70138, blockedForReplenishmentStartingFrom#70139, productionAspect#70140, salesPlant#70141, listing#70142, struct(systemId, systemId#70135, internalUUID, internalUUID#70136, plant, plant#70137, product, product#70138, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70139, productionAspect, productionAspect#70140, salesPlant, salesPlant#70141, listing, listing#70142) AS productPlant#70143]
(508) Project
Arguments: [productPlant#70143]
(509) Join
Arguments: LeftOuter, ((product#70131 <=> productPlant#70143.product.internalRefUUID) AND (plant#70132 <=> productPlant#70143.plant.internalRefUUID))
(510) Project
Arguments: [product#70131, plant#70132, orderDateTime#70133, productPlant#70143]
(511) SubqueryAlias
Arguments: wl
(512) LogicalRelation
Arguments: parquet, [systemId#70144, internalUUID#70145, id#70146, displayId#70147, name#70148, category#70149, companyCode#70150, address#70151, mainDistributionChain#70152, mainPurchasingOrganization#70153, validPurchasingOrganizations#70154, productGroup#70155], false
(513) Repartition
Arguments: 25, true
(514) Project
Arguments: [internalUUID#70145, address#70151.timeZone.code AS timezonecode#70156]
(515) Join
Arguments: LeftOuter, (plant#70132 <=> internalUUID#70145)
(516) Project
Arguments: [product#70131, plant#70132, orderDateTime#70133, productPlant#70143, internalUUID#70145, CASE WHEN isnotnull(timezonecode#70156) THEN timezonecode#70156 ELSE UTC END AS timezonecode#70157]
(517) Project
Arguments: [product#70131, plant#70132, orderDateTime#70133, productPlant#70143, timezonecode#70157]
(518) LogicalRelation
Arguments: parquet, [systemId#70158, internalUUID#70159, id#70160, displayId#70161, name#70162, baseUnitOfMeasure#70163, unitOfMeasures#70164, unitOfMeasureConversions#70165, productionAspect#70166, salesAspect#70167, procurementAspect#70168, productGroup#70169], false
(519) Repartition
Arguments: 25, true
(520) Join
Arguments: LeftOuter, (product#70131 = internalUUID#70159)
(521) Project
Arguments: [product#70131, plant#70132, orderDateTime#70133, productPlant#70143, timezonecode#70157, systemId#70158, internalUUID#70159, id#70160, displayId#70161, name#70162, baseUnitOfMeasure#70163, unitOfMeasures#70164, unitOfMeasureConversions#70165, productionAspect#70166, salesAspect#70167, procurementAspect#70168, productGroup#70169, filter(unitOfMeasureConversions#70165, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#70143.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#70143.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70163.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70163.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70171]
(522) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70171.quantityNumerator), true, [quantityNumerator#70172]
(523) Project
Arguments: [product#70131, plant#70132, orderDateTime#70133, productPlant#70143, timezonecode#70157, systemId#70158, internalUUID#70159, id#70160, displayId#70161, name#70162, baseUnitOfMeasure#70163, unitOfMeasures#70164, unitOfMeasureConversions#70165, productionAspect#70166, salesAspect#70167, procurementAspect#70168, productGroup#70169, filteredUnitOfMeasureConversions#70171, quantityNumerator#70172]
(524) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70171.quantityDenominator), true, [quantityDenominator#70173]
(525) Project
Arguments: [product#70131, plant#70132, orderDateTime#70133, productPlant#70143, timezonecode#70157, systemId#70158, internalUUID#70159, id#70160, displayId#70161, name#70162, baseUnitOfMeasure#70163, unitOfMeasures#70164, unitOfMeasureConversions#70165, productionAspect#70166, salesAspect#70167, procurementAspect#70168, productGroup#70169, filteredUnitOfMeasureConversions#70171, quantityNumerator#70172, quantityDenominator#70173]
(526) Project
Arguments: [product#70131, plant#70132, orderDateTime#70133, productPlant#70143, timezonecode#70157, systemId#70158, internalUUID#70159, id#70160, displayId#70161, name#70162, baseUnitOfMeasure#70163, unitOfMeasures#70164, unitOfMeasureConversions#70165, productionAspect#70166, salesAspect#70167, procurementAspect#70168, productGroup#70169, filteredUnitOfMeasureConversions#70171, quantityNumerator#70172, quantityDenominator#70173, (cast(quantityNumerator#70172 as double) / cast(quantityDenominator#70173 as double)) AS outboundUnit#70174]
(527) Project
Arguments: [product#70131, plant#70132, orderDateTime#70133, productPlant#70143, timezonecode#70157, systemId#70158, internalUUID#70159, id#70160, displayId#70161, name#70162, baseUnitOfMeasure#70163, unitOfMeasures#70164, unitOfMeasureConversions#70165, productionAspect#70166, salesAspect#70167, procurementAspect#70168, productGroup#70169, filteredUnitOfMeasureConversions#70171, quantityNumerator#70172, quantityDenominator#70173, CASE WHEN (isnull(outboundUnit#70174) OR (outboundUnit#70174 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70174 END AS outboundUnit#70175]
(528) Project
Arguments: [product#70131, plant#70132, orderDateTime#70133, productPlant#70143, timezonecode#70157, outboundUnit#70175]
(529) Join
Arguments: Inner, ((plantUuid#70123 = plant#70132) AND (productUuid#70125 = product#70131))
(530) Filter
Arguments: (calculationDateTime#70119 <= orderDateTime#70133)
(531) Project
Arguments: [plantUuid#70123 AS plant#70176, productUuid#70125 AS product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
(532) LogicalRelation
Arguments: parquet, [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183], false
(533) Repartition
Arguments: 25, true
(534) LogicalRelation
Arguments: parquet, [marketUnit#70184, description#70185, articleHierarchy#70186, defaultCurrency#70187, responsibilities#70188, replenishmentTypes#70189, distributionCenters#70190, assignedArticleHierarchyNodes#70191, minOrderQtySetting#70192, listingCheck#70193, odsSelection#70194, demandProfiles#70195, constraintProfiles#70196, optimizationProfiles#70197, orderGroupSplitProfiles#70198, supplierMinimumProfiles#70199, multipleRestrictionProfiles#70200, preferredUomSource#70201, handlingOfUnfulfilledDemands#70202, negligibleQuantitiesThreshold#70203, eventtype#70204, minOrderQtySettingInternal#70205], false
(535) Repartition
Arguments: 25, true
(536) Filter
Arguments: (marketUnit#70184 <=> Daily_grocery)
(537) Project
Arguments: [marketUnit#70184, description#70185, articleHierarchy#70186, defaultCurrency#70187, responsibilities#70188, replenishmentTypes#70189, distributionCenters#70190, assignedArticleHierarchyNodes#70191, minOrderQtySetting#70192, listingCheck#70193, odsSelection#70194, demandProfiles#70195, constraintProfiles#70196, optimizationProfiles#70197, orderGroupSplitProfiles#70198, supplierMinimumProfiles#70199, multipleRestrictionProfiles#70200, preferredUomSource#70201, handlingOfUnfulfilledDemands#70202, negligibleQuantitiesThreshold#70203, eventtype#70204, minOrderQtySettingInternal#70205]
(538) Project
Arguments: [distributionCenters#70190]
(539) Generate
Arguments: explode(distributionCenters#70190), false, [distributionCenters#70206]
(540) Project
Arguments: [distributionCenters#70206]
(541) Generate
Arguments: explode(distributionCenters#70206.storageLocations), false, [storageLocations#70207]
(542) Project
Arguments: [distributionCenters#70206.id AS plantId#70208, distributionCenters#70206.internalRefUUID AS plantUuid#70209, storageLocations#70207]
(543) Project
Arguments: [plantId#70208, plantUuid#70209, storageLocations#70207.id AS storageLocId#70210, storageLocations#70207.internalRefUUID AS storageLocUuid#70211]
(544) LogicalRelation
Arguments: parquet, [product#70212, plant#70213, orderDateTime#70214, planningStartDateTime#70215], false
(545) RepartitionByExpression
Arguments: [product#70212, plant#70213], 25
(546) Project
Arguments: [product#70212, plant#70213, orderDateTime#70214]
(547) LogicalRelation
Arguments: parquet, [systemId#70216, internalUUID#70217, plant#70218, product#70219, blockedForReplenishmentStartingFrom#70220, productionAspect#70221, salesPlant#70222, listing#70223], false
(548) Repartition
Arguments: 25, true
(549) Project
Arguments: [systemId#70216, internalUUID#70217, plant#70218, product#70219, blockedForReplenishmentStartingFrom#70220, productionAspect#70221, salesPlant#70222, listing#70223, struct(systemId, systemId#70216, internalUUID, internalUUID#70217, plant, plant#70218, product, product#70219, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70220, productionAspect, productionAspect#70221, salesPlant, salesPlant#70222, listing, listing#70223) AS productPlant#70224]
(550) Project
Arguments: [productPlant#70224]
(551) Join
Arguments: LeftOuter, ((product#70212 <=> productPlant#70224.product.internalRefUUID) AND (plant#70213 <=> productPlant#70224.plant.internalRefUUID))
(552) Project
Arguments: [product#70212, plant#70213, orderDateTime#70214, productPlant#70224]
(553) SubqueryAlias
Arguments: wl
(554) LogicalRelation
Arguments: parquet, [systemId#70225, internalUUID#70226, id#70227, displayId#70228, name#70229, category#70230, companyCode#70231, address#70232, mainDistributionChain#70233, mainPurchasingOrganization#70234, validPurchasingOrganizations#70235, productGroup#70236], false
(555) Repartition
Arguments: 25, true
(556) Project
Arguments: [internalUUID#70226, address#70232.timeZone.code AS timezonecode#70237]
(557) Join
Arguments: LeftOuter, (plant#70213 <=> internalUUID#70226)
(558) Project
Arguments: [product#70212, plant#70213, orderDateTime#70214, productPlant#70224, internalUUID#70226, CASE WHEN isnotnull(timezonecode#70237) THEN timezonecode#70237 ELSE UTC END AS timezonecode#70238]
(559) Project
Arguments: [product#70212, plant#70213, orderDateTime#70214, productPlant#70224, timezonecode#70238]
(560) LogicalRelation
Arguments: parquet, [systemId#70239, internalUUID#70240, id#70241, displayId#70242, name#70243, baseUnitOfMeasure#70244, unitOfMeasures#70245, unitOfMeasureConversions#70246, productionAspect#70247, salesAspect#70248, procurementAspect#70249, productGroup#70250], false
(561) Repartition
Arguments: 25, true
(562) Join
Arguments: LeftOuter, (product#70212 = internalUUID#70240)
(563) Project
Arguments: [product#70212, plant#70213, orderDateTime#70214, productPlant#70224, timezonecode#70238, systemId#70239, internalUUID#70240, id#70241, displayId#70242, name#70243, baseUnitOfMeasure#70244, unitOfMeasures#70245, unitOfMeasureConversions#70246, productionAspect#70247, salesAspect#70248, procurementAspect#70249, productGroup#70250, filter(unitOfMeasureConversions#70246, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#70224.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#70224.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70244.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70244.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70251]
(564) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70251.quantityNumerator), true, [quantityNumerator#70252]
(565) Project
Arguments: [product#70212, plant#70213, orderDateTime#70214, productPlant#70224, timezonecode#70238, systemId#70239, internalUUID#70240, id#70241, displayId#70242, name#70243, baseUnitOfMeasure#70244, unitOfMeasures#70245, unitOfMeasureConversions#70246, productionAspect#70247, salesAspect#70248, procurementAspect#70249, productGroup#70250, filteredUnitOfMeasureConversions#70251, quantityNumerator#70252]
(566) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70251.quantityDenominator), true, [quantityDenominator#70253]
(567) Project
Arguments: [product#70212, plant#70213, orderDateTime#70214, productPlant#70224, timezonecode#70238, systemId#70239, internalUUID#70240, id#70241, displayId#70242, name#70243, baseUnitOfMeasure#70244, unitOfMeasures#70245, unitOfMeasureConversions#70246, productionAspect#70247, salesAspect#70248, procurementAspect#70249, productGroup#70250, filteredUnitOfMeasureConversions#70251, quantityNumerator#70252, quantityDenominator#70253]
(568) Project
Arguments: [product#70212, plant#70213, orderDateTime#70214, productPlant#70224, timezonecode#70238, systemId#70239, internalUUID#70240, id#70241, displayId#70242, name#70243, baseUnitOfMeasure#70244, unitOfMeasures#70245, unitOfMeasureConversions#70246, productionAspect#70247, salesAspect#70248, procurementAspect#70249, productGroup#70250, filteredUnitOfMeasureConversions#70251, quantityNumerator#70252, quantityDenominator#70253, (cast(quantityNumerator#70252 as double) / cast(quantityDenominator#70253 as double)) AS outboundUnit#70254]
(569) Project
Arguments: [product#70212, plant#70213, orderDateTime#70214, productPlant#70224, timezonecode#70238, systemId#70239, internalUUID#70240, id#70241, displayId#70242, name#70243, baseUnitOfMeasure#70244, unitOfMeasures#70245, unitOfMeasureConversions#70246, productionAspect#70247, salesAspect#70248, procurementAspect#70249, productGroup#70250, filteredUnitOfMeasureConversions#70251, quantityNumerator#70252, quantityDenominator#70253, CASE WHEN (isnull(outboundUnit#70254) OR (outboundUnit#70254 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70254 END AS outboundUnit#70255]
(570) Project
Arguments: [product#70212, plant#70213, orderDateTime#70214, productPlant#70224, timezonecode#70238, outboundUnit#70255]
(571) Project
Arguments: [plant#70213]
(572) Deduplicate
Arguments: [plant#70213]
(573) Join
Arguments: Inner, (plantUuid#70209 = plant#70213)
(574) Project
Arguments: [plantId#70208, plantUuid#70209, storageLocId#70210, storageLocUuid#70211]
(575) Join
Arguments: Inner, (plant#70181.internalRefUUID <=> plantUuid#70209)
(576) Generate
Arguments: explode(filter(stockQuantities#70183, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#70211) AND (lambda x#69269.storageLocation.Id = storageLocId#70210)), lambda x#69269, false))), false, [stockQuantity#70256]
(577) Project
Arguments: [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183, plantId#70208, plantUuid#70209, storageLocId#70210, storageLocUuid#70211, stockQuantity#70256]
(578) Aggregate
Arguments: [plantUuid#70209, internalUUID#70179, plant#70181, product#70180, systemId#70178], [plantUuid#70209, internalUUID#70179, plant#70181, product#70180, systemId#70178, first(calculationDateTime#70182, false) AS calculationDateTime#70257, collect_list(stockQuantity#70256, 0, 0) AS stockQuantities#70258]
(579) Project
Arguments: [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70257, stockQuantities#70258]
(580) Generate
Arguments: explode(stockQuantities#70258), false, [stockQuantity#70259]
(581) Project
Arguments: [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70257, stockQuantities#70258, stockQuantity#70259]
(582) Project
Arguments: [plant#70181.id AS plant#70260, plant#70181.internalRefUUID AS plantUuid#70261, product#70180.id AS product#70262, product#70180.internalRefUUID AS productUuid#70263, calculationDateTime#70257, stockQuantity#70259.storagelocation.id AS storageLocId#70264, stockQuantity#70259.storagelocation.internalRefUUID AS storageLocUuid#70265, stockQuantity#70259.quantity.measure AS quantity#70266, stockQuantity#70259.specialStockIndicator.code AS specialStockIndicator#70267, stockQuantity#70259.stockType.code AS stockType#70268]
(583) Filter
Arguments: ((specialStockIndicator#70267 = ) AND (stockType#70268 = 01))
(584) LogicalRelation
Arguments: parquet, [product#70269, plant#70270, orderDateTime#70271, planningStartDateTime#70272], false
(585) RepartitionByExpression
Arguments: [product#70269, plant#70270], 25
(586) Project
Arguments: [product#70269, plant#70270, orderDateTime#70271]
(587) LogicalRelation
Arguments: parquet, [systemId#70273, internalUUID#70274, plant#70275, product#70276, blockedForReplenishmentStartingFrom#70277, productionAspect#70278, salesPlant#70279, listing#70280], false
(588) Repartition
Arguments: 25, true
(589) Project
Arguments: [systemId#70273, internalUUID#70274, plant#70275, product#70276, blockedForReplenishmentStartingFrom#70277, productionAspect#70278, salesPlant#70279, listing#70280, struct(systemId, systemId#70273, internalUUID, internalUUID#70274, plant, plant#70275, product, product#70276, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70277, productionAspect, productionAspect#70278, salesPlant, salesPlant#70279, listing, listing#70280) AS productPlant#70281]
(590) Project
Arguments: [productPlant#70281]
(591) Join
Arguments: LeftOuter, ((product#70269 <=> productPlant#70281.product.internalRefUUID) AND (plant#70270 <=> productPlant#70281.plant.internalRefUUID))
(592) Project
Arguments: [product#70269, plant#70270, orderDateTime#70271, productPlant#70281]
(593) SubqueryAlias
Arguments: wl
(594) LogicalRelation
Arguments: parquet, [systemId#70282, internalUUID#70283, id#70284, displayId#70285, name#70286, category#70287, companyCode#70288, address#70289, mainDistributionChain#70290, mainPurchasingOrganization#70291, validPurchasingOrganizations#70292, productGroup#70293], false
(595) Repartition
Arguments: 25, true
(596) Project
Arguments: [internalUUID#70283, address#70289.timeZone.code AS timezonecode#70294]
(597) Join
Arguments: LeftOuter, (plant#70270 <=> internalUUID#70283)
(598) Project
Arguments: [product#70269, plant#70270, orderDateTime#70271, productPlant#70281, internalUUID#70283, CASE WHEN isnotnull(timezonecode#70294) THEN timezonecode#70294 ELSE UTC END AS timezonecode#70295]
(599) Project
Arguments: [product#70269, plant#70270, orderDateTime#70271, productPlant#70281, timezonecode#70295]
(600) LogicalRelation
Arguments: parquet, [systemId#70296, internalUUID#70297, id#70298, displayId#70299, name#70300, baseUnitOfMeasure#70301, unitOfMeasures#70302, unitOfMeasureConversions#70303, productionAspect#70304, salesAspect#70305, procurementAspect#70306, productGroup#70307], false
(601) Repartition
Arguments: 25, true
(602) Join
Arguments: LeftOuter, (product#70269 = internalUUID#70297)
(603) Project
Arguments: [product#70269, plant#70270, orderDateTime#70271, productPlant#70281, timezonecode#70295, systemId#70296, internalUUID#70297, id#70298, displayId#70299, name#70300, baseUnitOfMeasure#70301, unitOfMeasures#70302, unitOfMeasureConversions#70303, productionAspect#70304, salesAspect#70305, procurementAspect#70306, productGroup#70307, filter(unitOfMeasureConversions#70303, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#70281.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#70281.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70301.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70301.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70308]
(604) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70308.quantityNumerator), true, [quantityNumerator#70309]
(605) Project
Arguments: [product#70269, plant#70270, orderDateTime#70271, productPlant#70281, timezonecode#70295, systemId#70296, internalUUID#70297, id#70298, displayId#70299, name#70300, baseUnitOfMeasure#70301, unitOfMeasures#70302, unitOfMeasureConversions#70303, productionAspect#70304, salesAspect#70305, procurementAspect#70306, productGroup#70307, filteredUnitOfMeasureConversions#70308, quantityNumerator#70309]
(606) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70308.quantityDenominator), true, [quantityDenominator#70310]
(607) Project
Arguments: [product#70269, plant#70270, orderDateTime#70271, productPlant#70281, timezonecode#70295, systemId#70296, internalUUID#70297, id#70298, displayId#70299, name#70300, baseUnitOfMeasure#70301, unitOfMeasures#70302, unitOfMeasureConversions#70303, productionAspect#70304, salesAspect#70305, procurementAspect#70306, productGroup#70307, filteredUnitOfMeasureConversions#70308, quantityNumerator#70309, quantityDenominator#70310]
(608) Project
Arguments: [product#70269, plant#70270, orderDateTime#70271, productPlant#70281, timezonecode#70295, systemId#70296, internalUUID#70297, id#70298, displayId#70299, name#70300, baseUnitOfMeasure#70301, unitOfMeasures#70302, unitOfMeasureConversions#70303, productionAspect#70304, salesAspect#70305, procurementAspect#70306, productGroup#70307, filteredUnitOfMeasureConversions#70308, quantityNumerator#70309, quantityDenominator#70310, (cast(quantityNumerator#70309 as double) / cast(quantityDenominator#70310 as double)) AS outboundUnit#70311]
(609) Project
Arguments: [product#70269, plant#70270, orderDateTime#70271, productPlant#70281, timezonecode#70295, systemId#70296, internalUUID#70297, id#70298, displayId#70299, name#70300, baseUnitOfMeasure#70301, unitOfMeasures#70302, unitOfMeasureConversions#70303, productionAspect#70304, salesAspect#70305, procurementAspect#70306, productGroup#70307, filteredUnitOfMeasureConversions#70308, quantityNumerator#70309, quantityDenominator#70310, CASE WHEN (isnull(outboundUnit#70311) OR (outboundUnit#70311 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70311 END AS outboundUnit#70312]
(610) Project
Arguments: [product#70269, plant#70270, orderDateTime#70271, productPlant#70281, timezonecode#70295, outboundUnit#70312]
(611) Join
Arguments: Inner, ((plantUuid#70261 = plant#70270) AND (productUuid#70263 = product#70269))
(612) Filter
Arguments: (calculationDateTime#70257 <= orderDateTime#70271)
(613) Project
Arguments: [plantUuid#70261 AS plant#70323, productUuid#70263 AS product#70324, storageLocId#70264, calculationDateTime#70257, quantity#70266]
(614) Aggregate
Arguments: [plant#70323, product#70324, storageLocId#70264], [plant#70323, product#70324, storageLocId#70264, max(calculationDateTime#70257) AS max_calc_datetime#70325]
(615) Join
Arguments: Inner, ((((plant#70176 <=> plant#70323) AND (product#70177 <=> product#70324)) AND (storageLocId#70126 <=> storageLocId#70264)) AND (calculationDateTime#70119 <=> max_calc_datetime#70325))
(616) Project
Arguments: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
(617) Aggregate
Arguments: [product#70177, plant#70176], [product#70177, plant#70176, sum(quantity#70128) AS quantitySum#70326, min(calculationDateTime#70119) AS minCalculationDateTime#70327]
(618) Project
Arguments: [product#70177, plant#70176, quantitySum#70326, minCalculationDateTime#70327, round(quantitySum#70326, 0) AS roundedQuantitySum#70328]
(619) Join
Arguments: LeftOuter, ((plant#69979 = plant#70176) AND (product#69978 = product#70177))
(620) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, roundedQuantitySum#70328, minCalculationDateTime#70327]
(621) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, roundedQuantitySum#70328, minCalculationDateTime#70327, CASE WHEN isnotnull(minCalculationDateTime#70327) THEN minCalculationDateTime#70327 ELSE orderDateTime#69980 END AS stockDatetime#70329]
(622) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, roundedQuantitySum#70328, minCalculationDateTime#70327, stockDatetime#70329, CASE WHEN isnotnull(roundedQuantitySum#70328) THEN array(roundedQuantitySum#70328) ELSE array(0.0) END AS stockBatchQuantities#70330]
(623) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, roundedQuantitySum#70328, minCalculationDateTime#70327, stockDatetime#70329, stockBatchQuantities#70330, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#70331]
(624) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, roundedQuantitySum#70328, stockDatetime#70329, stockBatchQuantities#70330, stockBatchShelfLifeEndDatetimes#70331]
(625) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, stockBatchShelfLifeEndDatetimes#70331]
(626) LogicalRelation
Arguments: parquet, [product#74980, plant#74981, demandChannel#74982, demandStream#74983, considerVariance#74984, demandTimeBuckets#74985, demandPointInTimeStart#74986, demandPointInTimeEnd#74987, demandPointInTime#74988], false
(627) Join
Arguments: LeftOuter, ((product#69978 = product#74980) AND (plant#69979 = plant#74981))
(628) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, stockBatchShelfLifeEndDatetimes#70331, demandChannel#74982, demandStream#74983, considerVariance#74984, demandTimeBuckets#74985, demandPointInTimeStart#74986, demandPointInTimeEnd#74987, demandPointInTime#74988, product#74980, plant#74981]
(629) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, stockBatchShelfLifeEndDatetimes#70331, demandChannel#74982, demandStream#74983, considerVariance#74984, demandTimeBuckets#74985, demandPointInTimeStart#74986, demandPointInTimeEnd#74987, demandPointInTime#74988, CASE WHEN isnotnull(product#74980) THEN struct(demandChannel, demandChannel#74982, demandStream, demandStream#74983, considerVariance, considerVariance#74984, demandTimeBuckets, demandTimeBuckets#74985, demandPointInTimeStart, demandPointInTimeStart#74986, demandPointInTimeEnd, demandPointInTimeEnd#74987, demandPointInTime, demandPointInTime#74988) ELSE cast(null as struct<demandChannel:string,demandStream:string,considerVariance:boolean,demandTimeBuckets:array<struct<demandStartDateTime:timestamp,demandQuantity:double,demandVariance:double>>,demandPointInTimeStart:timestamp,demandPointInTimeEnd:timestamp,demandPointInTime:array<struct<demandDateTime:timestamp,demandQuantity:double,demandVariance:double>>>) END AS rawDemands#69908]
(630) Aggregate
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, stockBatchShelfLifeEndDatetimes#70331], [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, stockBatchShelfLifeEndDatetimes#70331, collect_list(rawDemands#69908, 0, 0) AS rawDemands#69921]
(631) DeserializeToObject
Arguments: createexternalrow(invoke(product#69978.toString()), invoke(plant#69979.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#69980)), if (isnull(productPlant#69990)) null else createexternalrow(invoke(productPlant#69990.systemId.toString()), invoke(productPlant#69990.internalUUID.toString()), if (isnull(productPlant#69990.plant)) null else createexternalrow(invoke(productPlant#69990.plant.internalRefUUID.toString()), invoke(productPlant#69990.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#69990.product)) null else createexternalrow(invoke(productPlant#69990.product.internalRefUUID.toString()), invoke(productPlant#69990.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#69990.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#69990.productionAspect)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#69990.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#69990.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(minimumSafetyStock,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#69990.salesPlant)) null else createexternalrow(if (isnull(productPlant#69990.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#69990.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#69990.salesPlant.loadingGroup.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 9983), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 9983))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 9983).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 9983).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 9983).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#69990.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#70005.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#70022)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#70329)), mapobjects(lambdavariable(MapObject, DoubleType, true, 9984), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 9984) as double))), stockBatchQuantities#70330, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 9985), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 9985) as timestamp)))), stockBatchShelfLifeEndDatetimes#70331, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, 9986), assertnotnull(if (isnull(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, 9986))) null else createexternalrow(invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, 9986).demandChannel.toString()), invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, 9986).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, 9986).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9987), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9987))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9987).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9987).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9987).demandVariance)), StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, 9986).demandTimeBuckets, Some(class scala.collection.mutable.ArraySeq)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, 9986).demandPointInTimeStart)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, 9986).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9988), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9988))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9988).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9988).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9988).demandVariance)), StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, 9986).demandPointInTime, Some(class scala.collection.mutable.ArraySeq)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true))), rawDemands#69921, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#69963: org.apache.spark.sql.Row
(632) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@783ec352, interface org.apache.spark.sql.Row, [StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)], obj#69968: org.apache.spark.sql.Row
(633) SerializeFromObject
Arguments: [if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(0))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 0, product), StringType, ObjectType(class java.lang.String)))) AS product#69973, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(1))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 1, plant), StringType, ObjectType(class java.lang.String)))) AS plant#69974, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)))) null else named_struct(demandChannel, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(0))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 0, demandChannel), StringType, ObjectType(class java.lang.String)))), demandStream, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(1))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 1, demandStream), StringType, ObjectType(class java.lang.String)))), considerVariance, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(2))) null else invoke(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 2, considerVariance), BooleanType, ObjectType(class java.lang.Boolean)).booleanValue()), demandValues, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(3))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9974), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9974), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)), None), demandVariances, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(4))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9975), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9975), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)), None), anchorDatetimes, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(5))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9976), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9976), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 5, anchorDatetimes), ArrayType(TimestampType,false), ObjectType(class java.lang.Object)), None), anchorWeekdays, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(6))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9977), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9977), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 6, anchorWeekdays), ArrayType(StringType,false), ObjectType(class java.lang.Object)), None), anchorIndices, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(7))) null else if (invoke(class [I.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 7, anchorIndices), ArrayType(IntegerType,false), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 7, anchorIndices), ArrayType(IntegerType,false), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9978), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9978), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 7, anchorIndices), ArrayType(IntegerType,false), ObjectType(class java.lang.Object)), None))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 2, dayBucketDemands), ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandValues,ArrayType(DoubleType,false),true),StructField(demandVariances,ArrayType(DoubleType,true),true),StructField(anchorDatetimes,ArrayType(TimestampType,false),true),StructField(anchorWeekdays,ArrayType(StringType,false),true),StructField(anchorIndices,ArrayType(IntegerType,false),true)),false), ObjectType(class java.lang.Object)), None) AS dayBucketDemands#69975, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)))) null else named_struct(demandChannel, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(0))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 0, demandChannel), StringType, ObjectType(class java.lang.String)))), demandStream, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(1))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 1, demandStream), StringType, ObjectType(class java.lang.String)))), considerVariance, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(2))) null else invoke(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 2, considerVariance), BooleanType, ObjectType(class java.lang.Boolean)).booleanValue()), demandDatetimes, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9980), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9980), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandDatetimes), ArrayType(TimestampType,false), ObjectType(class java.lang.Object)), None), demandValues, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(4))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9981), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9981), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)), None), demandVariances, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(5))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 5, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 5, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9982), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9982), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 5, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)), None), horizonStartDatetime, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(6))) null else static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 6, horizonStartDatetime), TimestampType, ObjectType(class java.sql.Timestamp)))), horizonEndDatetime, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(7))) null else static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 7, horizonEndDatetime), TimestampType, ObjectType(class java.sql.Timestamp)))))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 3, pointInTimeDemands), ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandDatetimes,ArrayType(TimestampType,false),true),StructField(demandValues,ArrayType(DoubleType,false),true),StructField(demandVariances,ArrayType(DoubleType,true),true),StructField(horizonStartDatetime,TimestampType,true),StructField(horizonEndDatetime,TimestampType,true)),false), ObjectType(class java.lang.Object)), None) AS pointInTimeDemands#69976]
(634) Join
Arguments: LeftOuter, ((plant#69974 <=> plant#74631) AND (product#69973 <=> product#74630))
(635) Project
Arguments: [product#74630, plant#74631, orderDateTime#74632, productPlant#74642, timezonecode#74656, outboundUnit#74673, stockDatetime#74977, stockBatchQuantities#74978, stockBatchShelfLifeEndDatetimes#74979, plant#69974, dayBucketDemands#69975, pointInTimeDemands#69976]
(636) Project
Arguments: [product#74630, plant#74631, orderDateTime#74632, productPlant#74642, timezonecode#74656, outboundUnit#74673, stockDatetime#74977, stockBatchQuantities#74978, stockBatchShelfLifeEndDatetimes#74979, dayBucketDemands#69975, pointInTimeDemands#69976]
(637) LogicalRelation
Arguments: parquet, [marketUnit#70809, description#70810, articleHierarchy#70811, defaultCurrency#70812, responsibilities#70813, replenishmentTypes#70814, distributionCenters#70815, assignedArticleHierarchyNodes#70816, minOrderQtySetting#70817, listingCheck#70818, odsSelection#70819, demandProfiles#70820, constraintProfiles#70821, optimizationProfiles#70822, orderGroupSplitProfiles#70823, supplierMinimumProfiles#70824, multipleRestrictionProfiles#70825, preferredUomSource#70826, handlingOfUnfulfilledDemands#70827, negligibleQuantitiesThreshold#70828, eventtype#70829, minOrderQtySettingInternal#70830], false
(638) Repartition
Arguments: 25, true
(639) Filter
Arguments: (marketUnit#70809 <=> Daily_grocery)
(640) Project
Arguments: [marketUnit#70809, description#70810, articleHierarchy#70811, defaultCurrency#70812, responsibilities#70813, replenishmentTypes#70814, distributionCenters#70815, assignedArticleHierarchyNodes#70816, minOrderQtySetting#70817, listingCheck#70818, odsSelection#70819, demandProfiles#70820, constraintProfiles#70821, optimizationProfiles#70822, orderGroupSplitProfiles#70823, supplierMinimumProfiles#70824, multipleRestrictionProfiles#70825, preferredUomSource#70826, handlingOfUnfulfilledDemands#70827, negligibleQuantitiesThreshold#70828, eventtype#70829, minOrderQtySettingInternal#70830]
(641) Project
Arguments: [distributionCenters#70815]
(642) Generate
Arguments: explode(distributionCenters#70815), false, [distributionCenters#70854]
(643) Project
Arguments: [distributionCenters#70854]
(644) Generate
Arguments: explode(distributionCenters#70854.storageLocations), false, [storageLocations#70855]
(645) Project
Arguments: [distributionCenters#70854.id AS plantId#70857, distributionCenters#70854.internalRefUUID AS plantUuid#70858, storageLocations#70855]
(646) Project
Arguments: [plantId#70857, plantUuid#70858, storageLocations#70855.id AS storageLocId#70861, storageLocations#70855.internalRefUUID AS storageLocUuid#70862]
(647) LogicalRelation
Arguments: parquet, [product#70865, plant#70866, orderDateTime#70867, planningStartDateTime#70868], false
(648) RepartitionByExpression
Arguments: [product#70865, plant#70866], 25
(649) Project
Arguments: [product#70865, plant#70866, orderDateTime#70867]
(650) LogicalRelation
Arguments: parquet, [systemId#70881, internalUUID#70882, plant#70883, product#70884, blockedForReplenishmentStartingFrom#70885, productionAspect#70886, salesPlant#70887, listing#70888], false
(651) Repartition
Arguments: 25, true
(652) Project
Arguments: [systemId#70881, internalUUID#70882, plant#70883, product#70884, blockedForReplenishmentStartingFrom#70885, productionAspect#70886, salesPlant#70887, listing#70888, struct(systemId, systemId#70881, internalUUID, internalUUID#70882, plant, plant#70883, product, product#70884, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70885, productionAspect, productionAspect#70886, salesPlant, salesPlant#70887, listing, listing#70888) AS productPlant#70890]
(653) Project
Arguments: [productPlant#70890]
(654) Join
Arguments: LeftOuter, ((product#70865 <=> productPlant#70890.product.internalRefUUID) AND (plant#70866 <=> productPlant#70890.plant.internalRefUUID))
(655) Project
Arguments: [product#70865, plant#70866, orderDateTime#70867, productPlant#70890]
(656) SubqueryAlias
Arguments: wl
(657) LogicalRelation
Arguments: parquet, [systemId#70891, internalUUID#70892, id#70893, displayId#70894, name#70895, category#70896, companyCode#70897, address#70898, mainDistributionChain#70899, mainPurchasingOrganization#70900, validPurchasingOrganizations#70901, productGroup#70902], false
(658) Repartition
Arguments: 25, true
(659) Project
Arguments: [internalUUID#70892, address#70898.timeZone.code AS timezonecode#70903]
(660) Join
Arguments: LeftOuter, (plant#70866 <=> internalUUID#70892)
(661) Project
Arguments: [product#70865, plant#70866, orderDateTime#70867, productPlant#70890, internalUUID#70892, CASE WHEN isnotnull(timezonecode#70903) THEN timezonecode#70903 ELSE UTC END AS timezonecode#70917]
(662) Project
Arguments: [product#70865, plant#70866, orderDateTime#70867, productPlant#70890, timezonecode#70917]
(663) LogicalRelation
Arguments: parquet, [systemId#70918, internalUUID#70919, id#70920, displayId#70921, name#70922, baseUnitOfMeasure#70923, unitOfMeasures#70924, unitOfMeasureConversions#70925, productionAspect#70926, salesAspect#70927, procurementAspect#70928, productGroup#70929], false
(664) Repartition
Arguments: 25, true
(665) Join
Arguments: LeftOuter, (product#70865 = internalUUID#70919)
(666) Project
Arguments: [product#70865, plant#70866, orderDateTime#70867, productPlant#70890, timezonecode#70917, systemId#70918, internalUUID#70919, id#70920, displayId#70921, name#70922, baseUnitOfMeasure#70923, unitOfMeasures#70924, unitOfMeasureConversions#70925, productionAspect#70926, salesAspect#70927, procurementAspect#70928, productGroup#70929, filter(unitOfMeasureConversions#70925, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#70890.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#70890.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70923.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70923.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70943]
(667) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70943.quantityNumerator), true, [quantityNumerator#70944]
(668) Project
Arguments: [product#70865, plant#70866, orderDateTime#70867, productPlant#70890, timezonecode#70917, systemId#70918, internalUUID#70919, id#70920, displayId#70921, name#70922, baseUnitOfMeasure#70923, unitOfMeasures#70924, unitOfMeasureConversions#70925, productionAspect#70926, salesAspect#70927, procurementAspect#70928, productGroup#70929, filteredUnitOfMeasureConversions#70943, quantityNumerator#70944]
(669) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70943.quantityDenominator), true, [quantityDenominator#70946]
(670) Project
Arguments: [product#70865, plant#70866, orderDateTime#70867, productPlant#70890, timezonecode#70917, systemId#70918, internalUUID#70919, id#70920, displayId#70921, name#70922, baseUnitOfMeasure#70923, unitOfMeasures#70924, unitOfMeasureConversions#70925, productionAspect#70926, salesAspect#70927, procurementAspect#70928, productGroup#70929, filteredUnitOfMeasureConversions#70943, quantityNumerator#70944, quantityDenominator#70946]
(671) Project
Arguments: [product#70865, plant#70866, orderDateTime#70867, productPlant#70890, timezonecode#70917, systemId#70918, internalUUID#70919, id#70920, displayId#70921, name#70922, baseUnitOfMeasure#70923, unitOfMeasures#70924, unitOfMeasureConversions#70925, productionAspect#70926, salesAspect#70927, procurementAspect#70928, productGroup#70929, filteredUnitOfMeasureConversions#70943, quantityNumerator#70944, quantityDenominator#70946, (cast(quantityNumerator#70944 as double) / cast(quantityDenominator#70946 as double)) AS outboundUnit#70949]
(672) Project
Arguments: [product#70865, plant#70866, orderDateTime#70867, productPlant#70890, timezonecode#70917, systemId#70918, internalUUID#70919, id#70920, displayId#70921, name#70922, baseUnitOfMeasure#70923, unitOfMeasures#70924, unitOfMeasureConversions#70925, productionAspect#70926, salesAspect#70927, procurementAspect#70928, productGroup#70929, filteredUnitOfMeasureConversions#70943, quantityNumerator#70944, quantityDenominator#70946, CASE WHEN (isnull(outboundUnit#70949) OR (outboundUnit#70949 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70949 END AS outboundUnit#70951]
(673) Project
Arguments: [product#70865, plant#70866, orderDateTime#70867, productPlant#70890, timezonecode#70917, outboundUnit#70951]
(674) Project
Arguments: [plant#70866]
(675) Deduplicate
Arguments: [plant#70866]
(676) Join
Arguments: Inner, (plantUuid#70858 = plant#70866)
(677) Project
Arguments: [plantId#70857, plantUuid#70858, storageLocId#70861, storageLocUuid#70862]
(678) Project
Arguments: [plantId#70857, plantUuid#70858 AS plant#70807, storageLocId#70861, storageLocUuid#70862]
(679) Join
Arguments: Inner, (plant#74631 = plant#70807)
(680) Project
Arguments: [plant#74631, product#74630, orderDateTime#74632, productPlant#74642, timezonecode#74656, outboundUnit#74673, stockDatetime#74977, stockBatchQuantities#74978, stockBatchShelfLifeEndDatetimes#74979, dayBucketDemands#69975, pointInTimeDemands#69976, plantId#70857, storageLocId#70861, storageLocUuid#70862, plant#70807]
(681) LogicalRelation
Arguments: parquet, [systemId#70729, internalUUID#70730, id#70731, displayId#70732, supplier#70733, type#70734, status#70735, isMarkedForDeletion#70736, items#70737], false
(682) Repartition
Arguments: 25, true
(683) Generate
Arguments: explode(items#70737), false, [item#70753]
(684) Project
Arguments: [id#70731, internalUUID#70730, isMarkedForDeletion#70736, supplier#70733.internalRefUUID AS supplierUuid#70747, item#70753]
(685) Filter
Arguments: (((NOT isMarkedForDeletion#70736 AND NOT item#70753.deletionIndicator) AND NOT item#70753.completeIndicator) AND NOT item#70753.returnIndicator)
(686) Project
Arguments: [id#70731, internalUUID#70730, supplierUuid#70747, item#70753.plant.internalRefUUID AS plant#70770, item#70753.product.internalRefUUID AS product#70773, item#70753.plant.id AS externalPlantId#70775, item#70753.product.id AS externalProductId#70777, item#70753.storageLocation.internalRefUUID AS storageLocUuid#70778, item#70753.quantityUnit.code AS quantityUom#70779, item#70753.quantityUnit.internalRefUUID AS quantityUomUuid#70780, item#70753.quantityNumerator AS quantityNumerator#70781, item#70753.quantityDenominator AS quantityDenominator#70782, item#70753.scheduleLines AS scheduleLines#70783, item#70753.confirmations AS confirmations#70784]
(687) Join
Arguments: Inner, (((product#74630 = product#70773) AND (plant#74631 = plant#70770)) AND (storageLocUuid#70862 = storageLocUuid#70778))
(688) Project
Arguments: [product#74630, plant#74631, storageLocUuid#70862, orderDateTime#74632, productPlant#74642, timezonecode#74656, outboundUnit#74673, stockDatetime#74977, stockBatchQuantities#74978, stockBatchShelfLifeEndDatetimes#74979, dayBucketDemands#69975, pointInTimeDemands#69976, plantId#70857, storageLocId#70861, id#70731, internalUUID#70730, supplierUuid#70747, externalPlantId#70775, externalProductId#70777, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784, ... 4 more fields]
(689) Project
Arguments: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784, stockDatetime#74977, timezonecode#74656]
(690) Project
Arguments: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784, stockDatetime#74977, timezonecode#74656, filter(confirmations#70784, lambdafunction((((lambda x_2#70966.deletionIndicator = false) AND (lambda x_2#70966.isRelevantForConfirmation = true)) AND isnotnull(lambda x_2#70966.confirmedDeliveryAt)), lambda x_2#70966, false)) AS validConfirmations#70963]
(691) Project
Arguments: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784, stockDatetime#74977, timezonecode#74656, validConfirmations#70963, transform(filter(scheduleLines#70783, lambdafunction(isnotnull(lambda x_5#74163.deliveryAt), lambda x_5#74163, false)), lambdafunction(struct(scheduledDate, to_date(from_utc_timestamp(lambda x_6#74165.deliveryAt, timezonecode#74656), None, Some(UTC), false), scheduledQuantity, lambda x_6#74165.quantity), lambda x_6#74165, false)) AS scheds#74159]
(692) Project
Arguments: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784, stockDatetime#74977, timezonecode#74656, validConfirmations#70963, scheds#74159, transform(filter(validConfirmations#70963, lambdafunction(isnotnull(lambda x_9#74170.confirmedDeliveryAt), lambda x_9#74170, false)), lambdafunction(struct(confirmedDate, to_date(from_utc_timestamp(lambda x_10#74171.confirmedDeliveryAt, timezonecode#74656), None, Some(UTC), false), confirmedQuantity, lambda x_10#74171.confirmedQuantity), lambda x_10#74171, false)) AS confs#74169]
(693) Project
Arguments: [id#70731, externalProductId#70777, externalPlantId#70775, quantityUom#70779, scheds#74159, confs#74169]
(694) DeserializeToObject
Arguments: createexternalrow(invoke(id#70731.toString()), invoke(externalProductId#70777.toString()), invoke(externalPlantId#70775.toString()), invoke(quantityUom#70779.toString()), mapobjects(lambdavariable(MapObject, StructField(scheduledDate,DateType,true), StructField(scheduledQuantity,DoubleType,true), false, 11204), assertnotnull(if (isnull(lambdavariable(MapObject, StructField(scheduledDate,DateType,true), StructField(scheduledQuantity,DoubleType,true), false, 11204))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaDate(lambdavariable(MapObject, StructField(scheduledDate,DateType,true), StructField(scheduledQuantity,DoubleType,true), false, 11204).scheduledDate)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(scheduledDate,DateType,true), StructField(scheduledQuantity,DoubleType,true), false, 11204).scheduledQuantity)), StructField(scheduledDate,DateType,true), StructField(scheduledQuantity,DoubleType,true))), scheds#74159, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(confirmedDate,DateType,true), StructField(confirmedQuantity,DoubleType,true), false, 11205), assertnotnull(if (isnull(lambdavariable(MapObject, StructField(confirmedDate,DateType,true), StructField(confirmedQuantity,DoubleType,true), false, 11205))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaDate(lambdavariable(MapObject, StructField(confirmedDate,DateType,true), StructField(confirmedQuantity,DoubleType,true), false, 11205).confirmedDate)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(confirmedDate,DateType,true), StructField(confirmedQuantity,DoubleType,true), false, 11205).confirmedQuantity)), StructField(confirmedDate,DateType,true), StructField(confirmedQuantity,DoubleType,true))), confs#74169, Some(class scala.collection.mutable.ArraySeq)), StructField(id,StringType,true), StructField(externalProductId,StringType,true), StructField(externalPlantId,StringType,true), StructField(quantityUom,StringType,true), StructField(scheds,ArrayType(StructType(StructField(scheduledDate,DateType,true),StructField(scheduledQuantity,DoubleType,true)),false),true), StructField(confs,ArrayType(StructType(StructField(confirmedDate,DateType,true),StructField(confirmedQuantity,DoubleType,true)),false),true)), obj#74222: org.apache.spark.sql.Row
(695) MapPartitions
Arguments: org.apache.spark.sql.internal.UDFAdaptors$$$Lambda/0x00000008024c8f20@5ab9c689, obj#74231: org.apache.spark.sql.Row
(696) 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, id), StringType, ObjectType(class java.lang.String)))) AS id#74240, 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, externalProductId), StringType, ObjectType(class java.lang.String)))) AS externalProductId#74241, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 2, externalPlantId), StringType, ObjectType(class java.lang.String)))) AS externalPlantId#74242, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 3, quantityUom), StringType, ObjectType(class java.lang.String)))) AS quantityUom#74243, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(4))) null else static_invoke(DateTimeUtils.fromJavaDate(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 4, scheduledDate), DateType, ObjectType(class java.sql.Date)))) AS scheduledDate#74244, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(5))) null else invoke(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, scheduledQuantity), DoubleType, ObjectType(class java.lang.Double)).doubleValue()) AS scheduledQuantity#74245, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(6))) null else static_invoke(DateTimeUtils.fromJavaDate(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 6, confirmedDate), DateType, ObjectType(class java.sql.Date)))) AS confirmedDate#74246, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(7))) null else invoke(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 7, confirmedQuantity), DoubleType, ObjectType(class java.lang.Double)).doubleValue()) AS confirmedQuantity#74247]
(697) LogicalRelation
Arguments: parquet, [name#68966, category#68967, status#68969, configurationVersion#68971, businessContext#68975, message#68977, settings#68979, eventtype#68980], false
(698) Repartition
Arguments: 25, true
(699) Filter
Arguments: (isnotnull(name#68966) AND isnotnull(configurationVersion#68971))
(700) Aggregate
Arguments: [name#68966], [name#68966, max(struct(configurationVersion, configurationVersion#68971, status, status#68969, settings, settings#68979)) AS latest#68983]
(701) Project
Arguments: [name#68966, latest#68983.configurationVersion AS configurationVersion#69006, latest#68983.status AS status#69007, latest#68983.settings AS settings#69008]
(702) Filter
Arguments: ((name#68966 = OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF) AND (status#69007 = ACTIVE))
(703) Project
Arguments: [configurationVersion#69006]
(704) Join
Arguments: Cross
(705) Project
Arguments: [id#74240, externalProductId#74241, externalPlantId#74242, quantityUom#74243, scheduledDate#74244, scheduledQuantity#74245, confirmedDate#74246, confirmedQuantity#74247, configurationVersion#69006, OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF AS name#74256]
(706) Project
Arguments: [id#74240, externalProductId#74241, externalPlantId#74242, quantityUom#74243, scheduledDate#74244, scheduledQuantity#74245, confirmedDate#74246, confirmedQuantity#74247, configurationVersion#69006, name#74256, array(struct(name, PURCHASE_ORDER, value, cast(id#74240 as string)), struct(name, PRODUCT, value, externalProductId#74241), struct(name, PLANT, value, externalPlantId#74242)) AS businessContext#74276]
(707) Project
Arguments: [id#74240, externalProductId#74241, externalPlantId#74242, quantityUom#74243, scheduledDate#74244, scheduledQuantity#74245, confirmedDate#74246, confirmedQuantity#74247, configurationVersion#69006, name#74256, businessContext#74276, array(struct(variableName, PO_QTY, variableValue, cast(scheduledQuantity#74245 as string)), struct(variableName, PO_UOM, variableValue, cast(quantityUom#74243 as string)), struct(variableName, PO_DELIVERY_DATE, variableValue, cast(scheduledDate#74244 as string)), struct(variableName, CO_QTY, variableValue, cast(confirmedQuantity#74247 as string)), struct(variableName, CO_UOM, variableValue, cast(quantityUom#74243 as string)), struct(variableName, CO_DELIVERY_DATE, variableValue, cast(confirmedDate#74246 as string))) AS messageVariables#74291]
(708) Deduplicate
Arguments: [name#74256, quantityUom#74243, scheduledQuantity#74245, externalPlantId#74242, id#74240, configurationVersion#69006, confirmedQuantity#74247, confirmedDate#74246, scheduledDate#74244, businessContext#74276, messageVariables#74291, externalProductId#74241]
(709) Project
Arguments: [id#74240, externalProductId#74241, externalPlantId#74242, quantityUom#74243, scheduledDate#74244, scheduledQuantity#74245, confirmedDate#74246, confirmedQuantity#74247, configurationVersion#69006, name#74256, businessContext#74276, messageVariables#74291, 10000002106 AS executionId#74293]
(710) Project
Arguments: [id#74240, externalProductId#74241, externalPlantId#74242, quantityUom#74243, scheduledDate#74244, scheduledQuantity#74245, confirmedDate#74246, confirmedQuantity#74247, configurationVersion#69006, name#74256, businessContext#74276, messageVariables#74291, executionId#74293, Daily_grocery AS marketUnit#74468]
(711) Project
Arguments: [id#74240, externalProductId#74241, externalPlantId#74242, quantityUom#74243, scheduledDate#74244, scheduledQuantity#74245, confirmedDate#74246, confirmedQuantity#74247, configurationVersion#69006, name#74256, businessContext#74276, messageVariables#74291, executionId#74293, marketUnit#74468, 2026-08-10T09:24:03.284Z AS createdAt#74629]
(712) Project
Arguments: [name#74256, configurationVersion#69006, executionId#74293, createdAt#74629, marketUnit#74468, businessContext#74276, messageVariables#74291]
(713) Union
Arguments: false, false
(714) Project
Arguments: [to_json(struct(name, name#69888, configurationVersion, configurationVersion#69887, executionId, executionId#69895, createdAt, createdAt#69897, marketUnit, marketUnit#69896, businessContext, businessContext#69893, messageVariables, messageVariables#69894), Some(UTC)) AS value#90178]
(715) Project
Arguments: [cast(value#90178 as string) AS value#90179]
(716) Project
Arguments: [value#90179, array(struct(key, X-Tenant-ID, value, cast(6944346648028224943 as binary)), struct(key, X-Message-ID, value, cast(uuid(Some(-2696058959713926412)) as binary)), struct(key, X-Event-Type, value, cast(com.sap.dip.insight.created as binary)), struct(key, X-Event-Source, value, cast(ORDER_PROPOSAL_OPTIMIZATION as binary)), struct(key, X-BTP-Tenant-ID, value, cast(0059d9b2-605f-467b-887c-9c65d0e59daf as binary))) AS headers#90190]