== 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@60615374, [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#69015, plant#69016, orderDateTime#69017, planningStartDateTime#69018], false
(4) RepartitionByExpression
Arguments: [product#69015, plant#69016], 25
(5) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017]
(6) LogicalRelation
Arguments: parquet, [systemId#69026, internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039], false
(7) Repartition
Arguments: 25, true
(8) Project
Arguments: [systemId#69026, internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039, struct(systemId, systemId#69026, internalUUID, internalUUID#69028, plant, plant#69030, product, product#69032, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69033, productionAspect, productionAspect#69035, salesPlant, salesPlant#69037, listing, listing#69039) AS productPlant#69043]
(9) Project
Arguments: [productPlant#69043]
(10) Join
Arguments: LeftOuter, ((product#69015 <=> productPlant#69043.product.internalRefUUID) AND (plant#69016 <=> productPlant#69043.plant.internalRefUUID))
(11) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043]
(12) SubqueryAlias
Arguments: wl
(13) LogicalRelation
Arguments: parquet, [systemId#69049, internalUUID#69050, id#69051, displayId#69052, name#69053, category#69054, companyCode#69055, address#69056, mainDistributionChain#69057, mainPurchasingOrganization#69058, validPurchasingOrganizations#69059, productGroup#69060], false
(14) Repartition
Arguments: 25, true
(15) Project
Arguments: [internalUUID#69050, address#69056.timeZone.code AS timezonecode#69073]
(16) Join
Arguments: LeftOuter, (plant#69016 <=> internalUUID#69050)
(17) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, internalUUID#69050, CASE WHEN isnotnull(timezonecode#69073) THEN timezonecode#69073 ELSE UTC END AS timezonecode#69080]
(18) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080]
(19) LogicalRelation
Arguments: parquet, [systemId#69081, internalUUID#69082, id#69083, displayId#69084, name#69085, baseUnitOfMeasure#69086, unitOfMeasures#69087, unitOfMeasureConversions#69088, productionAspect#69089, salesAspect#69090, procurementAspect#69091, productGroup#69092], false
(20) Repartition
Arguments: 25, true
(21) Join
Arguments: LeftOuter, (product#69015 = internalUUID#69082)
(22) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, systemId#69081, internalUUID#69082, id#69083, displayId#69084, name#69085, baseUnitOfMeasure#69086, unitOfMeasures#69087, unitOfMeasureConversions#69088, productionAspect#69089, salesAspect#69090, procurementAspect#69091, productGroup#69092, filter(unitOfMeasureConversions#69088, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#69043.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#69043.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#69086.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69086.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#69108]
(23) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69108.quantityNumerator), true, [quantityNumerator#69123]
(24) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, systemId#69081, internalUUID#69082, id#69083, displayId#69084, name#69085, baseUnitOfMeasure#69086, unitOfMeasures#69087, unitOfMeasureConversions#69088, productionAspect#69089, salesAspect#69090, procurementAspect#69091, productGroup#69092, filteredUnitOfMeasureConversions#69108, quantityNumerator#69123]
(25) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69108.quantityDenominator), true, [quantityDenominator#69130]
(26) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, systemId#69081, internalUUID#69082, id#69083, displayId#69084, name#69085, baseUnitOfMeasure#69086, unitOfMeasures#69087, unitOfMeasureConversions#69088, productionAspect#69089, salesAspect#69090, procurementAspect#69091, productGroup#69092, filteredUnitOfMeasureConversions#69108, quantityNumerator#69123, quantityDenominator#69130]
(27) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, systemId#69081, internalUUID#69082, id#69083, displayId#69084, name#69085, baseUnitOfMeasure#69086, unitOfMeasures#69087, unitOfMeasureConversions#69088, productionAspect#69089, salesAspect#69090, procurementAspect#69091, productGroup#69092, filteredUnitOfMeasureConversions#69108, quantityNumerator#69123, quantityDenominator#69130, (cast(quantityNumerator#69123 as double) / cast(quantityDenominator#69130 as double)) AS outboundUnit#69132]
(28) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, systemId#69081, internalUUID#69082, id#69083, displayId#69084, name#69085, baseUnitOfMeasure#69086, unitOfMeasures#69087, unitOfMeasureConversions#69088, productionAspect#69089, salesAspect#69090, procurementAspect#69091, productGroup#69092, filteredUnitOfMeasureConversions#69108, quantityNumerator#69123, quantityDenominator#69130, CASE WHEN (isnull(outboundUnit#69132) OR (outboundUnit#69132 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#69132 END AS outboundUnit#69133]
(29) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133]
(30) LogicalRelation
Arguments: parquet, [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256], false
(31) Repartition
Arguments: 25, true
(32) LogicalRelation
Arguments: parquet, [marketUnit#69147, description#69151, articleHierarchy#69153, defaultCurrency#69155, responsibilities#69157, replenishmentTypes#69159, distributionCenters#69161, assignedArticleHierarchyNodes#69163, minOrderQtySetting#69165, listingCheck#69166, odsSelection#69167, demandProfiles#69168, constraintProfiles#69169, optimizationProfiles#69170, orderGroupSplitProfiles#69171, supplierMinimumProfiles#69172, multipleRestrictionProfiles#69173, preferredUomSource#69174, handlingOfUnfulfilledDemands#69175, negligibleQuantitiesThreshold#69176, eventtype#69177, minOrderQtySettingInternal#69178], false
(33) Repartition
Arguments: 25, true
(34) Filter
Arguments: (marketUnit#69147 <=> Daily_grocery)
(35) Project
Arguments: [marketUnit#69147, description#69151, articleHierarchy#69153, defaultCurrency#69155, responsibilities#69157, replenishmentTypes#69159, distributionCenters#69161, assignedArticleHierarchyNodes#69163, minOrderQtySetting#69165, listingCheck#69166, odsSelection#69167, demandProfiles#69168, constraintProfiles#69169, optimizationProfiles#69170, orderGroupSplitProfiles#69171, supplierMinimumProfiles#69172, multipleRestrictionProfiles#69173, preferredUomSource#69174, handlingOfUnfulfilledDemands#69175, negligibleQuantitiesThreshold#69176, eventtype#69177, minOrderQtySettingInternal#69178]
(36) Project
Arguments: [distributionCenters#69161]
(37) Generate
Arguments: explode(distributionCenters#69161), false, [distributionCenters#69184]
(38) Project
Arguments: [distributionCenters#69184]
(39) Generate
Arguments: explode(distributionCenters#69184.storageLocations), false, [storageLocations#69198]
(40) Project
Arguments: [distributionCenters#69184.id AS plantId#69188, distributionCenters#69184.internalRefUUID AS plantUuid#69189, storageLocations#69198]
(41) Project
Arguments: [plantId#69188, plantUuid#69189, storageLocations#69198.id AS storageLocId#69201, storageLocations#69198.internalRefUUID AS storageLocUuid#69202]
(42) LogicalRelation
Arguments: parquet, [product#69783, plant#69784, orderDateTime#69785, planningStartDateTime#69786], false
(43) RepartitionByExpression
Arguments: [product#69783, plant#69784], 25
(44) Project
Arguments: [product#69783, plant#69784, orderDateTime#69785]
(45) LogicalRelation
Arguments: parquet, [systemId#69787, internalUUID#69788, plant#69789, product#69790, blockedForReplenishmentStartingFrom#69791, productionAspect#69792, salesPlant#69793, listing#69794], false
(46) Repartition
Arguments: 25, true
(47) Project
Arguments: [systemId#69787, internalUUID#69788, plant#69789, product#69790, blockedForReplenishmentStartingFrom#69791, productionAspect#69792, salesPlant#69793, listing#69794, struct(systemId, systemId#69787, internalUUID, internalUUID#69788, plant, plant#69789, product, product#69790, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69791, productionAspect, productionAspect#69792, salesPlant, salesPlant#69793, listing, listing#69794) AS productPlant#69796]
(48) Project
Arguments: [productPlant#69796]
(49) Join
Arguments: LeftOuter, ((product#69783 <=> productPlant#69796.product.internalRefUUID) AND (plant#69784 <=> productPlant#69796.plant.internalRefUUID))
(50) Project
Arguments: [product#69783, plant#69784, orderDateTime#69785, productPlant#69796]
(51) SubqueryAlias
Arguments: wl
(52) LogicalRelation
Arguments: parquet, [systemId#69809, internalUUID#69810, id#69811, displayId#69812, name#69813, category#69814, companyCode#69815, address#69816, mainDistributionChain#69817, mainPurchasingOrganization#69818, validPurchasingOrganizations#69819, productGroup#69820], false
(53) Repartition
Arguments: 25, true
(54) Project
Arguments: [internalUUID#69810, address#69816.timeZone.code AS timezonecode#69822]
(55) Join
Arguments: LeftOuter, (plant#69784 <=> internalUUID#69810)
(56) Project
Arguments: [product#69783, plant#69784, orderDateTime#69785, productPlant#69796, internalUUID#69810, CASE WHEN isnotnull(timezonecode#69822) THEN timezonecode#69822 ELSE UTC END AS timezonecode#69824]
(57) Project
Arguments: [product#69783, plant#69784, orderDateTime#69785, productPlant#69796, timezonecode#69824]
(58) LogicalRelation
Arguments: parquet, [systemId#69837, internalUUID#69838, id#69839, displayId#69840, name#69841, baseUnitOfMeasure#69842, unitOfMeasures#69843, unitOfMeasureConversions#69844, productionAspect#69845, salesAspect#69846, procurementAspect#69847, productGroup#69848], false
(59) Repartition
Arguments: 25, true
(60) Join
Arguments: LeftOuter, (product#69783 = internalUUID#69838)
(61) Project
Arguments: [product#69783, plant#69784, orderDateTime#69785, productPlant#69796, timezonecode#69824, systemId#69837, internalUUID#69838, id#69839, displayId#69840, name#69841, baseUnitOfMeasure#69842, unitOfMeasures#69843, unitOfMeasureConversions#69844, productionAspect#69845, salesAspect#69846, procurementAspect#69847, productGroup#69848, filter(unitOfMeasureConversions#69844, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#69796.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#69796.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#69842.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69842.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#69850]
(62) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69850.quantityNumerator), true, [quantityNumerator#69852]
(63) Project
Arguments: [product#69783, plant#69784, orderDateTime#69785, productPlant#69796, timezonecode#69824, systemId#69837, internalUUID#69838, id#69839, displayId#69840, name#69841, baseUnitOfMeasure#69842, unitOfMeasures#69843, unitOfMeasureConversions#69844, productionAspect#69845, salesAspect#69846, procurementAspect#69847, productGroup#69848, filteredUnitOfMeasureConversions#69850, quantityNumerator#69852]
(64) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69850.quantityDenominator), true, [quantityDenominator#69853]
(65) Project
Arguments: [product#69783, plant#69784, orderDateTime#69785, productPlant#69796, timezonecode#69824, systemId#69837, internalUUID#69838, id#69839, displayId#69840, name#69841, baseUnitOfMeasure#69842, unitOfMeasures#69843, unitOfMeasureConversions#69844, productionAspect#69845, salesAspect#69846, procurementAspect#69847, productGroup#69848, filteredUnitOfMeasureConversions#69850, quantityNumerator#69852, quantityDenominator#69853]
(66) Project
Arguments: [product#69783, plant#69784, orderDateTime#69785, productPlant#69796, timezonecode#69824, systemId#69837, internalUUID#69838, id#69839, displayId#69840, name#69841, baseUnitOfMeasure#69842, unitOfMeasures#69843, unitOfMeasureConversions#69844, productionAspect#69845, salesAspect#69846, procurementAspect#69847, productGroup#69848, filteredUnitOfMeasureConversions#69850, quantityNumerator#69852, quantityDenominator#69853, (cast(quantityNumerator#69852 as double) / cast(quantityDenominator#69853 as double)) AS outboundUnit#69855]
(67) Project
Arguments: [product#69783, plant#69784, orderDateTime#69785, productPlant#69796, timezonecode#69824, systemId#69837, internalUUID#69838, id#69839, displayId#69840, name#69841, baseUnitOfMeasure#69842, unitOfMeasures#69843, unitOfMeasureConversions#69844, productionAspect#69845, salesAspect#69846, procurementAspect#69847, productGroup#69848, filteredUnitOfMeasureConversions#69850, quantityNumerator#69852, quantityDenominator#69853, CASE WHEN (isnull(outboundUnit#69855) OR (outboundUnit#69855 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#69855 END AS outboundUnit#69857]
(68) Project
Arguments: [product#69783, plant#69784, orderDateTime#69785, productPlant#69796, timezonecode#69824, outboundUnit#69857]
(69) Project
Arguments: [plant#69784]
(70) Deduplicate
Arguments: [plant#69784]
(71) Join
Arguments: Inner, (plantUuid#69189 = plant#69784)
(72) Project
Arguments: [plantId#69188, plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
(73) Join
Arguments: Inner, (plant#69254.internalRefUUID <=> plantUuid#69189)
(74) Generate
Arguments: explode(filter(stockQuantities#69256, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#69202) AND (lambda x#69270.storageLocation.Id = storageLocId#69201)), lambda x#69270, false))), false, [stockQuantity#69271]
(75) Project
Arguments: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, plantId#69188, plantUuid#69189, storageLocId#69201, storageLocUuid#69202, stockQuantity#69271]
(76) Aggregate
Arguments: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251], [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251, first(calculationDateTime#69255, false) AS calculationDateTime#69308, collect_list(stockQuantity#69271, 0, 0) AS stockQuantities#69309]
(77) Project
Arguments: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69308, stockQuantities#69309]
(78) Generate
Arguments: explode(stockQuantities#69309), false, [stockQuantity#69367]
(79) Project
Arguments: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69308, stockQuantities#69309, stockQuantity#69367]
(80) Project
Arguments: [plant#69254.id AS plant#69369, plant#69254.internalRefUUID AS plantUuid#69370, product#69253.id AS product#69371, product#69253.internalRefUUID AS productUuid#69372, calculationDateTime#69308, stockQuantity#69367.storagelocation.id AS storageLocId#69373, stockQuantity#69367.storagelocation.internalRefUUID AS storageLocUuid#69374, stockQuantity#69367.quantity.measure AS quantity#69375, stockQuantity#69367.specialStockIndicator.code AS specialStockIndicator#69376, stockQuantity#69367.stockType.code AS stockType#69377]
(81) Filter
Arguments: ((specialStockIndicator#69376 = ) AND (stockType#69377 = 01))
(82) LogicalRelation
Arguments: parquet, [product#69391, plant#69392, orderDateTime#69393, planningStartDateTime#69394], false
(83) RepartitionByExpression
Arguments: [product#69391, plant#69392], 25
(84) Project
Arguments: [product#69391, plant#69392, orderDateTime#69393]
(85) LogicalRelation
Arguments: parquet, [systemId#69395, internalUUID#69396, plant#69397, product#69398, blockedForReplenishmentStartingFrom#69399, productionAspect#69400, salesPlant#69401, listing#69402], false
(86) Repartition
Arguments: 25, true
(87) Project
Arguments: [systemId#69395, internalUUID#69396, plant#69397, product#69398, blockedForReplenishmentStartingFrom#69399, productionAspect#69400, salesPlant#69401, listing#69402, struct(systemId, systemId#69395, internalUUID, internalUUID#69396, plant, plant#69397, product, product#69398, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69399, productionAspect, productionAspect#69400, salesPlant, salesPlant#69401, listing, listing#69402) AS productPlant#69403]
(88) Project
Arguments: [productPlant#69403]
(89) Join
Arguments: LeftOuter, ((product#69391 <=> productPlant#69403.product.internalRefUUID) AND (plant#69392 <=> productPlant#69403.plant.internalRefUUID))
(90) Project
Arguments: [product#69391, plant#69392, orderDateTime#69393, productPlant#69403]
(91) SubqueryAlias
Arguments: wl
(92) LogicalRelation
Arguments: parquet, [systemId#69404, internalUUID#69405, id#69406, displayId#69407, name#69408, category#69409, companyCode#69410, address#69411, mainDistributionChain#69412, mainPurchasingOrganization#69413, validPurchasingOrganizations#69414, productGroup#69415], false
(93) Repartition
Arguments: 25, true
(94) Project
Arguments: [internalUUID#69405, address#69411.timeZone.code AS timezonecode#69416]
(95) Join
Arguments: LeftOuter, (plant#69392 <=> internalUUID#69405)
(96) Project
Arguments: [product#69391, plant#69392, orderDateTime#69393, productPlant#69403, internalUUID#69405, CASE WHEN isnotnull(timezonecode#69416) THEN timezonecode#69416 ELSE UTC END AS timezonecode#69417]
(97) Project
Arguments: [product#69391, plant#69392, orderDateTime#69393, productPlant#69403, timezonecode#69417]
(98) LogicalRelation
Arguments: parquet, [systemId#69418, internalUUID#69419, id#69420, displayId#69421, name#69422, baseUnitOfMeasure#69423, unitOfMeasures#69424, unitOfMeasureConversions#69425, productionAspect#69426, salesAspect#69427, procurementAspect#69428, productGroup#69429], false
(99) Repartition
Arguments: 25, true
(100) Join
Arguments: LeftOuter, (product#69391 = internalUUID#69419)
(101) Project
Arguments: [product#69391, plant#69392, orderDateTime#69393, productPlant#69403, timezonecode#69417, systemId#69418, internalUUID#69419, id#69420, displayId#69421, name#69422, baseUnitOfMeasure#69423, unitOfMeasures#69424, unitOfMeasureConversions#69425, productionAspect#69426, salesAspect#69427, procurementAspect#69428, productGroup#69429, filter(unitOfMeasureConversions#69425, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#69403.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#69403.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#69423.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69423.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#69430]
(102) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69430.quantityNumerator), true, [quantityNumerator#69431]
(103) Project
Arguments: [product#69391, plant#69392, orderDateTime#69393, productPlant#69403, timezonecode#69417, systemId#69418, internalUUID#69419, id#69420, displayId#69421, name#69422, baseUnitOfMeasure#69423, unitOfMeasures#69424, unitOfMeasureConversions#69425, productionAspect#69426, salesAspect#69427, procurementAspect#69428, productGroup#69429, filteredUnitOfMeasureConversions#69430, quantityNumerator#69431]
(104) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69430.quantityDenominator), true, [quantityDenominator#69432]
(105) Project
Arguments: [product#69391, plant#69392, orderDateTime#69393, productPlant#69403, timezonecode#69417, systemId#69418, internalUUID#69419, id#69420, displayId#69421, name#69422, baseUnitOfMeasure#69423, unitOfMeasures#69424, unitOfMeasureConversions#69425, productionAspect#69426, salesAspect#69427, procurementAspect#69428, productGroup#69429, filteredUnitOfMeasureConversions#69430, quantityNumerator#69431, quantityDenominator#69432]
(106) Project
Arguments: [product#69391, plant#69392, orderDateTime#69393, productPlant#69403, timezonecode#69417, systemId#69418, internalUUID#69419, id#69420, displayId#69421, name#69422, baseUnitOfMeasure#69423, unitOfMeasures#69424, unitOfMeasureConversions#69425, productionAspect#69426, salesAspect#69427, procurementAspect#69428, productGroup#69429, filteredUnitOfMeasureConversions#69430, quantityNumerator#69431, quantityDenominator#69432, (cast(quantityNumerator#69431 as double) / cast(quantityDenominator#69432 as double)) AS outboundUnit#69433]
(107) Project
Arguments: [product#69391, plant#69392, orderDateTime#69393, productPlant#69403, timezonecode#69417, systemId#69418, internalUUID#69419, id#69420, displayId#69421, name#69422, baseUnitOfMeasure#69423, unitOfMeasures#69424, unitOfMeasureConversions#69425, productionAspect#69426, salesAspect#69427, procurementAspect#69428, productGroup#69429, filteredUnitOfMeasureConversions#69430, quantityNumerator#69431, quantityDenominator#69432, CASE WHEN (isnull(outboundUnit#69433) OR (outboundUnit#69433 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#69433 END AS outboundUnit#69434]
(108) Project
Arguments: [product#69391, plant#69392, orderDateTime#69393, productPlant#69403, timezonecode#69417, outboundUnit#69434]
(109) Join
Arguments: Inner, ((plantUuid#69370 = plant#69392) AND (productUuid#69372 = product#69391))
(110) Filter
Arguments: (calculationDateTime#69308 <= orderDateTime#69393)
(111) Project
Arguments: [plantUuid#69370 AS plant#69448, productUuid#69372 AS product#69449, storageLocId#69373, calculationDateTime#69308, quantity#69375]
(112) LogicalRelation
Arguments: parquet, [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597], false
(113) Repartition
Arguments: 25, true
(114) LogicalRelation
Arguments: parquet, [marketUnit#69598, description#69599, articleHierarchy#69600, defaultCurrency#69601, responsibilities#69602, replenishmentTypes#69603, distributionCenters#69604, assignedArticleHierarchyNodes#69605, minOrderQtySetting#69606, listingCheck#69607, odsSelection#69608, demandProfiles#69609, constraintProfiles#69610, optimizationProfiles#69611, orderGroupSplitProfiles#69612, supplierMinimumProfiles#69613, multipleRestrictionProfiles#69614, preferredUomSource#69615, handlingOfUnfulfilledDemands#69616, negligibleQuantitiesThreshold#69617, eventtype#69618, minOrderQtySettingInternal#69619], false
(115) Repartition
Arguments: 25, true
(116) Filter
Arguments: (marketUnit#69598 <=> Daily_grocery)
(117) Project
Arguments: [marketUnit#69598, description#69599, articleHierarchy#69600, defaultCurrency#69601, responsibilities#69602, replenishmentTypes#69603, distributionCenters#69604, assignedArticleHierarchyNodes#69605, minOrderQtySetting#69606, listingCheck#69607, odsSelection#69608, demandProfiles#69609, constraintProfiles#69610, optimizationProfiles#69611, orderGroupSplitProfiles#69612, supplierMinimumProfiles#69613, multipleRestrictionProfiles#69614, preferredUomSource#69615, handlingOfUnfulfilledDemands#69616, negligibleQuantitiesThreshold#69617, eventtype#69618, minOrderQtySettingInternal#69619]
(118) Project
Arguments: [distributionCenters#69604]
(119) Generate
Arguments: explode(distributionCenters#69604), false, [distributionCenters#69622]
(120) Project
Arguments: [distributionCenters#69622]
(121) Generate
Arguments: explode(distributionCenters#69622.storageLocations), false, [storageLocations#69623]
(122) Project
Arguments: [distributionCenters#69622.id AS plantId#69624, distributionCenters#69622.internalRefUUID AS plantUuid#69625, storageLocations#69623]
(123) Project
Arguments: [plantId#69624, plantUuid#69625, storageLocations#69623.id AS storageLocId#69626, storageLocations#69623.internalRefUUID AS storageLocUuid#69627]
(124) LogicalRelation
Arguments: parquet, [product#69628, plant#69629, orderDateTime#69630, planningStartDateTime#69631], false
(125) RepartitionByExpression
Arguments: [product#69628, plant#69629], 25
(126) Project
Arguments: [product#69628, plant#69629, orderDateTime#69630]
(127) LogicalRelation
Arguments: parquet, [systemId#69632, internalUUID#69633, plant#69634, product#69635, blockedForReplenishmentStartingFrom#69636, productionAspect#69637, salesPlant#69638, listing#69639], false
(128) Repartition
Arguments: 25, true
(129) Project
Arguments: [systemId#69632, internalUUID#69633, plant#69634, product#69635, blockedForReplenishmentStartingFrom#69636, productionAspect#69637, salesPlant#69638, listing#69639, struct(systemId, systemId#69632, internalUUID, internalUUID#69633, plant, plant#69634, product, product#69635, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69636, productionAspect, productionAspect#69637, salesPlant, salesPlant#69638, listing, listing#69639) AS productPlant#69640]
(130) Project
Arguments: [productPlant#69640]
(131) Join
Arguments: LeftOuter, ((product#69628 <=> productPlant#69640.product.internalRefUUID) AND (plant#69629 <=> productPlant#69640.plant.internalRefUUID))
(132) Project
Arguments: [product#69628, plant#69629, orderDateTime#69630, productPlant#69640]
(133) SubqueryAlias
Arguments: wl
(134) LogicalRelation
Arguments: parquet, [systemId#69641, internalUUID#69642, id#69643, displayId#69644, name#69645, category#69646, companyCode#69647, address#69648, mainDistributionChain#69649, mainPurchasingOrganization#69650, validPurchasingOrganizations#69651, productGroup#69652], false
(135) Repartition
Arguments: 25, true
(136) Project
Arguments: [internalUUID#69642, address#69648.timeZone.code AS timezonecode#69653]
(137) Join
Arguments: LeftOuter, (plant#69629 <=> internalUUID#69642)
(138) Project
Arguments: [product#69628, plant#69629, orderDateTime#69630, productPlant#69640, internalUUID#69642, CASE WHEN isnotnull(timezonecode#69653) THEN timezonecode#69653 ELSE UTC END AS timezonecode#69654]
(139) Project
Arguments: [product#69628, plant#69629, orderDateTime#69630, productPlant#69640, timezonecode#69654]
(140) LogicalRelation
Arguments: parquet, [systemId#69655, internalUUID#69656, id#69657, displayId#69658, name#69659, baseUnitOfMeasure#69660, unitOfMeasures#69661, unitOfMeasureConversions#69662, productionAspect#69663, salesAspect#69664, procurementAspect#69665, productGroup#69666], false
(141) Repartition
Arguments: 25, true
(142) Join
Arguments: LeftOuter, (product#69628 = internalUUID#69656)
(143) Project
Arguments: [product#69628, plant#69629, orderDateTime#69630, productPlant#69640, timezonecode#69654, systemId#69655, internalUUID#69656, id#69657, displayId#69658, name#69659, baseUnitOfMeasure#69660, unitOfMeasures#69661, unitOfMeasureConversions#69662, productionAspect#69663, salesAspect#69664, procurementAspect#69665, productGroup#69666, filter(unitOfMeasureConversions#69662, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#69640.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#69640.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#69660.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69660.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#69667]
(144) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69667.quantityNumerator), true, [quantityNumerator#69668]
(145) Project
Arguments: [product#69628, plant#69629, orderDateTime#69630, productPlant#69640, timezonecode#69654, systemId#69655, internalUUID#69656, id#69657, displayId#69658, name#69659, baseUnitOfMeasure#69660, unitOfMeasures#69661, unitOfMeasureConversions#69662, productionAspect#69663, salesAspect#69664, procurementAspect#69665, productGroup#69666, filteredUnitOfMeasureConversions#69667, quantityNumerator#69668]
(146) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69667.quantityDenominator), true, [quantityDenominator#69669]
(147) Project
Arguments: [product#69628, plant#69629, orderDateTime#69630, productPlant#69640, timezonecode#69654, systemId#69655, internalUUID#69656, id#69657, displayId#69658, name#69659, baseUnitOfMeasure#69660, unitOfMeasures#69661, unitOfMeasureConversions#69662, productionAspect#69663, salesAspect#69664, procurementAspect#69665, productGroup#69666, filteredUnitOfMeasureConversions#69667, quantityNumerator#69668, quantityDenominator#69669]
(148) Project
Arguments: [product#69628, plant#69629, orderDateTime#69630, productPlant#69640, timezonecode#69654, systemId#69655, internalUUID#69656, id#69657, displayId#69658, name#69659, baseUnitOfMeasure#69660, unitOfMeasures#69661, unitOfMeasureConversions#69662, productionAspect#69663, salesAspect#69664, procurementAspect#69665, productGroup#69666, filteredUnitOfMeasureConversions#69667, quantityNumerator#69668, quantityDenominator#69669, (cast(quantityNumerator#69668 as double) / cast(quantityDenominator#69669 as double)) AS outboundUnit#69670]
(149) Project
Arguments: [product#69628, plant#69629, orderDateTime#69630, productPlant#69640, timezonecode#69654, systemId#69655, internalUUID#69656, id#69657, displayId#69658, name#69659, baseUnitOfMeasure#69660, unitOfMeasures#69661, unitOfMeasureConversions#69662, productionAspect#69663, salesAspect#69664, procurementAspect#69665, productGroup#69666, filteredUnitOfMeasureConversions#69667, quantityNumerator#69668, quantityDenominator#69669, CASE WHEN (isnull(outboundUnit#69670) OR (outboundUnit#69670 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#69670 END AS outboundUnit#69671]
(150) Project
Arguments: [product#69628, plant#69629, orderDateTime#69630, productPlant#69640, timezonecode#69654, outboundUnit#69671]
(151) Project
Arguments: [plant#69629]
(152) Deduplicate
Arguments: [plant#69629]
(153) Join
Arguments: Inner, (plantUuid#69625 = plant#69629)
(154) Project
Arguments: [plantId#69624, plantUuid#69625, storageLocId#69626, storageLocUuid#69627]
(155) Join
Arguments: Inner, (plant#69595.internalRefUUID <=> plantUuid#69625)
(156) Generate
Arguments: explode(filter(stockQuantities#69597, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#69627) AND (lambda x#69270.storageLocation.Id = storageLocId#69626)), lambda x#69270, false))), false, [stockQuantity#69672]
(157) Project
Arguments: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597, plantId#69624, plantUuid#69625, storageLocId#69626, storageLocUuid#69627, stockQuantity#69672]
(158) Aggregate
Arguments: [plantUuid#69625, internalUUID#69593, plant#69595, product#69594, systemId#69592], [plantUuid#69625, internalUUID#69593, plant#69595, product#69594, systemId#69592, first(calculationDateTime#69596, false) AS calculationDateTime#69673, collect_list(stockQuantity#69672, 0, 0) AS stockQuantities#69674]
(159) Project
Arguments: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69673, stockQuantities#69674]
(160) Generate
Arguments: explode(stockQuantities#69674), false, [stockQuantity#69675]
(161) Project
Arguments: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69673, stockQuantities#69674, stockQuantity#69675]
(162) Project
Arguments: [plant#69595.id AS plant#69676, plant#69595.internalRefUUID AS plantUuid#69677, product#69594.id AS product#69678, product#69594.internalRefUUID AS productUuid#69679, calculationDateTime#69673, stockQuantity#69675.storagelocation.id AS storageLocId#69680, stockQuantity#69675.storagelocation.internalRefUUID AS storageLocUuid#69681, stockQuantity#69675.quantity.measure AS quantity#69682, stockQuantity#69675.specialStockIndicator.code AS specialStockIndicator#69683, stockQuantity#69675.stockType.code AS stockType#69684]
(163) Filter
Arguments: ((specialStockIndicator#69683 = ) AND (stockType#69684 = 01))
(164) LogicalRelation
Arguments: parquet, [product#69685, plant#69686, orderDateTime#69687, planningStartDateTime#69688], false
(165) RepartitionByExpression
Arguments: [product#69685, plant#69686], 25
(166) Project
Arguments: [product#69685, plant#69686, orderDateTime#69687]
(167) LogicalRelation
Arguments: parquet, [systemId#69689, internalUUID#69690, plant#69691, product#69692, blockedForReplenishmentStartingFrom#69693, productionAspect#69694, salesPlant#69695, listing#69696], false
(168) Repartition
Arguments: 25, true
(169) Project
Arguments: [systemId#69689, internalUUID#69690, plant#69691, product#69692, blockedForReplenishmentStartingFrom#69693, productionAspect#69694, salesPlant#69695, listing#69696, struct(systemId, systemId#69689, internalUUID, internalUUID#69690, plant, plant#69691, product, product#69692, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69693, productionAspect, productionAspect#69694, salesPlant, salesPlant#69695, listing, listing#69696) AS productPlant#69697]
(170) Project
Arguments: [productPlant#69697]
(171) Join
Arguments: LeftOuter, ((product#69685 <=> productPlant#69697.product.internalRefUUID) AND (plant#69686 <=> productPlant#69697.plant.internalRefUUID))
(172) Project
Arguments: [product#69685, plant#69686, orderDateTime#69687, productPlant#69697]
(173) SubqueryAlias
Arguments: wl
(174) LogicalRelation
Arguments: parquet, [systemId#69698, internalUUID#69699, id#69700, displayId#69701, name#69702, category#69703, companyCode#69704, address#69705, mainDistributionChain#69706, mainPurchasingOrganization#69707, validPurchasingOrganizations#69708, productGroup#69709], false
(175) Repartition
Arguments: 25, true
(176) Project
Arguments: [internalUUID#69699, address#69705.timeZone.code AS timezonecode#69710]
(177) Join
Arguments: LeftOuter, (plant#69686 <=> internalUUID#69699)
(178) Project
Arguments: [product#69685, plant#69686, orderDateTime#69687, productPlant#69697, internalUUID#69699, CASE WHEN isnotnull(timezonecode#69710) THEN timezonecode#69710 ELSE UTC END AS timezonecode#69711]
(179) Project
Arguments: [product#69685, plant#69686, orderDateTime#69687, productPlant#69697, timezonecode#69711]
(180) LogicalRelation
Arguments: parquet, [systemId#69712, internalUUID#69713, id#69714, displayId#69715, name#69716, baseUnitOfMeasure#69717, unitOfMeasures#69718, unitOfMeasureConversions#69719, productionAspect#69720, salesAspect#69721, procurementAspect#69722, productGroup#69723], false
(181) Repartition
Arguments: 25, true
(182) Join
Arguments: LeftOuter, (product#69685 = internalUUID#69713)
(183) Project
Arguments: [product#69685, plant#69686, orderDateTime#69687, productPlant#69697, timezonecode#69711, systemId#69712, internalUUID#69713, id#69714, displayId#69715, name#69716, baseUnitOfMeasure#69717, unitOfMeasures#69718, unitOfMeasureConversions#69719, productionAspect#69720, salesAspect#69721, procurementAspect#69722, productGroup#69723, filter(unitOfMeasureConversions#69719, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#69697.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#69697.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#69717.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69717.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#69724]
(184) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69724.quantityNumerator), true, [quantityNumerator#69725]
(185) Project
Arguments: [product#69685, plant#69686, orderDateTime#69687, productPlant#69697, timezonecode#69711, systemId#69712, internalUUID#69713, id#69714, displayId#69715, name#69716, baseUnitOfMeasure#69717, unitOfMeasures#69718, unitOfMeasureConversions#69719, productionAspect#69720, salesAspect#69721, procurementAspect#69722, productGroup#69723, filteredUnitOfMeasureConversions#69724, quantityNumerator#69725]
(186) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69724.quantityDenominator), true, [quantityDenominator#69726]
(187) Project
Arguments: [product#69685, plant#69686, orderDateTime#69687, productPlant#69697, timezonecode#69711, systemId#69712, internalUUID#69713, id#69714, displayId#69715, name#69716, baseUnitOfMeasure#69717, unitOfMeasures#69718, unitOfMeasureConversions#69719, productionAspect#69720, salesAspect#69721, procurementAspect#69722, productGroup#69723, filteredUnitOfMeasureConversions#69724, quantityNumerator#69725, quantityDenominator#69726]
(188) Project
Arguments: [product#69685, plant#69686, orderDateTime#69687, productPlant#69697, timezonecode#69711, systemId#69712, internalUUID#69713, id#69714, displayId#69715, name#69716, baseUnitOfMeasure#69717, unitOfMeasures#69718, unitOfMeasureConversions#69719, productionAspect#69720, salesAspect#69721, procurementAspect#69722, productGroup#69723, filteredUnitOfMeasureConversions#69724, quantityNumerator#69725, quantityDenominator#69726, (cast(quantityNumerator#69725 as double) / cast(quantityDenominator#69726 as double)) AS outboundUnit#69727]
(189) Project
Arguments: [product#69685, plant#69686, orderDateTime#69687, productPlant#69697, timezonecode#69711, systemId#69712, internalUUID#69713, id#69714, displayId#69715, name#69716, baseUnitOfMeasure#69717, unitOfMeasures#69718, unitOfMeasureConversions#69719, productionAspect#69720, salesAspect#69721, procurementAspect#69722, productGroup#69723, filteredUnitOfMeasureConversions#69724, quantityNumerator#69725, quantityDenominator#69726, CASE WHEN (isnull(outboundUnit#69727) OR (outboundUnit#69727 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#69727 END AS outboundUnit#69728]
(190) Project
Arguments: [product#69685, plant#69686, orderDateTime#69687, productPlant#69697, timezonecode#69711, outboundUnit#69728]
(191) Join
Arguments: Inner, ((plantUuid#69677 = plant#69686) AND (productUuid#69679 = product#69685))
(192) Filter
Arguments: (calculationDateTime#69673 <= orderDateTime#69687)
(193) Project
Arguments: [plantUuid#69677 AS plant#69729, productUuid#69679 AS product#69730, storageLocId#69680, calculationDateTime#69673, quantity#69682]
(194) Aggregate
Arguments: [plant#69729, product#69730, storageLocId#69680], [plant#69729, product#69730, storageLocId#69680, max(calculationDateTime#69673) AS max_calc_datetime#69450]
(195) Join
Arguments: Inner, ((((plant#69448 <=> plant#69729) AND (product#69449 <=> product#69730)) AND (storageLocId#69373 <=> storageLocId#69680)) AND (calculationDateTime#69308 <=> max_calc_datetime#69450))
(196) Project
Arguments: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308, quantity#69375]
(197) Aggregate
Arguments: [product#69449, plant#69448], [product#69449, plant#69448, sum(quantity#69375) AS quantitySum#69753, min(calculationDateTime#69308) AS minCalculationDateTime#69754]
(198) Project
Arguments: [product#69449, plant#69448, quantitySum#69753, minCalculationDateTime#69754, round(quantitySum#69753, 0) AS roundedQuantitySum#69770]
(199) Join
Arguments: LeftOuter, ((plant#69016 = plant#69448) AND (product#69015 = product#69449))
(200) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, roundedQuantitySum#69770, minCalculationDateTime#69754]
(201) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, roundedQuantitySum#69770, minCalculationDateTime#69754, CASE WHEN isnotnull(minCalculationDateTime#69754) THEN minCalculationDateTime#69754 ELSE orderDateTime#69017 END AS stockDatetime#69867]
(202) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, roundedQuantitySum#69770, minCalculationDateTime#69754, stockDatetime#69867, CASE WHEN isnotnull(roundedQuantitySum#69770) THEN array(roundedQuantitySum#69770) ELSE array(0.0) END AS stockBatchQuantities#69870]
(203) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, roundedQuantitySum#69770, minCalculationDateTime#69754, stockDatetime#69867, stockBatchQuantities#69870, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#69872]
(204) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, roundedQuantitySum#69770, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872]
(205) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872]
(206) LogicalRelation
Arguments: parquet, [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906], false
(207) Join
Arguments: LeftOuter, ((product#69015 = product#69898) AND (plant#69016 = plant#69899))
(208) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
(209) Filter
Arguments: (((size(demandTimeBuckets#69903, true) = 0) OR isnull(demandTimeBuckets#69903)) AND ((size(demandPointInTime#69906, true) = 0) OR isnull(demandPointInTime#69906)))
(210) Project
Arguments: [productPlant#69043.product.id AS product#69909, productPlant#69043.plant.id AS plant#69910]
(211) Project
Arguments: [product#69909, plant#69910, 1 AS configurationVersion#69913]
(212) Project
Arguments: [product#69909, plant#69910, configurationVersion#69913, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION AS name#69914]
(213) Project
Arguments: [product#69909, plant#69910, configurationVersion#69913, name#69914, array(struct(name, PRODUCT, value, cast(product#69909 as string)), struct(name, PLANT, value, cast(plant#69910 as string))) AS businessContext#69919]
(214) Project
Arguments: [product#69909, plant#69910, configurationVersion#69913, name#69914, businessContext#69919, cast(array() as array<struct<variableName:string,variableValue:string>>) AS messageVariables#69920]
(215) Deduplicate
Arguments: [businessContext#69919, messageVariables#69920, configurationVersion#69913, product#69909, plant#69910, name#69914]
(216) Project
Arguments: [product#69909, plant#69910, configurationVersion#69913, name#69914, businessContext#69919, messageVariables#69920, 10000002107 AS executionId#69940]
(217) Project
Arguments: [product#69909, plant#69910, configurationVersion#69913, name#69914, businessContext#69919, messageVariables#69920, executionId#69940, Daily_grocery AS marketUnit#69941]
(218) Project
Arguments: [product#69909, plant#69910, configurationVersion#69913, name#69914, businessContext#69919, messageVariables#69920, executionId#69940, marketUnit#69941, 2026-08-10T09:23:51.581Z AS createdAt#69962]
(219) Project
Arguments: [name#69914, configurationVersion#69913, executionId#69940, createdAt#69962, marketUnit#69941, businessContext#69919, messageVariables#69920]
(220) LogicalRelation
Arguments: parquet, [product#74294, plant#74295, orderDateTime#74296, planningStartDateTime#74297], false
(221) RepartitionByExpression
Arguments: [product#74294, plant#74295], 25
(222) Project
Arguments: [product#74294, plant#74295, orderDateTime#74296]
(223) LogicalRelation
Arguments: parquet, [systemId#74298, internalUUID#74299, plant#74300, product#74301, blockedForReplenishmentStartingFrom#74302, productionAspect#74303, salesPlant#74304, listing#74305], false
(224) Repartition
Arguments: 25, true
(225) Project
Arguments: [systemId#74298, internalUUID#74299, plant#74300, product#74301, blockedForReplenishmentStartingFrom#74302, productionAspect#74303, salesPlant#74304, listing#74305, struct(systemId, systemId#74298, internalUUID, internalUUID#74299, plant, plant#74300, product, product#74301, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#74302, productionAspect, productionAspect#74303, salesPlant, salesPlant#74304, listing, listing#74305) AS productPlant#74306]
(226) Project
Arguments: [productPlant#74306]
(227) Join
Arguments: LeftOuter, ((product#74294 <=> productPlant#74306.product.internalRefUUID) AND (plant#74295 <=> productPlant#74306.plant.internalRefUUID))
(228) Project
Arguments: [product#74294, plant#74295, orderDateTime#74296, productPlant#74306]
(229) SubqueryAlias
Arguments: wl
(230) LogicalRelation
Arguments: parquet, [systemId#74307, internalUUID#74308, id#74309, displayId#74310, name#74311, category#74312, companyCode#74313, address#74314, mainDistributionChain#74315, mainPurchasingOrganization#74316, validPurchasingOrganizations#74317, productGroup#74318], false
(231) Repartition
Arguments: 25, true
(232) Project
Arguments: [internalUUID#74308, address#74314.timeZone.code AS timezonecode#74319]
(233) Join
Arguments: LeftOuter, (plant#74295 <=> internalUUID#74308)
(234) Project
Arguments: [product#74294, plant#74295, orderDateTime#74296, productPlant#74306, internalUUID#74308, CASE WHEN isnotnull(timezonecode#74319) THEN timezonecode#74319 ELSE UTC END AS timezonecode#74320]
(235) Project
Arguments: [product#74294, plant#74295, orderDateTime#74296, productPlant#74306, timezonecode#74320]
(236) LogicalRelation
Arguments: parquet, [systemId#74321, internalUUID#74322, id#74323, displayId#74324, name#74325, baseUnitOfMeasure#74326, unitOfMeasures#74327, unitOfMeasureConversions#74328, productionAspect#74329, salesAspect#74330, procurementAspect#74331, productGroup#74332], false
(237) Repartition
Arguments: 25, true
(238) Join
Arguments: LeftOuter, (product#74294 = internalUUID#74322)
(239) Project
Arguments: [product#74294, plant#74295, orderDateTime#74296, productPlant#74306, timezonecode#74320, systemId#74321, internalUUID#74322, id#74323, displayId#74324, name#74325, baseUnitOfMeasure#74326, unitOfMeasures#74327, unitOfMeasureConversions#74328, productionAspect#74329, salesAspect#74330, procurementAspect#74331, productGroup#74332, filter(unitOfMeasureConversions#74328, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#74306.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#74306.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#74326.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#74326.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#74333]
(240) Generate
Arguments: explode(filteredUnitOfMeasureConversions#74333.quantityNumerator), true, [quantityNumerator#74334]
(241) Project
Arguments: [product#74294, plant#74295, orderDateTime#74296, productPlant#74306, timezonecode#74320, systemId#74321, internalUUID#74322, id#74323, displayId#74324, name#74325, baseUnitOfMeasure#74326, unitOfMeasures#74327, unitOfMeasureConversions#74328, productionAspect#74329, salesAspect#74330, procurementAspect#74331, productGroup#74332, filteredUnitOfMeasureConversions#74333, quantityNumerator#74334]
(242) Generate
Arguments: explode(filteredUnitOfMeasureConversions#74333.quantityDenominator), true, [quantityDenominator#74335]
(243) Project
Arguments: [product#74294, plant#74295, orderDateTime#74296, productPlant#74306, timezonecode#74320, systemId#74321, internalUUID#74322, id#74323, displayId#74324, name#74325, baseUnitOfMeasure#74326, unitOfMeasures#74327, unitOfMeasureConversions#74328, productionAspect#74329, salesAspect#74330, procurementAspect#74331, productGroup#74332, filteredUnitOfMeasureConversions#74333, quantityNumerator#74334, quantityDenominator#74335]
(244) Project
Arguments: [product#74294, plant#74295, orderDateTime#74296, productPlant#74306, timezonecode#74320, systemId#74321, internalUUID#74322, id#74323, displayId#74324, name#74325, baseUnitOfMeasure#74326, unitOfMeasures#74327, unitOfMeasureConversions#74328, productionAspect#74329, salesAspect#74330, procurementAspect#74331, productGroup#74332, filteredUnitOfMeasureConversions#74333, quantityNumerator#74334, quantityDenominator#74335, (cast(quantityNumerator#74334 as double) / cast(quantityDenominator#74335 as double)) AS outboundUnit#74336]
(245) Project
Arguments: [product#74294, plant#74295, orderDateTime#74296, productPlant#74306, timezonecode#74320, systemId#74321, internalUUID#74322, id#74323, displayId#74324, name#74325, baseUnitOfMeasure#74326, unitOfMeasures#74327, unitOfMeasureConversions#74328, productionAspect#74329, salesAspect#74330, procurementAspect#74331, productGroup#74332, filteredUnitOfMeasureConversions#74333, quantityNumerator#74334, quantityDenominator#74335, CASE WHEN (isnull(outboundUnit#74336) OR (outboundUnit#74336 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#74336 END AS outboundUnit#74337]
(246) Project
Arguments: [product#74294, plant#74295, orderDateTime#74296, productPlant#74306, timezonecode#74320, outboundUnit#74337]
(247) LogicalRelation
Arguments: parquet, [systemId#74338, internalUUID#74339, product#74340, plant#74341, calculationDateTime#74342, stockQuantities#74343], false
(248) Repartition
Arguments: 25, true
(249) LogicalRelation
Arguments: parquet, [marketUnit#74344, description#74345, articleHierarchy#74346, defaultCurrency#74347, responsibilities#74348, replenishmentTypes#74349, distributionCenters#74350, assignedArticleHierarchyNodes#74351, minOrderQtySetting#74352, listingCheck#74353, odsSelection#74354, demandProfiles#74355, constraintProfiles#74356, optimizationProfiles#74357, orderGroupSplitProfiles#74358, supplierMinimumProfiles#74359, multipleRestrictionProfiles#74360, preferredUomSource#74361, handlingOfUnfulfilledDemands#74362, negligibleQuantitiesThreshold#74363, eventtype#74364, minOrderQtySettingInternal#74365], false
(250) Repartition
Arguments: 25, true
(251) Filter
Arguments: (marketUnit#74344 <=> Daily_grocery)
(252) Project
Arguments: [marketUnit#74344, description#74345, articleHierarchy#74346, defaultCurrency#74347, responsibilities#74348, replenishmentTypes#74349, distributionCenters#74350, assignedArticleHierarchyNodes#74351, minOrderQtySetting#74352, listingCheck#74353, odsSelection#74354, demandProfiles#74355, constraintProfiles#74356, optimizationProfiles#74357, orderGroupSplitProfiles#74358, supplierMinimumProfiles#74359, multipleRestrictionProfiles#74360, preferredUomSource#74361, handlingOfUnfulfilledDemands#74362, negligibleQuantitiesThreshold#74363, eventtype#74364, minOrderQtySettingInternal#74365]
(253) Project
Arguments: [distributionCenters#74350]
(254) Generate
Arguments: explode(distributionCenters#74350), false, [distributionCenters#74366]
(255) Project
Arguments: [distributionCenters#74366]
(256) Generate
Arguments: explode(distributionCenters#74366.storageLocations), false, [storageLocations#74367]
(257) Project
Arguments: [distributionCenters#74366.id AS plantId#74368, distributionCenters#74366.internalRefUUID AS plantUuid#74369, storageLocations#74367]
(258) Project
Arguments: [plantId#74368, plantUuid#74369, storageLocations#74367.id AS storageLocId#74370, storageLocations#74367.internalRefUUID AS storageLocUuid#74371]
(259) LogicalRelation
Arguments: parquet, [product#74372, plant#74373, orderDateTime#74374, planningStartDateTime#74375], false
(260) RepartitionByExpression
Arguments: [product#74372, plant#74373], 25
(261) Project
Arguments: [product#74372, plant#74373, orderDateTime#74374]
(262) LogicalRelation
Arguments: parquet, [systemId#74376, internalUUID#74377, plant#74378, product#74379, blockedForReplenishmentStartingFrom#74380, productionAspect#74381, salesPlant#74382, listing#74383], false
(263) Repartition
Arguments: 25, true
(264) Project
Arguments: [systemId#74376, internalUUID#74377, plant#74378, product#74379, blockedForReplenishmentStartingFrom#74380, productionAspect#74381, salesPlant#74382, listing#74383, struct(systemId, systemId#74376, internalUUID, internalUUID#74377, plant, plant#74378, product, product#74379, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#74380, productionAspect, productionAspect#74381, salesPlant, salesPlant#74382, listing, listing#74383) AS productPlant#74384]
(265) Project
Arguments: [productPlant#74384]
(266) Join
Arguments: LeftOuter, ((product#74372 <=> productPlant#74384.product.internalRefUUID) AND (plant#74373 <=> productPlant#74384.plant.internalRefUUID))
(267) Project
Arguments: [product#74372, plant#74373, orderDateTime#74374, productPlant#74384]
(268) SubqueryAlias
Arguments: wl
(269) LogicalRelation
Arguments: parquet, [systemId#74385, internalUUID#74386, id#74387, displayId#74388, name#74389, category#74390, companyCode#74391, address#74392, mainDistributionChain#74393, mainPurchasingOrganization#74394, validPurchasingOrganizations#74395, productGroup#74396], false
(270) Repartition
Arguments: 25, true
(271) Project
Arguments: [internalUUID#74386, address#74392.timeZone.code AS timezonecode#74397]
(272) Join
Arguments: LeftOuter, (plant#74373 <=> internalUUID#74386)
(273) Project
Arguments: [product#74372, plant#74373, orderDateTime#74374, productPlant#74384, internalUUID#74386, CASE WHEN isnotnull(timezonecode#74397) THEN timezonecode#74397 ELSE UTC END AS timezonecode#74398]
(274) Project
Arguments: [product#74372, plant#74373, orderDateTime#74374, productPlant#74384, timezonecode#74398]
(275) LogicalRelation
Arguments: parquet, [systemId#74399, internalUUID#74400, id#74401, displayId#74402, name#74403, baseUnitOfMeasure#74404, unitOfMeasures#74405, unitOfMeasureConversions#74406, productionAspect#74407, salesAspect#74408, procurementAspect#74409, productGroup#74410], false
(276) Repartition
Arguments: 25, true
(277) Join
Arguments: LeftOuter, (product#74372 = internalUUID#74400)
(278) Project
Arguments: [product#74372, plant#74373, orderDateTime#74374, productPlant#74384, timezonecode#74398, systemId#74399, internalUUID#74400, id#74401, displayId#74402, name#74403, baseUnitOfMeasure#74404, unitOfMeasures#74405, unitOfMeasureConversions#74406, productionAspect#74407, salesAspect#74408, procurementAspect#74409, productGroup#74410, filter(unitOfMeasureConversions#74406, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#74384.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#74384.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#74404.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#74404.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#74411]
(279) Generate
Arguments: explode(filteredUnitOfMeasureConversions#74411.quantityNumerator), true, [quantityNumerator#74412]
(280) Project
Arguments: [product#74372, plant#74373, orderDateTime#74374, productPlant#74384, timezonecode#74398, systemId#74399, internalUUID#74400, id#74401, displayId#74402, name#74403, baseUnitOfMeasure#74404, unitOfMeasures#74405, unitOfMeasureConversions#74406, productionAspect#74407, salesAspect#74408, procurementAspect#74409, productGroup#74410, filteredUnitOfMeasureConversions#74411, quantityNumerator#74412]
(281) Generate
Arguments: explode(filteredUnitOfMeasureConversions#74411.quantityDenominator), true, [quantityDenominator#74413]
(282) Project
Arguments: [product#74372, plant#74373, orderDateTime#74374, productPlant#74384, timezonecode#74398, systemId#74399, internalUUID#74400, id#74401, displayId#74402, name#74403, baseUnitOfMeasure#74404, unitOfMeasures#74405, unitOfMeasureConversions#74406, productionAspect#74407, salesAspect#74408, procurementAspect#74409, productGroup#74410, filteredUnitOfMeasureConversions#74411, quantityNumerator#74412, quantityDenominator#74413]
(283) Project
Arguments: [product#74372, plant#74373, orderDateTime#74374, productPlant#74384, timezonecode#74398, systemId#74399, internalUUID#74400, id#74401, displayId#74402, name#74403, baseUnitOfMeasure#74404, unitOfMeasures#74405, unitOfMeasureConversions#74406, productionAspect#74407, salesAspect#74408, procurementAspect#74409, productGroup#74410, filteredUnitOfMeasureConversions#74411, quantityNumerator#74412, quantityDenominator#74413, (cast(quantityNumerator#74412 as double) / cast(quantityDenominator#74413 as double)) AS outboundUnit#74414]
(284) Project
Arguments: [product#74372, plant#74373, orderDateTime#74374, productPlant#74384, timezonecode#74398, systemId#74399, internalUUID#74400, id#74401, displayId#74402, name#74403, baseUnitOfMeasure#74404, unitOfMeasures#74405, unitOfMeasureConversions#74406, productionAspect#74407, salesAspect#74408, procurementAspect#74409, productGroup#74410, filteredUnitOfMeasureConversions#74411, quantityNumerator#74412, quantityDenominator#74413, CASE WHEN (isnull(outboundUnit#74414) OR (outboundUnit#74414 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#74414 END AS outboundUnit#74415]
(285) Project
Arguments: [product#74372, plant#74373, orderDateTime#74374, productPlant#74384, timezonecode#74398, outboundUnit#74415]
(286) Project
Arguments: [plant#74373]
(287) Deduplicate
Arguments: [plant#74373]
(288) Join
Arguments: Inner, (plantUuid#74369 = plant#74373)
(289) Project
Arguments: [plantId#74368, plantUuid#74369, storageLocId#74370, storageLocUuid#74371]
(290) Join
Arguments: Inner, (plant#74341.internalRefUUID <=> plantUuid#74369)
(291) Generate
Arguments: explode(filter(stockQuantities#74343, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#74371) AND (lambda x#69270.storageLocation.Id = storageLocId#74370)), lambda x#69270, false))), false, [stockQuantity#74416]
(292) Project
Arguments: [systemId#74338, internalUUID#74339, product#74340, plant#74341, calculationDateTime#74342, stockQuantities#74343, plantId#74368, plantUuid#74369, storageLocId#74370, storageLocUuid#74371, stockQuantity#74416]
(293) Aggregate
Arguments: [plantUuid#74369, internalUUID#74339, plant#74341, product#74340, systemId#74338], [plantUuid#74369, internalUUID#74339, plant#74341, product#74340, systemId#74338, first(calculationDateTime#74342, false) AS calculationDateTime#74417, collect_list(stockQuantity#74416, 0, 0) AS stockQuantities#74418]
(294) Project
Arguments: [systemId#74338, internalUUID#74339, product#74340, plant#74341, calculationDateTime#74417, stockQuantities#74418]
(295) Generate
Arguments: explode(stockQuantities#74418), false, [stockQuantity#74419]
(296) Project
Arguments: [systemId#74338, internalUUID#74339, product#74340, plant#74341, calculationDateTime#74417, stockQuantities#74418, stockQuantity#74419]
(297) Project
Arguments: [plant#74341.id AS plant#74420, plant#74341.internalRefUUID AS plantUuid#74421, product#74340.id AS product#74422, product#74340.internalRefUUID AS productUuid#74423, calculationDateTime#74417, stockQuantity#74419.storagelocation.id AS storageLocId#74424, stockQuantity#74419.storagelocation.internalRefUUID AS storageLocUuid#74425, stockQuantity#74419.quantity.measure AS quantity#74426, stockQuantity#74419.specialStockIndicator.code AS specialStockIndicator#74427, stockQuantity#74419.stockType.code AS stockType#74428]
(298) Filter
Arguments: ((specialStockIndicator#74427 = ) AND (stockType#74428 = 01))
(299) LogicalRelation
Arguments: parquet, [product#74429, plant#74430, orderDateTime#74431, planningStartDateTime#74432], false
(300) RepartitionByExpression
Arguments: [product#74429, plant#74430], 25
(301) Project
Arguments: [product#74429, plant#74430, orderDateTime#74431]
(302) LogicalRelation
Arguments: parquet, [systemId#74433, internalUUID#74434, plant#74435, product#74436, blockedForReplenishmentStartingFrom#74437, productionAspect#74438, salesPlant#74439, listing#74440], false
(303) Repartition
Arguments: 25, true
(304) Project
Arguments: [systemId#74433, internalUUID#74434, plant#74435, product#74436, blockedForReplenishmentStartingFrom#74437, productionAspect#74438, salesPlant#74439, listing#74440, struct(systemId, systemId#74433, internalUUID, internalUUID#74434, plant, plant#74435, product, product#74436, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#74437, productionAspect, productionAspect#74438, salesPlant, salesPlant#74439, listing, listing#74440) AS productPlant#74441]
(305) Project
Arguments: [productPlant#74441]
(306) Join
Arguments: LeftOuter, ((product#74429 <=> productPlant#74441.product.internalRefUUID) AND (plant#74430 <=> productPlant#74441.plant.internalRefUUID))
(307) Project
Arguments: [product#74429, plant#74430, orderDateTime#74431, productPlant#74441]
(308) SubqueryAlias
Arguments: wl
(309) LogicalRelation
Arguments: parquet, [systemId#74442, internalUUID#74443, id#74444, displayId#74445, name#74446, category#74447, companyCode#74448, address#74449, mainDistributionChain#74450, mainPurchasingOrganization#74451, validPurchasingOrganizations#74452, productGroup#74453], false
(310) Repartition
Arguments: 25, true
(311) Project
Arguments: [internalUUID#74443, address#74449.timeZone.code AS timezonecode#74454]
(312) Join
Arguments: LeftOuter, (plant#74430 <=> internalUUID#74443)
(313) Project
Arguments: [product#74429, plant#74430, orderDateTime#74431, productPlant#74441, internalUUID#74443, CASE WHEN isnotnull(timezonecode#74454) THEN timezonecode#74454 ELSE UTC END AS timezonecode#74455]
(314) Project
Arguments: [product#74429, plant#74430, orderDateTime#74431, productPlant#74441, timezonecode#74455]
(315) LogicalRelation
Arguments: parquet, [systemId#74456, internalUUID#74457, id#74458, displayId#74459, name#74460, baseUnitOfMeasure#74461, unitOfMeasures#74462, unitOfMeasureConversions#74463, productionAspect#74464, salesAspect#74465, procurementAspect#74466, productGroup#74467], false
(316) Repartition
Arguments: 25, true
(317) Join
Arguments: LeftOuter, (product#74429 = internalUUID#74457)
(318) Project
Arguments: [product#74429, plant#74430, orderDateTime#74431, productPlant#74441, timezonecode#74455, systemId#74456, internalUUID#74457, id#74458, displayId#74459, name#74460, baseUnitOfMeasure#74461, unitOfMeasures#74462, unitOfMeasureConversions#74463, productionAspect#74464, salesAspect#74465, procurementAspect#74466, productGroup#74467, filter(unitOfMeasureConversions#74463, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#74441.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#74441.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#74461.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#74461.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#74469]
(319) Generate
Arguments: explode(filteredUnitOfMeasureConversions#74469.quantityNumerator), true, [quantityNumerator#74470]
(320) Project
Arguments: [product#74429, plant#74430, orderDateTime#74431, productPlant#74441, timezonecode#74455, systemId#74456, internalUUID#74457, id#74458, displayId#74459, name#74460, baseUnitOfMeasure#74461, unitOfMeasures#74462, unitOfMeasureConversions#74463, productionAspect#74464, salesAspect#74465, procurementAspect#74466, productGroup#74467, filteredUnitOfMeasureConversions#74469, quantityNumerator#74470]
(321) Generate
Arguments: explode(filteredUnitOfMeasureConversions#74469.quantityDenominator), true, [quantityDenominator#74471]
(322) Project
Arguments: [product#74429, plant#74430, orderDateTime#74431, productPlant#74441, timezonecode#74455, systemId#74456, internalUUID#74457, id#74458, displayId#74459, name#74460, baseUnitOfMeasure#74461, unitOfMeasures#74462, unitOfMeasureConversions#74463, productionAspect#74464, salesAspect#74465, procurementAspect#74466, productGroup#74467, filteredUnitOfMeasureConversions#74469, quantityNumerator#74470, quantityDenominator#74471]
(323) Project
Arguments: [product#74429, plant#74430, orderDateTime#74431, productPlant#74441, timezonecode#74455, systemId#74456, internalUUID#74457, id#74458, displayId#74459, name#74460, baseUnitOfMeasure#74461, unitOfMeasures#74462, unitOfMeasureConversions#74463, productionAspect#74464, salesAspect#74465, procurementAspect#74466, productGroup#74467, filteredUnitOfMeasureConversions#74469, quantityNumerator#74470, quantityDenominator#74471, (cast(quantityNumerator#74470 as double) / cast(quantityDenominator#74471 as double)) AS outboundUnit#74472]
(324) Project
Arguments: [product#74429, plant#74430, orderDateTime#74431, productPlant#74441, timezonecode#74455, systemId#74456, internalUUID#74457, id#74458, displayId#74459, name#74460, baseUnitOfMeasure#74461, unitOfMeasures#74462, unitOfMeasureConversions#74463, productionAspect#74464, salesAspect#74465, procurementAspect#74466, productGroup#74467, filteredUnitOfMeasureConversions#74469, quantityNumerator#74470, quantityDenominator#74471, CASE WHEN (isnull(outboundUnit#74472) OR (outboundUnit#74472 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#74472 END AS outboundUnit#74473]
(325) Project
Arguments: [product#74429, plant#74430, orderDateTime#74431, productPlant#74441, timezonecode#74455, outboundUnit#74473]
(326) Join
Arguments: Inner, ((plantUuid#74421 = plant#74430) AND (productUuid#74423 = product#74429))
(327) Filter
Arguments: (calculationDateTime#74417 <= orderDateTime#74431)
(328) Project
Arguments: [plantUuid#74421 AS plant#74474, productUuid#74423 AS product#74475, storageLocId#74424, calculationDateTime#74417, quantity#74426]
(329) LogicalRelation
Arguments: parquet, [systemId#74476, internalUUID#74477, product#74478, plant#74479, calculationDateTime#74480, stockQuantities#74481], false
(330) Repartition
Arguments: 25, true
(331) LogicalRelation
Arguments: parquet, [marketUnit#74482, description#74483, articleHierarchy#74484, defaultCurrency#74485, responsibilities#74486, replenishmentTypes#74487, distributionCenters#74488, assignedArticleHierarchyNodes#74489, minOrderQtySetting#74490, listingCheck#74491, odsSelection#74492, demandProfiles#74493, constraintProfiles#74494, optimizationProfiles#74495, orderGroupSplitProfiles#74496, supplierMinimumProfiles#74497, multipleRestrictionProfiles#74498, preferredUomSource#74499, handlingOfUnfulfilledDemands#74500, negligibleQuantitiesThreshold#74501, eventtype#74502, minOrderQtySettingInternal#74503], false
(332) Repartition
Arguments: 25, true
(333) Filter
Arguments: (marketUnit#74482 <=> Daily_grocery)
(334) Project
Arguments: [marketUnit#74482, description#74483, articleHierarchy#74484, defaultCurrency#74485, responsibilities#74486, replenishmentTypes#74487, distributionCenters#74488, assignedArticleHierarchyNodes#74489, minOrderQtySetting#74490, listingCheck#74491, odsSelection#74492, demandProfiles#74493, constraintProfiles#74494, optimizationProfiles#74495, orderGroupSplitProfiles#74496, supplierMinimumProfiles#74497, multipleRestrictionProfiles#74498, preferredUomSource#74499, handlingOfUnfulfilledDemands#74500, negligibleQuantitiesThreshold#74501, eventtype#74502, minOrderQtySettingInternal#74503]
(335) Project
Arguments: [distributionCenters#74488]
(336) Generate
Arguments: explode(distributionCenters#74488), false, [distributionCenters#74504]
(337) Project
Arguments: [distributionCenters#74504]
(338) Generate
Arguments: explode(distributionCenters#74504.storageLocations), false, [storageLocations#74505]
(339) Project
Arguments: [distributionCenters#74504.id AS plantId#74506, distributionCenters#74504.internalRefUUID AS plantUuid#74507, storageLocations#74505]
(340) Project
Arguments: [plantId#74506, plantUuid#74507, storageLocations#74505.id AS storageLocId#74508, storageLocations#74505.internalRefUUID AS storageLocUuid#74509]
(341) LogicalRelation
Arguments: parquet, [product#74510, plant#74511, orderDateTime#74512, planningStartDateTime#74513], false
(342) RepartitionByExpression
Arguments: [product#74510, plant#74511], 25
(343) Project
Arguments: [product#74510, plant#74511, orderDateTime#74512]
(344) LogicalRelation
Arguments: parquet, [systemId#74514, internalUUID#74515, plant#74516, product#74517, blockedForReplenishmentStartingFrom#74518, productionAspect#74519, salesPlant#74520, listing#74521], false
(345) Repartition
Arguments: 25, true
(346) Project
Arguments: [systemId#74514, internalUUID#74515, plant#74516, product#74517, blockedForReplenishmentStartingFrom#74518, productionAspect#74519, salesPlant#74520, listing#74521, struct(systemId, systemId#74514, internalUUID, internalUUID#74515, plant, plant#74516, product, product#74517, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#74518, productionAspect, productionAspect#74519, salesPlant, salesPlant#74520, listing, listing#74521) AS productPlant#74522]
(347) Project
Arguments: [productPlant#74522]
(348) Join
Arguments: LeftOuter, ((product#74510 <=> productPlant#74522.product.internalRefUUID) AND (plant#74511 <=> productPlant#74522.plant.internalRefUUID))
(349) Project
Arguments: [product#74510, plant#74511, orderDateTime#74512, productPlant#74522]
(350) SubqueryAlias
Arguments: wl
(351) LogicalRelation
Arguments: parquet, [systemId#74523, internalUUID#74524, id#74525, displayId#74526, name#74527, category#74528, companyCode#74529, address#74530, mainDistributionChain#74531, mainPurchasingOrganization#74532, validPurchasingOrganizations#74533, productGroup#74534], false
(352) Repartition
Arguments: 25, true
(353) Project
Arguments: [internalUUID#74524, address#74530.timeZone.code AS timezonecode#74535]
(354) Join
Arguments: LeftOuter, (plant#74511 <=> internalUUID#74524)
(355) Project
Arguments: [product#74510, plant#74511, orderDateTime#74512, productPlant#74522, internalUUID#74524, CASE WHEN isnotnull(timezonecode#74535) THEN timezonecode#74535 ELSE UTC END AS timezonecode#74536]
(356) Project
Arguments: [product#74510, plant#74511, orderDateTime#74512, productPlant#74522, timezonecode#74536]
(357) LogicalRelation
Arguments: parquet, [systemId#74537, internalUUID#74538, id#74539, displayId#74540, name#74541, baseUnitOfMeasure#74542, unitOfMeasures#74543, unitOfMeasureConversions#74544, productionAspect#74545, salesAspect#74546, procurementAspect#74547, productGroup#74548], false
(358) Repartition
Arguments: 25, true
(359) Join
Arguments: LeftOuter, (product#74510 = internalUUID#74538)
(360) Project
Arguments: [product#74510, plant#74511, orderDateTime#74512, productPlant#74522, timezonecode#74536, systemId#74537, internalUUID#74538, id#74539, displayId#74540, name#74541, baseUnitOfMeasure#74542, unitOfMeasures#74543, unitOfMeasureConversions#74544, productionAspect#74545, salesAspect#74546, procurementAspect#74547, productGroup#74548, filter(unitOfMeasureConversions#74544, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#74522.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#74522.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#74542.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#74542.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#74549]
(361) Generate
Arguments: explode(filteredUnitOfMeasureConversions#74549.quantityNumerator), true, [quantityNumerator#74550]
(362) Project
Arguments: [product#74510, plant#74511, orderDateTime#74512, productPlant#74522, timezonecode#74536, systemId#74537, internalUUID#74538, id#74539, displayId#74540, name#74541, baseUnitOfMeasure#74542, unitOfMeasures#74543, unitOfMeasureConversions#74544, productionAspect#74545, salesAspect#74546, procurementAspect#74547, productGroup#74548, filteredUnitOfMeasureConversions#74549, quantityNumerator#74550]
(363) Generate
Arguments: explode(filteredUnitOfMeasureConversions#74549.quantityDenominator), true, [quantityDenominator#74551]
(364) Project
Arguments: [product#74510, plant#74511, orderDateTime#74512, productPlant#74522, timezonecode#74536, systemId#74537, internalUUID#74538, id#74539, displayId#74540, name#74541, baseUnitOfMeasure#74542, unitOfMeasures#74543, unitOfMeasureConversions#74544, productionAspect#74545, salesAspect#74546, procurementAspect#74547, productGroup#74548, filteredUnitOfMeasureConversions#74549, quantityNumerator#74550, quantityDenominator#74551]
(365) Project
Arguments: [product#74510, plant#74511, orderDateTime#74512, productPlant#74522, timezonecode#74536, systemId#74537, internalUUID#74538, id#74539, displayId#74540, name#74541, baseUnitOfMeasure#74542, unitOfMeasures#74543, unitOfMeasureConversions#74544, productionAspect#74545, salesAspect#74546, procurementAspect#74547, productGroup#74548, filteredUnitOfMeasureConversions#74549, quantityNumerator#74550, quantityDenominator#74551, (cast(quantityNumerator#74550 as double) / cast(quantityDenominator#74551 as double)) AS outboundUnit#74552]
(366) Project
Arguments: [product#74510, plant#74511, orderDateTime#74512, productPlant#74522, timezonecode#74536, systemId#74537, internalUUID#74538, id#74539, displayId#74540, name#74541, baseUnitOfMeasure#74542, unitOfMeasures#74543, unitOfMeasureConversions#74544, productionAspect#74545, salesAspect#74546, procurementAspect#74547, productGroup#74548, filteredUnitOfMeasureConversions#74549, quantityNumerator#74550, quantityDenominator#74551, CASE WHEN (isnull(outboundUnit#74552) OR (outboundUnit#74552 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#74552 END AS outboundUnit#74553]
(367) Project
Arguments: [product#74510, plant#74511, orderDateTime#74512, productPlant#74522, timezonecode#74536, outboundUnit#74553]
(368) Project
Arguments: [plant#74511]
(369) Deduplicate
Arguments: [plant#74511]
(370) Join
Arguments: Inner, (plantUuid#74507 = plant#74511)
(371) Project
Arguments: [plantId#74506, plantUuid#74507, storageLocId#74508, storageLocUuid#74509]
(372) Join
Arguments: Inner, (plant#74479.internalRefUUID <=> plantUuid#74507)
(373) Generate
Arguments: explode(filter(stockQuantities#74481, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#74509) AND (lambda x#69270.storageLocation.Id = storageLocId#74508)), lambda x#69270, false))), false, [stockQuantity#74554]
(374) Project
Arguments: [systemId#74476, internalUUID#74477, product#74478, plant#74479, calculationDateTime#74480, stockQuantities#74481, plantId#74506, plantUuid#74507, storageLocId#74508, storageLocUuid#74509, stockQuantity#74554]
(375) Aggregate
Arguments: [plantUuid#74507, internalUUID#74477, plant#74479, product#74478, systemId#74476], [plantUuid#74507, internalUUID#74477, plant#74479, product#74478, systemId#74476, first(calculationDateTime#74480, false) AS calculationDateTime#74555, collect_list(stockQuantity#74554, 0, 0) AS stockQuantities#74556]
(376) Project
Arguments: [systemId#74476, internalUUID#74477, product#74478, plant#74479, calculationDateTime#74555, stockQuantities#74556]
(377) Generate
Arguments: explode(stockQuantities#74556), false, [stockQuantity#74557]
(378) Project
Arguments: [systemId#74476, internalUUID#74477, product#74478, plant#74479, calculationDateTime#74555, stockQuantities#74556, stockQuantity#74557]
(379) Project
Arguments: [plant#74479.id AS plant#74558, plant#74479.internalRefUUID AS plantUuid#74559, product#74478.id AS product#74560, product#74478.internalRefUUID AS productUuid#74561, calculationDateTime#74555, stockQuantity#74557.storagelocation.id AS storageLocId#74562, stockQuantity#74557.storagelocation.internalRefUUID AS storageLocUuid#74563, stockQuantity#74557.quantity.measure AS quantity#74564, stockQuantity#74557.specialStockIndicator.code AS specialStockIndicator#74565, stockQuantity#74557.stockType.code AS stockType#74566]
(380) Filter
Arguments: ((specialStockIndicator#74565 = ) AND (stockType#74566 = 01))
(381) LogicalRelation
Arguments: parquet, [product#74567, plant#74568, orderDateTime#74569, planningStartDateTime#74570], false
(382) RepartitionByExpression
Arguments: [product#74567, plant#74568], 25
(383) Project
Arguments: [product#74567, plant#74568, orderDateTime#74569]
(384) LogicalRelation
Arguments: parquet, [systemId#74571, internalUUID#74572, plant#74573, product#74574, blockedForReplenishmentStartingFrom#74575, productionAspect#74576, salesPlant#74577, listing#74578], false
(385) Repartition
Arguments: 25, true
(386) Project
Arguments: [systemId#74571, internalUUID#74572, plant#74573, product#74574, blockedForReplenishmentStartingFrom#74575, productionAspect#74576, salesPlant#74577, listing#74578, struct(systemId, systemId#74571, internalUUID, internalUUID#74572, plant, plant#74573, product, product#74574, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#74575, productionAspect, productionAspect#74576, salesPlant, salesPlant#74577, listing, listing#74578) AS productPlant#74579]
(387) Project
Arguments: [productPlant#74579]
(388) Join
Arguments: LeftOuter, ((product#74567 <=> productPlant#74579.product.internalRefUUID) AND (plant#74568 <=> productPlant#74579.plant.internalRefUUID))
(389) Project
Arguments: [product#74567, plant#74568, orderDateTime#74569, productPlant#74579]
(390) SubqueryAlias
Arguments: wl
(391) LogicalRelation
Arguments: parquet, [systemId#74580, internalUUID#74581, id#74582, displayId#74583, name#74584, category#74585, companyCode#74586, address#74587, mainDistributionChain#74588, mainPurchasingOrganization#74589, validPurchasingOrganizations#74590, productGroup#74591], false
(392) Repartition
Arguments: 25, true
(393) Project
Arguments: [internalUUID#74581, address#74587.timeZone.code AS timezonecode#74592]
(394) Join
Arguments: LeftOuter, (plant#74568 <=> internalUUID#74581)
(395) Project
Arguments: [product#74567, plant#74568, orderDateTime#74569, productPlant#74579, internalUUID#74581, CASE WHEN isnotnull(timezonecode#74592) THEN timezonecode#74592 ELSE UTC END AS timezonecode#74593]
(396) Project
Arguments: [product#74567, plant#74568, orderDateTime#74569, productPlant#74579, timezonecode#74593]
(397) LogicalRelation
Arguments: parquet, [systemId#74594, internalUUID#74595, id#74596, displayId#74597, name#74598, baseUnitOfMeasure#74599, unitOfMeasures#74600, unitOfMeasureConversions#74601, productionAspect#74602, salesAspect#74603, procurementAspect#74604, productGroup#74605], false
(398) Repartition
Arguments: 25, true
(399) Join
Arguments: LeftOuter, (product#74567 = internalUUID#74595)
(400) Project
Arguments: [product#74567, plant#74568, orderDateTime#74569, productPlant#74579, timezonecode#74593, systemId#74594, internalUUID#74595, id#74596, displayId#74597, name#74598, baseUnitOfMeasure#74599, unitOfMeasures#74600, unitOfMeasureConversions#74601, productionAspect#74602, salesAspect#74603, procurementAspect#74604, productGroup#74605, filter(unitOfMeasureConversions#74601, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#74579.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#74579.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#74599.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#74599.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#74606]
(401) Generate
Arguments: explode(filteredUnitOfMeasureConversions#74606.quantityNumerator), true, [quantityNumerator#74607]
(402) Project
Arguments: [product#74567, plant#74568, orderDateTime#74569, productPlant#74579, timezonecode#74593, systemId#74594, internalUUID#74595, id#74596, displayId#74597, name#74598, baseUnitOfMeasure#74599, unitOfMeasures#74600, unitOfMeasureConversions#74601, productionAspect#74602, salesAspect#74603, procurementAspect#74604, productGroup#74605, filteredUnitOfMeasureConversions#74606, quantityNumerator#74607]
(403) Generate
Arguments: explode(filteredUnitOfMeasureConversions#74606.quantityDenominator), true, [quantityDenominator#74608]
(404) Project
Arguments: [product#74567, plant#74568, orderDateTime#74569, productPlant#74579, timezonecode#74593, systemId#74594, internalUUID#74595, id#74596, displayId#74597, name#74598, baseUnitOfMeasure#74599, unitOfMeasures#74600, unitOfMeasureConversions#74601, productionAspect#74602, salesAspect#74603, procurementAspect#74604, productGroup#74605, filteredUnitOfMeasureConversions#74606, quantityNumerator#74607, quantityDenominator#74608]
(405) Project
Arguments: [product#74567, plant#74568, orderDateTime#74569, productPlant#74579, timezonecode#74593, systemId#74594, internalUUID#74595, id#74596, displayId#74597, name#74598, baseUnitOfMeasure#74599, unitOfMeasures#74600, unitOfMeasureConversions#74601, productionAspect#74602, salesAspect#74603, procurementAspect#74604, productGroup#74605, filteredUnitOfMeasureConversions#74606, quantityNumerator#74607, quantityDenominator#74608, (cast(quantityNumerator#74607 as double) / cast(quantityDenominator#74608 as double)) AS outboundUnit#74609]
(406) Project
Arguments: [product#74567, plant#74568, orderDateTime#74569, productPlant#74579, timezonecode#74593, systemId#74594, internalUUID#74595, id#74596, displayId#74597, name#74598, baseUnitOfMeasure#74599, unitOfMeasures#74600, unitOfMeasureConversions#74601, productionAspect#74602, salesAspect#74603, procurementAspect#74604, productGroup#74605, filteredUnitOfMeasureConversions#74606, quantityNumerator#74607, quantityDenominator#74608, CASE WHEN (isnull(outboundUnit#74609) OR (outboundUnit#74609 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#74609 END AS outboundUnit#74610]
(407) Project
Arguments: [product#74567, plant#74568, orderDateTime#74569, productPlant#74579, timezonecode#74593, outboundUnit#74610]
(408) Join
Arguments: Inner, ((plantUuid#74559 = plant#74568) AND (productUuid#74561 = product#74567))
(409) Filter
Arguments: (calculationDateTime#74555 <= orderDateTime#74569)
(410) Project
Arguments: [plantUuid#74559 AS plant#74611, productUuid#74561 AS product#74612, storageLocId#74562, calculationDateTime#74555, quantity#74564]
(411) Aggregate
Arguments: [plant#74611, product#74612, storageLocId#74562], [plant#74611, product#74612, storageLocId#74562, max(calculationDateTime#74555) AS max_calc_datetime#74613]
(412) Join
Arguments: Inner, ((((plant#74474 <=> plant#74611) AND (product#74475 <=> product#74612)) AND (storageLocId#74424 <=> storageLocId#74562)) AND (calculationDateTime#74417 <=> max_calc_datetime#74613))
(413) Project
Arguments: [plant#74474, product#74475, storageLocId#74424, calculationDateTime#74417, quantity#74426]
(414) Aggregate
Arguments: [product#74475, plant#74474], [product#74475, plant#74474, sum(quantity#74426) AS quantitySum#74614, min(calculationDateTime#74417) AS minCalculationDateTime#74615]
(415) Project
Arguments: [product#74475, plant#74474, quantitySum#74614, minCalculationDateTime#74615, round(quantitySum#74614, 0) AS roundedQuantitySum#74616]
(416) Join
Arguments: LeftOuter, ((plant#74295 = plant#74474) AND (product#74294 = product#74475))
(417) Project
Arguments: [product#74294, plant#74295, orderDateTime#74296, productPlant#74306, timezonecode#74320, outboundUnit#74337, roundedQuantitySum#74616, minCalculationDateTime#74615]
(418) Project
Arguments: [product#74294, plant#74295, orderDateTime#74296, productPlant#74306, timezonecode#74320, outboundUnit#74337, roundedQuantitySum#74616, minCalculationDateTime#74615, CASE WHEN isnotnull(minCalculationDateTime#74615) THEN minCalculationDateTime#74615 ELSE orderDateTime#74296 END AS stockDatetime#74617]
(419) Project
Arguments: [product#74294, plant#74295, orderDateTime#74296, productPlant#74306, timezonecode#74320, outboundUnit#74337, roundedQuantitySum#74616, minCalculationDateTime#74615, stockDatetime#74617, CASE WHEN isnotnull(roundedQuantitySum#74616) THEN array(roundedQuantitySum#74616) ELSE array(0.0) END AS stockBatchQuantities#74618]
(420) Project
Arguments: [product#74294, plant#74295, orderDateTime#74296, productPlant#74306, timezonecode#74320, outboundUnit#74337, roundedQuantitySum#74616, minCalculationDateTime#74615, stockDatetime#74617, stockBatchQuantities#74618, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#74619]
(421) Project
Arguments: [product#74294, plant#74295, orderDateTime#74296, productPlant#74306, timezonecode#74320, outboundUnit#74337, roundedQuantitySum#74616, stockDatetime#74617, stockBatchQuantities#74618, stockBatchShelfLifeEndDatetimes#74619]
(422) Project
Arguments: [product#74294, plant#74295, orderDateTime#74296, productPlant#74306, timezonecode#74320, outboundUnit#74337, stockDatetime#74617, stockBatchQuantities#74618, stockBatchShelfLifeEndDatetimes#74619]
(423) LogicalRelation
Arguments: parquet, [product#70356, plant#70357, orderDateTime#70358, planningStartDateTime#70359], false
(424) RepartitionByExpression
Arguments: [product#70356, plant#70357], 25
(425) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358]
(426) LogicalRelation
Arguments: parquet, [systemId#70360, internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367], false
(427) Repartition
Arguments: 25, true
(428) Project
Arguments: [systemId#70360, internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367, struct(systemId, systemId#70360, internalUUID, internalUUID#70361, plant, plant#70362, product, product#70363, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70364, productionAspect, productionAspect#70365, salesPlant, salesPlant#70366, listing, listing#70367) AS productPlant#70368]
(429) Project
Arguments: [productPlant#70368]
(430) Join
Arguments: LeftOuter, ((product#70356 <=> productPlant#70368.product.internalRefUUID) AND (plant#70357 <=> productPlant#70368.plant.internalRefUUID))
(431) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368]
(432) SubqueryAlias
Arguments: wl
(433) LogicalRelation
Arguments: parquet, [systemId#70369, internalUUID#70370, id#70371, displayId#70372, name#70373, category#70374, companyCode#70375, address#70376, mainDistributionChain#70377, mainPurchasingOrganization#70378, validPurchasingOrganizations#70379, productGroup#70380], false
(434) Repartition
Arguments: 25, true
(435) Project
Arguments: [internalUUID#70370, address#70376.timeZone.code AS timezonecode#70381]
(436) Join
Arguments: LeftOuter, (plant#70357 <=> internalUUID#70370)
(437) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, internalUUID#70370, CASE WHEN isnotnull(timezonecode#70381) THEN timezonecode#70381 ELSE UTC END AS timezonecode#70382]
(438) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382]
(439) LogicalRelation
Arguments: parquet, [systemId#70383, internalUUID#70384, id#70385, displayId#70386, name#70387, baseUnitOfMeasure#70388, unitOfMeasures#70389, unitOfMeasureConversions#70390, productionAspect#70391, salesAspect#70392, procurementAspect#70393, productGroup#70394], false
(440) Repartition
Arguments: 25, true
(441) Join
Arguments: LeftOuter, (product#70356 = internalUUID#70384)
(442) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, systemId#70383, internalUUID#70384, id#70385, displayId#70386, name#70387, baseUnitOfMeasure#70388, unitOfMeasures#70389, unitOfMeasureConversions#70390, productionAspect#70391, salesAspect#70392, procurementAspect#70393, productGroup#70394, filter(unitOfMeasureConversions#70390, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#70368.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#70368.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#70388.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70388.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#70396]
(443) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70396.quantityNumerator), true, [quantityNumerator#70398]
(444) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, systemId#70383, internalUUID#70384, id#70385, displayId#70386, name#70387, baseUnitOfMeasure#70388, unitOfMeasures#70389, unitOfMeasureConversions#70390, productionAspect#70391, salesAspect#70392, procurementAspect#70393, productGroup#70394, filteredUnitOfMeasureConversions#70396, quantityNumerator#70398]
(445) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70396.quantityDenominator), true, [quantityDenominator#70399]
(446) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, systemId#70383, internalUUID#70384, id#70385, displayId#70386, name#70387, baseUnitOfMeasure#70388, unitOfMeasures#70389, unitOfMeasureConversions#70390, productionAspect#70391, salesAspect#70392, procurementAspect#70393, productGroup#70394, filteredUnitOfMeasureConversions#70396, quantityNumerator#70398, quantityDenominator#70399]
(447) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, systemId#70383, internalUUID#70384, id#70385, displayId#70386, name#70387, baseUnitOfMeasure#70388, unitOfMeasures#70389, unitOfMeasureConversions#70390, productionAspect#70391, salesAspect#70392, procurementAspect#70393, productGroup#70394, filteredUnitOfMeasureConversions#70396, quantityNumerator#70398, quantityDenominator#70399, (cast(quantityNumerator#70398 as double) / cast(quantityDenominator#70399 as double)) AS outboundUnit#70400]
(448) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, systemId#70383, internalUUID#70384, id#70385, displayId#70386, name#70387, baseUnitOfMeasure#70388, unitOfMeasures#70389, unitOfMeasureConversions#70390, productionAspect#70391, salesAspect#70392, procurementAspect#70393, productGroup#70394, filteredUnitOfMeasureConversions#70396, quantityNumerator#70398, quantityDenominator#70399, CASE WHEN (isnull(outboundUnit#70400) OR (outboundUnit#70400 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70400 END AS outboundUnit#70401]
(449) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401]
(450) LogicalRelation
Arguments: parquet, [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407], false
(451) Repartition
Arguments: 25, true
(452) LogicalRelation
Arguments: parquet, [marketUnit#70408, description#70409, articleHierarchy#70410, defaultCurrency#70411, responsibilities#70412, replenishmentTypes#70413, distributionCenters#70414, assignedArticleHierarchyNodes#70415, minOrderQtySetting#70416, listingCheck#70417, odsSelection#70418, demandProfiles#70419, constraintProfiles#70420, optimizationProfiles#70421, orderGroupSplitProfiles#70422, supplierMinimumProfiles#70423, multipleRestrictionProfiles#70424, preferredUomSource#70425, handlingOfUnfulfilledDemands#70426, negligibleQuantitiesThreshold#70427, eventtype#70428, minOrderQtySettingInternal#70429], false
(453) Repartition
Arguments: 25, true
(454) Filter
Arguments: (marketUnit#70408 <=> Daily_grocery)
(455) Project
Arguments: [marketUnit#70408, description#70409, articleHierarchy#70410, defaultCurrency#70411, responsibilities#70412, replenishmentTypes#70413, distributionCenters#70414, assignedArticleHierarchyNodes#70415, minOrderQtySetting#70416, listingCheck#70417, odsSelection#70418, demandProfiles#70419, constraintProfiles#70420, optimizationProfiles#70421, orderGroupSplitProfiles#70422, supplierMinimumProfiles#70423, multipleRestrictionProfiles#70424, preferredUomSource#70425, handlingOfUnfulfilledDemands#70426, negligibleQuantitiesThreshold#70427, eventtype#70428, minOrderQtySettingInternal#70429]
(456) Project
Arguments: [distributionCenters#70414]
(457) Generate
Arguments: explode(distributionCenters#70414), false, [distributionCenters#70430]
(458) Project
Arguments: [distributionCenters#70430]
(459) Generate
Arguments: explode(distributionCenters#70430.storageLocations), false, [storageLocations#70431]
(460) Project
Arguments: [distributionCenters#70430.id AS plantId#70432, distributionCenters#70430.internalRefUUID AS plantUuid#70433, storageLocations#70431]
(461) Project
Arguments: [plantId#70432, plantUuid#70433, storageLocations#70431.id AS storageLocId#70434, storageLocations#70431.internalRefUUID AS storageLocUuid#70435]
(462) LogicalRelation
Arguments: parquet, [product#70437, plant#70438, orderDateTime#70439, planningStartDateTime#70440], false
(463) RepartitionByExpression
Arguments: [product#70437, plant#70438], 25
(464) Project
Arguments: [product#70437, plant#70438, orderDateTime#70439]
(465) LogicalRelation
Arguments: parquet, [systemId#70442, internalUUID#70443, plant#70444, product#70445, blockedForReplenishmentStartingFrom#70446, productionAspect#70447, salesPlant#70448, listing#70449], false
(466) Repartition
Arguments: 25, true
(467) Project
Arguments: [systemId#70442, internalUUID#70443, plant#70444, product#70445, blockedForReplenishmentStartingFrom#70446, productionAspect#70447, salesPlant#70448, listing#70449, struct(systemId, systemId#70442, internalUUID, internalUUID#70443, plant, plant#70444, product, product#70445, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70446, productionAspect, productionAspect#70447, salesPlant, salesPlant#70448, listing, listing#70449) AS productPlant#70451]
(468) Project
Arguments: [productPlant#70451]
(469) Join
Arguments: LeftOuter, ((product#70437 <=> productPlant#70451.product.internalRefUUID) AND (plant#70438 <=> productPlant#70451.plant.internalRefUUID))
(470) Project
Arguments: [product#70437, plant#70438, orderDateTime#70439, productPlant#70451]
(471) SubqueryAlias
Arguments: wl
(472) LogicalRelation
Arguments: parquet, [systemId#70453, internalUUID#70454, id#70455, displayId#70456, name#70457, category#70458, companyCode#70459, address#70460, mainDistributionChain#70461, mainPurchasingOrganization#70462, validPurchasingOrganizations#70463, productGroup#70464], false
(473) Repartition
Arguments: 25, true
(474) Project
Arguments: [internalUUID#70454, address#70460.timeZone.code AS timezonecode#70465]
(475) Join
Arguments: LeftOuter, (plant#70438 <=> internalUUID#70454)
(476) Project
Arguments: [product#70437, plant#70438, orderDateTime#70439, productPlant#70451, internalUUID#70454, CASE WHEN isnotnull(timezonecode#70465) THEN timezonecode#70465 ELSE UTC END AS timezonecode#70470]
(477) Project
Arguments: [product#70437, plant#70438, orderDateTime#70439, productPlant#70451, timezonecode#70470]
(478) LogicalRelation
Arguments: parquet, [systemId#70471, internalUUID#70472, id#70473, displayId#70474, name#70475, baseUnitOfMeasure#70476, unitOfMeasures#70477, unitOfMeasureConversions#70478, productionAspect#70479, salesAspect#70480, procurementAspect#70481, productGroup#70482], false
(479) Repartition
Arguments: 25, true
(480) Join
Arguments: LeftOuter, (product#70437 = internalUUID#70472)
(481) Project
Arguments: [product#70437, plant#70438, orderDateTime#70439, productPlant#70451, timezonecode#70470, systemId#70471, internalUUID#70472, id#70473, displayId#70474, name#70475, baseUnitOfMeasure#70476, unitOfMeasures#70477, unitOfMeasureConversions#70478, productionAspect#70479, salesAspect#70480, procurementAspect#70481, productGroup#70482, filter(unitOfMeasureConversions#70478, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#70451.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#70451.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#70476.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70476.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#70483]
(482) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70483.quantityNumerator), true, [quantityNumerator#70484]
(483) Project
Arguments: [product#70437, plant#70438, orderDateTime#70439, productPlant#70451, timezonecode#70470, systemId#70471, internalUUID#70472, id#70473, displayId#70474, name#70475, baseUnitOfMeasure#70476, unitOfMeasures#70477, unitOfMeasureConversions#70478, productionAspect#70479, salesAspect#70480, procurementAspect#70481, productGroup#70482, filteredUnitOfMeasureConversions#70483, quantityNumerator#70484]
(484) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70483.quantityDenominator), true, [quantityDenominator#70487]
(485) Project
Arguments: [product#70437, plant#70438, orderDateTime#70439, productPlant#70451, timezonecode#70470, systemId#70471, internalUUID#70472, id#70473, displayId#70474, name#70475, baseUnitOfMeasure#70476, unitOfMeasures#70477, unitOfMeasureConversions#70478, productionAspect#70479, salesAspect#70480, procurementAspect#70481, productGroup#70482, filteredUnitOfMeasureConversions#70483, quantityNumerator#70484, quantityDenominator#70487]
(486) Project
Arguments: [product#70437, plant#70438, orderDateTime#70439, productPlant#70451, timezonecode#70470, systemId#70471, internalUUID#70472, id#70473, displayId#70474, name#70475, baseUnitOfMeasure#70476, unitOfMeasures#70477, unitOfMeasureConversions#70478, productionAspect#70479, salesAspect#70480, procurementAspect#70481, productGroup#70482, filteredUnitOfMeasureConversions#70483, quantityNumerator#70484, quantityDenominator#70487, (cast(quantityNumerator#70484 as double) / cast(quantityDenominator#70487 as double)) AS outboundUnit#70488]
(487) Project
Arguments: [product#70437, plant#70438, orderDateTime#70439, productPlant#70451, timezonecode#70470, systemId#70471, internalUUID#70472, id#70473, displayId#70474, name#70475, baseUnitOfMeasure#70476, unitOfMeasures#70477, unitOfMeasureConversions#70478, productionAspect#70479, salesAspect#70480, procurementAspect#70481, productGroup#70482, filteredUnitOfMeasureConversions#70483, quantityNumerator#70484, quantityDenominator#70487, CASE WHEN (isnull(outboundUnit#70488) OR (outboundUnit#70488 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70488 END AS outboundUnit#70491]
(488) Project
Arguments: [product#70437, plant#70438, orderDateTime#70439, productPlant#70451, timezonecode#70470, outboundUnit#70491]
(489) Project
Arguments: [plant#70438]
(490) Deduplicate
Arguments: [plant#70438]
(491) Join
Arguments: Inner, (plantUuid#70433 = plant#70438)
(492) Project
Arguments: [plantId#70432, plantUuid#70433, storageLocId#70434, storageLocUuid#70435]
(493) Join
Arguments: Inner, (plant#70405.internalRefUUID <=> plantUuid#70433)
(494) Generate
Arguments: explode(filter(stockQuantities#70407, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#70435) AND (lambda x#69270.storageLocation.Id = storageLocId#70434)), lambda x#69270, false))), false, [stockQuantity#70498]
(495) Project
Arguments: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407, plantId#70432, plantUuid#70433, storageLocId#70434, storageLocUuid#70435, stockQuantity#70498]
(496) Aggregate
Arguments: [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402], [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402, first(calculationDateTime#70406, false) AS calculationDateTime#70499, collect_list(stockQuantity#70498, 0, 0) AS stockQuantities#70500]
(497) Project
Arguments: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70499, stockQuantities#70500]
(498) Generate
Arguments: explode(stockQuantities#70500), false, [stockQuantity#70501]
(499) Project
Arguments: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70499, stockQuantities#70500, stockQuantity#70501]
(500) Project
Arguments: [plant#70405.id AS plant#70502, plant#70405.internalRefUUID AS plantUuid#70503, product#70404.id AS product#70504, product#70404.internalRefUUID AS productUuid#70505, calculationDateTime#70499, stockQuantity#70501.storagelocation.id AS storageLocId#70506, stockQuantity#70501.storagelocation.internalRefUUID AS storageLocUuid#70507, stockQuantity#70501.quantity.measure AS quantity#70508, stockQuantity#70501.specialStockIndicator.code AS specialStockIndicator#70509, stockQuantity#70501.stockType.code AS stockType#70510]
(501) Filter
Arguments: ((specialStockIndicator#70509 = ) AND (stockType#70510 = 01))
(502) LogicalRelation
Arguments: parquet, [product#70513, plant#70514, orderDateTime#70515, planningStartDateTime#70516], false
(503) RepartitionByExpression
Arguments: [product#70513, plant#70514], 25
(504) Project
Arguments: [product#70513, plant#70514, orderDateTime#70515]
(505) LogicalRelation
Arguments: parquet, [systemId#70517, internalUUID#70518, plant#70519, product#70520, blockedForReplenishmentStartingFrom#70521, productionAspect#70522, salesPlant#70523, listing#70524], false
(506) Repartition
Arguments: 25, true
(507) Project
Arguments: [systemId#70517, internalUUID#70518, plant#70519, product#70520, blockedForReplenishmentStartingFrom#70521, productionAspect#70522, salesPlant#70523, listing#70524, struct(systemId, systemId#70517, internalUUID, internalUUID#70518, plant, plant#70519, product, product#70520, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70521, productionAspect, productionAspect#70522, salesPlant, salesPlant#70523, listing, listing#70524) AS productPlant#70525]
(508) Project
Arguments: [productPlant#70525]
(509) Join
Arguments: LeftOuter, ((product#70513 <=> productPlant#70525.product.internalRefUUID) AND (plant#70514 <=> productPlant#70525.plant.internalRefUUID))
(510) Project
Arguments: [product#70513, plant#70514, orderDateTime#70515, productPlant#70525]
(511) SubqueryAlias
Arguments: wl
(512) LogicalRelation
Arguments: parquet, [systemId#70528, internalUUID#70529, id#70530, displayId#70531, name#70532, category#70533, companyCode#70534, address#70535, mainDistributionChain#70536, mainPurchasingOrganization#70537, validPurchasingOrganizations#70538, productGroup#70539], false
(513) Repartition
Arguments: 25, true
(514) Project
Arguments: [internalUUID#70529, address#70535.timeZone.code AS timezonecode#70540]
(515) Join
Arguments: LeftOuter, (plant#70514 <=> internalUUID#70529)
(516) Project
Arguments: [product#70513, plant#70514, orderDateTime#70515, productPlant#70525, internalUUID#70529, CASE WHEN isnotnull(timezonecode#70540) THEN timezonecode#70540 ELSE UTC END AS timezonecode#70541]
(517) Project
Arguments: [product#70513, plant#70514, orderDateTime#70515, productPlant#70525, timezonecode#70541]
(518) LogicalRelation
Arguments: parquet, [systemId#70542, internalUUID#70543, id#70544, displayId#70545, name#70546, baseUnitOfMeasure#70547, unitOfMeasures#70548, unitOfMeasureConversions#70549, productionAspect#70550, salesAspect#70551, procurementAspect#70552, productGroup#70553], false
(519) Repartition
Arguments: 25, true
(520) Join
Arguments: LeftOuter, (product#70513 = internalUUID#70543)
(521) Project
Arguments: [product#70513, plant#70514, orderDateTime#70515, productPlant#70525, timezonecode#70541, systemId#70542, internalUUID#70543, id#70544, displayId#70545, name#70546, baseUnitOfMeasure#70547, unitOfMeasures#70548, unitOfMeasureConversions#70549, productionAspect#70550, salesAspect#70551, procurementAspect#70552, productGroup#70553, filter(unitOfMeasureConversions#70549, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#70525.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#70525.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#70547.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70547.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#70554]
(522) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70554.quantityNumerator), true, [quantityNumerator#70555]
(523) Project
Arguments: [product#70513, plant#70514, orderDateTime#70515, productPlant#70525, timezonecode#70541, systemId#70542, internalUUID#70543, id#70544, displayId#70545, name#70546, baseUnitOfMeasure#70547, unitOfMeasures#70548, unitOfMeasureConversions#70549, productionAspect#70550, salesAspect#70551, procurementAspect#70552, productGroup#70553, filteredUnitOfMeasureConversions#70554, quantityNumerator#70555]
(524) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70554.quantityDenominator), true, [quantityDenominator#70556]
(525) Project
Arguments: [product#70513, plant#70514, orderDateTime#70515, productPlant#70525, timezonecode#70541, systemId#70542, internalUUID#70543, id#70544, displayId#70545, name#70546, baseUnitOfMeasure#70547, unitOfMeasures#70548, unitOfMeasureConversions#70549, productionAspect#70550, salesAspect#70551, procurementAspect#70552, productGroup#70553, filteredUnitOfMeasureConversions#70554, quantityNumerator#70555, quantityDenominator#70556]
(526) Project
Arguments: [product#70513, plant#70514, orderDateTime#70515, productPlant#70525, timezonecode#70541, systemId#70542, internalUUID#70543, id#70544, displayId#70545, name#70546, baseUnitOfMeasure#70547, unitOfMeasures#70548, unitOfMeasureConversions#70549, productionAspect#70550, salesAspect#70551, procurementAspect#70552, productGroup#70553, filteredUnitOfMeasureConversions#70554, quantityNumerator#70555, quantityDenominator#70556, (cast(quantityNumerator#70555 as double) / cast(quantityDenominator#70556 as double)) AS outboundUnit#70557]
(527) Project
Arguments: [product#70513, plant#70514, orderDateTime#70515, productPlant#70525, timezonecode#70541, systemId#70542, internalUUID#70543, id#70544, displayId#70545, name#70546, baseUnitOfMeasure#70547, unitOfMeasures#70548, unitOfMeasureConversions#70549, productionAspect#70550, salesAspect#70551, procurementAspect#70552, productGroup#70553, filteredUnitOfMeasureConversions#70554, quantityNumerator#70555, quantityDenominator#70556, CASE WHEN (isnull(outboundUnit#70557) OR (outboundUnit#70557 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70557 END AS outboundUnit#70558]
(528) Project
Arguments: [product#70513, plant#70514, orderDateTime#70515, productPlant#70525, timezonecode#70541, outboundUnit#70558]
(529) Join
Arguments: Inner, ((plantUuid#70503 = plant#70514) AND (productUuid#70505 = product#70513))
(530) Filter
Arguments: (calculationDateTime#70499 <= orderDateTime#70515)
(531) Project
Arguments: [plantUuid#70503 AS plant#70559, productUuid#70505 AS product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
(532) LogicalRelation
Arguments: parquet, [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566], false
(533) Repartition
Arguments: 25, true
(534) LogicalRelation
Arguments: parquet, [marketUnit#70567, description#70568, articleHierarchy#70569, defaultCurrency#70570, responsibilities#70571, replenishmentTypes#70572, distributionCenters#70573, assignedArticleHierarchyNodes#70574, minOrderQtySetting#70575, listingCheck#70576, odsSelection#70577, demandProfiles#70578, constraintProfiles#70579, optimizationProfiles#70580, orderGroupSplitProfiles#70581, supplierMinimumProfiles#70582, multipleRestrictionProfiles#70583, preferredUomSource#70584, handlingOfUnfulfilledDemands#70585, negligibleQuantitiesThreshold#70586, eventtype#70587, minOrderQtySettingInternal#70588], false
(535) Repartition
Arguments: 25, true
(536) Filter
Arguments: (marketUnit#70567 <=> Daily_grocery)
(537) Project
Arguments: [marketUnit#70567, description#70568, articleHierarchy#70569, defaultCurrency#70570, responsibilities#70571, replenishmentTypes#70572, distributionCenters#70573, assignedArticleHierarchyNodes#70574, minOrderQtySetting#70575, listingCheck#70576, odsSelection#70577, demandProfiles#70578, constraintProfiles#70579, optimizationProfiles#70580, orderGroupSplitProfiles#70581, supplierMinimumProfiles#70582, multipleRestrictionProfiles#70583, preferredUomSource#70584, handlingOfUnfulfilledDemands#70585, negligibleQuantitiesThreshold#70586, eventtype#70587, minOrderQtySettingInternal#70588]
(538) Project
Arguments: [distributionCenters#70573]
(539) Generate
Arguments: explode(distributionCenters#70573), false, [distributionCenters#70589]
(540) Project
Arguments: [distributionCenters#70589]
(541) Generate
Arguments: explode(distributionCenters#70589.storageLocations), false, [storageLocations#70590]
(542) Project
Arguments: [distributionCenters#70589.id AS plantId#70591, distributionCenters#70589.internalRefUUID AS plantUuid#70592, storageLocations#70590]
(543) Project
Arguments: [plantId#70591, plantUuid#70592, storageLocations#70590.id AS storageLocId#70593, storageLocations#70590.internalRefUUID AS storageLocUuid#70594]
(544) LogicalRelation
Arguments: parquet, [product#70595, plant#70596, orderDateTime#70597, planningStartDateTime#70598], false
(545) RepartitionByExpression
Arguments: [product#70595, plant#70596], 25
(546) Project
Arguments: [product#70595, plant#70596, orderDateTime#70597]
(547) LogicalRelation
Arguments: parquet, [systemId#70599, internalUUID#70600, plant#70601, product#70602, blockedForReplenishmentStartingFrom#70603, productionAspect#70604, salesPlant#70605, listing#70606], false
(548) Repartition
Arguments: 25, true
(549) Project
Arguments: [systemId#70599, internalUUID#70600, plant#70601, product#70602, blockedForReplenishmentStartingFrom#70603, productionAspect#70604, salesPlant#70605, listing#70606, struct(systemId, systemId#70599, internalUUID, internalUUID#70600, plant, plant#70601, product, product#70602, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70603, productionAspect, productionAspect#70604, salesPlant, salesPlant#70605, listing, listing#70606) AS productPlant#70607]
(550) Project
Arguments: [productPlant#70607]
(551) Join
Arguments: LeftOuter, ((product#70595 <=> productPlant#70607.product.internalRefUUID) AND (plant#70596 <=> productPlant#70607.plant.internalRefUUID))
(552) Project
Arguments: [product#70595, plant#70596, orderDateTime#70597, productPlant#70607]
(553) SubqueryAlias
Arguments: wl
(554) LogicalRelation
Arguments: parquet, [systemId#70608, internalUUID#70609, id#70610, displayId#70611, name#70612, category#70613, companyCode#70614, address#70615, mainDistributionChain#70616, mainPurchasingOrganization#70617, validPurchasingOrganizations#70618, productGroup#70619], false
(555) Repartition
Arguments: 25, true
(556) Project
Arguments: [internalUUID#70609, address#70615.timeZone.code AS timezonecode#70620]
(557) Join
Arguments: LeftOuter, (plant#70596 <=> internalUUID#70609)
(558) Project
Arguments: [product#70595, plant#70596, orderDateTime#70597, productPlant#70607, internalUUID#70609, CASE WHEN isnotnull(timezonecode#70620) THEN timezonecode#70620 ELSE UTC END AS timezonecode#70621]
(559) Project
Arguments: [product#70595, plant#70596, orderDateTime#70597, productPlant#70607, timezonecode#70621]
(560) LogicalRelation
Arguments: parquet, [systemId#70622, internalUUID#70623, id#70624, displayId#70625, name#70626, baseUnitOfMeasure#70627, unitOfMeasures#70628, unitOfMeasureConversions#70629, productionAspect#70630, salesAspect#70631, procurementAspect#70632, productGroup#70633], false
(561) Repartition
Arguments: 25, true
(562) Join
Arguments: LeftOuter, (product#70595 = internalUUID#70623)
(563) Project
Arguments: [product#70595, plant#70596, orderDateTime#70597, productPlant#70607, timezonecode#70621, systemId#70622, internalUUID#70623, id#70624, displayId#70625, name#70626, baseUnitOfMeasure#70627, unitOfMeasures#70628, unitOfMeasureConversions#70629, productionAspect#70630, salesAspect#70631, procurementAspect#70632, productGroup#70633, filter(unitOfMeasureConversions#70629, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#70607.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#70607.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#70627.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70627.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#70634]
(564) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70634.quantityNumerator), true, [quantityNumerator#70635]
(565) Project
Arguments: [product#70595, plant#70596, orderDateTime#70597, productPlant#70607, timezonecode#70621, systemId#70622, internalUUID#70623, id#70624, displayId#70625, name#70626, baseUnitOfMeasure#70627, unitOfMeasures#70628, unitOfMeasureConversions#70629, productionAspect#70630, salesAspect#70631, procurementAspect#70632, productGroup#70633, filteredUnitOfMeasureConversions#70634, quantityNumerator#70635]
(566) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70634.quantityDenominator), true, [quantityDenominator#70636]
(567) Project
Arguments: [product#70595, plant#70596, orderDateTime#70597, productPlant#70607, timezonecode#70621, systemId#70622, internalUUID#70623, id#70624, displayId#70625, name#70626, baseUnitOfMeasure#70627, unitOfMeasures#70628, unitOfMeasureConversions#70629, productionAspect#70630, salesAspect#70631, procurementAspect#70632, productGroup#70633, filteredUnitOfMeasureConversions#70634, quantityNumerator#70635, quantityDenominator#70636]
(568) Project
Arguments: [product#70595, plant#70596, orderDateTime#70597, productPlant#70607, timezonecode#70621, systemId#70622, internalUUID#70623, id#70624, displayId#70625, name#70626, baseUnitOfMeasure#70627, unitOfMeasures#70628, unitOfMeasureConversions#70629, productionAspect#70630, salesAspect#70631, procurementAspect#70632, productGroup#70633, filteredUnitOfMeasureConversions#70634, quantityNumerator#70635, quantityDenominator#70636, (cast(quantityNumerator#70635 as double) / cast(quantityDenominator#70636 as double)) AS outboundUnit#70637]
(569) Project
Arguments: [product#70595, plant#70596, orderDateTime#70597, productPlant#70607, timezonecode#70621, systemId#70622, internalUUID#70623, id#70624, displayId#70625, name#70626, baseUnitOfMeasure#70627, unitOfMeasures#70628, unitOfMeasureConversions#70629, productionAspect#70630, salesAspect#70631, procurementAspect#70632, productGroup#70633, filteredUnitOfMeasureConversions#70634, quantityNumerator#70635, quantityDenominator#70636, CASE WHEN (isnull(outboundUnit#70637) OR (outboundUnit#70637 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70637 END AS outboundUnit#70638]
(570) Project
Arguments: [product#70595, plant#70596, orderDateTime#70597, productPlant#70607, timezonecode#70621, outboundUnit#70638]
(571) Project
Arguments: [plant#70596]
(572) Deduplicate
Arguments: [plant#70596]
(573) Join
Arguments: Inner, (plantUuid#70592 = plant#70596)
(574) Project
Arguments: [plantId#70591, plantUuid#70592, storageLocId#70593, storageLocUuid#70594]
(575) Join
Arguments: Inner, (plant#70564.internalRefUUID <=> plantUuid#70592)
(576) Generate
Arguments: explode(filter(stockQuantities#70566, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#70594) AND (lambda x#69270.storageLocation.Id = storageLocId#70593)), lambda x#69270, false))), false, [stockQuantity#70639]
(577) Project
Arguments: [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566, plantId#70591, plantUuid#70592, storageLocId#70593, storageLocUuid#70594, stockQuantity#70639]
(578) Aggregate
Arguments: [plantUuid#70592, internalUUID#70562, plant#70564, product#70563, systemId#70561], [plantUuid#70592, internalUUID#70562, plant#70564, product#70563, systemId#70561, first(calculationDateTime#70565, false) AS calculationDateTime#70640, collect_list(stockQuantity#70639, 0, 0) AS stockQuantities#70641]
(579) Project
Arguments: [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70640, stockQuantities#70641]
(580) Generate
Arguments: explode(stockQuantities#70641), false, [stockQuantity#70642]
(581) Project
Arguments: [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70640, stockQuantities#70641, stockQuantity#70642]
(582) Project
Arguments: [plant#70564.id AS plant#70643, plant#70564.internalRefUUID AS plantUuid#70644, product#70563.id AS product#70645, product#70563.internalRefUUID AS productUuid#70646, calculationDateTime#70640, stockQuantity#70642.storagelocation.id AS storageLocId#70647, stockQuantity#70642.storagelocation.internalRefUUID AS storageLocUuid#70648, stockQuantity#70642.quantity.measure AS quantity#70649, stockQuantity#70642.specialStockIndicator.code AS specialStockIndicator#70650, stockQuantity#70642.stockType.code AS stockType#70651]
(583) Filter
Arguments: ((specialStockIndicator#70650 = ) AND (stockType#70651 = 01))
(584) LogicalRelation
Arguments: parquet, [product#70652, plant#70653, orderDateTime#70654, planningStartDateTime#70655], false
(585) RepartitionByExpression
Arguments: [product#70652, plant#70653], 25
(586) Project
Arguments: [product#70652, plant#70653, orderDateTime#70654]
(587) LogicalRelation
Arguments: parquet, [systemId#70656, internalUUID#70657, plant#70658, product#70659, blockedForReplenishmentStartingFrom#70660, productionAspect#70661, salesPlant#70662, listing#70663], false
(588) Repartition
Arguments: 25, true
(589) Project
Arguments: [systemId#70656, internalUUID#70657, plant#70658, product#70659, blockedForReplenishmentStartingFrom#70660, productionAspect#70661, salesPlant#70662, listing#70663, struct(systemId, systemId#70656, internalUUID, internalUUID#70657, plant, plant#70658, product, product#70659, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70660, productionAspect, productionAspect#70661, salesPlant, salesPlant#70662, listing, listing#70663) AS productPlant#70664]
(590) Project
Arguments: [productPlant#70664]
(591) Join
Arguments: LeftOuter, ((product#70652 <=> productPlant#70664.product.internalRefUUID) AND (plant#70653 <=> productPlant#70664.plant.internalRefUUID))
(592) Project
Arguments: [product#70652, plant#70653, orderDateTime#70654, productPlant#70664]
(593) SubqueryAlias
Arguments: wl
(594) LogicalRelation
Arguments: parquet, [systemId#70665, internalUUID#70666, id#70667, displayId#70668, name#70669, category#70670, companyCode#70671, address#70672, mainDistributionChain#70673, mainPurchasingOrganization#70674, validPurchasingOrganizations#70675, productGroup#70676], false
(595) Repartition
Arguments: 25, true
(596) Project
Arguments: [internalUUID#70666, address#70672.timeZone.code AS timezonecode#70677]
(597) Join
Arguments: LeftOuter, (plant#70653 <=> internalUUID#70666)
(598) Project
Arguments: [product#70652, plant#70653, orderDateTime#70654, productPlant#70664, internalUUID#70666, CASE WHEN isnotnull(timezonecode#70677) THEN timezonecode#70677 ELSE UTC END AS timezonecode#70678]
(599) Project
Arguments: [product#70652, plant#70653, orderDateTime#70654, productPlant#70664, timezonecode#70678]
(600) LogicalRelation
Arguments: parquet, [systemId#70679, internalUUID#70680, id#70681, displayId#70682, name#70683, baseUnitOfMeasure#70684, unitOfMeasures#70685, unitOfMeasureConversions#70686, productionAspect#70687, salesAspect#70688, procurementAspect#70689, productGroup#70690], false
(601) Repartition
Arguments: 25, true
(602) Join
Arguments: LeftOuter, (product#70652 = internalUUID#70680)
(603) Project
Arguments: [product#70652, plant#70653, orderDateTime#70654, productPlant#70664, timezonecode#70678, systemId#70679, internalUUID#70680, id#70681, displayId#70682, name#70683, baseUnitOfMeasure#70684, unitOfMeasures#70685, unitOfMeasureConversions#70686, productionAspect#70687, salesAspect#70688, procurementAspect#70689, productGroup#70690, filter(unitOfMeasureConversions#70686, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#70664.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#70664.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#70684.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70684.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#70691]
(604) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70691.quantityNumerator), true, [quantityNumerator#70692]
(605) Project
Arguments: [product#70652, plant#70653, orderDateTime#70654, productPlant#70664, timezonecode#70678, systemId#70679, internalUUID#70680, id#70681, displayId#70682, name#70683, baseUnitOfMeasure#70684, unitOfMeasures#70685, unitOfMeasureConversions#70686, productionAspect#70687, salesAspect#70688, procurementAspect#70689, productGroup#70690, filteredUnitOfMeasureConversions#70691, quantityNumerator#70692]
(606) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70691.quantityDenominator), true, [quantityDenominator#70693]
(607) Project
Arguments: [product#70652, plant#70653, orderDateTime#70654, productPlant#70664, timezonecode#70678, systemId#70679, internalUUID#70680, id#70681, displayId#70682, name#70683, baseUnitOfMeasure#70684, unitOfMeasures#70685, unitOfMeasureConversions#70686, productionAspect#70687, salesAspect#70688, procurementAspect#70689, productGroup#70690, filteredUnitOfMeasureConversions#70691, quantityNumerator#70692, quantityDenominator#70693]
(608) Project
Arguments: [product#70652, plant#70653, orderDateTime#70654, productPlant#70664, timezonecode#70678, systemId#70679, internalUUID#70680, id#70681, displayId#70682, name#70683, baseUnitOfMeasure#70684, unitOfMeasures#70685, unitOfMeasureConversions#70686, productionAspect#70687, salesAspect#70688, procurementAspect#70689, productGroup#70690, filteredUnitOfMeasureConversions#70691, quantityNumerator#70692, quantityDenominator#70693, (cast(quantityNumerator#70692 as double) / cast(quantityDenominator#70693 as double)) AS outboundUnit#70694]
(609) Project
Arguments: [product#70652, plant#70653, orderDateTime#70654, productPlant#70664, timezonecode#70678, systemId#70679, internalUUID#70680, id#70681, displayId#70682, name#70683, baseUnitOfMeasure#70684, unitOfMeasures#70685, unitOfMeasureConversions#70686, productionAspect#70687, salesAspect#70688, procurementAspect#70689, productGroup#70690, filteredUnitOfMeasureConversions#70691, quantityNumerator#70692, quantityDenominator#70693, CASE WHEN (isnull(outboundUnit#70694) OR (outboundUnit#70694 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70694 END AS outboundUnit#70695]
(610) Project
Arguments: [product#70652, plant#70653, orderDateTime#70654, productPlant#70664, timezonecode#70678, outboundUnit#70695]
(611) Join
Arguments: Inner, ((plantUuid#70644 = plant#70653) AND (productUuid#70646 = product#70652))
(612) Filter
Arguments: (calculationDateTime#70640 <= orderDateTime#70654)
(613) Project
Arguments: [plantUuid#70644 AS plant#70696, productUuid#70646 AS product#70697, storageLocId#70647, calculationDateTime#70640, quantity#70649]
(614) Aggregate
Arguments: [plant#70696, product#70697, storageLocId#70647], [plant#70696, product#70697, storageLocId#70647, max(calculationDateTime#70640) AS max_calc_datetime#70698]
(615) Join
Arguments: Inner, ((((plant#70559 <=> plant#70696) AND (product#70560 <=> product#70697)) AND (storageLocId#70506 <=> storageLocId#70647)) AND (calculationDateTime#70499 <=> max_calc_datetime#70698))
(616) Project
Arguments: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
(617) Aggregate
Arguments: [product#70560, plant#70559], [product#70560, plant#70559, sum(quantity#70508) AS quantitySum#70699, min(calculationDateTime#70499) AS minCalculationDateTime#70700]
(618) Project
Arguments: [product#70560, plant#70559, quantitySum#70699, minCalculationDateTime#70700, round(quantitySum#70699, 0) AS roundedQuantitySum#70701]
(619) Join
Arguments: LeftOuter, ((plant#70357 = plant#70559) AND (product#70356 = product#70560))
(620) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, roundedQuantitySum#70701, minCalculationDateTime#70700]
(621) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, roundedQuantitySum#70701, minCalculationDateTime#70700, CASE WHEN isnotnull(minCalculationDateTime#70700) THEN minCalculationDateTime#70700 ELSE orderDateTime#70358 END AS stockDatetime#70702]
(622) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, roundedQuantitySum#70701, minCalculationDateTime#70700, stockDatetime#70702, CASE WHEN isnotnull(roundedQuantitySum#70701) THEN array(roundedQuantitySum#70701) ELSE array(0.0) END AS stockBatchQuantities#70703]
(623) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, roundedQuantitySum#70701, minCalculationDateTime#70700, stockDatetime#70702, stockBatchQuantities#70703, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#70704]
(624) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, roundedQuantitySum#70701, stockDatetime#70702, stockBatchQuantities#70703, stockBatchShelfLifeEndDatetimes#70704]
(625) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, stockBatchShelfLifeEndDatetimes#70704]
(626) LogicalRelation
Arguments: parquet, [product#74620, plant#74621, demandChannel#74622, demandStream#74623, considerVariance#74624, demandTimeBuckets#74625, demandPointInTimeStart#74626, demandPointInTimeEnd#74627, demandPointInTime#74628], false
(627) Join
Arguments: LeftOuter, ((product#70356 = product#74620) AND (plant#70357 = plant#74621))
(628) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, stockBatchShelfLifeEndDatetimes#70704, demandChannel#74622, demandStream#74623, considerVariance#74624, demandTimeBuckets#74625, demandPointInTimeStart#74626, demandPointInTimeEnd#74627, demandPointInTime#74628, product#74620, plant#74621]
(629) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, stockBatchShelfLifeEndDatetimes#70704, demandChannel#74622, demandStream#74623, considerVariance#74624, demandTimeBuckets#74625, demandPointInTimeStart#74626, demandPointInTimeEnd#74627, demandPointInTime#74628, CASE WHEN isnotnull(product#74620) THEN struct(demandChannel, demandChannel#74622, demandStream, demandStream#74623, considerVariance, considerVariance#74624, demandTimeBuckets, demandTimeBuckets#74625, demandPointInTimeStart, demandPointInTimeStart#74626, demandPointInTimeEnd, demandPointInTimeEnd#74627, demandPointInTime, demandPointInTime#74628) ELSE cast(null as struct<demandChannel:string,demandStream:string,considerVariance:boolean,demandTimeBuckets:array<struct<demandStartDateTime:timestamp,demandQuantity:double,demandVariance:double>>,demandPointInTimeStart:timestamp,demandPointInTimeEnd:timestamp,demandPointInTime:array<struct<demandDateTime:timestamp,demandQuantity:double,demandVariance:double>>>) END AS rawDemands#69977]
(630) Aggregate
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, stockBatchShelfLifeEndDatetimes#70704], [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, stockBatchShelfLifeEndDatetimes#70704, collect_list(rawDemands#69977, 0, 0) AS rawDemands#70004]
(631) DeserializeToObject
Arguments: createexternalrow(invoke(product#70356.toString()), invoke(plant#70357.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#70358)), if (isnull(productPlant#70368)) null else createexternalrow(invoke(productPlant#70368.systemId.toString()), invoke(productPlant#70368.internalUUID.toString()), if (isnull(productPlant#70368.plant)) null else createexternalrow(invoke(productPlant#70368.plant.internalRefUUID.toString()), invoke(productPlant#70368.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#70368.product)) null else createexternalrow(invoke(productPlant#70368.product.internalRefUUID.toString()), invoke(productPlant#70368.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#70368.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#70368.productionAspect)) null else createexternalrow(if (isnull(productPlant#70368.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#70368.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#70368.productionAspect.productMovementPlants.unitOfIssue.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), if (isnull(productPlant#70368.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#70368.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#70368.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#70368.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#70368.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#70368.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#70368.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#70368.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#70368.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#70368.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#70368.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#70368.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#70368.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(minimumSafetyStock,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#70368.salesPlant)) null else createexternalrow(if (isnull(productPlant#70368.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#70368.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#70368.salesPlant.loadingGroup.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 10028), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 10028))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 10028).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 10028).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 10028).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#70368.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#70382.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#70401)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#70702)), mapobjects(lambdavariable(MapObject, DoubleType, true, 10029), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 10029) as double))), stockBatchQuantities#70703, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 10030), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 10030) as timestamp)))), stockBatchShelfLifeEndDatetimes#70704, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, 10031), assertnotnull(if (isnull(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, 10031))) null else createexternalrow(invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, 10031).demandChannel.toString()), invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, 10031).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, 10031).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10032), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10032))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10032).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10032).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10032).demandVariance)), StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, 10031).demandTimeBuckets, Some(class scala.collection.mutable.ArraySeq)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, 10031).demandPointInTimeStart)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, 10031).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10033), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10033))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10033).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10033).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10033).demandVariance)), StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, 10031).demandPointInTime, Some(class scala.collection.mutable.ArraySeq)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true))), rawDemands#70004, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#70342: org.apache.spark.sql.Row
(632) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@22b451ac, interface org.apache.spark.sql.Row, [StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)], obj#70347: org.apache.spark.sql.Row
(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#70352, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(1))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 1, plant), StringType, ObjectType(class java.lang.String)))) AS plant#70353, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)))) null else named_struct(demandChannel, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(0))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 0, demandChannel), StringType, ObjectType(class java.lang.String)))), demandStream, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(1))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 1, demandStream), StringType, ObjectType(class java.lang.String)))), considerVariance, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(2))) null else invoke(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 2, considerVariance), BooleanType, ObjectType(class java.lang.Boolean)).booleanValue()), demandValues, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(3))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10019), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10019), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)), None), demandVariances, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(4))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10020), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10020), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)), None), anchorDatetimes, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(5))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10021), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10021), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 5, anchorDatetimes), ArrayType(TimestampType,false), ObjectType(class java.lang.Object)), None), anchorWeekdays, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(6))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10022), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10022), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 6, anchorWeekdays), ArrayType(StringType,false), ObjectType(class java.lang.Object)), None), anchorIndices, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(7))) null else if (invoke(class [I.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 7, anchorIndices), ArrayType(IntegerType,false), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 7, anchorIndices), ArrayType(IntegerType,false), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10023), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10023), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 7, anchorIndices), ArrayType(IntegerType,false), ObjectType(class java.lang.Object)), None))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 2, dayBucketDemands), ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandValues,ArrayType(DoubleType,false),true),StructField(demandVariances,ArrayType(DoubleType,true),true),StructField(anchorDatetimes,ArrayType(TimestampType,false),true),StructField(anchorWeekdays,ArrayType(StringType,false),true),StructField(anchorIndices,ArrayType(IntegerType,false),true)),false), ObjectType(class java.lang.Object)), None) AS dayBucketDemands#70354, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)))) null else named_struct(demandChannel, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(0))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 0, demandChannel), StringType, ObjectType(class java.lang.String)))), demandStream, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(1))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 1, demandStream), StringType, ObjectType(class java.lang.String)))), considerVariance, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(2))) null else invoke(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 2, considerVariance), BooleanType, ObjectType(class java.lang.Boolean)).booleanValue()), demandDatetimes, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10025), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10025), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandDatetimes), ArrayType(TimestampType,false), ObjectType(class java.lang.Object)), None), demandValues, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(4))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10026), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10026), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)), None), demandVariances, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(5))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 5, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 5, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10027), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10027), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 5, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)), None), horizonStartDatetime, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(6))) null else static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 6, horizonStartDatetime), TimestampType, ObjectType(class java.sql.Timestamp)))), horizonEndDatetime, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(7))) null else static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 7, horizonEndDatetime), TimestampType, ObjectType(class java.sql.Timestamp)))))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 3, pointInTimeDemands), ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandDatetimes,ArrayType(TimestampType,false),true),StructField(demandValues,ArrayType(DoubleType,false),true),StructField(demandVariances,ArrayType(DoubleType,true),true),StructField(horizonStartDatetime,TimestampType,true),StructField(horizonEndDatetime,TimestampType,true)),false), ObjectType(class java.lang.Object)), None) AS pointInTimeDemands#70355]
(634) Join
Arguments: LeftOuter, ((plant#70353 <=> plant#74295) AND (product#70352 <=> product#74294))
(635) Project
Arguments: [product#74294, plant#74295, orderDateTime#74296, productPlant#74306, timezonecode#74320, outboundUnit#74337, stockDatetime#74617, stockBatchQuantities#74618, stockBatchShelfLifeEndDatetimes#74619, plant#70353, dayBucketDemands#70354, pointInTimeDemands#70355]
(636) Project
Arguments: [product#74294, plant#74295, orderDateTime#74296, productPlant#74306, timezonecode#74320, outboundUnit#74337, stockDatetime#74617, stockBatchQuantities#74618, stockBatchShelfLifeEndDatetimes#74619, dayBucketDemands#70354, pointInTimeDemands#70355]
(637) LogicalRelation
Arguments: parquet, [marketUnit#70831, description#70832, articleHierarchy#70833, defaultCurrency#70834, responsibilities#70835, replenishmentTypes#70836, distributionCenters#70837, assignedArticleHierarchyNodes#70838, minOrderQtySetting#70839, listingCheck#70840, odsSelection#70841, demandProfiles#70842, constraintProfiles#70843, optimizationProfiles#70844, orderGroupSplitProfiles#70845, supplierMinimumProfiles#70846, multipleRestrictionProfiles#70847, preferredUomSource#70848, handlingOfUnfulfilledDemands#70849, negligibleQuantitiesThreshold#70850, eventtype#70851, minOrderQtySettingInternal#70852], false
(638) Repartition
Arguments: 25, true
(639) Filter
Arguments: (marketUnit#70831 <=> Daily_grocery)
(640) Project
Arguments: [marketUnit#70831, description#70832, articleHierarchy#70833, defaultCurrency#70834, responsibilities#70835, replenishmentTypes#70836, distributionCenters#70837, assignedArticleHierarchyNodes#70838, minOrderQtySetting#70839, listingCheck#70840, odsSelection#70841, demandProfiles#70842, constraintProfiles#70843, optimizationProfiles#70844, orderGroupSplitProfiles#70845, supplierMinimumProfiles#70846, multipleRestrictionProfiles#70847, preferredUomSource#70848, handlingOfUnfulfilledDemands#70849, negligibleQuantitiesThreshold#70850, eventtype#70851, minOrderQtySettingInternal#70852]
(641) Project
Arguments: [distributionCenters#70837]
(642) Generate
Arguments: explode(distributionCenters#70837), false, [distributionCenters#70853]
(643) Project
Arguments: [distributionCenters#70853]
(644) Generate
Arguments: explode(distributionCenters#70853.storageLocations), false, [storageLocations#70856]
(645) Project
Arguments: [distributionCenters#70853.id AS plantId#70859, distributionCenters#70853.internalRefUUID AS plantUuid#70860, storageLocations#70856]
(646) Project
Arguments: [plantId#70859, plantUuid#70860, storageLocations#70856.id AS storageLocId#70863, storageLocations#70856.internalRefUUID AS storageLocUuid#70864]
(647) LogicalRelation
Arguments: parquet, [product#70869, plant#70870, orderDateTime#70871, planningStartDateTime#70872], false
(648) RepartitionByExpression
Arguments: [product#70869, plant#70870], 25
(649) Project
Arguments: [product#70869, plant#70870, orderDateTime#70871]
(650) LogicalRelation
Arguments: parquet, [systemId#70873, internalUUID#70874, plant#70875, product#70876, blockedForReplenishmentStartingFrom#70877, productionAspect#70878, salesPlant#70879, listing#70880], false
(651) Repartition
Arguments: 25, true
(652) Project
Arguments: [systemId#70873, internalUUID#70874, plant#70875, product#70876, blockedForReplenishmentStartingFrom#70877, productionAspect#70878, salesPlant#70879, listing#70880, struct(systemId, systemId#70873, internalUUID, internalUUID#70874, plant, plant#70875, product, product#70876, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70877, productionAspect, productionAspect#70878, salesPlant, salesPlant#70879, listing, listing#70880) AS productPlant#70889]
(653) Project
Arguments: [productPlant#70889]
(654) Join
Arguments: LeftOuter, ((product#70869 <=> productPlant#70889.product.internalRefUUID) AND (plant#70870 <=> productPlant#70889.plant.internalRefUUID))
(655) Project
Arguments: [product#70869, plant#70870, orderDateTime#70871, productPlant#70889]
(656) SubqueryAlias
Arguments: wl
(657) LogicalRelation
Arguments: parquet, [systemId#70904, internalUUID#70905, id#70906, displayId#70907, name#70908, category#70909, companyCode#70910, address#70911, mainDistributionChain#70912, mainPurchasingOrganization#70913, validPurchasingOrganizations#70914, productGroup#70915], false
(658) Repartition
Arguments: 25, true
(659) Project
Arguments: [internalUUID#70905, address#70911.timeZone.code AS timezonecode#70916]
(660) Join
Arguments: LeftOuter, (plant#70870 <=> internalUUID#70905)
(661) Project
Arguments: [product#70869, plant#70870, orderDateTime#70871, productPlant#70889, internalUUID#70905, CASE WHEN isnotnull(timezonecode#70916) THEN timezonecode#70916 ELSE UTC END AS timezonecode#70930]
(662) Project
Arguments: [product#70869, plant#70870, orderDateTime#70871, productPlant#70889, timezonecode#70930]
(663) LogicalRelation
Arguments: parquet, [systemId#70931, internalUUID#70932, id#70933, displayId#70934, name#70935, baseUnitOfMeasure#70936, unitOfMeasures#70937, unitOfMeasureConversions#70938, productionAspect#70939, salesAspect#70940, procurementAspect#70941, productGroup#70942], false
(664) Repartition
Arguments: 25, true
(665) Join
Arguments: LeftOuter, (product#70869 = internalUUID#70932)
(666) Project
Arguments: [product#70869, plant#70870, orderDateTime#70871, productPlant#70889, timezonecode#70930, systemId#70931, internalUUID#70932, id#70933, displayId#70934, name#70935, baseUnitOfMeasure#70936, unitOfMeasures#70937, unitOfMeasureConversions#70938, productionAspect#70939, salesAspect#70940, procurementAspect#70941, productGroup#70942, filter(unitOfMeasureConversions#70938, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#70889.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#70889.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#70936.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70936.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#70945]
(667) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70945.quantityNumerator), true, [quantityNumerator#70947]
(668) Project
Arguments: [product#70869, plant#70870, orderDateTime#70871, productPlant#70889, timezonecode#70930, systemId#70931, internalUUID#70932, id#70933, displayId#70934, name#70935, baseUnitOfMeasure#70936, unitOfMeasures#70937, unitOfMeasureConversions#70938, productionAspect#70939, salesAspect#70940, procurementAspect#70941, productGroup#70942, filteredUnitOfMeasureConversions#70945, quantityNumerator#70947]
(669) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70945.quantityDenominator), true, [quantityDenominator#70948]
(670) Project
Arguments: [product#70869, plant#70870, orderDateTime#70871, productPlant#70889, timezonecode#70930, systemId#70931, internalUUID#70932, id#70933, displayId#70934, name#70935, baseUnitOfMeasure#70936, unitOfMeasures#70937, unitOfMeasureConversions#70938, productionAspect#70939, salesAspect#70940, procurementAspect#70941, productGroup#70942, filteredUnitOfMeasureConversions#70945, quantityNumerator#70947, quantityDenominator#70948]
(671) Project
Arguments: [product#70869, plant#70870, orderDateTime#70871, productPlant#70889, timezonecode#70930, systemId#70931, internalUUID#70932, id#70933, displayId#70934, name#70935, baseUnitOfMeasure#70936, unitOfMeasures#70937, unitOfMeasureConversions#70938, productionAspect#70939, salesAspect#70940, procurementAspect#70941, productGroup#70942, filteredUnitOfMeasureConversions#70945, quantityNumerator#70947, quantityDenominator#70948, (cast(quantityNumerator#70947 as double) / cast(quantityDenominator#70948 as double)) AS outboundUnit#70950]
(672) Project
Arguments: [product#70869, plant#70870, orderDateTime#70871, productPlant#70889, timezonecode#70930, systemId#70931, internalUUID#70932, id#70933, displayId#70934, name#70935, baseUnitOfMeasure#70936, unitOfMeasures#70937, unitOfMeasureConversions#70938, productionAspect#70939, salesAspect#70940, procurementAspect#70941, productGroup#70942, filteredUnitOfMeasureConversions#70945, quantityNumerator#70947, quantityDenominator#70948, CASE WHEN (isnull(outboundUnit#70950) OR (outboundUnit#70950 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70950 END AS outboundUnit#70952]
(673) Project
Arguments: [product#70869, plant#70870, orderDateTime#70871, productPlant#70889, timezonecode#70930, outboundUnit#70952]
(674) Project
Arguments: [plant#70870]
(675) Deduplicate
Arguments: [plant#70870]
(676) Join
Arguments: Inner, (plantUuid#70860 = plant#70870)
(677) Project
Arguments: [plantId#70859, plantUuid#70860, storageLocId#70863, storageLocUuid#70864]
(678) Project
Arguments: [plantId#70859, plantUuid#70860 AS plant#70808, storageLocId#70863, storageLocUuid#70864]
(679) Join
Arguments: Inner, (plant#74295 = plant#70808)
(680) Project
Arguments: [plant#74295, product#74294, orderDateTime#74296, productPlant#74306, timezonecode#74320, outboundUnit#74337, stockDatetime#74617, stockBatchQuantities#74618, stockBatchShelfLifeEndDatetimes#74619, dayBucketDemands#70354, pointInTimeDemands#70355, plantId#70859, storageLocId#70863, storageLocUuid#70864, plant#70808]
(681) LogicalRelation
Arguments: parquet, [systemId#70738, internalUUID#70739, id#70740, displayId#70741, supplier#70742, type#70743, status#70744, isMarkedForDeletion#70745, items#70746], false
(682) Repartition
Arguments: 25, true
(683) Generate
Arguments: explode(items#70746), false, [item#70754]
(684) Project
Arguments: [id#70740, internalUUID#70739, isMarkedForDeletion#70745, supplier#70742.internalRefUUID AS supplierUuid#70749, item#70754]
(685) Filter
Arguments: (((NOT isMarkedForDeletion#70745 AND NOT item#70754.deletionIndicator) AND NOT item#70754.completeIndicator) AND NOT item#70754.returnIndicator)
(686) Project
Arguments: [id#70740, internalUUID#70739, supplierUuid#70749, item#70754.plant.internalRefUUID AS plant#70763, item#70754.product.internalRefUUID AS product#70764, item#70754.plant.id AS externalPlantId#70765, item#70754.product.id AS externalProductId#70766, item#70754.storageLocation.internalRefUUID AS storageLocUuid#70767, item#70754.quantityUnit.code AS quantityUom#70768, item#70754.quantityUnit.internalRefUUID AS quantityUomUuid#70769, item#70754.quantityNumerator AS quantityNumerator#70771, item#70754.quantityDenominator AS quantityDenominator#70772, item#70754.scheduleLines AS scheduleLines#70774, item#70754.confirmations AS confirmations#70776]
(687) Join
Arguments: Inner, (((product#74294 = product#70764) AND (plant#74295 = plant#70763)) AND (storageLocUuid#70864 = storageLocUuid#70767))
(688) Project
Arguments: [product#74294, plant#74295, storageLocUuid#70864, orderDateTime#74296, productPlant#74306, timezonecode#74320, outboundUnit#74337, stockDatetime#74617, stockBatchQuantities#74618, stockBatchShelfLifeEndDatetimes#74619, dayBucketDemands#70354, pointInTimeDemands#70355, plantId#70859, storageLocId#70863, id#70740, internalUUID#70739, supplierUuid#70749, externalPlantId#70765, externalProductId#70766, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, confirmations#70776, ... 4 more fields]
(689) Project
Arguments: [id#70740, internalUUID#70739, supplierUuid#70749, plant#70763, product#70764, externalPlantId#70765, externalProductId#70766, storageLocUuid#70767, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, confirmations#70776, stockDatetime#74617, timezonecode#74320]
(690) Project
Arguments: [id#70740, internalUUID#70739, supplierUuid#70749, plant#70763, product#70764, externalPlantId#70765, externalProductId#70766, storageLocUuid#70767, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, confirmations#70776, stockDatetime#74617, timezonecode#74320, filter(confirmations#70776, lambdafunction((((lambda x_1#70965.deletionIndicator = false) AND (lambda x_1#70965.isRelevantForConfirmation = true)) AND isnotnull(lambda x_1#70965.confirmedDeliveryAt)), lambda x_1#70965, false)) AS validConfirmations#70964]
(691) Project
Arguments: [id#70740, internalUUID#70739, supplierUuid#70749, plant#70763, product#70764, externalPlantId#70765, externalProductId#70766, storageLocUuid#70767, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, confirmations#70776, stockDatetime#74617, timezonecode#74320, validConfirmations#70964, transform(filter(scheduleLines#70774, lambdafunction(isnotnull(lambda x_3#74155.deliveryAt), lambda x_3#74155, false)), lambdafunction(struct(scheduledDate, to_date(from_utc_timestamp(lambda x_4#74156.deliveryAt, timezonecode#74320), None, Some(UTC), false), scheduledQuantity, lambda x_4#74156.quantity), lambda x_4#74156, false)) AS scheds#74154]
(692) Project
Arguments: [id#70740, internalUUID#70739, supplierUuid#70749, plant#70763, product#70764, externalPlantId#70765, externalProductId#70766, storageLocUuid#70767, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, confirmations#70776, stockDatetime#74617, timezonecode#74320, validConfirmations#70964, scheds#74154, transform(filter(validConfirmations#70964, lambdafunction(isnotnull(lambda x_7#74164.confirmedDeliveryAt), lambda x_7#74164, false)), lambdafunction(struct(confirmedDate, to_date(from_utc_timestamp(lambda x_8#74166.confirmedDeliveryAt, timezonecode#74320), None, Some(UTC), false), confirmedQuantity, lambda x_8#74166.confirmedQuantity), lambda x_8#74166, false)) AS confs#74162]
(693) Project
Arguments: [id#70740, externalProductId#70766, externalPlantId#70765, quantityUom#70768, scheds#74154, confs#74162]
(694) DeserializeToObject
Arguments: createexternalrow(invoke(id#70740.toString()), invoke(externalProductId#70766.toString()), invoke(externalPlantId#70765.toString()), invoke(quantityUom#70768.toString()), mapobjects(lambdavariable(MapObject, StructField(scheduledDate,DateType,true), StructField(scheduledQuantity,DoubleType,true), false, 11198), assertnotnull(if (isnull(lambdavariable(MapObject, StructField(scheduledDate,DateType,true), StructField(scheduledQuantity,DoubleType,true), false, 11198))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaDate(lambdavariable(MapObject, StructField(scheduledDate,DateType,true), StructField(scheduledQuantity,DoubleType,true), false, 11198).scheduledDate)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(scheduledDate,DateType,true), StructField(scheduledQuantity,DoubleType,true), false, 11198).scheduledQuantity)), StructField(scheduledDate,DateType,true), StructField(scheduledQuantity,DoubleType,true))), scheds#74154, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(confirmedDate,DateType,true), StructField(confirmedQuantity,DoubleType,true), false, 11199), assertnotnull(if (isnull(lambdavariable(MapObject, StructField(confirmedDate,DateType,true), StructField(confirmedQuantity,DoubleType,true), false, 11199))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaDate(lambdavariable(MapObject, StructField(confirmedDate,DateType,true), StructField(confirmedQuantity,DoubleType,true), false, 11199).confirmedDate)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(confirmedDate,DateType,true), StructField(confirmedQuantity,DoubleType,true), false, 11199).confirmedQuantity)), StructField(confirmedDate,DateType,true), StructField(confirmedQuantity,DoubleType,true))), confs#74162, 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#74184: org.apache.spark.sql.Row
(695) MapPartitions
Arguments: org.apache.spark.sql.internal.UDFAdaptors$$$Lambda/0x00000008024c8f20@55cc2817, obj#74193: 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#74202, 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#74203, 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#74204, 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#74205, 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#74206, 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#74207, 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#74208, 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#74209]
(697) LogicalRelation
Arguments: parquet, [name#68965, category#68968, status#68970, configurationVersion#68972, businessContext#68973, message#68974, settings#68976, eventtype#68978], false
(698) Repartition
Arguments: 25, true
(699) Filter
Arguments: (isnotnull(name#68965) AND isnotnull(configurationVersion#68972))
(700) Aggregate
Arguments: [name#68965], [name#68965, max(struct(configurationVersion, configurationVersion#68972, status, status#68970, settings, settings#68976)) AS latest#68984]
(701) Project
Arguments: [name#68965, latest#68984.configurationVersion AS configurationVersion#69003, latest#68984.status AS status#69004, latest#68984.settings AS settings#69005]
(702) Filter
Arguments: ((name#68965 = OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF) AND (status#69004 = ACTIVE))
(703) Project
Arguments: [configurationVersion#69003]
(704) Join
Arguments: Cross
(705) Project
Arguments: [id#74202, externalProductId#74203, externalPlantId#74204, quantityUom#74205, scheduledDate#74206, scheduledQuantity#74207, confirmedDate#74208, confirmedQuantity#74209, configurationVersion#69003, OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF AS name#74248]
(706) Project
Arguments: [id#74202, externalProductId#74203, externalPlantId#74204, quantityUom#74205, scheduledDate#74206, scheduledQuantity#74207, confirmedDate#74208, confirmedQuantity#74209, configurationVersion#69003, name#74248, array(struct(name, PURCHASE_ORDER, value, cast(id#74202 as string)), struct(name, PRODUCT, value, externalProductId#74203), struct(name, PLANT, value, externalPlantId#74204)) AS businessContext#74255]
(707) Project
Arguments: [id#74202, externalProductId#74203, externalPlantId#74204, quantityUom#74205, scheduledDate#74206, scheduledQuantity#74207, confirmedDate#74208, confirmedQuantity#74209, configurationVersion#69003, name#74248, businessContext#74255, array(struct(variableName, PO_QTY, variableValue, cast(scheduledQuantity#74207 as string)), struct(variableName, PO_UOM, variableValue, cast(quantityUom#74205 as string)), struct(variableName, PO_DELIVERY_DATE, variableValue, cast(scheduledDate#74206 as string)), struct(variableName, CO_QTY, variableValue, cast(confirmedQuantity#74209 as string)), struct(variableName, CO_UOM, variableValue, cast(quantityUom#74205 as string)), struct(variableName, CO_DELIVERY_DATE, variableValue, cast(confirmedDate#74208 as string))) AS messageVariables#74269]
(708) Deduplicate
Arguments: [name#74248, quantityUom#74205, scheduledQuantity#74207, externalPlantId#74204, id#74202, configurationVersion#69003, confirmedQuantity#74209, confirmedDate#74208, scheduledDate#74206, businessContext#74255, messageVariables#74269, externalProductId#74203]
(709) Project
Arguments: [id#74202, externalProductId#74203, externalPlantId#74204, quantityUom#74205, scheduledDate#74206, scheduledQuantity#74207, confirmedDate#74208, confirmedQuantity#74209, configurationVersion#69003, name#74248, businessContext#74255, messageVariables#74269, 10000002107 AS executionId#74277]
(710) Project
Arguments: [id#74202, externalProductId#74203, externalPlantId#74204, quantityUom#74205, scheduledDate#74206, scheduledQuantity#74207, confirmedDate#74208, confirmedQuantity#74209, configurationVersion#69003, name#74248, businessContext#74255, messageVariables#74269, executionId#74277, Daily_grocery AS marketUnit#74290]
(711) Project
Arguments: [id#74202, externalProductId#74203, externalPlantId#74204, quantityUom#74205, scheduledDate#74206, scheduledQuantity#74207, confirmedDate#74208, confirmedQuantity#74209, configurationVersion#69003, name#74248, businessContext#74255, messageVariables#74269, executionId#74277, marketUnit#74290, 2026-08-10T09:24:03.269Z AS createdAt#74292]
(712) Project
Arguments: [name#74248, configurationVersion#69003, executionId#74277, createdAt#74292, marketUnit#74290, businessContext#74255, messageVariables#74269]
(713) Union
Arguments: false, false
(714) Project
Arguments: [to_json(struct(name, name#69914, configurationVersion, configurationVersion#69913, executionId, executionId#69940, createdAt, createdAt#69962, marketUnit, marketUnit#69941, businessContext, businessContext#69919, messageVariables, messageVariables#69920), Some(UTC)) AS value#90191]
(715) Project
Arguments: [cast(value#90191 as string) AS value#90192]
(716) Project
Arguments: [value#90192, array(struct(key, X-Tenant-ID, value, cast(6944346648028224943 as binary)), struct(key, X-Message-ID, value, cast(uuid(Some(-2234784118550072453)) 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#90203]