== Physical Plan ==
AdaptiveSparkPlan (1978)
+- == Current Plan ==
ResultQueryStage (244)
+- * Project (243)
+- * Project (242)
+- * Project (241)
+- * BroadcastHashJoin LeftOuter BuildRight (240)
:- AQEShuffleRead (195)
: +- ShuffleQueryStage (194), Statistics(sizeInBytes=28.8 KiB, rowCount=205)
: +- Exchange (193)
: +- * Project (192)
: +- * BroadcastHashJoin LeftOuter BuildRight (191)
: :- * Project (37)
: : +- * Project (36)
: : +- * Generate (35)
: : +- * Generate (34)
: : +- * Project (33)
: : +- Project (32)
: : +- * BroadcastHashJoin LeftOuter BuildRight (31)
: : :- * Project (22)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (21)
: : : :- * BroadcastHashJoin LeftOuter BuildRight (13)
: : : : :- ShuffleQueryStage (4), Statistics(sizeInBytes=19.2 KiB, rowCount=205)
: : : : : +- Exchange (3)
: : : : : +- * ColumnarToRow (2)
: : : : : +- Scan parquet (1)
: : : : +- BroadcastQueryStage (12), Statistics(sizeInBytes=4.1 MiB, rowCount=2.75E+3)
: : : : +- BroadcastExchange (11)
: : : : +- * Project (10)
: : : : +- ShuffleQueryStage (9), Statistics(sizeInBytes=2.0 MiB, rowCount=2.75E+3)
: : : : +- Exchange (8)
: : : : +- * Project (7)
: : : : +- * ColumnarToRow (6)
: : : : +- Scan parquet (5)
: : : +- BroadcastQueryStage (20), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : +- BroadcastExchange (19)
: : : +- ShuffleQueryStage (18), Statistics(sizeInBytes=2.9 KiB, rowCount=62)
: : : +- Exchange (17)
: : : +- * Project (16)
: : : +- * ColumnarToRow (15)
: : : +- Scan parquet (14)
: : +- BroadcastQueryStage (30), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : +- BroadcastExchange (29)
: : +- ShuffleQueryStage (28), Statistics(sizeInBytes=92.7 KiB, rowCount=159)
: : +- Exchange (27)
: : +- * Project (26)
: : +- * Filter (25)
: : +- * ColumnarToRow (24)
: : +- Scan parquet (23)
: +- BroadcastQueryStage (190), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
: +- BroadcastExchange (189)
: +- * HashAggregate (188)
: +- AQEShuffleRead (187)
: +- ShuffleQueryStage (186), Statistics(sizeInBytes=4.5 KiB, rowCount=44)
: +- Exchange (185)
: +- * HashAggregate (184)
: +- * Project (183)
: +- * BroadcastHashJoin Inner BuildLeft (182)
: :- BroadcastQueryStage (133), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
: : +- BroadcastExchange (132)
: : +- AQEShuffleRead (131)
: : +- ShuffleQueryStage (130), Statistics(sizeInBytes=5.2 KiB, rowCount=44)
: : +- Exchange (129)
: : +- * Project (128)
: : +- * BroadcastHashJoin Inner BuildLeft (127)
: : :- BroadcastQueryStage (105), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : +- BroadcastExchange (104)
: : : +- AQEShuffleRead (103)
: : : +- ShuffleQueryStage (102), Statistics(sizeInBytes=46.2 KiB, rowCount=394)
: : : +- Exchange (101)
: : : +- * Project (100)
: : : +- * Filter (99)
: : : +- * Generate (98)
: : : +- * Filter (97)
: : : +- ObjectHashAggregate (96)
: : : +- ObjectHashAggregate (95)
: : : +- Generate (94)
: : : +- * BroadcastHashJoin Inner BuildLeft (93)
: : : :- BroadcastQueryStage (45), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : +- BroadcastExchange (44)
: : : : +- ShuffleQueryStage (43), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : +- Exchange (42)
: : : : +- * Project (41)
: : : : +- * Filter (40)
: : : : +- * ColumnarToRow (39)
: : : : +- Scan parquet (38)
: : : +- * Project (92)
: : : +- * BroadcastHashJoin Inner BuildLeft (91)
: : : :- BroadcastQueryStage (58), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : +- BroadcastExchange (57)
: : : : +- * Project (56)
: : : : +- * Generate (55)
: : : : +- * Project (54)
: : : : +- * Filter (53)
: : : : +- * Generate (52)
: : : : +- ShuffleQueryStage (51), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : : : +- Exchange (50)
: : : : +- * Project (49)
: : : : +- * Filter (48)
: : : : +- * ColumnarToRow (47)
: : : : +- Scan parquet (46)
: : : +- * HashAggregate (90)
: : : +- AQEShuffleRead (89)
: : : +- ShuffleQueryStage (88), Statistics(sizeInBytes=7.2 KiB, rowCount=153)
: : : +- Exchange (87)
: : : +- * HashAggregate (86)
: : : +- * Project (85)
: : : +- * Generate (84)
: : : +- * Project (83)
: : : +- * Generate (82)
: : : +- Project (81)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (80)
: : : :- * Project (77)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (76)
: : : : :- * Project (73)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (72)
: : : : : :- ShuffleQueryStage (63), Statistics(sizeInBytes=17.6 KiB, rowCount=205)
: : : : : : +- Exchange (62)
: : : : : : +- * Filter (61)
: : : : : : +- * ColumnarToRow (60)
: : : : : : +- Scan parquet (59)
: : : : : +- BroadcastQueryStage (71), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : +- BroadcastExchange (70)
: : : : : +- * Project (69)
: : : : : +- ShuffleQueryStage (68), Statistics(sizeInBytes=339.5 KiB, rowCount=2.75E+3)
: : : : : +- Exchange (67)
: : : : : +- * Project (66)
: : : : : +- * ColumnarToRow (65)
: : : : : +- Scan parquet (64)
: : : : +- BroadcastQueryStage (75), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : +- ReusedExchange (74)
: : : +- BroadcastQueryStage (79), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : +- ReusedExchange (78)
: : +- * Project (126)
: : +- * Generate (125)
: : +- * Project (124)
: : +- * Generate (123)
: : +- Project (122)
: : +- * BroadcastHashJoin LeftOuter BuildRight (121)
: : :- * Project (118)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (117)
: : : :- * Project (114)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (113)
: : : : :- ShuffleQueryStage (110), Statistics(sizeInBytes=19.2 KiB, rowCount=205)
: : : : : +- Exchange (109)
: : : : : +- * Filter (108)
: : : : : +- * ColumnarToRow (107)
: : : : : +- Scan parquet (106)
: : : : +- BroadcastQueryStage (112), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : +- ReusedExchange (111)
: : : +- BroadcastQueryStage (116), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : +- ReusedExchange (115)
: : +- BroadcastQueryStage (120), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : +- ReusedExchange (119)
: +- AQEShuffleRead (181)
: +- ShuffleQueryStage (180), Statistics(sizeInBytes=4.8 KiB, rowCount=44)
: +- Exchange (179)
: +- * HashAggregate (178)
: +- * HashAggregate (177)
: +- * Project (176)
: +- * BroadcastHashJoin Inner BuildLeft (175)
: :- BroadcastQueryStage (156), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : +- BroadcastExchange (155)
: : +- AQEShuffleRead (154)
: : +- ShuffleQueryStage (153), Statistics(sizeInBytes=43.1 KiB, rowCount=394)
: : +- Exchange (152)
: : +- * Project (151)
: : +- * Filter (150)
: : +- * Generate (149)
: : +- * Filter (148)
: : +- ObjectHashAggregate (147)
: : +- ObjectHashAggregate (146)
: : +- Generate (145)
: : +- * BroadcastHashJoin Inner BuildLeft (144)
: : :- BroadcastQueryStage (135), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : +- ReusedExchange (134)
: : +- * Project (143)
: : +- * BroadcastHashJoin Inner BuildLeft (142)
: : :- BroadcastQueryStage (137), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : +- ReusedExchange (136)
: : +- * HashAggregate (141)
: : +- AQEShuffleRead (140)
: : +- ShuffleQueryStage (139), Statistics(sizeInBytes=7.2 KiB, rowCount=153)
: : +- ReusedExchange (138)
: +- * Project (174)
: +- * Generate (173)
: +- * Project (172)
: +- * Generate (171)
: +- Project (170)
: +- * BroadcastHashJoin LeftOuter BuildRight (169)
: :- * Project (166)
: : +- * BroadcastHashJoin LeftOuter BuildRight (165)
: : :- * Project (162)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (161)
: : : :- ShuffleQueryStage (158), Statistics(sizeInBytes=19.2 KiB, rowCount=205)
: : : : +- ReusedExchange (157)
: : : +- BroadcastQueryStage (160), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : +- ReusedExchange (159)
: : +- BroadcastQueryStage (164), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : +- ReusedExchange (163)
: +- BroadcastQueryStage (168), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: +- ReusedExchange (167)
+- BroadcastQueryStage (239), Statistics(sizeInBytes=2.0 MiB, rowCount=205)
+- BroadcastExchange (238)
+- AQEShuffleRead (237)
+- ShuffleQueryStage (236), Statistics(sizeInBytes=57.2 KiB, rowCount=205)
+- Exchange (235)
+- * SerializeFromObject (234)
+- * MapElements (233)
+- * DeserializeToObject (232)
+- ObjectHashAggregate (231)
+- ObjectHashAggregate (230)
+- * Project (229)
+- * BroadcastHashJoin LeftOuter BuildRight (228)
:- * Project (222)
: +- * BroadcastHashJoin LeftOuter BuildRight (221)
: :- * Project (218)
: : +- * Project (217)
: : +- * Generate (216)
: : +- * Generate (215)
: : +- * Project (214)
: : +- Project (213)
: : +- * BroadcastHashJoin LeftOuter BuildRight (212)
: : :- * Project (209)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (208)
: : : :- * BroadcastHashJoin LeftOuter BuildRight (200)
: : : : :- ShuffleQueryStage (197), Statistics(sizeInBytes=19.2 KiB, rowCount=205)
: : : : : +- ReusedExchange (196)
: : : : +- BroadcastQueryStage (199), Statistics(sizeInBytes=4.1 MiB, rowCount=2.75E+3)
: : : : +- ReusedExchange (198)
: : : +- BroadcastQueryStage (207), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : +- BroadcastExchange (206)
: : : +- ShuffleQueryStage (205), Statistics(sizeInBytes=4.4 KiB, rowCount=62)
: : : +- Exchange (204)
: : : +- * Project (203)
: : : +- * ColumnarToRow (202)
: : : +- Scan parquet (201)
: : +- BroadcastQueryStage (211), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : +- ReusedExchange (210)
: +- BroadcastQueryStage (220), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
: +- ReusedExchange (219)
+- BroadcastQueryStage (227), Statistics(sizeInBytes=2.0 MiB, rowCount=205)
+- BroadcastExchange (226)
+- * Filter (225)
+- * ColumnarToRow (224)
+- Scan parquet (223)
+- == Initial Plan ==
Project (1977)
+- SortMergeJoin LeftOuter (1976)
:- Sort (681)
: +- Exchange (680)
: +- Project (679)
: +- SortMergeJoin LeftOuter (678)
: :- Sort (452)
: : +- Exchange (451)
: : +- Project (450)
: : +- SortMergeJoin LeftOuter (449)
: : :- Sort (267)
: : : +- Project (266)
: : : +- Project (265)
: : : +- Generate (264)
: : : +- Generate (263)
: : : +- Project (262)
: : : +- Project (261)
: : : +- BroadcastHashJoin LeftOuter BuildRight (260)
: : : :- Project (255)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (254)
: : : : :- BroadcastHashJoin LeftOuter BuildRight (250)
: : : : : :- Exchange (245)
: : : : : : +- Scan parquet (1)
: : : : : +- BroadcastExchange (249)
: : : : : +- Project (248)
: : : : : +- Exchange (247)
: : : : : +- Project (246)
: : : : : +- Scan parquet (5)
: : : : +- BroadcastExchange (253)
: : : : +- Exchange (252)
: : : : +- Project (251)
: : : : +- Scan parquet (14)
: : : +- BroadcastExchange (259)
: : : +- Exchange (258)
: : : +- Project (257)
: : : +- Filter (256)
: : : +- Scan parquet (23)
: : +- Sort (448)
: : +- HashAggregate (447)
: : +- Exchange (446)
: : +- HashAggregate (445)
: : +- Project (444)
: : +- SortMergeJoin Inner (443)
: : :- Sort (351)
: : : +- Exchange (350)
: : : +- Project (349)
: : : +- SortMergeJoin Inner (348)
: : : :- Sort (320)
: : : : +- Exchange (319)
: : : : +- Project (318)
: : : : +- Filter (317)
: : : : +- Generate (316)
: : : : +- Filter (315)
: : : : +- ObjectHashAggregate (314)
: : : : +- ObjectHashAggregate (313)
: : : : +- Generate (312)
: : : : +- BroadcastHashJoin Inner BuildLeft (311)
: : : : :- BroadcastExchange (271)
: : : : : +- Exchange (270)
: : : : : +- Project (269)
: : : : : +- Filter (268)
: : : : : +- Scan parquet (38)
: : : : +- Project (310)
: : : : +- BroadcastHashJoin Inner BuildLeft (309)
: : : : :- BroadcastExchange (280)
: : : : : +- Project (279)
: : : : : +- Generate (278)
: : : : : +- Project (277)
: : : : : +- Filter (276)
: : : : : +- Generate (275)
: : : : : +- Exchange (274)
: : : : : +- Project (273)
: : : : : +- Filter (272)
: : : : : +- Scan parquet (46)
: : : : +- HashAggregate (308)
: : : : +- Exchange (307)
: : : : +- HashAggregate (306)
: : : : +- Project (305)
: : : : +- Generate (304)
: : : : +- Project (303)
: : : : +- Generate (302)
: : : : +- Project (301)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (300)
: : : : :- Project (294)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (293)
: : : : : :- Project (288)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (287)
: : : : : : :- Exchange (282)
: : : : : : : +- Filter (281)
: : : : : : : +- Scan parquet (59)
: : : : : : +- BroadcastExchange (286)
: : : : : : +- Project (285)
: : : : : : +- Exchange (284)
: : : : : : +- Project (283)
: : : : : : +- Scan parquet (64)
: : : : : +- BroadcastExchange (292)
: : : : : +- Exchange (291)
: : : : : +- Project (290)
: : : : : +- Scan parquet (289)
: : : : +- BroadcastExchange (299)
: : : : +- Exchange (298)
: : : : +- Project (297)
: : : : +- Filter (296)
: : : : +- Scan parquet (295)
: : : +- Sort (347)
: : : +- Project (346)
: : : +- Generate (345)
: : : +- Project (344)
: : : +- Generate (343)
: : : +- Project (342)
: : : +- BroadcastHashJoin LeftOuter BuildRight (341)
: : : :- Project (335)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (334)
: : : : :- Project (329)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (328)
: : : : : :- Exchange (322)
: : : : : : +- Filter (321)
: : : : : : +- Scan parquet (106)
: : : : : +- BroadcastExchange (327)
: : : : : +- Project (326)
: : : : : +- Exchange (325)
: : : : : +- Project (324)
: : : : : +- Scan parquet (323)
: : : : +- BroadcastExchange (333)
: : : : +- Exchange (332)
: : : : +- Project (331)
: : : : +- Scan parquet (330)
: : : +- BroadcastExchange (340)
: : : +- Exchange (339)
: : : +- Project (338)
: : : +- Filter (337)
: : : +- Scan parquet (336)
: : +- Sort (442)
: : +- Exchange (441)
: : +- HashAggregate (440)
: : +- HashAggregate (439)
: : +- Project (438)
: : +- SortMergeJoin Inner (437)
: : :- Sort (408)
: : : +- Exchange (407)
: : : +- Project (406)
: : : +- Filter (405)
: : : +- Generate (404)
: : : +- Filter (403)
: : : +- ObjectHashAggregate (402)
: : : +- ObjectHashAggregate (401)
: : : +- Generate (400)
: : : +- BroadcastHashJoin Inner BuildLeft (399)
: : : :- BroadcastExchange (356)
: : : : +- Exchange (355)
: : : : +- Project (354)
: : : : +- Filter (353)
: : : : +- Scan parquet (352)
: : : +- Project (398)
: : : +- BroadcastHashJoin Inner BuildLeft (397)
: : : :- BroadcastExchange (366)
: : : : +- Project (365)
: : : : +- Generate (364)
: : : : +- Project (363)
: : : : +- Filter (362)
: : : : +- Generate (361)
: : : : +- Exchange (360)
: : : : +- Project (359)
: : : : +- Filter (358)
: : : : +- Scan parquet (357)
: : : +- HashAggregate (396)
: : : +- Exchange (395)
: : : +- HashAggregate (394)
: : : +- Project (393)
: : : +- Generate (392)
: : : +- Project (391)
: : : +- Generate (390)
: : : +- Project (389)
: : : +- BroadcastHashJoin LeftOuter BuildRight (388)
: : : :- Project (382)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (381)
: : : : :- Project (376)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (375)
: : : : : :- Exchange (369)
: : : : : : +- Filter (368)
: : : : : : +- Scan parquet (367)
: : : : : +- BroadcastExchange (374)
: : : : : +- Project (373)
: : : : : +- Exchange (372)
: : : : : +- Project (371)
: : : : : +- Scan parquet (370)
: : : : +- BroadcastExchange (380)
: : : : +- Exchange (379)
: : : : +- Project (378)
: : : : +- Scan parquet (377)
: : : +- BroadcastExchange (387)
: : : +- Exchange (386)
: : : +- Project (385)
: : : +- Filter (384)
: : : +- Scan parquet (383)
: : +- Sort (436)
: : +- Project (435)
: : +- Generate (434)
: : +- Project (433)
: : +- Generate (432)
: : +- Project (431)
: : +- BroadcastHashJoin LeftOuter BuildRight (430)
: : :- Project (424)
: : : +- BroadcastHashJoin LeftOuter BuildRight (423)
: : : :- Project (418)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (417)
: : : : :- Exchange (411)
: : : : : +- Filter (410)
: : : : : +- Scan parquet (409)
: : : : +- BroadcastExchange (416)
: : : : +- Project (415)
: : : : +- Exchange (414)
: : : : +- Project (413)
: : : : +- Scan parquet (412)
: : : +- BroadcastExchange (422)
: : : +- Exchange (421)
: : : +- Project (420)
: : : +- Scan parquet (419)
: : +- BroadcastExchange (429)
: : +- Exchange (428)
: : +- Project (427)
: : +- Filter (426)
: : +- Scan parquet (425)
: +- Sort (677)
: +- Exchange (676)
: +- SerializeFromObject (675)
: +- MapElements (674)
: +- DeserializeToObject (673)
: +- ObjectHashAggregate (672)
: +- ObjectHashAggregate (671)
: +- Project (670)
: +- BroadcastHashJoin LeftOuter BuildRight (669)
: :- Project (666)
: : +- SortMergeJoin LeftOuter (665)
: : :- Sort (478)
: : : +- Project (477)
: : : +- Project (476)
: : : +- Generate (475)
: : : +- Generate (474)
: : : +- Project (473)
: : : +- Project (472)
: : : +- BroadcastHashJoin LeftOuter BuildRight (471)
: : : :- Project (465)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (464)
: : : : :- BroadcastHashJoin LeftOuter BuildRight (460)
: : : : : :- Exchange (454)
: : : : : : +- Scan parquet (453)
: : : : : +- BroadcastExchange (459)
: : : : : +- Project (458)
: : : : : +- Exchange (457)
: : : : : +- Project (456)
: : : : : +- Scan parquet (455)
: : : : +- BroadcastExchange (463)
: : : : +- Exchange (462)
: : : : +- Project (461)
: : : : +- Scan parquet (201)
: : : +- BroadcastExchange (470)
: : : +- Exchange (469)
: : : +- Project (468)
: : : +- Filter (467)
: : : +- Scan parquet (466)
: : +- Sort (664)
: : +- HashAggregate (663)
: : +- Exchange (662)
: : +- HashAggregate (661)
: : +- Project (660)
: : +- SortMergeJoin Inner (659)
: : :- Sort (567)
: : : +- Exchange (566)
: : : +- Project (565)
: : : +- SortMergeJoin Inner (564)
: : : :- Sort (535)
: : : : +- Exchange (534)
: : : : +- Project (533)
: : : : +- Filter (532)
: : : : +- Generate (531)
: : : : +- Filter (530)
: : : : +- ObjectHashAggregate (529)
: : : : +- ObjectHashAggregate (528)
: : : : +- Generate (527)
: : : : +- BroadcastHashJoin Inner BuildLeft (526)
: : : : :- BroadcastExchange (483)
: : : : : +- Exchange (482)
: : : : : +- Project (481)
: : : : : +- Filter (480)
: : : : : +- Scan parquet (479)
: : : : +- Project (525)
: : : : +- BroadcastHashJoin Inner BuildLeft (524)
: : : : :- BroadcastExchange (493)
: : : : : +- Project (492)
: : : : : +- Generate (491)
: : : : : +- Project (490)
: : : : : +- Filter (489)
: : : : : +- Generate (488)
: : : : : +- Exchange (487)
: : : : : +- Project (486)
: : : : : +- Filter (485)
: : : : : +- Scan parquet (484)
: : : : +- HashAggregate (523)
: : : : +- Exchange (522)
: : : : +- HashAggregate (521)
: : : : +- Project (520)
: : : : +- Generate (519)
: : : : +- Project (518)
: : : : +- Generate (517)
: : : : +- Project (516)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (515)
: : : : :- Project (509)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (508)
: : : : : :- Project (503)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (502)
: : : : : : :- Exchange (496)
: : : : : : : +- Filter (495)
: : : : : : : +- Scan parquet (494)
: : : : : : +- BroadcastExchange (501)
: : : : : : +- Project (500)
: : : : : : +- Exchange (499)
: : : : : : +- Project (498)
: : : : : : +- Scan parquet (497)
: : : : : +- BroadcastExchange (507)
: : : : : +- Exchange (506)
: : : : : +- Project (505)
: : : : : +- Scan parquet (504)
: : : : +- BroadcastExchange (514)
: : : : +- Exchange (513)
: : : : +- Project (512)
: : : : +- Filter (511)
: : : : +- Scan parquet (510)
: : : +- Sort (563)
: : : +- Project (562)
: : : +- Generate (561)
: : : +- Project (560)
: : : +- Generate (559)
: : : +- Project (558)
: : : +- BroadcastHashJoin LeftOuter BuildRight (557)
: : : :- Project (551)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (550)
: : : : :- Project (545)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (544)
: : : : : :- Exchange (538)
: : : : : : +- Filter (537)
: : : : : : +- Scan parquet (536)
: : : : : +- BroadcastExchange (543)
: : : : : +- Project (542)
: : : : : +- Exchange (541)
: : : : : +- Project (540)
: : : : : +- Scan parquet (539)
: : : : +- BroadcastExchange (549)
: : : : +- Exchange (548)
: : : : +- Project (547)
: : : : +- Scan parquet (546)
: : : +- BroadcastExchange (556)
: : : +- Exchange (555)
: : : +- Project (554)
: : : +- Filter (553)
: : : +- Scan parquet (552)
: : +- Sort (658)
: : +- Exchange (657)
: : +- HashAggregate (656)
: : +- HashAggregate (655)
: : +- Project (654)
: : +- SortMergeJoin Inner (653)
: : :- Sort (624)
: : : +- Exchange (623)
: : : +- Project (622)
: : : +- Filter (621)
: : : +- Generate (620)
: : : +- Filter (619)
: : : +- ObjectHashAggregate (618)
: : : +- ObjectHashAggregate (617)
: : : +- Generate (616)
: : : +- BroadcastHashJoin Inner BuildLeft (615)
: : : :- BroadcastExchange (572)
: : : : +- Exchange (571)
: : : : +- Project (570)
: : : : +- Filter (569)
: : : : +- Scan parquet (568)
: : : +- Project (614)
: : : +- BroadcastHashJoin Inner BuildLeft (613)
: : : :- BroadcastExchange (582)
: : : : +- Project (581)
: : : : +- Generate (580)
: : : : +- Project (579)
: : : : +- Filter (578)
: : : : +- Generate (577)
: : : : +- Exchange (576)
: : : : +- Project (575)
: : : : +- Filter (574)
: : : : +- Scan parquet (573)
: : : +- HashAggregate (612)
: : : +- Exchange (611)
: : : +- HashAggregate (610)
: : : +- Project (609)
: : : +- Generate (608)
: : : +- Project (607)
: : : +- Generate (606)
: : : +- Project (605)
: : : +- BroadcastHashJoin LeftOuter BuildRight (604)
: : : :- Project (598)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (597)
: : : : :- Project (592)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (591)
: : : : : :- Exchange (585)
: : : : : : +- Filter (584)
: : : : : : +- Scan parquet (583)
: : : : : +- BroadcastExchange (590)
: : : : : +- Project (589)
: : : : : +- Exchange (588)
: : : : : +- Project (587)
: : : : : +- Scan parquet (586)
: : : : +- BroadcastExchange (596)
: : : : +- Exchange (595)
: : : : +- Project (594)
: : : : +- Scan parquet (593)
: : : +- BroadcastExchange (603)
: : : +- Exchange (602)
: : : +- Project (601)
: : : +- Filter (600)
: : : +- Scan parquet (599)
: : +- Sort (652)
: : +- Project (651)
: : +- Generate (650)
: : +- Project (649)
: : +- Generate (648)
: : +- Project (647)
: : +- BroadcastHashJoin LeftOuter BuildRight (646)
: : :- Project (640)
: : : +- BroadcastHashJoin LeftOuter BuildRight (639)
: : : :- Project (634)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (633)
: : : : :- Exchange (627)
: : : : : +- Filter (626)
: : : : : +- Scan parquet (625)
: : : : +- BroadcastExchange (632)
: : : : +- Project (631)
: : : : +- Exchange (630)
: : : : +- Project (629)
: : : : +- Scan parquet (628)
: : : +- BroadcastExchange (638)
: : : +- Exchange (637)
: : : +- Project (636)
: : : +- Scan parquet (635)
: : +- BroadcastExchange (645)
: : +- Exchange (644)
: : +- Project (643)
: : +- Filter (642)
: : +- Scan parquet (641)
: +- BroadcastExchange (668)
: +- Filter (667)
: +- Scan parquet (223)
+- Sort (1975)
+- Project (1974)
+- ObjectHashAggregate (1973)
+- Exchange (1972)
+- ObjectHashAggregate (1971)
+- Union (1970)
:- Filter (1508)
: +- InMemoryTableScan (682)
: +- InMemoryRelation (683)
: +- AdaptiveSparkPlan (1507)
+- == Final Plan ==
ResultQueryStage (685)
+- EmptyRelation (684)
+- Filter (unknown)
+- EmptyRelation (unknown)
+- == Initial Plan ==
Filter (1506)
+- ObjectHashAggregate (1505)
+- Exchange (1504)
+- ObjectHashAggregate (1503)
+- Project (1502)
+- Window (1501)
+- Sort (1500)
+- Exchange (1499)
+- Project (1498)
+- InMemoryTableScan (686)
+- InMemoryRelation (687)
+- AdaptiveSparkPlan (1497)
+- == Final Plan ==
ResultQueryStage (1004)
+- Project (1003)
+- * BroadcastHashJoin Inner BuildRight (1002)
:- * Project (990)
: +- * BroadcastHashJoin Inner BuildLeft (989)
: :- BroadcastQueryStage (973), Statistics(sizeInBytes=2.0 MiB, rowCount=205)
: : +- BroadcastExchange (972)
: : +- AQEShuffleRead (971)
: : +- ShuffleQueryStage (970), Statistics(sizeInBytes=24.0 KiB, rowCount=205)
: : +- Exchange (969)
: : +- * Project (968)
: : +- * BroadcastHashJoin LeftOuter BuildRight (967)
: : :- AQEShuffleRead (861)
: : : +- ShuffleQueryStage (860), Statistics(sizeInBytes=24.0 KiB, rowCount=205)
: : : +- Exchange (859)
: : : +- * Project (858)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (857)
: : : :- * Project (725)
: : : : +- * Generate (724)
: : : : +- * Project (723)
: : : : +- * Generate (722)
: : : : +- Project (721)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (720)
: : : : :- * Project (711)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (710)
: : : : : :- * Project (702)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (701)
: : : : : : :- ShuffleQueryStage (692), Statistics(sizeInBytes=19.2 KiB, rowCount=205)
: : : : : : : +- Exchange (691)
: : : : : : : +- * Filter (690)
: : : : : : : +- * ColumnarToRow (689)
: : : : : : : +- Scan parquet (688)
: : : : : : +- BroadcastQueryStage (700), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (699)
: : : : : : +- * Project (698)
: : : : : : +- ShuffleQueryStage (697), Statistics(sizeInBytes=339.5 KiB, rowCount=2.75E+3)
: : : : : : +- Exchange (696)
: : : : : : +- * Project (695)
: : : : : : +- * ColumnarToRow (694)
: : : : : : +- Scan parquet (693)
: : : : : +- BroadcastQueryStage (709), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- BroadcastExchange (708)
: : : : : +- ShuffleQueryStage (707), Statistics(sizeInBytes=4.4 KiB, rowCount=62)
: : : : : +- Exchange (706)
: : : : : +- * Project (705)
: : : : : +- * ColumnarToRow (704)
: : : : : +- Scan parquet (703)
: : : : +- BroadcastQueryStage (719), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- BroadcastExchange (718)
: : : : +- ShuffleQueryStage (717), Statistics(sizeInBytes=92.7 KiB, rowCount=159)
: : : : +- Exchange (716)
: : : : +- * Project (715)
: : : : +- * Filter (714)
: : : : +- * ColumnarToRow (713)
: : : : +- Scan parquet (712)
: : : +- BroadcastQueryStage (856), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
: : : +- BroadcastExchange (855)
: : : +- * HashAggregate (854)
: : : +- AQEShuffleRead (853)
: : : +- ShuffleQueryStage (852), Statistics(sizeInBytes=4.1 KiB, rowCount=44)
: : : +- Exchange (851)
: : : +- * HashAggregate (850)
: : : +- * Project (849)
: : : +- * BroadcastHashJoin Inner BuildLeft (848)
: : : :- BroadcastQueryStage (820), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
: : : : +- BroadcastExchange (819)
: : : : +- AQEShuffleRead (818)
: : : : +- ShuffleQueryStage (817), Statistics(sizeInBytes=4.8 KiB, rowCount=44)
: : : : +- Exchange (816)
: : : : +- * Project (815)
: : : : +- * BroadcastHashJoin Inner BuildLeft (814)
: : : : :- BroadcastQueryStage (792), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : : +- BroadcastExchange (791)
: : : : : +- AQEShuffleRead (790)
: : : : : +- ShuffleQueryStage (789), Statistics(sizeInBytes=43.1 KiB, rowCount=394)
: : : : : +- Exchange (788)
: : : : : +- * Project (787)
: : : : : +- * Filter (786)
: : : : : +- * Generate (785)
: : : : : +- * Filter (784)
: : : : : +- ObjectHashAggregate (783)
: : : : : +- ObjectHashAggregate (782)
: : : : : +- Generate (781)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (780)
: : : : : :- BroadcastQueryStage (733), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- BroadcastExchange (732)
: : : : : : +- ShuffleQueryStage (731), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : : : +- Exchange (730)
: : : : : : +- * Project (729)
: : : : : : +- * Filter (728)
: : : : : : +- * ColumnarToRow (727)
: : : : : : +- Scan parquet (726)
: : : : : +- * Project (779)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (778)
: : : : : :- BroadcastQueryStage (746), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- BroadcastExchange (745)
: : : : : : +- * Project (744)
: : : : : : +- * Generate (743)
: : : : : : +- * Project (742)
: : : : : : +- * Filter (741)
: : : : : : +- * Generate (740)
: : : : : : +- ShuffleQueryStage (739), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : : : : : +- Exchange (738)
: : : : : : +- * Project (737)
: : : : : : +- * Filter (736)
: : : : : : +- * ColumnarToRow (735)
: : : : : : +- Scan parquet (734)
: : : : : +- * HashAggregate (777)
: : : : : +- AQEShuffleRead (776)
: : : : : +- ShuffleQueryStage (775), Statistics(sizeInBytes=7.2 KiB, rowCount=153)
: : : : : +- Exchange (774)
: : : : : +- * HashAggregate (773)
: : : : : +- * Project (772)
: : : : : +- * Generate (771)
: : : : : +- * Project (770)
: : : : : +- * Generate (769)
: : : : : +- Project (768)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (767)
: : : : : :- * Project (764)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (763)
: : : : : : :- * Project (755)
: : : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (754)
: : : : : : : :- ShuffleQueryStage (751), Statistics(sizeInBytes=17.6 KiB, rowCount=205)
: : : : : : : : +- Exchange (750)
: : : : : : : : +- * Filter (749)
: : : : : : : : +- * ColumnarToRow (748)
: : : : : : : : +- Scan parquet (747)
: : : : : : : +- BroadcastQueryStage (753), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : : +- ReusedExchange (752)
: : : : : : +- BroadcastQueryStage (762), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : : +- BroadcastExchange (761)
: : : : : : +- ShuffleQueryStage (760), Statistics(sizeInBytes=2.9 KiB, rowCount=62)
: : : : : : +- Exchange (759)
: : : : : : +- * Project (758)
: : : : : : +- * ColumnarToRow (757)
: : : : : : +- Scan parquet (756)
: : : : : +- BroadcastQueryStage (766), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : : +- ReusedExchange (765)
: : : : +- * Project (813)
: : : : +- * Generate (812)
: : : : +- * Project (811)
: : : : +- * Generate (810)
: : : : +- Project (809)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (808)
: : : : :- * Project (805)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (804)
: : : : : :- * Project (801)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (800)
: : : : : : :- ShuffleQueryStage (797), Statistics(sizeInBytes=19.2 KiB, rowCount=205)
: : : : : : : +- Exchange (796)
: : : : : : : +- * Filter (795)
: : : : : : : +- * ColumnarToRow (794)
: : : : : : : +- Scan parquet (793)
: : : : : : +- BroadcastQueryStage (799), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- ReusedExchange (798)
: : : : : +- BroadcastQueryStage (803), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (802)
: : : : +- BroadcastQueryStage (807), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (806)
: : : +- AQEShuffleRead (847)
: : : +- ShuffleQueryStage (846), Statistics(sizeInBytes=4.8 KiB, rowCount=44)
: : : +- Exchange (845)
: : : +- * HashAggregate (844)
: : : +- * HashAggregate (843)
: : : +- * Project (842)
: : : +- * BroadcastHashJoin Inner BuildLeft (841)
: : : :- BroadcastQueryStage (822), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : +- ReusedExchange (821)
: : : +- * Project (840)
: : : +- * Generate (839)
: : : +- * Project (838)
: : : +- * Generate (837)
: : : +- Project (836)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (835)
: : : :- * Project (832)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (831)
: : : : :- * Project (828)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (827)
: : : : : :- ShuffleQueryStage (824), Statistics(sizeInBytes=19.2 KiB, rowCount=205)
: : : : : : +- ReusedExchange (823)
: : : : : +- BroadcastQueryStage (826), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : +- ReusedExchange (825)
: : : : +- BroadcastQueryStage (830), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : +- ReusedExchange (829)
: : : +- BroadcastQueryStage (834), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : +- ReusedExchange (833)
: : +- BroadcastQueryStage (966), Statistics(sizeInBytes=2.0 MiB, rowCount=205)
: : +- BroadcastExchange (965)
: : +- AQEShuffleRead (964)
: : +- ShuffleQueryStage (963), Statistics(sizeInBytes=17.6 KiB, rowCount=205)
: : +- Exchange (962)
: : +- * SerializeFromObject (961)
: : +- * MapElements (960)
: : +- * DeserializeToObject (959)
: : +- ObjectHashAggregate (958)
: : +- ObjectHashAggregate (957)
: : +- * Project (956)
: : +- * BroadcastHashJoin LeftOuter BuildRight (955)
: : :- * Project (949)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (948)
: : : :- * Project (887)
: : : : +- * Project (886)
: : : : +- * Generate (885)
: : : : +- * Generate (884)
: : : : +- * Project (883)
: : : : +- Project (882)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (881)
: : : : :- * Project (878)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (877)
: : : : : :- * BroadcastHashJoin LeftOuter BuildRight (874)
: : : : : : :- ShuffleQueryStage (865), Statistics(sizeInBytes=19.2 KiB, rowCount=205)
: : : : : : : +- Exchange (864)
: : : : : : : +- * ColumnarToRow (863)
: : : : : : : +- Scan parquet (862)
: : : : : : +- BroadcastQueryStage (873), Statistics(sizeInBytes=4.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (872)
: : : : : : +- * Project (871)
: : : : : : +- ShuffleQueryStage (870), Statistics(sizeInBytes=2.0 MiB, rowCount=2.75E+3)
: : : : : : +- Exchange (869)
: : : : : : +- * Project (868)
: : : : : : +- * ColumnarToRow (867)
: : : : : : +- Scan parquet (866)
: : : : : +- BroadcastQueryStage (876), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (875)
: : : : +- BroadcastQueryStage (880), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (879)
: : : +- BroadcastQueryStage (947), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
: : : +- BroadcastExchange (946)
: : : +- * HashAggregate (945)
: : : +- AQEShuffleRead (944)
: : : +- ShuffleQueryStage (943), Statistics(sizeInBytes=4.5 KiB, rowCount=44)
: : : +- Exchange (942)
: : : +- * HashAggregate (941)
: : : +- * Project (940)
: : : +- * BroadcastHashJoin Inner BuildLeft (939)
: : : :- BroadcastQueryStage (935), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
: : : : +- BroadcastExchange (934)
: : : : +- AQEShuffleRead (933)
: : : : +- ShuffleQueryStage (932), Statistics(sizeInBytes=5.2 KiB, rowCount=44)
: : : : +- Exchange (931)
: : : : +- * Project (930)
: : : : +- * BroadcastHashJoin Inner BuildLeft (929)
: : : : :- BroadcastQueryStage (910), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : : +- BroadcastExchange (909)
: : : : : +- AQEShuffleRead (908)
: : : : : +- ShuffleQueryStage (907), Statistics(sizeInBytes=46.2 KiB, rowCount=394)
: : : : : +- Exchange (906)
: : : : : +- * Project (905)
: : : : : +- * Filter (904)
: : : : : +- * Generate (903)
: : : : : +- * Filter (902)
: : : : : +- ObjectHashAggregate (901)
: : : : : +- ObjectHashAggregate (900)
: : : : : +- Generate (899)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (898)
: : : : : :- BroadcastQueryStage (889), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- ReusedExchange (888)
: : : : : +- * Project (897)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (896)
: : : : : :- BroadcastQueryStage (891), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- ReusedExchange (890)
: : : : : +- * HashAggregate (895)
: : : : : +- AQEShuffleRead (894)
: : : : : +- ShuffleQueryStage (893), Statistics(sizeInBytes=7.2 KiB, rowCount=153)
: : : : : +- ReusedExchange (892)
: : : : +- * Project (928)
: : : : +- * Generate (927)
: : : : +- * Project (926)
: : : : +- * Generate (925)
: : : : +- Project (924)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (923)
: : : : :- * Project (920)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (919)
: : : : : :- * Project (916)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (915)
: : : : : : :- ShuffleQueryStage (912), Statistics(sizeInBytes=19.2 KiB, rowCount=205)
: : : : : : : +- ReusedExchange (911)
: : : : : : +- BroadcastQueryStage (914), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- ReusedExchange (913)
: : : : : +- BroadcastQueryStage (918), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (917)
: : : : +- BroadcastQueryStage (922), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (921)
: : : +- AQEShuffleRead (938)
: : : +- ShuffleQueryStage (937), Statistics(sizeInBytes=4.8 KiB, rowCount=44)
: : : +- ReusedExchange (936)
: : +- BroadcastQueryStage (954), Statistics(sizeInBytes=2.0 MiB, rowCount=205)
: : +- BroadcastExchange (953)
: : +- * Filter (952)
: : +- * ColumnarToRow (951)
: : +- Scan parquet (950)
: +- * Project (988)
: +- * BroadcastHashJoin Inner BuildLeft (987)
: :- BroadcastQueryStage (983), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : +- BroadcastExchange (982)
: : +- * Project (981)
: : +- * Filter (980)
: : +- * Generate (979)
: : +- * Project (978)
: : +- * Filter (977)
: : +- * Generate (976)
: : +- ShuffleQueryStage (975), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : +- ReusedExchange (974)
: +- * HashAggregate (986)
: +- ShuffleQueryStage (985), Statistics(sizeInBytes=7.2 KiB, rowCount=153)
: +- ReusedExchange (984)
+- BroadcastQueryStage (1001), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
+- BroadcastExchange (1000)
+- * Project (999)
+- * Filter (998)
+- * Generate (997)
+- ShuffleQueryStage (996), Statistics(sizeInBytes=29.9 KiB, rowCount=9)
+- Exchange (995)
+- * Project (994)
+- * Filter (993)
+- * ColumnarToRow (992)
+- Scan parquet (991)
+- == Initial Plan ==
Project (1496)
+- BroadcastHashJoin Inner BuildRight (1495)
:- Project (1487)
: +- SortMergeJoin Inner (1486)
: :- Sort (1441)
: : +- Exchange (1440)
: : +- Project (1439)
: : +- SortMergeJoin LeftOuter (1438)
: : :- Sort (1213)
: : : +- Exchange (1212)
: : : +- Project (1211)
: : : +- SortMergeJoin LeftOuter (1210)
: : : :- Sort (1028)
: : : : +- Project (1027)
: : : : +- Generate (1026)
: : : : +- Project (1025)
: : : : +- Generate (1024)
: : : : +- Project (1023)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1022)
: : : : :- Project (1017)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1016)
: : : : : :- Project (1012)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1011)
: : : : : : :- Exchange (1006)
: : : : : : : +- Filter (1005)
: : : : : : : +- Scan parquet (688)
: : : : : : +- BroadcastExchange (1010)
: : : : : : +- Project (1009)
: : : : : : +- Exchange (1008)
: : : : : : +- Project (1007)
: : : : : : +- Scan parquet (693)
: : : : : +- BroadcastExchange (1015)
: : : : : +- Exchange (1014)
: : : : : +- Project (1013)
: : : : : +- Scan parquet (703)
: : : : +- BroadcastExchange (1021)
: : : : +- Exchange (1020)
: : : : +- Project (1019)
: : : : +- Filter (1018)
: : : : +- Scan parquet (712)
: : : +- Sort (1209)
: : : +- HashAggregate (1208)
: : : +- Exchange (1207)
: : : +- HashAggregate (1206)
: : : +- Project (1205)
: : : +- SortMergeJoin Inner (1204)
: : : :- Sort (1112)
: : : : +- Exchange (1111)
: : : : +- Project (1110)
: : : : +- SortMergeJoin Inner (1109)
: : : : :- Sort (1081)
: : : : : +- Exchange (1080)
: : : : : +- Project (1079)
: : : : : +- Filter (1078)
: : : : : +- Generate (1077)
: : : : : +- Filter (1076)
: : : : : +- ObjectHashAggregate (1075)
: : : : : +- ObjectHashAggregate (1074)
: : : : : +- Generate (1073)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1072)
: : : : : :- BroadcastExchange (1032)
: : : : : : +- Exchange (1031)
: : : : : : +- Project (1030)
: : : : : : +- Filter (1029)
: : : : : : +- Scan parquet (726)
: : : : : +- Project (1071)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1070)
: : : : : :- BroadcastExchange (1041)
: : : : : : +- Project (1040)
: : : : : : +- Generate (1039)
: : : : : : +- Project (1038)
: : : : : : +- Filter (1037)
: : : : : : +- Generate (1036)
: : : : : : +- Exchange (1035)
: : : : : : +- Project (1034)
: : : : : : +- Filter (1033)
: : : : : : +- Scan parquet (734)
: : : : : +- HashAggregate (1069)
: : : : : +- Exchange (1068)
: : : : : +- HashAggregate (1067)
: : : : : +- Project (1066)
: : : : : +- Generate (1065)
: : : : : +- Project (1064)
: : : : : +- Generate (1063)
: : : : : +- Project (1062)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1061)
: : : : : :- Project (1055)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1054)
: : : : : : :- Project (1050)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1049)
: : : : : : : :- Exchange (1043)
: : : : : : : : +- Filter (1042)
: : : : : : : : +- Scan parquet (747)
: : : : : : : +- BroadcastExchange (1048)
: : : : : : : +- Project (1047)
: : : : : : : +- Exchange (1046)
: : : : : : : +- Project (1045)
: : : : : : : +- Scan parquet (1044)
: : : : : : +- BroadcastExchange (1053)
: : : : : : +- Exchange (1052)
: : : : : : +- Project (1051)
: : : : : : +- Scan parquet (756)
: : : : : +- BroadcastExchange (1060)
: : : : : +- Exchange (1059)
: : : : : +- Project (1058)
: : : : : +- Filter (1057)
: : : : : +- Scan parquet (1056)
: : : : +- Sort (1108)
: : : : +- Project (1107)
: : : : +- Generate (1106)
: : : : +- Project (1105)
: : : : +- Generate (1104)
: : : : +- Project (1103)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1102)
: : : : :- Project (1096)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1095)
: : : : : :- Project (1090)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1089)
: : : : : : :- Exchange (1083)
: : : : : : : +- Filter (1082)
: : : : : : : +- Scan parquet (793)
: : : : : : +- BroadcastExchange (1088)
: : : : : : +- Project (1087)
: : : : : : +- Exchange (1086)
: : : : : : +- Project (1085)
: : : : : : +- Scan parquet (1084)
: : : : : +- BroadcastExchange (1094)
: : : : : +- Exchange (1093)
: : : : : +- Project (1092)
: : : : : +- Scan parquet (1091)
: : : : +- BroadcastExchange (1101)
: : : : +- Exchange (1100)
: : : : +- Project (1099)
: : : : +- Filter (1098)
: : : : +- Scan parquet (1097)
: : : +- Sort (1203)
: : : +- Exchange (1202)
: : : +- HashAggregate (1201)
: : : +- HashAggregate (1200)
: : : +- Project (1199)
: : : +- SortMergeJoin Inner (1198)
: : : :- Sort (1169)
: : : : +- Exchange (1168)
: : : : +- Project (1167)
: : : : +- Filter (1166)
: : : : +- Generate (1165)
: : : : +- Filter (1164)
: : : : +- ObjectHashAggregate (1163)
: : : : +- ObjectHashAggregate (1162)
: : : : +- Generate (1161)
: : : : +- BroadcastHashJoin Inner BuildLeft (1160)
: : : : :- BroadcastExchange (1117)
: : : : : +- Exchange (1116)
: : : : : +- Project (1115)
: : : : : +- Filter (1114)
: : : : : +- Scan parquet (1113)
: : : : +- Project (1159)
: : : : +- BroadcastHashJoin Inner BuildLeft (1158)
: : : : :- BroadcastExchange (1127)
: : : : : +- Project (1126)
: : : : : +- Generate (1125)
: : : : : +- Project (1124)
: : : : : +- Filter (1123)
: : : : : +- Generate (1122)
: : : : : +- Exchange (1121)
: : : : : +- Project (1120)
: : : : : +- Filter (1119)
: : : : : +- Scan parquet (1118)
: : : : +- HashAggregate (1157)
: : : : +- Exchange (1156)
: : : : +- HashAggregate (1155)
: : : : +- Project (1154)
: : : : +- Generate (1153)
: : : : +- Project (1152)
: : : : +- Generate (1151)
: : : : +- Project (1150)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1149)
: : : : :- Project (1143)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1142)
: : : : : :- Project (1137)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1136)
: : : : : : :- Exchange (1130)
: : : : : : : +- Filter (1129)
: : : : : : : +- Scan parquet (1128)
: : : : : : +- BroadcastExchange (1135)
: : : : : : +- Project (1134)
: : : : : : +- Exchange (1133)
: : : : : : +- Project (1132)
: : : : : : +- Scan parquet (1131)
: : : : : +- BroadcastExchange (1141)
: : : : : +- Exchange (1140)
: : : : : +- Project (1139)
: : : : : +- Scan parquet (1138)
: : : : +- BroadcastExchange (1148)
: : : : +- Exchange (1147)
: : : : +- Project (1146)
: : : : +- Filter (1145)
: : : : +- Scan parquet (1144)
: : : +- Sort (1197)
: : : +- Project (1196)
: : : +- Generate (1195)
: : : +- Project (1194)
: : : +- Generate (1193)
: : : +- Project (1192)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1191)
: : : :- Project (1185)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1184)
: : : : :- Project (1179)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1178)
: : : : : :- Exchange (1172)
: : : : : : +- Filter (1171)
: : : : : : +- Scan parquet (1170)
: : : : : +- BroadcastExchange (1177)
: : : : : +- Project (1176)
: : : : : +- Exchange (1175)
: : : : : +- Project (1174)
: : : : : +- Scan parquet (1173)
: : : : +- BroadcastExchange (1183)
: : : : +- Exchange (1182)
: : : : +- Project (1181)
: : : : +- Scan parquet (1180)
: : : +- BroadcastExchange (1190)
: : : +- Exchange (1189)
: : : +- Project (1188)
: : : +- Filter (1187)
: : : +- Scan parquet (1186)
: : +- Sort (1437)
: : +- Exchange (1436)
: : +- SerializeFromObject (1435)
: : +- MapElements (1434)
: : +- DeserializeToObject (1433)
: : +- ObjectHashAggregate (1432)
: : +- ObjectHashAggregate (1431)
: : +- Project (1430)
: : +- BroadcastHashJoin LeftOuter BuildRight (1429)
: : :- Project (1426)
: : : +- SortMergeJoin LeftOuter (1425)
: : : :- Sort (1238)
: : : : +- Project (1237)
: : : : +- Project (1236)
: : : : +- Generate (1235)
: : : : +- Generate (1234)
: : : : +- Project (1233)
: : : : +- Project (1232)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1231)
: : : : :- Project (1225)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1224)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (1219)
: : : : : : :- Exchange (1214)
: : : : : : : +- Scan parquet (862)
: : : : : : +- BroadcastExchange (1218)
: : : : : : +- Project (1217)
: : : : : : +- Exchange (1216)
: : : : : : +- Project (1215)
: : : : : : +- Scan parquet (866)
: : : : : +- BroadcastExchange (1223)
: : : : : +- Exchange (1222)
: : : : : +- Project (1221)
: : : : : +- Scan parquet (1220)
: : : : +- BroadcastExchange (1230)
: : : : +- Exchange (1229)
: : : : +- Project (1228)
: : : : +- Filter (1227)
: : : : +- Scan parquet (1226)
: : : +- Sort (1424)
: : : +- HashAggregate (1423)
: : : +- Exchange (1422)
: : : +- HashAggregate (1421)
: : : +- Project (1420)
: : : +- SortMergeJoin Inner (1419)
: : : :- Sort (1327)
: : : : +- Exchange (1326)
: : : : +- Project (1325)
: : : : +- SortMergeJoin Inner (1324)
: : : : :- Sort (1295)
: : : : : +- Exchange (1294)
: : : : : +- Project (1293)
: : : : : +- Filter (1292)
: : : : : +- Generate (1291)
: : : : : +- Filter (1290)
: : : : : +- ObjectHashAggregate (1289)
: : : : : +- ObjectHashAggregate (1288)
: : : : : +- Generate (1287)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1286)
: : : : : :- BroadcastExchange (1243)
: : : : : : +- Exchange (1242)
: : : : : : +- Project (1241)
: : : : : : +- Filter (1240)
: : : : : : +- Scan parquet (1239)
: : : : : +- Project (1285)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1284)
: : : : : :- BroadcastExchange (1253)
: : : : : : +- Project (1252)
: : : : : : +- Generate (1251)
: : : : : : +- Project (1250)
: : : : : : +- Filter (1249)
: : : : : : +- Generate (1248)
: : : : : : +- Exchange (1247)
: : : : : : +- Project (1246)
: : : : : : +- Filter (1245)
: : : : : : +- Scan parquet (1244)
: : : : : +- HashAggregate (1283)
: : : : : +- Exchange (1282)
: : : : : +- HashAggregate (1281)
: : : : : +- Project (1280)
: : : : : +- Generate (1279)
: : : : : +- Project (1278)
: : : : : +- Generate (1277)
: : : : : +- Project (1276)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1275)
: : : : : :- Project (1269)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1268)
: : : : : : :- Project (1263)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1262)
: : : : : : : :- Exchange (1256)
: : : : : : : : +- Filter (1255)
: : : : : : : : +- Scan parquet (1254)
: : : : : : : +- BroadcastExchange (1261)
: : : : : : : +- Project (1260)
: : : : : : : +- Exchange (1259)
: : : : : : : +- Project (1258)
: : : : : : : +- Scan parquet (1257)
: : : : : : +- BroadcastExchange (1267)
: : : : : : +- Exchange (1266)
: : : : : : +- Project (1265)
: : : : : : +- Scan parquet (1264)
: : : : : +- BroadcastExchange (1274)
: : : : : +- Exchange (1273)
: : : : : +- Project (1272)
: : : : : +- Filter (1271)
: : : : : +- Scan parquet (1270)
: : : : +- Sort (1323)
: : : : +- Project (1322)
: : : : +- Generate (1321)
: : : : +- Project (1320)
: : : : +- Generate (1319)
: : : : +- Project (1318)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1317)
: : : : :- Project (1311)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1310)
: : : : : :- Project (1305)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1304)
: : : : : : :- Exchange (1298)
: : : : : : : +- Filter (1297)
: : : : : : : +- Scan parquet (1296)
: : : : : : +- BroadcastExchange (1303)
: : : : : : +- Project (1302)
: : : : : : +- Exchange (1301)
: : : : : : +- Project (1300)
: : : : : : +- Scan parquet (1299)
: : : : : +- BroadcastExchange (1309)
: : : : : +- Exchange (1308)
: : : : : +- Project (1307)
: : : : : +- Scan parquet (1306)
: : : : +- BroadcastExchange (1316)
: : : : +- Exchange (1315)
: : : : +- Project (1314)
: : : : +- Filter (1313)
: : : : +- Scan parquet (1312)
: : : +- Sort (1418)
: : : +- Exchange (1417)
: : : +- HashAggregate (1416)
: : : +- HashAggregate (1415)
: : : +- Project (1414)
: : : +- SortMergeJoin Inner (1413)
: : : :- Sort (1384)
: : : : +- Exchange (1383)
: : : : +- Project (1382)
: : : : +- Filter (1381)
: : : : +- Generate (1380)
: : : : +- Filter (1379)
: : : : +- ObjectHashAggregate (1378)
: : : : +- ObjectHashAggregate (1377)
: : : : +- Generate (1376)
: : : : +- BroadcastHashJoin Inner BuildLeft (1375)
: : : : :- BroadcastExchange (1332)
: : : : : +- Exchange (1331)
: : : : : +- Project (1330)
: : : : : +- Filter (1329)
: : : : : +- Scan parquet (1328)
: : : : +- Project (1374)
: : : : +- BroadcastHashJoin Inner BuildLeft (1373)
: : : : :- BroadcastExchange (1342)
: : : : : +- Project (1341)
: : : : : +- Generate (1340)
: : : : : +- Project (1339)
: : : : : +- Filter (1338)
: : : : : +- Generate (1337)
: : : : : +- Exchange (1336)
: : : : : +- Project (1335)
: : : : : +- Filter (1334)
: : : : : +- Scan parquet (1333)
: : : : +- HashAggregate (1372)
: : : : +- Exchange (1371)
: : : : +- HashAggregate (1370)
: : : : +- Project (1369)
: : : : +- Generate (1368)
: : : : +- Project (1367)
: : : : +- Generate (1366)
: : : : +- Project (1365)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1364)
: : : : :- Project (1358)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1357)
: : : : : :- Project (1352)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1351)
: : : : : : :- Exchange (1345)
: : : : : : : +- Filter (1344)
: : : : : : : +- Scan parquet (1343)
: : : : : : +- BroadcastExchange (1350)
: : : : : : +- Project (1349)
: : : : : : +- Exchange (1348)
: : : : : : +- Project (1347)
: : : : : : +- Scan parquet (1346)
: : : : : +- BroadcastExchange (1356)
: : : : : +- Exchange (1355)
: : : : : +- Project (1354)
: : : : : +- Scan parquet (1353)
: : : : +- BroadcastExchange (1363)
: : : : +- Exchange (1362)
: : : : +- Project (1361)
: : : : +- Filter (1360)
: : : : +- Scan parquet (1359)
: : : +- Sort (1412)
: : : +- Project (1411)
: : : +- Generate (1410)
: : : +- Project (1409)
: : : +- Generate (1408)
: : : +- Project (1407)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1406)
: : : :- Project (1400)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1399)
: : : : :- Project (1394)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1393)
: : : : : :- Exchange (1387)
: : : : : : +- Filter (1386)
: : : : : : +- Scan parquet (1385)
: : : : : +- BroadcastExchange (1392)
: : : : : +- Project (1391)
: : : : : +- Exchange (1390)
: : : : : +- Project (1389)
: : : : : +- Scan parquet (1388)
: : : : +- BroadcastExchange (1398)
: : : : +- Exchange (1397)
: : : : +- Project (1396)
: : : : +- Scan parquet (1395)
: : : +- BroadcastExchange (1405)
: : : +- Exchange (1404)
: : : +- Project (1403)
: : : +- Filter (1402)
: : : +- Scan parquet (1401)
: : +- BroadcastExchange (1428)
: : +- Filter (1427)
: : +- Scan parquet (950)
: +- Sort (1485)
: +- Project (1484)
: +- BroadcastHashJoin Inner BuildLeft (1483)
: :- BroadcastExchange (1452)
: : +- Project (1451)
: : +- Filter (1450)
: : +- Generate (1449)
: : +- Project (1448)
: : +- Filter (1447)
: : +- Generate (1446)
: : +- Exchange (1445)
: : +- Project (1444)
: : +- Filter (1443)
: : +- Scan parquet (1442)
: +- HashAggregate (1482)
: +- Exchange (1481)
: +- HashAggregate (1480)
: +- Project (1479)
: +- Generate (1478)
: +- Project (1477)
: +- Generate (1476)
: +- Project (1475)
: +- BroadcastHashJoin LeftOuter BuildRight (1474)
: :- Project (1468)
: : +- BroadcastHashJoin LeftOuter BuildRight (1467)
: : :- Project (1462)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1461)
: : : :- Exchange (1455)
: : : : +- Filter (1454)
: : : : +- Scan parquet (1453)
: : : +- BroadcastExchange (1460)
: : : +- Project (1459)
: : : +- Exchange (1458)
: : : +- Project (1457)
: : : +- Scan parquet (1456)
: : +- BroadcastExchange (1466)
: : +- Exchange (1465)
: : +- Project (1464)
: : +- Scan parquet (1463)
: +- BroadcastExchange (1473)
: +- Exchange (1472)
: +- Project (1471)
: +- Filter (1470)
: +- Scan parquet (1469)
+- BroadcastExchange (1494)
+- Project (1493)
+- Filter (1492)
+- Generate (1491)
+- Exchange (1490)
+- Project (1489)
+- Filter (1488)
+- Scan parquet (991)
+- Filter (1969)
+- ObjectHashAggregate (1968)
+- Exchange (1967)
+- ObjectHashAggregate (1966)
+- Project (1965)
+- BroadcastHashJoin Inner BuildRight (1964)
:- Project (1955)
: +- SortMergeJoin LeftOuter (1954)
: :- Sort (1726)
: : +- Exchange (1725)
: : +- Project (1724)
: : +- SortMergeJoin LeftOuter (1723)
: : :- Sort (1536)
: : : +- Project (1535)
: : : +- Generate (1534)
: : : +- Project (1533)
: : : +- Generate (1532)
: : : +- Project (1531)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1530)
: : : :- Project (1524)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1523)
: : : : :- Project (1518)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1517)
: : : : : :- Exchange (1511)
: : : : : : +- Filter (1510)
: : : : : : +- Scan parquet (1509)
: : : : : +- BroadcastExchange (1516)
: : : : : +- Project (1515)
: : : : : +- Exchange (1514)
: : : : : +- Project (1513)
: : : : : +- Scan parquet (1512)
: : : : +- BroadcastExchange (1522)
: : : : +- Exchange (1521)
: : : : +- Project (1520)
: : : : +- Scan parquet (1519)
: : : +- BroadcastExchange (1529)
: : : +- Exchange (1528)
: : : +- Project (1527)
: : : +- Filter (1526)
: : : +- Scan parquet (1525)
: : +- Sort (1722)
: : +- HashAggregate (1721)
: : +- Exchange (1720)
: : +- HashAggregate (1719)
: : +- Project (1718)
: : +- SortMergeJoin Inner (1717)
: : :- Sort (1625)
: : : +- Exchange (1624)
: : : +- Project (1623)
: : : +- SortMergeJoin Inner (1622)
: : : :- Sort (1593)
: : : : +- Exchange (1592)
: : : : +- Project (1591)
: : : : +- Filter (1590)
: : : : +- Generate (1589)
: : : : +- Filter (1588)
: : : : +- ObjectHashAggregate (1587)
: : : : +- ObjectHashAggregate (1586)
: : : : +- Generate (1585)
: : : : +- BroadcastHashJoin Inner BuildLeft (1584)
: : : : :- BroadcastExchange (1541)
: : : : : +- Exchange (1540)
: : : : : +- Project (1539)
: : : : : +- Filter (1538)
: : : : : +- Scan parquet (1537)
: : : : +- Project (1583)
: : : : +- BroadcastHashJoin Inner BuildLeft (1582)
: : : : :- BroadcastExchange (1551)
: : : : : +- Project (1550)
: : : : : +- Generate (1549)
: : : : : +- Project (1548)
: : : : : +- Filter (1547)
: : : : : +- Generate (1546)
: : : : : +- Exchange (1545)
: : : : : +- Project (1544)
: : : : : +- Filter (1543)
: : : : : +- Scan parquet (1542)
: : : : +- HashAggregate (1581)
: : : : +- Exchange (1580)
: : : : +- HashAggregate (1579)
: : : : +- Project (1578)
: : : : +- Generate (1577)
: : : : +- Project (1576)
: : : : +- Generate (1575)
: : : : +- Project (1574)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1573)
: : : : :- Project (1567)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1566)
: : : : : :- Project (1561)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1560)
: : : : : : :- Exchange (1554)
: : : : : : : +- Filter (1553)
: : : : : : : +- Scan parquet (1552)
: : : : : : +- BroadcastExchange (1559)
: : : : : : +- Project (1558)
: : : : : : +- Exchange (1557)
: : : : : : +- Project (1556)
: : : : : : +- Scan parquet (1555)
: : : : : +- BroadcastExchange (1565)
: : : : : +- Exchange (1564)
: : : : : +- Project (1563)
: : : : : +- Scan parquet (1562)
: : : : +- BroadcastExchange (1572)
: : : : +- Exchange (1571)
: : : : +- Project (1570)
: : : : +- Filter (1569)
: : : : +- Scan parquet (1568)
: : : +- Sort (1621)
: : : +- Project (1620)
: : : +- Generate (1619)
: : : +- Project (1618)
: : : +- Generate (1617)
: : : +- Project (1616)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1615)
: : : :- Project (1609)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1608)
: : : : :- Project (1603)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1602)
: : : : : :- Exchange (1596)
: : : : : : +- Filter (1595)
: : : : : : +- Scan parquet (1594)
: : : : : +- BroadcastExchange (1601)
: : : : : +- Project (1600)
: : : : : +- Exchange (1599)
: : : : : +- Project (1598)
: : : : : +- Scan parquet (1597)
: : : : +- BroadcastExchange (1607)
: : : : +- Exchange (1606)
: : : : +- Project (1605)
: : : : +- Scan parquet (1604)
: : : +- BroadcastExchange (1614)
: : : +- Exchange (1613)
: : : +- Project (1612)
: : : +- Filter (1611)
: : : +- Scan parquet (1610)
: : +- Sort (1716)
: : +- Exchange (1715)
: : +- HashAggregate (1714)
: : +- HashAggregate (1713)
: : +- Project (1712)
: : +- SortMergeJoin Inner (1711)
: : :- Sort (1682)
: : : +- Exchange (1681)
: : : +- Project (1680)
: : : +- Filter (1679)
: : : +- Generate (1678)
: : : +- Filter (1677)
: : : +- ObjectHashAggregate (1676)
: : : +- ObjectHashAggregate (1675)
: : : +- Generate (1674)
: : : +- BroadcastHashJoin Inner BuildLeft (1673)
: : : :- BroadcastExchange (1630)
: : : : +- Exchange (1629)
: : : : +- Project (1628)
: : : : +- Filter (1627)
: : : : +- Scan parquet (1626)
: : : +- Project (1672)
: : : +- BroadcastHashJoin Inner BuildLeft (1671)
: : : :- BroadcastExchange (1640)
: : : : +- Project (1639)
: : : : +- Generate (1638)
: : : : +- Project (1637)
: : : : +- Filter (1636)
: : : : +- Generate (1635)
: : : : +- Exchange (1634)
: : : : +- Project (1633)
: : : : +- Filter (1632)
: : : : +- Scan parquet (1631)
: : : +- HashAggregate (1670)
: : : +- Exchange (1669)
: : : +- HashAggregate (1668)
: : : +- Project (1667)
: : : +- Generate (1666)
: : : +- Project (1665)
: : : +- Generate (1664)
: : : +- Project (1663)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1662)
: : : :- Project (1656)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1655)
: : : : :- Project (1650)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1649)
: : : : : :- Exchange (1643)
: : : : : : +- Filter (1642)
: : : : : : +- Scan parquet (1641)
: : : : : +- BroadcastExchange (1648)
: : : : : +- Project (1647)
: : : : : +- Exchange (1646)
: : : : : +- Project (1645)
: : : : : +- Scan parquet (1644)
: : : : +- BroadcastExchange (1654)
: : : : +- Exchange (1653)
: : : : +- Project (1652)
: : : : +- Scan parquet (1651)
: : : +- BroadcastExchange (1661)
: : : +- Exchange (1660)
: : : +- Project (1659)
: : : +- Filter (1658)
: : : +- Scan parquet (1657)
: : +- Sort (1710)
: : +- Project (1709)
: : +- Generate (1708)
: : +- Project (1707)
: : +- Generate (1706)
: : +- Project (1705)
: : +- BroadcastHashJoin LeftOuter BuildRight (1704)
: : :- Project (1698)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1697)
: : : :- Project (1692)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1691)
: : : : :- Exchange (1685)
: : : : : +- Filter (1684)
: : : : : +- Scan parquet (1683)
: : : : +- BroadcastExchange (1690)
: : : : +- Project (1689)
: : : : +- Exchange (1688)
: : : : +- Project (1687)
: : : : +- Scan parquet (1686)
: : : +- BroadcastExchange (1696)
: : : +- Exchange (1695)
: : : +- Project (1694)
: : : +- Scan parquet (1693)
: : +- BroadcastExchange (1703)
: : +- Exchange (1702)
: : +- Project (1701)
: : +- Filter (1700)
: : +- Scan parquet (1699)
: +- Sort (1953)
: +- Exchange (1952)
: +- SerializeFromObject (1951)
: +- MapElements (1950)
: +- DeserializeToObject (1949)
: +- ObjectHashAggregate (1948)
: +- ObjectHashAggregate (1947)
: +- Project (1946)
: +- BroadcastHashJoin LeftOuter BuildRight (1945)
: :- Project (1941)
: : +- SortMergeJoin LeftOuter (1940)
: : :- Sort (1753)
: : : +- Project (1752)
: : : +- Project (1751)
: : : +- Generate (1750)
: : : +- Generate (1749)
: : : +- Project (1748)
: : : +- Project (1747)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1746)
: : : :- Project (1740)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1739)
: : : : :- BroadcastHashJoin LeftOuter BuildRight (1734)
: : : : : :- Exchange (1728)
: : : : : : +- Scan parquet (1727)
: : : : : +- BroadcastExchange (1733)
: : : : : +- Project (1732)
: : : : : +- Exchange (1731)
: : : : : +- Project (1730)
: : : : : +- Scan parquet (1729)
: : : : +- BroadcastExchange (1738)
: : : : +- Exchange (1737)
: : : : +- Project (1736)
: : : : +- Scan parquet (1735)
: : : +- BroadcastExchange (1745)
: : : +- Exchange (1744)
: : : +- Project (1743)
: : : +- Filter (1742)
: : : +- Scan parquet (1741)
: : +- Sort (1939)
: : +- HashAggregate (1938)
: : +- Exchange (1937)
: : +- HashAggregate (1936)
: : +- Project (1935)
: : +- SortMergeJoin Inner (1934)
: : :- Sort (1842)
: : : +- Exchange (1841)
: : : +- Project (1840)
: : : +- SortMergeJoin Inner (1839)
: : : :- Sort (1810)
: : : : +- Exchange (1809)
: : : : +- Project (1808)
: : : : +- Filter (1807)
: : : : +- Generate (1806)
: : : : +- Filter (1805)
: : : : +- ObjectHashAggregate (1804)
: : : : +- ObjectHashAggregate (1803)
: : : : +- Generate (1802)
: : : : +- BroadcastHashJoin Inner BuildLeft (1801)
: : : : :- BroadcastExchange (1758)
: : : : : +- Exchange (1757)
: : : : : +- Project (1756)
: : : : : +- Filter (1755)
: : : : : +- Scan parquet (1754)
: : : : +- Project (1800)
: : : : +- BroadcastHashJoin Inner BuildLeft (1799)
: : : : :- BroadcastExchange (1768)
: : : : : +- Project (1767)
: : : : : +- Generate (1766)
: : : : : +- Project (1765)
: : : : : +- Filter (1764)
: : : : : +- Generate (1763)
: : : : : +- Exchange (1762)
: : : : : +- Project (1761)
: : : : : +- Filter (1760)
: : : : : +- Scan parquet (1759)
: : : : +- HashAggregate (1798)
: : : : +- Exchange (1797)
: : : : +- HashAggregate (1796)
: : : : +- Project (1795)
: : : : +- Generate (1794)
: : : : +- Project (1793)
: : : : +- Generate (1792)
: : : : +- Project (1791)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1790)
: : : : :- Project (1784)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1783)
: : : : : :- Project (1778)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1777)
: : : : : : :- Exchange (1771)
: : : : : : : +- Filter (1770)
: : : : : : : +- Scan parquet (1769)
: : : : : : +- BroadcastExchange (1776)
: : : : : : +- Project (1775)
: : : : : : +- Exchange (1774)
: : : : : : +- Project (1773)
: : : : : : +- Scan parquet (1772)
: : : : : +- BroadcastExchange (1782)
: : : : : +- Exchange (1781)
: : : : : +- Project (1780)
: : : : : +- Scan parquet (1779)
: : : : +- BroadcastExchange (1789)
: : : : +- Exchange (1788)
: : : : +- Project (1787)
: : : : +- Filter (1786)
: : : : +- Scan parquet (1785)
: : : +- Sort (1838)
: : : +- Project (1837)
: : : +- Generate (1836)
: : : +- Project (1835)
: : : +- Generate (1834)
: : : +- Project (1833)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1832)
: : : :- Project (1826)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1825)
: : : : :- Project (1820)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1819)
: : : : : :- Exchange (1813)
: : : : : : +- Filter (1812)
: : : : : : +- Scan parquet (1811)
: : : : : +- BroadcastExchange (1818)
: : : : : +- Project (1817)
: : : : : +- Exchange (1816)
: : : : : +- Project (1815)
: : : : : +- Scan parquet (1814)
: : : : +- BroadcastExchange (1824)
: : : : +- Exchange (1823)
: : : : +- Project (1822)
: : : : +- Scan parquet (1821)
: : : +- BroadcastExchange (1831)
: : : +- Exchange (1830)
: : : +- Project (1829)
: : : +- Filter (1828)
: : : +- Scan parquet (1827)
: : +- Sort (1933)
: : +- Exchange (1932)
: : +- HashAggregate (1931)
: : +- HashAggregate (1930)
: : +- Project (1929)
: : +- SortMergeJoin Inner (1928)
: : :- Sort (1899)
: : : +- Exchange (1898)
: : : +- Project (1897)
: : : +- Filter (1896)
: : : +- Generate (1895)
: : : +- Filter (1894)
: : : +- ObjectHashAggregate (1893)
: : : +- ObjectHashAggregate (1892)
: : : +- Generate (1891)
: : : +- BroadcastHashJoin Inner BuildLeft (1890)
: : : :- BroadcastExchange (1847)
: : : : +- Exchange (1846)
: : : : +- Project (1845)
: : : : +- Filter (1844)
: : : : +- Scan parquet (1843)
: : : +- Project (1889)
: : : +- BroadcastHashJoin Inner BuildLeft (1888)
: : : :- BroadcastExchange (1857)
: : : : +- Project (1856)
: : : : +- Generate (1855)
: : : : +- Project (1854)
: : : : +- Filter (1853)
: : : : +- Generate (1852)
: : : : +- Exchange (1851)
: : : : +- Project (1850)
: : : : +- Filter (1849)
: : : : +- Scan parquet (1848)
: : : +- HashAggregate (1887)
: : : +- Exchange (1886)
: : : +- HashAggregate (1885)
: : : +- Project (1884)
: : : +- Generate (1883)
: : : +- Project (1882)
: : : +- Generate (1881)
: : : +- Project (1880)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1879)
: : : :- Project (1873)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1872)
: : : : :- Project (1867)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1866)
: : : : : :- Exchange (1860)
: : : : : : +- Filter (1859)
: : : : : : +- Scan parquet (1858)
: : : : : +- BroadcastExchange (1865)
: : : : : +- Project (1864)
: : : : : +- Exchange (1863)
: : : : : +- Project (1862)
: : : : : +- Scan parquet (1861)
: : : : +- BroadcastExchange (1871)
: : : : +- Exchange (1870)
: : : : +- Project (1869)
: : : : +- Scan parquet (1868)
: : : +- BroadcastExchange (1878)
: : : +- Exchange (1877)
: : : +- Project (1876)
: : : +- Filter (1875)
: : : +- Scan parquet (1874)
: : +- Sort (1927)
: : +- Project (1926)
: : +- Generate (1925)
: : +- Project (1924)
: : +- Generate (1923)
: : +- Project (1922)
: : +- BroadcastHashJoin LeftOuter BuildRight (1921)
: : :- Project (1915)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1914)
: : : :- Project (1909)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1908)
: : : : :- Exchange (1902)
: : : : : +- Filter (1901)
: : : : : +- Scan parquet (1900)
: : : : +- BroadcastExchange (1907)
: : : : +- Project (1906)
: : : : +- Exchange (1905)
: : : : +- Project (1904)
: : : : +- Scan parquet (1903)
: : : +- BroadcastExchange (1913)
: : : +- Exchange (1912)
: : : +- Project (1911)
: : : +- Scan parquet (1910)
: : +- BroadcastExchange (1920)
: : +- Exchange (1919)
: : +- Project (1918)
: : +- Filter (1917)
: : +- Scan parquet (1916)
: +- BroadcastExchange (1944)
: +- Filter (1943)
: +- Scan parquet (1942)
+- BroadcastExchange (1963)
+- Project (1962)
+- Filter (1961)
+- Generate (1960)
+- Exchange (1959)
+- Project (1958)
+- Filter (1957)
+- Scan parquet (1956)
(1) Scan parquet
Output [3]: [product#69015, plant#69016, orderDateTime#69017]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2) ColumnarToRow [codegen id : 1]
Input [3]: [product#69015, plant#69016, orderDateTime#69017]
(3) Exchange
Input [3]: [product#69015, plant#69016, orderDateTime#69017]
Arguments: hashpartitioning(product#69015, plant#69016, 25), REPARTITION_BY_NUM, [plan_id=37900]
(4) ShuffleQueryStage
Output [3]: [product#69015, plant#69016, orderDateTime#69017]
Arguments: 0
(5) Scan parquet
Output [8]: [internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039, systemId#69026]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>
(6) ColumnarToRow [codegen id : 2]
Input [8]: [internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039, systemId#69026]
(7) Project [codegen id : 2]
Output [8]: [systemId#69026, internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039]
Input [8]: [internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039, systemId#69026]
(8) Exchange
Input [8]: [systemId#69026, internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=37914]
(9) ShuffleQueryStage
Output [8]: [systemId#69026, internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039]
Arguments: 1
(10) Project [codegen id : 100]
Output [1]: [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]
Input [8]: [systemId#69026, internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039]
(11) BroadcastExchange
Input [1]: [productPlant#69043]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=136373]
(12) BroadcastQueryStage
Output [1]: [productPlant#69043]
Arguments: 186
(13) BroadcastHashJoin [codegen id : 185]
Left keys [4]: [coalesce(product#69015, ), isnull(product#69015), coalesce(plant#69016, ), isnull(plant#69016)]
Right keys [4]: [coalesce(productPlant#69043.product.internalRefUUID, ), isnull(productPlant#69043.product.internalRefUUID), coalesce(productPlant#69043.plant.internalRefUUID, ), isnull(productPlant#69043.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(14) Scan parquet
Output [2]: [internalUUID#69050, systemId#69049]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(15) ColumnarToRow [codegen id : 3]
Input [2]: [internalUUID#69050, systemId#69049]
(16) Project [codegen id : 3]
Output [1]: [internalUUID#69050]
Input [2]: [internalUUID#69050, systemId#69049]
(17) Exchange
Input [1]: [internalUUID#69050]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=37932]
(18) ShuffleQueryStage
Output [1]: [internalUUID#69050]
Arguments: 2
(19) BroadcastExchange
Input [1]: [internalUUID#69050]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=37940]
(20) BroadcastQueryStage
Output [1]: [internalUUID#69050]
Arguments: 187
(21) BroadcastHashJoin [codegen id : 185]
Left keys [2]: [coalesce(plant#69016, ), isnull(plant#69016)]
Right keys [2]: [coalesce(internalUUID#69050, ), isnull(internalUUID#69050)]
Join type: LeftOuter
Join condition: None
(22) Project [codegen id : 185]
Output [4]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043]
Input [5]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, internalUUID#69050]
(23) Scan parquet
Output [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(24) ColumnarToRow [codegen id : 4]
Input [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
(25) Filter [codegen id : 4]
Input [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
Condition : isnotnull(internalUUID#69082)
(26) Project [codegen id : 4]
Output [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Input [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
(27) Exchange
Input [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=37952]
(28) ShuffleQueryStage
Output [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: 3
(29) BroadcastExchange
Input [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=37962]
(30) BroadcastQueryStage
Output [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: 188
(31) BroadcastHashJoin [codegen id : 185]
Left keys [1]: [product#69015]
Right keys [1]: [internalUUID#69082]
Join type: LeftOuter
Join condition: None
(32) Project
Output [5]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, 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]
Input [7]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
(33) Project [codegen id : 186]
Output [6]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, filteredUnitOfMeasureConversions#69108.quantityDenominator AS _extract_quantityDenominator#79358, filteredUnitOfMeasureConversions#69108.quantityNumerator AS _extract_quantityNumerator#79359]
Input [5]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, filteredUnitOfMeasureConversions#69108]
(34) Generate [codegen id : 186]
Input [6]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, _extract_quantityDenominator#79358, _extract_quantityNumerator#79359]
Arguments: explode(_extract_quantityNumerator#79359), [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, _extract_quantityDenominator#79358], true, [quantityNumerator#69123]
(35) Generate [codegen id : 186]
Input [6]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, _extract_quantityDenominator#79358, quantityNumerator#69123]
Arguments: explode(_extract_quantityDenominator#79358), [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, quantityNumerator#69123], true, [quantityDenominator#69130]
(36) Project [codegen id : 186]
Output [5]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, (cast(quantityNumerator#69123 as double) / cast(quantityDenominator#69130 as double)) AS outboundUnit#69132]
Input [6]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, quantityNumerator#69123, quantityDenominator#69130]
(37) Project [codegen id : 186]
Output [5]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043.productionAspect.productPlanningPlants.minimumSafetyStock AS _extract_minimumSafetyStock#79671, CASE WHEN (isnull(outboundUnit#69132) OR (outboundUnit#69132 <= 0.0)) THEN 1.0 ELSE outboundUnit#69132 END AS outboundUnit#69133]
Input [5]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, outboundUnit#69132]
(38) Scan parquet
Output [6]: [internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, systemId#69251]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(39) ColumnarToRow [codegen id : 5]
Input [6]: [internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, systemId#69251]
(40) Filter [codegen id : 5]
Input [6]: [internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, systemId#69251]
Condition : (isnotnull(plant#69254.internalRefUUID) AND isnotnull(product#69253.internalRefUUID))
(41) Project [codegen id : 5]
Output [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
Input [6]: [internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, systemId#69251]
(42) Exchange
Input [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=37980]
(43) ShuffleQueryStage
Output [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
Arguments: 4
(44) BroadcastExchange
Input [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=37990]
(45) BroadcastQueryStage
Output [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
Arguments: 189
(46) Scan parquet
Output [2]: [marketUnit#69147, distributionCenters#69161]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(47) ColumnarToRow [codegen id : 6]
Input [2]: [marketUnit#69147, distributionCenters#69161]
(48) Filter [codegen id : 6]
Input [2]: [marketUnit#69147, distributionCenters#69161]
Condition : (((marketUnit#69147 <=> Daily_grocery) AND (size(distributionCenters#69161, true) > 0)) AND isnotnull(distributionCenters#69161))
(49) Project [codegen id : 6]
Output [1]: [distributionCenters#69161]
Input [2]: [marketUnit#69147, distributionCenters#69161]
(50) Exchange
Input [1]: [distributionCenters#69161]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=38000]
(51) ShuffleQueryStage
Output [1]: [distributionCenters#69161]
Arguments: 5
(52) Generate [codegen id : 101]
Input [1]: [distributionCenters#69161]
Arguments: explode(distributionCenters#69161), false, [distributionCenters#69184]
(53) Filter [codegen id : 101]
Input [1]: [distributionCenters#69184]
Condition : (((size(distributionCenters#69184.storageLocations, true) > 0) AND isnotnull(distributionCenters#69184.storageLocations)) AND isnotnull(distributionCenters#69184.internalRefUUID))
(54) Project [codegen id : 101]
Output [2]: [distributionCenters#69184.internalRefUUID AS _extract_internalRefUUID#79266, distributionCenters#69184.storageLocations AS _extract_storageLocations#79267]
Input [1]: [distributionCenters#69184]
(55) Generate [codegen id : 101]
Input [2]: [_extract_internalRefUUID#79266, _extract_storageLocations#79267]
Arguments: explode(_extract_storageLocations#79267), [_extract_internalRefUUID#79266], false, [storageLocations#69198]
(56) Project [codegen id : 101]
Output [3]: [_extract_internalRefUUID#79266 AS plantUuid#69189, storageLocations#69198.id AS storageLocId#69201, storageLocations#69198.internalRefUUID AS storageLocUuid#69202]
Input [2]: [_extract_internalRefUUID#79266, storageLocations#69198]
(57) BroadcastExchange
Input [3]: [plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=136401]
(58) BroadcastQueryStage
Output [3]: [plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
Arguments: 190
(59) Scan parquet
Output [2]: [product#69783, plant#69784]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(60) ColumnarToRow [codegen id : 7]
Input [2]: [product#69783, plant#69784]
(61) Filter [codegen id : 7]
Input [2]: [product#69783, plant#69784]
Condition : isnotnull(plant#69784)
(62) Exchange
Input [2]: [product#69783, plant#69784]
Arguments: hashpartitioning(product#69783, plant#69784, 25), REPARTITION_BY_NUM, [plan_id=38023]
(63) ShuffleQueryStage
Output [2]: [product#69783, plant#69784]
Arguments: 6
(64) Scan parquet
Output [4]: [plant#69789, product#69790, productionAspect#69792, systemId#69787]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(65) ColumnarToRow [codegen id : 8]
Input [4]: [plant#69789, product#69790, productionAspect#69792, systemId#69787]
(66) Project [codegen id : 8]
Output [4]: [plant#69789.internalRefUUID AS _extract_internalRefUUID#79606, product#69790.internalRefUUID AS _extract_internalRefUUID#79603, productionAspect#69792.productMovementPlants.unitOfIssue.code AS _extract_code#79604, productionAspect#69792.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#79605]
Input [4]: [plant#69789, product#69790, productionAspect#69792, systemId#69787]
(67) Exchange
Input [4]: [_extract_internalRefUUID#79606, _extract_internalRefUUID#79603, _extract_code#79604, _extract_internalRefUUID#79605]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=38039]
(68) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#79606, _extract_internalRefUUID#79603, _extract_code#79604, _extract_internalRefUUID#79605]
Arguments: 7
(69) Project [codegen id : 102]
Output [4]: [_extract_code#79604, _extract_internalRefUUID#79605, _extract_internalRefUUID#79603, _extract_internalRefUUID#79606]
Input [4]: [_extract_internalRefUUID#79606, _extract_internalRefUUID#79603, _extract_code#79604, _extract_internalRefUUID#79605]
(70) BroadcastExchange
Input [4]: [_extract_code#79604, _extract_internalRefUUID#79605, _extract_internalRefUUID#79603, _extract_internalRefUUID#79606]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=136419]
(71) BroadcastQueryStage
Output [4]: [_extract_code#79604, _extract_internalRefUUID#79605, _extract_internalRefUUID#79603, _extract_internalRefUUID#79606]
Arguments: 191
(72) BroadcastHashJoin [codegen id : 129]
Left keys [4]: [coalesce(product#69783, ), isnull(product#69783), coalesce(plant#69784, ), isnull(plant#69784)]
Right keys [4]: [coalesce(_extract_internalRefUUID#79603, ), isnull(_extract_internalRefUUID#79603), coalesce(_extract_internalRefUUID#79606, ), isnull(_extract_internalRefUUID#79606)]
Join type: LeftOuter
Join condition: None
(73) Project [codegen id : 129]
Output [4]: [product#69783, plant#69784, _extract_code#79604, _extract_internalRefUUID#79605]
Input [6]: [product#69783, plant#69784, _extract_code#79604, _extract_internalRefUUID#79605, _extract_internalRefUUID#79603, _extract_internalRefUUID#79606]
(74) ReusedExchange [Reuses operator id: 19]
Output [1]: [internalUUID#69810]
(75) BroadcastQueryStage
Output [1]: [internalUUID#69810]
Arguments: 192
(76) BroadcastHashJoin [codegen id : 129]
Left keys [2]: [coalesce(plant#69784, ), isnull(plant#69784)]
Right keys [2]: [coalesce(internalUUID#69810, ), isnull(internalUUID#69810)]
Join type: LeftOuter
Join condition: None
(77) Project [codegen id : 129]
Output [4]: [product#69783, plant#69784, _extract_code#79604, _extract_internalRefUUID#79605]
Input [5]: [product#69783, plant#69784, _extract_code#79604, _extract_internalRefUUID#79605, internalUUID#69810]
(78) ReusedExchange [Reuses operator id: 29]
Output [3]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844]
(79) BroadcastQueryStage
Output [3]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844]
Arguments: 193
(80) BroadcastHashJoin [codegen id : 129]
Left keys [1]: [product#69783]
Right keys [1]: [internalUUID#69838]
Join type: LeftOuter
Join condition: None
(81) Project
Output [2]: [plant#69784, filter(unitOfMeasureConversions#69844, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#79604) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#79605)) 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]
Input [7]: [product#69783, plant#69784, _extract_code#79604, _extract_internalRefUUID#79605, internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844]
(82) Generate [codegen id : 130]
Input [2]: [plant#69784, filteredUnitOfMeasureConversions#69850]
Arguments: explode(filteredUnitOfMeasureConversions#69850.quantityNumerator), [plant#69784, filteredUnitOfMeasureConversions#69850], true, [quantityNumerator#69852]
(83) Project [codegen id : 130]
Output [2]: [plant#69784, filteredUnitOfMeasureConversions#69850.quantityDenominator AS _extract_quantityDenominator#79268]
Input [3]: [plant#69784, filteredUnitOfMeasureConversions#69850, quantityNumerator#69852]
(84) Generate [codegen id : 130]
Input [2]: [plant#69784, _extract_quantityDenominator#79268]
Arguments: explode(_extract_quantityDenominator#79268), [plant#69784], true, [quantityDenominator#69853]
(85) Project [codegen id : 130]
Output [1]: [plant#69784]
Input [2]: [plant#69784, quantityDenominator#69853]
(86) HashAggregate [codegen id : 130]
Input [1]: [plant#69784]
Keys [1]: [plant#69784]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69784]
(87) Exchange
Input [1]: [plant#69784]
Arguments: hashpartitioning(plant#69784, 25), ENSURE_REQUIREMENTS, [plan_id=155228]
(88) ShuffleQueryStage
Output [1]: [plant#69784]
Arguments: 288
(89) AQEShuffleRead
Input [1]: [plant#69784]
Arguments: coalesced
(90) HashAggregate
Input [1]: [plant#69784]
Keys [1]: [plant#69784]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69784]
(91) BroadcastHashJoin
Left keys [1]: [plantUuid#69189]
Right keys [1]: [plant#69784]
Join type: Inner
Join condition: None
(92) Project
Output [3]: [plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
Input [4]: [plantUuid#69189, storageLocId#69201, storageLocUuid#69202, plant#69784]
(93) BroadcastHashJoin [codegen id : 145]
Left keys [2]: [coalesce(plant#69254.internalRefUUID, ), isnull(plant#69254.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#69189, ), isnull(plantUuid#69189)]
Join type: Inner
Join condition: None
(94) Generate
Input [9]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
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))), [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, plantUuid#69189], false, [stockQuantity#69271]
(95) ObjectHashAggregate
Input [7]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, plantUuid#69189, stockQuantity#69271]
Keys [5]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251]
Functions [2]: [partial_first(calculationDateTime#69255, false), partial_collect_list(stockQuantity#69271, 0, 0)]
Aggregate Attributes [3]: [first#73908, valueSet#73909, buf#73910]
Results [8]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251, first#73911, valueSet#73912, buf#73913]
(96) ObjectHashAggregate
Input [8]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251, first#73911, valueSet#73912, buf#73913]
Keys [5]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251]
Functions [2]: [first(calculationDateTime#69255, false), collect_list(stockQuantity#69271, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#69255)()#69321, collect_list(stockQuantity#69271, 0, 0)#69322]
Results [4]: [product#69253, plant#69254, first(calculationDateTime#69255)()#69321 AS calculationDateTime#69308, collect_list(stockQuantity#69271, 0, 0)#69322 AS stockQuantities#69309]
(97) Filter [codegen id : 146]
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantities#69309]
Condition : ((size(stockQuantities#69309, true) > 0) AND isnotnull(calculationDateTime#69308))
(98) Generate [codegen id : 146]
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantities#69309]
Arguments: explode(stockQuantities#69309), [product#69253, plant#69254, calculationDateTime#69308], false, [stockQuantity#69367]
(99) Filter [codegen id : 146]
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantity#69367]
Condition : (((isnotnull(stockQuantity#69367.specialStockIndicator.code) AND isnotnull(stockQuantity#69367.stockType.code)) AND (stockQuantity#69367.specialStockIndicator.code = )) AND (stockQuantity#69367.stockType.code = 01))
(100) Project [codegen id : 146]
Output [5]: [plant#69254.internalRefUUID AS plantUuid#69370, product#69253.internalRefUUID AS productUuid#69372, calculationDateTime#69308, stockQuantity#69367.storagelocation.id AS storageLocId#69373, stockQuantity#69367.quantity.measure AS quantity#69375]
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantity#69367]
(101) Exchange
Input [5]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373, quantity#69375]
Arguments: hashpartitioning(productUuid#69372, plantUuid#69370, 25), ENSURE_REQUIREMENTS, [plan_id=165193]
(102) ShuffleQueryStage
Output [5]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373, quantity#69375]
Arguments: 303
(103) AQEShuffleRead
Input [5]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373, quantity#69375]
Arguments: local
(104) BroadcastExchange
Input [5]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373, quantity#69375]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=171657]
(105) BroadcastQueryStage
Output [5]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373, quantity#69375]
Arguments: 317
(106) Scan parquet
Output [3]: [product#69391, plant#69392, orderDateTime#69393]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(107) ColumnarToRow [codegen id : 11]
Input [3]: [product#69391, plant#69392, orderDateTime#69393]
(108) Filter [codegen id : 11]
Input [3]: [product#69391, plant#69392, orderDateTime#69393]
Condition : ((isnotnull(orderDateTime#69393) AND isnotnull(plant#69392)) AND isnotnull(product#69391))
(109) Exchange
Input [3]: [product#69391, plant#69392, orderDateTime#69393]
Arguments: hashpartitioning(product#69391, plant#69392, 25), REPARTITION_BY_NUM, [plan_id=38121]
(110) ShuffleQueryStage
Output [3]: [product#69391, plant#69392, orderDateTime#69393]
Arguments: 12
(111) ReusedExchange [Reuses operator id: 70]
Output [4]: [_extract_code#79608, _extract_internalRefUUID#79609, _extract_internalRefUUID#79607, _extract_internalRefUUID#79610]
(112) BroadcastQueryStage
Output [4]: [_extract_code#79608, _extract_internalRefUUID#79609, _extract_internalRefUUID#79607, _extract_internalRefUUID#79610]
Arguments: 195
(113) BroadcastHashJoin [codegen id : 161]
Left keys [4]: [coalesce(product#69391, ), isnull(product#69391), coalesce(plant#69392, ), isnull(plant#69392)]
Right keys [4]: [coalesce(_extract_internalRefUUID#79607, ), isnull(_extract_internalRefUUID#79607), coalesce(_extract_internalRefUUID#79610, ), isnull(_extract_internalRefUUID#79610)]
Join type: LeftOuter
Join condition: None
(114) Project [codegen id : 161]
Output [5]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#79608, _extract_internalRefUUID#79609]
Input [7]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#79608, _extract_internalRefUUID#79609, _extract_internalRefUUID#79607, _extract_internalRefUUID#79610]
(115) ReusedExchange [Reuses operator id: 19]
Output [1]: [internalUUID#69405]
(116) BroadcastQueryStage
Output [1]: [internalUUID#69405]
Arguments: 196
(117) BroadcastHashJoin [codegen id : 161]
Left keys [2]: [coalesce(plant#69392, ), isnull(plant#69392)]
Right keys [2]: [coalesce(internalUUID#69405, ), isnull(internalUUID#69405)]
Join type: LeftOuter
Join condition: None
(118) Project [codegen id : 161]
Output [5]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#79608, _extract_internalRefUUID#79609]
Input [6]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#79608, _extract_internalRefUUID#79609, internalUUID#69405]
(119) ReusedExchange [Reuses operator id: 29]
Output [3]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425]
(120) BroadcastQueryStage
Output [3]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425]
Arguments: 197
(121) BroadcastHashJoin [codegen id : 161]
Left keys [1]: [product#69391]
Right keys [1]: [internalUUID#69419]
Join type: LeftOuter
Join condition: None
(122) Project
Output [4]: [product#69391, plant#69392, orderDateTime#69393, filter(unitOfMeasureConversions#69425, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#79608) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#79609)) 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]
Input [8]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#79608, _extract_internalRefUUID#79609, internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425]
(123) Generate
Input [4]: [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430]
Arguments: explode(filteredUnitOfMeasureConversions#69430.quantityNumerator), [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430], true, [quantityNumerator#69431]
(124) Project
Output [4]: [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430.quantityDenominator AS _extract_quantityDenominator#79272]
Input [5]: [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430, quantityNumerator#69431]
(125) Generate
Input [4]: [product#69391, plant#69392, orderDateTime#69393, _extract_quantityDenominator#79272]
Arguments: explode(_extract_quantityDenominator#79272), [product#69391, plant#69392, orderDateTime#69393], true, [quantityDenominator#69432]
(126) Project
Output [3]: [product#69391, plant#69392, orderDateTime#69393]
Input [4]: [product#69391, plant#69392, orderDateTime#69393, quantityDenominator#69432]
(127) BroadcastHashJoin [codegen id : 162]
Left keys [2]: [plantUuid#69370, productUuid#69372]
Right keys [2]: [plant#69392, product#69391]
Join type: Inner
Join condition: (calculationDateTime#69308 <= orderDateTime#69393)
(128) Project [codegen id : 162]
Output [5]: [plantUuid#69370 AS plant#69448, productUuid#69372 AS product#69449, storageLocId#69373, calculationDateTime#69308, quantity#69375]
Input [8]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373, quantity#69375, product#69391, plant#69392, orderDateTime#69393]
(129) Exchange
Input [5]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308, quantity#69375]
Arguments: hashpartitioning(coalesce(plant#69448, ), isnull(plant#69448), coalesce(product#69449, ), isnull(product#69449), coalesce(storageLocId#69373, ), isnull(storageLocId#69373), coalesce(calculationDateTime#69308, 1970-01-01 00:00:00), isnull(calculationDateTime#69308), 25), ENSURE_REQUIREMENTS, [plan_id=176510]
(130) ShuffleQueryStage
Output [5]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308, quantity#69375]
Arguments: 331
(131) AQEShuffleRead
Input [5]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308, quantity#69375]
Arguments: local
(132) BroadcastExchange
Input [5]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308, quantity#69375]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true]), coalesce(input[1, string, true], ), isnull(input[1, string, true]), coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, timestamp, true], 1970-01-01 00:00:00), isnull(input[3, timestamp, true])),false), [plan_id=181253]
(133) BroadcastQueryStage
Output [5]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308, quantity#69375]
Arguments: 344
(134) ReusedExchange [Reuses operator id: 44]
Output [6]: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597]
(135) BroadcastQueryStage
Output [6]: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597]
Arguments: 198
(136) ReusedExchange [Reuses operator id: 57]
Output [3]: [plantUuid#69625, storageLocId#69626, storageLocUuid#69627]
(137) BroadcastQueryStage
Output [3]: [plantUuid#69625, storageLocId#69626, storageLocUuid#69627]
Arguments: 200
(138) ReusedExchange [Reuses operator id: 87]
Output [1]: [plant#69629]
(139) ShuffleQueryStage
Output [1]: [plant#69629]
Arguments: 290
(140) AQEShuffleRead
Input [1]: [plant#69629]
Arguments: coalesced
(141) HashAggregate
Input [1]: [plant#69629]
Keys [1]: [plant#69629]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69629]
(142) BroadcastHashJoin
Left keys [1]: [plantUuid#69625]
Right keys [1]: [plant#69629]
Join type: Inner
Join condition: None
(143) Project
Output [3]: [plantUuid#69625, storageLocId#69626, storageLocUuid#69627]
Input [4]: [plantUuid#69625, storageLocId#69626, storageLocUuid#69627, plant#69629]
(144) BroadcastHashJoin [codegen id : 147]
Left keys [2]: [coalesce(plant#69595.internalRefUUID, ), isnull(plant#69595.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#69625, ), isnull(plantUuid#69625)]
Join type: Inner
Join condition: None
(145) Generate
Input [9]: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597, plantUuid#69625, storageLocId#69626, storageLocUuid#69627]
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))), [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, plantUuid#69625], false, [stockQuantity#69672]
(146) ObjectHashAggregate
Input [7]: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, plantUuid#69625, stockQuantity#69672]
Keys [5]: [plantUuid#69625, internalUUID#69593, plant#69595, product#69594, systemId#69592]
Functions [2]: [partial_first(calculationDateTime#69596, false), partial_collect_list(stockQuantity#69672, 0, 0)]
Aggregate Attributes [3]: [first#73918, valueSet#73919, buf#73920]
Results [8]: [plantUuid#69625, internalUUID#69593, plant#69595, product#69594, systemId#69592, first#73921, valueSet#73922, buf#73923]
(147) ObjectHashAggregate
Input [8]: [plantUuid#69625, internalUUID#69593, plant#69595, product#69594, systemId#69592, first#73921, valueSet#73922, buf#73923]
Keys [5]: [plantUuid#69625, internalUUID#69593, plant#69595, product#69594, systemId#69592]
Functions [2]: [first(calculationDateTime#69596, false), collect_list(stockQuantity#69672, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#69596)()#69321, collect_list(stockQuantity#69672, 0, 0)#69322]
Results [4]: [product#69594, plant#69595, first(calculationDateTime#69596)()#69321 AS calculationDateTime#69673, collect_list(stockQuantity#69672, 0, 0)#69322 AS stockQuantities#69674]
(148) Filter [codegen id : 148]
Input [4]: [product#69594, plant#69595, calculationDateTime#69673, stockQuantities#69674]
Condition : ((size(stockQuantities#69674, true) > 0) AND isnotnull(calculationDateTime#69673))
(149) Generate [codegen id : 148]
Input [4]: [product#69594, plant#69595, calculationDateTime#69673, stockQuantities#69674]
Arguments: explode(stockQuantities#69674), [product#69594, plant#69595, calculationDateTime#69673], false, [stockQuantity#69675]
(150) Filter [codegen id : 148]
Input [4]: [product#69594, plant#69595, calculationDateTime#69673, stockQuantity#69675]
Condition : (((isnotnull(stockQuantity#69675.specialStockIndicator.code) AND isnotnull(stockQuantity#69675.stockType.code)) AND (stockQuantity#69675.specialStockIndicator.code = )) AND (stockQuantity#69675.stockType.code = 01))
(151) Project [codegen id : 148]
Output [4]: [plant#69595.internalRefUUID AS plantUuid#69677, product#69594.internalRefUUID AS productUuid#69679, calculationDateTime#69673, stockQuantity#69675.storagelocation.id AS storageLocId#69680]
Input [4]: [product#69594, plant#69595, calculationDateTime#69673, stockQuantity#69675]
(152) Exchange
Input [4]: [plantUuid#69677, productUuid#69679, calculationDateTime#69673, storageLocId#69680]
Arguments: hashpartitioning(productUuid#69679, plantUuid#69677, 25), ENSURE_REQUIREMENTS, [plan_id=165261]
(153) ShuffleQueryStage
Output [4]: [plantUuid#69677, productUuid#69679, calculationDateTime#69673, storageLocId#69680]
Arguments: 304
(154) AQEShuffleRead
Input [4]: [plantUuid#69677, productUuid#69679, calculationDateTime#69673, storageLocId#69680]
Arguments: local
(155) BroadcastExchange
Input [4]: [plantUuid#69677, productUuid#69679, calculationDateTime#69673, storageLocId#69680]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=174531]
(156) BroadcastQueryStage
Output [4]: [plantUuid#69677, productUuid#69679, calculationDateTime#69673, storageLocId#69680]
Arguments: 322
(157) ReusedExchange [Reuses operator id: 109]
Output [3]: [product#69685, plant#69686, orderDateTime#69687]
(158) ShuffleQueryStage
Output [3]: [product#69685, plant#69686, orderDateTime#69687]
Arguments: 32
(159) ReusedExchange [Reuses operator id: 70]
Output [4]: [_extract_code#79617, _extract_internalRefUUID#79618, _extract_internalRefUUID#79616, _extract_internalRefUUID#79615]
(160) BroadcastQueryStage
Output [4]: [_extract_code#79617, _extract_internalRefUUID#79618, _extract_internalRefUUID#79616, _extract_internalRefUUID#79615]
Arguments: 206
(161) BroadcastHashJoin [codegen id : 167]
Left keys [4]: [coalesce(product#69685, ), isnull(product#69685), coalesce(plant#69686, ), isnull(plant#69686)]
Right keys [4]: [coalesce(_extract_internalRefUUID#79616, ), isnull(_extract_internalRefUUID#79616), coalesce(_extract_internalRefUUID#79615, ), isnull(_extract_internalRefUUID#79615)]
Join type: LeftOuter
Join condition: None
(162) Project [codegen id : 167]
Output [5]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#79617, _extract_internalRefUUID#79618]
Input [7]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#79617, _extract_internalRefUUID#79618, _extract_internalRefUUID#79616, _extract_internalRefUUID#79615]
(163) ReusedExchange [Reuses operator id: 19]
Output [1]: [internalUUID#69699]
(164) BroadcastQueryStage
Output [1]: [internalUUID#69699]
Arguments: 207
(165) BroadcastHashJoin [codegen id : 167]
Left keys [2]: [coalesce(plant#69686, ), isnull(plant#69686)]
Right keys [2]: [coalesce(internalUUID#69699, ), isnull(internalUUID#69699)]
Join type: LeftOuter
Join condition: None
(166) Project [codegen id : 167]
Output [5]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#79617, _extract_internalRefUUID#79618]
Input [6]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#79617, _extract_internalRefUUID#79618, internalUUID#69699]
(167) ReusedExchange [Reuses operator id: 29]
Output [3]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719]
(168) BroadcastQueryStage
Output [3]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719]
Arguments: 208
(169) BroadcastHashJoin [codegen id : 167]
Left keys [1]: [product#69685]
Right keys [1]: [internalUUID#69713]
Join type: LeftOuter
Join condition: None
(170) Project
Output [4]: [product#69685, plant#69686, orderDateTime#69687, filter(unitOfMeasureConversions#69719, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#79617) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#79618)) 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]
Input [8]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#79617, _extract_internalRefUUID#79618, internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719]
(171) Generate
Input [4]: [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724]
Arguments: explode(filteredUnitOfMeasureConversions#69724.quantityNumerator), [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724], true, [quantityNumerator#69725]
(172) Project
Output [4]: [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724.quantityDenominator AS _extract_quantityDenominator#79282]
Input [5]: [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724, quantityNumerator#69725]
(173) Generate
Input [4]: [product#69685, plant#69686, orderDateTime#69687, _extract_quantityDenominator#79282]
Arguments: explode(_extract_quantityDenominator#79282), [product#69685, plant#69686, orderDateTime#69687], true, [quantityDenominator#69726]
(174) Project
Output [3]: [product#69685, plant#69686, orderDateTime#69687]
Input [4]: [product#69685, plant#69686, orderDateTime#69687, quantityDenominator#69726]
(175) BroadcastHashJoin [codegen id : 168]
Left keys [2]: [plantUuid#69677, productUuid#69679]
Right keys [2]: [plant#69686, product#69685]
Join type: Inner
Join condition: (calculationDateTime#69673 <= orderDateTime#69687)
(176) Project [codegen id : 168]
Output [4]: [plantUuid#69677 AS plant#69729, productUuid#69679 AS product#69730, storageLocId#69680, calculationDateTime#69673]
Input [7]: [plantUuid#69677, productUuid#69679, calculationDateTime#69673, storageLocId#69680, product#69685, plant#69686, orderDateTime#69687]
(177) HashAggregate [codegen id : 168]
Input [4]: [plant#69729, product#69730, storageLocId#69680, calculationDateTime#69673]
Keys [3]: [plant#69729, product#69730, storageLocId#69680]
Functions [1]: [partial_max(calculationDateTime#69673)]
Aggregate Attributes [1]: [max#73916]
Results [4]: [plant#69729, product#69730, storageLocId#69680, max#73917]
(178) HashAggregate [codegen id : 168]
Input [4]: [plant#69729, product#69730, storageLocId#69680, max#73917]
Keys [3]: [plant#69729, product#69730, storageLocId#69680]
Functions [1]: [max(calculationDateTime#69673)]
Aggregate Attributes [1]: [max(calculationDateTime#69673)#69456]
Results [4]: [plant#69729, product#69730, storageLocId#69680, max(calculationDateTime#69673)#69456 AS max_calc_datetime#69450]
(179) Exchange
Input [4]: [plant#69729, product#69730, storageLocId#69680, max_calc_datetime#69450]
Arguments: hashpartitioning(coalesce(plant#69729, ), isnull(plant#69729), coalesce(product#69730, ), isnull(product#69730), coalesce(storageLocId#69680, ), isnull(storageLocId#69680), coalesce(max_calc_datetime#69450, 1970-01-01 00:00:00), isnull(max_calc_datetime#69450), 25), ENSURE_REQUIREMENTS, [plan_id=178050]
(180) ShuffleQueryStage
Output [4]: [plant#69729, product#69730, storageLocId#69680, max_calc_datetime#69450]
Arguments: 336
(181) AQEShuffleRead
Input [4]: [plant#69729, product#69730, storageLocId#69680, max_calc_datetime#69450]
Arguments: local
(182) BroadcastHashJoin [codegen id : 177]
Left keys [8]: [coalesce(plant#69448, ), isnull(plant#69448), coalesce(product#69449, ), isnull(product#69449), coalesce(storageLocId#69373, ), isnull(storageLocId#69373), coalesce(calculationDateTime#69308, 1970-01-01 00:00:00), isnull(calculationDateTime#69308)]
Right keys [8]: [coalesce(plant#69729, ), isnull(plant#69729), coalesce(product#69730, ), isnull(product#69730), coalesce(storageLocId#69680, ), isnull(storageLocId#69680), coalesce(max_calc_datetime#69450, 1970-01-01 00:00:00), isnull(max_calc_datetime#69450)]
Join type: Inner
Join condition: None
(183) Project [codegen id : 177]
Output [4]: [plant#69448, product#69449, calculationDateTime#69308, quantity#69375]
Input [9]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308, quantity#69375, plant#69729, product#69730, storageLocId#69680, max_calc_datetime#69450]
(184) HashAggregate [codegen id : 177]
Input [4]: [plant#69448, product#69449, calculationDateTime#69308, quantity#69375]
Keys [2]: [product#69449, plant#69448]
Functions [2]: [partial_min(calculationDateTime#69308), partial_sum(quantity#69375)]
Aggregate Attributes [2]: [min#73906, sum#81407]
Results [4]: [product#69449, plant#69448, min#73907, sum#81408]
(185) Exchange
Input [4]: [product#69449, plant#69448, min#73907, sum#81408]
Arguments: hashpartitioning(product#69449, plant#69448, 25), ENSURE_REQUIREMENTS, [plan_id=183267]
(186) ShuffleQueryStage
Output [4]: [product#69449, plant#69448, min#73907, sum#81408]
Arguments: 350
(187) AQEShuffleRead
Input [4]: [product#69449, plant#69448, min#73907, sum#81408]
Arguments: coalesced
(188) HashAggregate [codegen id : 181]
Input [4]: [product#69449, plant#69448, min#73907, sum#81408]
Keys [2]: [product#69449, plant#69448]
Functions [2]: [min(calculationDateTime#69308), sum(quantity#69375)]
Aggregate Attributes [2]: [min(calculationDateTime#69308)#69768, sum(quantity#69375)#69767]
Results [4]: [product#69449, plant#69448, min(calculationDateTime#69308)#69768 AS minCalculationDateTime#69754, round(sum(quantity#69375)#69767, 0) AS roundedQuantitySum#69770]
(189) BroadcastExchange
Input [4]: [product#69449, plant#69448, minCalculationDateTime#69754, roundedQuantitySum#69770]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=185666]
(190) BroadcastQueryStage
Output [4]: [product#69449, plant#69448, minCalculationDateTime#69754, roundedQuantitySum#69770]
Arguments: 356
(191) BroadcastHashJoin [codegen id : 186]
Left keys [2]: [plant#69016, product#69015]
Right keys [2]: [plant#69448, product#69449]
Join type: LeftOuter
Join condition: None
(192) Project [codegen id : 186]
Output [6]: [product#69015, plant#69016, _extract_minimumSafetyStock#79671, outboundUnit#69133, CASE WHEN isnotnull(minCalculationDateTime#69754) THEN minCalculationDateTime#69754 ELSE orderDateTime#69017 END AS stockDatetime#69867, CASE WHEN isnotnull(roundedQuantitySum#69770) THEN array(roundedQuantitySum#69770) ELSE [0.0] END AS stockBatchQuantities#69870]
Input [9]: [product#69015, plant#69016, orderDateTime#69017, _extract_minimumSafetyStock#79671, outboundUnit#69133, product#69449, plant#69448, minCalculationDateTime#69754, roundedQuantitySum#69770]
(193) Exchange
Input [6]: [product#69015, plant#69016, _extract_minimumSafetyStock#79671, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870]
Arguments: hashpartitioning(coalesce(plant#69016, ), isnull(plant#69016), coalesce(product#69015, ), isnull(product#69015), 25), ENSURE_REQUIREMENTS, [plan_id=187723]
(194) ShuffleQueryStage
Output [6]: [product#69015, plant#69016, _extract_minimumSafetyStock#79671, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870]
Arguments: 362
(195) AQEShuffleRead
Input [6]: [product#69015, plant#69016, _extract_minimumSafetyStock#79671, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870]
Arguments: local
(196) ReusedExchange [Reuses operator id: 3]
Output [3]: [product#70356, plant#70357, orderDateTime#70358]
(197) ShuffleQueryStage
Output [3]: [product#70356, plant#70357, orderDateTime#70358]
Arguments: 40
(198) ReusedExchange [Reuses operator id: 11]
Output [1]: [productPlant#70368]
(199) BroadcastQueryStage
Output [1]: [productPlant#70368]
Arguments: 210
(200) BroadcastHashJoin [codegen id : 187]
Left keys [4]: [coalesce(product#70356, ), isnull(product#70356), coalesce(plant#70357, ), isnull(plant#70357)]
Right keys [4]: [coalesce(productPlant#70368.product.internalRefUUID, ), isnull(productPlant#70368.product.internalRefUUID), coalesce(productPlant#70368.plant.internalRefUUID, ), isnull(productPlant#70368.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(201) Scan parquet
Output [3]: [internalUUID#70370, address#70376, systemId#70369]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string,address:struct<timeZone:struct<code:string>>>
(202) ColumnarToRow [codegen id : 27]
Input [3]: [internalUUID#70370, address#70376, systemId#70369]
(203) Project [codegen id : 27]
Output [2]: [internalUUID#70370, address#70376.timeZone.code AS timezonecode#70381]
Input [3]: [internalUUID#70370, address#70376, systemId#70369]
(204) Exchange
Input [2]: [internalUUID#70370, timezonecode#70381]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=38500]
(205) ShuffleQueryStage
Output [2]: [internalUUID#70370, timezonecode#70381]
Arguments: 43
(206) BroadcastExchange
Input [2]: [internalUUID#70370, timezonecode#70381]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=38508]
(207) BroadcastQueryStage
Output [2]: [internalUUID#70370, timezonecode#70381]
Arguments: 211
(208) BroadcastHashJoin [codegen id : 187]
Left keys [2]: [coalesce(plant#70357, ), isnull(plant#70357)]
Right keys [2]: [coalesce(internalUUID#70370, ), isnull(internalUUID#70370)]
Join type: LeftOuter
Join condition: None
(209) Project [codegen id : 187]
Output [5]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, CASE WHEN isnotnull(timezonecode#70381) THEN timezonecode#70381 ELSE UTC END AS timezonecode#70382]
Input [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, internalUUID#70370, timezonecode#70381]
(210) ReusedExchange [Reuses operator id: 29]
Output [3]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390]
(211) BroadcastQueryStage
Output [3]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390]
Arguments: 212
(212) BroadcastHashJoin [codegen id : 187]
Left keys [1]: [product#70356]
Right keys [1]: [internalUUID#70384]
Join type: LeftOuter
Join condition: None
(213) Project
Output [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, 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]
Input [8]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390]
(214) Project [codegen id : 188]
Output [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, filteredUnitOfMeasureConversions#70396.quantityDenominator AS _extract_quantityDenominator#79384, filteredUnitOfMeasureConversions#70396.quantityNumerator AS _extract_quantityNumerator#79385]
Input [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, filteredUnitOfMeasureConversions#70396]
(215) Generate [codegen id : 188]
Input [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, _extract_quantityDenominator#79384, _extract_quantityNumerator#79385]
Arguments: explode(_extract_quantityNumerator#79385), [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, _extract_quantityDenominator#79384], true, [quantityNumerator#70398]
(216) Generate [codegen id : 188]
Input [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, _extract_quantityDenominator#79384, quantityNumerator#70398]
Arguments: explode(_extract_quantityDenominator#79384), [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, quantityNumerator#70398], true, [quantityDenominator#70399]
(217) Project [codegen id : 188]
Output [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, (cast(quantityNumerator#70398 as double) / cast(quantityDenominator#70399 as double)) AS outboundUnit#70400]
Input [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, quantityNumerator#70398, quantityDenominator#70399]
(218) Project [codegen id : 188]
Output [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, CASE WHEN (isnull(outboundUnit#70400) OR (outboundUnit#70400 <= 0.0)) THEN 1.0 ELSE outboundUnit#70400 END AS outboundUnit#70401]
Input [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70400]
(219) ReusedExchange [Reuses operator id: 189]
Output [4]: [product#70560, plant#70559, minCalculationDateTime#70700, roundedQuantitySum#70701]
(220) BroadcastQueryStage
Output [4]: [product#70560, plant#70559, minCalculationDateTime#70700, roundedQuantitySum#70701]
Arguments: 358
(221) BroadcastHashJoin [codegen id : 188]
Left keys [2]: [plant#70357, product#70356]
Right keys [2]: [plant#70559, product#70560]
Join type: LeftOuter
Join condition: None
(222) Project [codegen id : 188]
Output [8]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, CASE WHEN isnotnull(minCalculationDateTime#70700) THEN minCalculationDateTime#70700 ELSE orderDateTime#70358 END AS stockDatetime#70702, CASE WHEN isnotnull(roundedQuantitySum#70701) THEN array(roundedQuantitySum#70701) ELSE [0.0] END AS stockBatchQuantities#70703]
Input [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, product#70560, plant#70559, minCalculationDateTime#70700, roundedQuantitySum#70701]
(223) Scan parquet
Output [9]: [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000002107/0_1_10000002107]
PushedFilters: [IsNotNull(product), IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,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>>>
(224) ColumnarToRow [codegen id : 49]
Input [9]: [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
(225) Filter [codegen id : 49]
Input [9]: [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
Condition : (isnotnull(product#69898) AND isnotnull(plant#69899))
(226) BroadcastExchange
Input [9]: [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=39044]
(227) BroadcastQueryStage
Output [9]: [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
Arguments: 86
(228) BroadcastHashJoin [codegen id : 188]
Left keys [2]: [product#70356, plant#70357]
Right keys [2]: [product#69898, plant#69899]
Join type: LeftOuter
Join condition: None
(229) Project [codegen id : 188]
Output [9]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, CASE WHEN isnotnull(product#69898) THEN struct(demandChannel, demandChannel#69900, demandStream, demandStream#69901, considerVariance, considerVariance#69902, demandTimeBuckets, demandTimeBuckets#69903, demandPointInTimeStart, demandPointInTimeStart#69904, demandPointInTimeEnd, demandPointInTimeEnd#69905, demandPointInTime, demandPointInTime#69906) END AS rawDemands#69977]
Input [17]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
(230) ObjectHashAggregate
Input [9]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, rawDemands#69977]
Keys [9]: [product#70356, plant#70357, orderDateTime#70358, knownfloatingpointnormalized(if (isnull(productPlant#70368)) null else named_struct(systemId, productPlant#70368.systemId, internalUUID, productPlant#70368.internalUUID, plant, productPlant#70368.plant, product, productPlant#70368.product, blockedForReplenishmentStartingFrom, productPlant#70368.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#70368.productionAspect)) null else named_struct(productMovementPlants, productPlant#70368.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#70368.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#70368.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#70368.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#70368.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#70368.productionAspect.productPlanningPlants.minimumLotSize)), minimumSafetyStock, knownfloatingpointnormalized(normalizenanandzero(productPlant#70368.productionAspect.productPlanningPlants.minimumSafetyStock)), logisticalRoundingProfile, productPlant#70368.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#70368.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#70368.salesPlant, listing, productPlant#70368.listing)) AS productPlant#70368, timezonecode#70382, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#70401)) AS outboundUnit#70401, stockDatetime#70702, knownfloatingpointnormalized(transform(stockBatchQuantities#70703, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#87664)), lambda arg#87664, false))) AS stockBatchQuantities#70703, [7226582400000000] AS [7226582400000000]#87663]
Functions [1]: [partial_collect_list(rawDemands#69977, 0, 0)]
Aggregate Attributes [1]: [buf#73940]
Results [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000]#87663, buf#73941]
(231) ObjectHashAggregate
Input [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000]#87663, buf#73941]
Keys [9]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000]#87663]
Functions [1]: [collect_list(rawDemands#69977, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#69977, 0, 0)#70170]
Results [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#70704, collect_list(rawDemands#69977, 0, 0)#70170 AS rawDemands#70004]
(232) DeserializeToObject [codegen id : 189]
Input [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, stockBatchShelfLifeEndDatetimes#70704, rawDemands#70004]
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, -11), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).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, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#70703, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), 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, -14), 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, -14).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, -14).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, -14).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).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, -14).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, -14).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, -14).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).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, -14).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
(233) MapElements [codegen id : 189]
Input [1]: [obj#70342]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@22b451ac, obj#70347: org.apache.spark.sql.Row
(234) SerializeFromObject [codegen id : 189]
Input [1]: [obj#70347]
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, -1), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -2), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -2), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -3), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -3), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -4), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -4), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -5), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -5), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -6), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -6), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -7), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), 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, -7), 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, -7), 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, -7), 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, -7), 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, -7), 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, -7), 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, -7), 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, -8), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -8), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), 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, -7), 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, -7), 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, -7), 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, -9), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -9), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), 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, -7), 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, -7), 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, -7), 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, -10), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -10), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), 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, -7), 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, -7), 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, -7), 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, -7), 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]
(235) Exchange
Input [4]: [product#70352, plant#70353, dayBucketDemands#70354, pointInTimeDemands#70355]
Arguments: hashpartitioning(coalesce(plant#70353, ), isnull(plant#70353), coalesce(product#70352, ), isnull(product#70352), 25), ENSURE_REQUIREMENTS, [plan_id=187790]
(236) ShuffleQueryStage
Output [4]: [product#70352, plant#70353, dayBucketDemands#70354, pointInTimeDemands#70355]
Arguments: 363
(237) AQEShuffleRead
Input [4]: [product#70352, plant#70353, dayBucketDemands#70354, pointInTimeDemands#70355]
Arguments: local
(238) BroadcastExchange
Input [4]: [product#70352, plant#70353, dayBucketDemands#70354, pointInTimeDemands#70355]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[1, string, true], ), isnull(input[1, string, true]), coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=189410]
(239) BroadcastQueryStage
Output [4]: [product#70352, plant#70353, dayBucketDemands#70354, pointInTimeDemands#70355]
Arguments: 368
(240) BroadcastHashJoin [codegen id : 197]
Left keys [4]: [coalesce(plant#69016, ), isnull(plant#69016), coalesce(product#69015, ), isnull(product#69015)]
Right keys [4]: [coalesce(plant#70353, ), isnull(plant#70353), coalesce(product#70352, ), isnull(product#70352)]
Join type: LeftOuter
Join condition: None
(241) Project [codegen id : 197]
Output [8]: [product#69015, plant#69016, _extract_minimumSafetyStock#79671, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, dayBucketDemands#70354, pointInTimeDemands#70355]
Input [10]: [product#69015, plant#69016, _extract_minimumSafetyStock#79671, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, product#70352, plant#70353, dayBucketDemands#70354, pointInTimeDemands#70355]
(242) Project [codegen id : 197]
Output [13]: [product#69015, plant#69016, _extract_minimumSafetyStock#79671, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, dayBucketDemands#70354, pointInTimeDemands#70355, cast(null as string) AS product#70764, cast(null as string) AS plant#70763, cast(null as array<double>) AS _extract_openQtyInBaseUnit#79354, cast(null as array<timestamp>) AS _extract_availabilityDatetime#79355, cast(null as array<timestamp>) AS _extract_shelfLifeEndDatetime#79356]
Input [8]: [product#69015, plant#69016, _extract_minimumSafetyStock#79671, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, dayBucketDemands#70354, pointInTimeDemands#70355]
(243) Project [codegen id : 197]
Output [16]: [product#69015, plant#69016, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#69872, dayBucketDemands#70354, pointInTimeDemands#70355, coalesce(_extract_openQtyInBaseUnit#79354, []) AS openGoodsMovementQuantities#78611, coalesce(_extract_availabilityDatetime#79355, []) AS openGoodsMovementAvailabilityDatetimes#78612, coalesce(_extract_shelfLifeEndDatetime#79356, []) AS openGoodsMovementShelfLifeEndDatetimes#78613, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#78808, concat([ListingPeriod], CASE WHEN isnotnull(_extract_minimumSafetyStock#79671) THEN [MinStock] ELSE [] END) AS timeDependentSettingsName#79096, concat([-2208988800000000], CASE WHEN isnotnull(_extract_minimumSafetyStock#79671) THEN [-2208988800000000] ELSE [] END) AS timeDependentSettingsStartDatetime#79098, concat([7226582400000000], CASE WHEN isnotnull(_extract_minimumSafetyStock#79671) THEN [7226582400000000] ELSE [] END) AS timeDependentSettingsEndDatetime#79100, concat([1.0], CASE WHEN isnotnull(_extract_minimumSafetyStock#79671) THEN array(_extract_minimumSafetyStock#79671) ELSE [] END) AS timeDependentSettingsValue#79102]
Input [13]: [product#69015, plant#69016, _extract_minimumSafetyStock#79671, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, dayBucketDemands#70354, pointInTimeDemands#70355, product#70764, plant#70763, _extract_openQtyInBaseUnit#79354, _extract_availabilityDatetime#79355, _extract_shelfLifeEndDatetime#79356]
(244) ResultQueryStage
Output [16]: [product#69015, plant#69016, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872, dayBucketDemands#70354, pointInTimeDemands#70355, openGoodsMovementQuantities#78611, openGoodsMovementAvailabilityDatetimes#78612, openGoodsMovementShelfLifeEndDatetimes#78613, configuration#78808, timeDependentSettingsName#79096, timeDependentSettingsStartDatetime#79098, timeDependentSettingsEndDatetime#79100, timeDependentSettingsValue#79102]
Arguments: 371
(245) Exchange
Input [3]: [product#69015, plant#69016, orderDateTime#69017]
Arguments: hashpartitioning(product#69015, plant#69016, 25), REPARTITION_BY_NUM, [plan_id=35332]
(246) Project
Output [8]: [systemId#69026, internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039]
Input [8]: [internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039, systemId#69026]
(247) Exchange
Input [8]: [systemId#69026, internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35335]
(248) Project
Output [1]: [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]
Input [8]: [systemId#69026, internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039]
(249) BroadcastExchange
Input [1]: [productPlant#69043]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=36490]
(250) BroadcastHashJoin
Left keys [4]: [coalesce(product#69015, ), isnull(product#69015), coalesce(plant#69016, ), isnull(plant#69016)]
Right keys [4]: [coalesce(productPlant#69043.product.internalRefUUID, ), isnull(productPlant#69043.product.internalRefUUID), coalesce(productPlant#69043.plant.internalRefUUID, ), isnull(productPlant#69043.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(251) Project
Output [1]: [internalUUID#69050]
Input [2]: [internalUUID#69050, systemId#69049]
(252) Exchange
Input [1]: [internalUUID#69050]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35340]
(253) BroadcastExchange
Input [1]: [internalUUID#69050]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=36493]
(254) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69016, ), isnull(plant#69016)]
Right keys [2]: [coalesce(internalUUID#69050, ), isnull(internalUUID#69050)]
Join type: LeftOuter
Join condition: None
(255) Project
Output [4]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043]
Input [5]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, internalUUID#69050]
(256) Filter
Input [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
Condition : isnotnull(internalUUID#69082)
(257) Project
Output [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Input [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
(258) Exchange
Input [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35346]
(259) BroadcastExchange
Input [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36497]
(260) BroadcastHashJoin
Left keys [1]: [product#69015]
Right keys [1]: [internalUUID#69082]
Join type: LeftOuter
Join condition: None
(261) Project
Output [5]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, 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]
Input [7]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
(262) Project
Output [6]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, filteredUnitOfMeasureConversions#69108.quantityDenominator AS _extract_quantityDenominator#79358, filteredUnitOfMeasureConversions#69108.quantityNumerator AS _extract_quantityNumerator#79359]
Input [5]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, filteredUnitOfMeasureConversions#69108]
(263) Generate
Input [6]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, _extract_quantityDenominator#79358, _extract_quantityNumerator#79359]
Arguments: explode(_extract_quantityNumerator#79359), [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, _extract_quantityDenominator#79358], true, [quantityNumerator#69123]
(264) Generate
Input [6]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, _extract_quantityDenominator#79358, quantityNumerator#69123]
Arguments: explode(_extract_quantityDenominator#79358), [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, quantityNumerator#69123], true, [quantityDenominator#69130]
(265) Project
Output [5]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, (cast(quantityNumerator#69123 as double) / cast(quantityDenominator#69130 as double)) AS outboundUnit#69132]
Input [6]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, quantityNumerator#69123, quantityDenominator#69130]
(266) Project
Output [5]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043.productionAspect.productPlanningPlants.minimumSafetyStock AS _extract_minimumSafetyStock#79671, CASE WHEN (isnull(outboundUnit#69132) OR (outboundUnit#69132 <= 0.0)) THEN 1.0 ELSE outboundUnit#69132 END AS outboundUnit#69133]
Input [5]: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, outboundUnit#69132]
(267) Sort
Input [5]: [product#69015, plant#69016, orderDateTime#69017, _extract_minimumSafetyStock#79671, outboundUnit#69133]
Arguments: [product#69015 ASC NULLS FIRST, plant#69016 ASC NULLS FIRST], false, 0
(268) Filter
Input [6]: [internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, systemId#69251]
Condition : (isnotnull(plant#69254.internalRefUUID) AND isnotnull(product#69253.internalRefUUID))
(269) Project
Output [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
Input [6]: [internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, systemId#69251]
(270) Exchange
Input [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35357]
(271) BroadcastExchange
Input [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=36529]
(272) Filter
Input [2]: [marketUnit#69147, distributionCenters#69161]
Condition : (((marketUnit#69147 <=> Daily_grocery) AND (size(distributionCenters#69161, true) > 0)) AND isnotnull(distributionCenters#69161))
(273) Project
Output [1]: [distributionCenters#69161]
Input [2]: [marketUnit#69147, distributionCenters#69161]
(274) Exchange
Input [1]: [distributionCenters#69161]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35361]
(275) Generate
Input [1]: [distributionCenters#69161]
Arguments: explode(distributionCenters#69161), false, [distributionCenters#69184]
(276) Filter
Input [1]: [distributionCenters#69184]
Condition : (((size(distributionCenters#69184.storageLocations, true) > 0) AND isnotnull(distributionCenters#69184.storageLocations)) AND isnotnull(distributionCenters#69184.internalRefUUID))
(277) Project
Output [2]: [distributionCenters#69184.internalRefUUID AS _extract_internalRefUUID#79266, distributionCenters#69184.storageLocations AS _extract_storageLocations#79267]
Input [1]: [distributionCenters#69184]
(278) Generate
Input [2]: [_extract_internalRefUUID#79266, _extract_storageLocations#79267]
Arguments: explode(_extract_storageLocations#79267), [_extract_internalRefUUID#79266], false, [storageLocations#69198]
(279) Project
Output [3]: [_extract_internalRefUUID#79266 AS plantUuid#69189, storageLocations#69198.id AS storageLocId#69201, storageLocations#69198.internalRefUUID AS storageLocUuid#69202]
Input [2]: [_extract_internalRefUUID#79266, storageLocations#69198]
(280) BroadcastExchange
Input [3]: [plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36525]
(281) Filter
Input [2]: [product#69783, plant#69784]
Condition : isnotnull(plant#69784)
(282) Exchange
Input [2]: [product#69783, plant#69784]
Arguments: hashpartitioning(product#69783, plant#69784, 25), REPARTITION_BY_NUM, [plan_id=36130]
(283) Project
Output [4]: [plant#69789.internalRefUUID AS _extract_internalRefUUID#79606, product#69790.internalRefUUID AS _extract_internalRefUUID#79603, productionAspect#69792.productMovementPlants.unitOfIssue.code AS _extract_code#79604, productionAspect#69792.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#79605]
Input [4]: [plant#69789, product#69790, productionAspect#69792, systemId#69787]
(284) Exchange
Input [4]: [_extract_internalRefUUID#79606, _extract_internalRefUUID#79603, _extract_code#79604, _extract_internalRefUUID#79605]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35373]
(285) Project
Output [4]: [_extract_code#79604, _extract_internalRefUUID#79605, _extract_internalRefUUID#79603, _extract_internalRefUUID#79606]
Input [4]: [_extract_internalRefUUID#79606, _extract_internalRefUUID#79603, _extract_code#79604, _extract_internalRefUUID#79605]
(286) BroadcastExchange
Input [4]: [_extract_code#79604, _extract_internalRefUUID#79605, _extract_internalRefUUID#79603, _extract_internalRefUUID#79606]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=36505]
(287) BroadcastHashJoin
Left keys [4]: [coalesce(product#69783, ), isnull(product#69783), coalesce(plant#69784, ), isnull(plant#69784)]
Right keys [4]: [coalesce(_extract_internalRefUUID#79603, ), isnull(_extract_internalRefUUID#79603), coalesce(_extract_internalRefUUID#79606, ), isnull(_extract_internalRefUUID#79606)]
Join type: LeftOuter
Join condition: None
(288) Project
Output [4]: [product#69783, plant#69784, _extract_code#79604, _extract_internalRefUUID#79605]
Input [6]: [product#69783, plant#69784, _extract_code#79604, _extract_internalRefUUID#79605, _extract_internalRefUUID#79603, _extract_internalRefUUID#79606]
(289) Scan parquet
Output [2]: [internalUUID#69810, systemId#69809]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(290) Project
Output [1]: [internalUUID#69810]
Input [2]: [internalUUID#69810, systemId#69809]
(291) Exchange
Input [1]: [internalUUID#69810]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35379]
(292) BroadcastExchange
Input [1]: [internalUUID#69810]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=36509]
(293) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69784, ), isnull(plant#69784)]
Right keys [2]: [coalesce(internalUUID#69810, ), isnull(internalUUID#69810)]
Join type: LeftOuter
Join condition: None
(294) Project
Output [4]: [product#69783, plant#69784, _extract_code#79604, _extract_internalRefUUID#79605]
Input [5]: [product#69783, plant#69784, _extract_code#79604, _extract_internalRefUUID#79605, internalUUID#69810]
(295) Scan parquet
Output [4]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844, systemId#69837]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(296) Filter
Input [4]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844, systemId#69837]
Condition : isnotnull(internalUUID#69838)
(297) Project
Output [3]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844]
Input [4]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844, systemId#69837]
(298) Exchange
Input [3]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35385]
(299) BroadcastExchange
Input [3]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36513]
(300) BroadcastHashJoin
Left keys [1]: [product#69783]
Right keys [1]: [internalUUID#69838]
Join type: LeftOuter
Join condition: None
(301) Project
Output [2]: [plant#69784, filter(unitOfMeasureConversions#69844, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#79604) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#79605)) 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]
Input [7]: [product#69783, plant#69784, _extract_code#79604, _extract_internalRefUUID#79605, internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844]
(302) Generate
Input [2]: [plant#69784, filteredUnitOfMeasureConversions#69850]
Arguments: explode(filteredUnitOfMeasureConversions#69850.quantityNumerator), [plant#69784, filteredUnitOfMeasureConversions#69850], true, [quantityNumerator#69852]
(303) Project
Output [2]: [plant#69784, filteredUnitOfMeasureConversions#69850.quantityDenominator AS _extract_quantityDenominator#79268]
Input [3]: [plant#69784, filteredUnitOfMeasureConversions#69850, quantityNumerator#69852]
(304) Generate
Input [2]: [plant#69784, _extract_quantityDenominator#79268]
Arguments: explode(_extract_quantityDenominator#79268), [plant#69784], true, [quantityDenominator#69853]
(305) Project
Output [1]: [plant#69784]
Input [2]: [plant#69784, quantityDenominator#69853]
(306) HashAggregate
Input [1]: [plant#69784]
Keys [1]: [plant#69784]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69784]
(307) Exchange
Input [1]: [plant#69784]
Arguments: hashpartitioning(plant#69784, 25), ENSURE_REQUIREMENTS, [plan_id=36522]
(308) HashAggregate
Input [1]: [plant#69784]
Keys [1]: [plant#69784]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69784]
(309) BroadcastHashJoin
Left keys [1]: [plantUuid#69189]
Right keys [1]: [plant#69784]
Join type: Inner
Join condition: None
(310) Project
Output [3]: [plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
Input [4]: [plantUuid#69189, storageLocId#69201, storageLocUuid#69202, plant#69784]
(311) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69254.internalRefUUID, ), isnull(plant#69254.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#69189, ), isnull(plantUuid#69189)]
Join type: Inner
Join condition: None
(312) Generate
Input [9]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
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))), [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, plantUuid#69189], false, [stockQuantity#69271]
(313) ObjectHashAggregate
Input [7]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, plantUuid#69189, stockQuantity#69271]
Keys [5]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251]
Functions [2]: [partial_first(calculationDateTime#69255, false), partial_collect_list(stockQuantity#69271, 0, 0)]
Aggregate Attributes [3]: [first#73908, valueSet#73909, buf#73910]
Results [8]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251, first#73911, valueSet#73912, buf#73913]
(314) ObjectHashAggregate
Input [8]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251, first#73911, valueSet#73912, buf#73913]
Keys [5]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251]
Functions [2]: [first(calculationDateTime#69255, false), collect_list(stockQuantity#69271, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#69255)()#69321, collect_list(stockQuantity#69271, 0, 0)#69322]
Results [4]: [product#69253, plant#69254, first(calculationDateTime#69255)()#69321 AS calculationDateTime#69308, collect_list(stockQuantity#69271, 0, 0)#69322 AS stockQuantities#69309]
(315) Filter
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantities#69309]
Condition : ((size(stockQuantities#69309, true) > 0) AND isnotnull(calculationDateTime#69308))
(316) Generate
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantities#69309]
Arguments: explode(stockQuantities#69309), [product#69253, plant#69254, calculationDateTime#69308], false, [stockQuantity#69367]
(317) Filter
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantity#69367]
Condition : (((isnotnull(stockQuantity#69367.specialStockIndicator.code) AND isnotnull(stockQuantity#69367.stockType.code)) AND (stockQuantity#69367.specialStockIndicator.code = )) AND (stockQuantity#69367.stockType.code = 01))
(318) Project
Output [5]: [plant#69254.internalRefUUID AS plantUuid#69370, product#69253.internalRefUUID AS productUuid#69372, calculationDateTime#69308, stockQuantity#69367.storagelocation.id AS storageLocId#69373, stockQuantity#69367.quantity.measure AS quantity#69375]
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantity#69367]
(319) Exchange
Input [5]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373, quantity#69375]
Arguments: hashpartitioning(productUuid#69372, plantUuid#69370, 25), ENSURE_REQUIREMENTS, [plan_id=36555]
(320) Sort
Input [5]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373, quantity#69375]
Arguments: [productUuid#69372 ASC NULLS FIRST, plantUuid#69370 ASC NULLS FIRST], false, 0
(321) Filter
Input [3]: [product#69391, plant#69392, orderDateTime#69393]
Condition : ((isnotnull(orderDateTime#69393) AND isnotnull(plant#69392)) AND isnotnull(product#69391))
(322) Exchange
Input [3]: [product#69391, plant#69392, orderDateTime#69393]
Arguments: hashpartitioning(product#69391, plant#69392, 25), REPARTITION_BY_NUM, [plan_id=36153]
(323) Scan parquet
Output [4]: [plant#69397, product#69398, productionAspect#69400, systemId#69395]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(324) Project
Output [4]: [plant#69397.internalRefUUID AS _extract_internalRefUUID#79610, product#69398.internalRefUUID AS _extract_internalRefUUID#79607, productionAspect#69400.productMovementPlants.unitOfIssue.code AS _extract_code#79608, productionAspect#69400.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#79609]
Input [4]: [plant#69397, product#69398, productionAspect#69400, systemId#69395]
(325) Exchange
Input [4]: [_extract_internalRefUUID#79610, _extract_internalRefUUID#79607, _extract_code#79608, _extract_internalRefUUID#79609]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35410]
(326) Project
Output [4]: [_extract_code#79608, _extract_internalRefUUID#79609, _extract_internalRefUUID#79607, _extract_internalRefUUID#79610]
Input [4]: [_extract_internalRefUUID#79610, _extract_internalRefUUID#79607, _extract_code#79608, _extract_internalRefUUID#79609]
(327) BroadcastExchange
Input [4]: [_extract_code#79608, _extract_internalRefUUID#79609, _extract_internalRefUUID#79607, _extract_internalRefUUID#79610]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=36538]
(328) BroadcastHashJoin
Left keys [4]: [coalesce(product#69391, ), isnull(product#69391), coalesce(plant#69392, ), isnull(plant#69392)]
Right keys [4]: [coalesce(_extract_internalRefUUID#79607, ), isnull(_extract_internalRefUUID#79607), coalesce(_extract_internalRefUUID#79610, ), isnull(_extract_internalRefUUID#79610)]
Join type: LeftOuter
Join condition: None
(329) Project
Output [5]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#79608, _extract_internalRefUUID#79609]
Input [7]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#79608, _extract_internalRefUUID#79609, _extract_internalRefUUID#79607, _extract_internalRefUUID#79610]
(330) Scan parquet
Output [2]: [internalUUID#69405, systemId#69404]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(331) Project
Output [1]: [internalUUID#69405]
Input [2]: [internalUUID#69405, systemId#69404]
(332) Exchange
Input [1]: [internalUUID#69405]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35416]
(333) BroadcastExchange
Input [1]: [internalUUID#69405]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=36542]
(334) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69392, ), isnull(plant#69392)]
Right keys [2]: [coalesce(internalUUID#69405, ), isnull(internalUUID#69405)]
Join type: LeftOuter
Join condition: None
(335) Project
Output [5]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#79608, _extract_internalRefUUID#79609]
Input [6]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#79608, _extract_internalRefUUID#79609, internalUUID#69405]
(336) Scan parquet
Output [4]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425, systemId#69418]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(337) Filter
Input [4]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425, systemId#69418]
Condition : isnotnull(internalUUID#69419)
(338) Project
Output [3]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425]
Input [4]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425, systemId#69418]
(339) Exchange
Input [3]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35422]
(340) BroadcastExchange
Input [3]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36546]
(341) BroadcastHashJoin
Left keys [1]: [product#69391]
Right keys [1]: [internalUUID#69419]
Join type: LeftOuter
Join condition: None
(342) Project
Output [4]: [product#69391, plant#69392, orderDateTime#69393, filter(unitOfMeasureConversions#69425, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#79608) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#79609)) 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]
Input [8]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#79608, _extract_internalRefUUID#79609, internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425]
(343) Generate
Input [4]: [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430]
Arguments: explode(filteredUnitOfMeasureConversions#69430.quantityNumerator), [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430], true, [quantityNumerator#69431]
(344) Project
Output [4]: [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430.quantityDenominator AS _extract_quantityDenominator#79272]
Input [5]: [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430, quantityNumerator#69431]
(345) Generate
Input [4]: [product#69391, plant#69392, orderDateTime#69393, _extract_quantityDenominator#79272]
Arguments: explode(_extract_quantityDenominator#79272), [product#69391, plant#69392, orderDateTime#69393], true, [quantityDenominator#69432]
(346) Project
Output [3]: [product#69391, plant#69392, orderDateTime#69393]
Input [4]: [product#69391, plant#69392, orderDateTime#69393, quantityDenominator#69432]
(347) Sort
Input [3]: [product#69391, plant#69392, orderDateTime#69393]
Arguments: [product#69391 ASC NULLS FIRST, plant#69392 ASC NULLS FIRST], false, 0
(348) SortMergeJoin
Left keys [2]: [productUuid#69372, plantUuid#69370]
Right keys [2]: [product#69391, plant#69392]
Join type: Inner
Join condition: (calculationDateTime#69308 <= orderDateTime#69393)
(349) Project
Output [5]: [plantUuid#69370 AS plant#69448, productUuid#69372 AS product#69449, storageLocId#69373, calculationDateTime#69308, quantity#69375]
Input [8]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373, quantity#69375, product#69391, plant#69392, orderDateTime#69393]
(350) Exchange
Input [5]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308, quantity#69375]
Arguments: hashpartitioning(coalesce(plant#69448, ), isnull(plant#69448), coalesce(product#69449, ), isnull(product#69449), coalesce(storageLocId#69373, ), isnull(storageLocId#69373), coalesce(calculationDateTime#69308, 1970-01-01 00:00:00), isnull(calculationDateTime#69308), 25), ENSURE_REQUIREMENTS, [plan_id=36619]
(351) Sort
Input [5]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308, quantity#69375]
Arguments: [coalesce(plant#69448, ) ASC NULLS FIRST, isnull(plant#69448) ASC NULLS FIRST, coalesce(product#69449, ) ASC NULLS FIRST, isnull(product#69449) ASC NULLS FIRST, coalesce(storageLocId#69373, ) ASC NULLS FIRST, isnull(storageLocId#69373) ASC NULLS FIRST, coalesce(calculationDateTime#69308, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#69308) ASC NULLS FIRST], false, 0
(352) Scan parquet
Output [6]: [internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597, systemId#69592]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(353) Filter
Input [6]: [internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597, systemId#69592]
Condition : (isnotnull(plant#69595.internalRefUUID) AND isnotnull(product#69594.internalRefUUID))
(354) Project
Output [6]: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597]
Input [6]: [internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597, systemId#69592]
(355) Exchange
Input [6]: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35434]
(356) BroadcastExchange
Input [6]: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=36584]
(357) Scan parquet
Output [2]: [marketUnit#69598, distributionCenters#69604]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(358) Filter
Input [2]: [marketUnit#69598, distributionCenters#69604]
Condition : (((marketUnit#69598 <=> Daily_grocery) AND (size(distributionCenters#69604, true) > 0)) AND isnotnull(distributionCenters#69604))
(359) Project
Output [1]: [distributionCenters#69604]
Input [2]: [marketUnit#69598, distributionCenters#69604]
(360) Exchange
Input [1]: [distributionCenters#69604]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35438]
(361) Generate
Input [1]: [distributionCenters#69604]
Arguments: explode(distributionCenters#69604), false, [distributionCenters#69622]
(362) Filter
Input [1]: [distributionCenters#69622]
Condition : (((size(distributionCenters#69622.storageLocations, true) > 0) AND isnotnull(distributionCenters#69622.storageLocations)) AND isnotnull(distributionCenters#69622.internalRefUUID))
(363) Project
Output [2]: [distributionCenters#69622.internalRefUUID AS _extract_internalRefUUID#79276, distributionCenters#69622.storageLocations AS _extract_storageLocations#79277]
Input [1]: [distributionCenters#69622]
(364) Generate
Input [2]: [_extract_internalRefUUID#79276, _extract_storageLocations#79277]
Arguments: explode(_extract_storageLocations#79277), [_extract_internalRefUUID#79276], false, [storageLocations#69623]
(365) Project
Output [3]: [_extract_internalRefUUID#79276 AS plantUuid#69625, storageLocations#69623.id AS storageLocId#69626, storageLocations#69623.internalRefUUID AS storageLocUuid#69627]
Input [2]: [_extract_internalRefUUID#79276, storageLocations#69623]
(366) BroadcastExchange
Input [3]: [plantUuid#69625, storageLocId#69626, storageLocUuid#69627]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36580]
(367) Scan parquet
Output [2]: [product#69628, plant#69629]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(368) Filter
Input [2]: [product#69628, plant#69629]
Condition : isnotnull(plant#69629)
(369) Exchange
Input [2]: [product#69628, plant#69629]
Arguments: hashpartitioning(product#69628, plant#69629, 25), REPARTITION_BY_NUM, [plan_id=36166]
(370) Scan parquet
Output [4]: [plant#69634, product#69635, productionAspect#69637, systemId#69632]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(371) Project
Output [4]: [plant#69634.internalRefUUID AS _extract_internalRefUUID#79614, product#69635.internalRefUUID AS _extract_internalRefUUID#79613, productionAspect#69637.productMovementPlants.unitOfIssue.code AS _extract_code#79611, productionAspect#69637.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#79612]
Input [4]: [plant#69634, product#69635, productionAspect#69637, systemId#69632]
(372) Exchange
Input [4]: [_extract_internalRefUUID#79614, _extract_internalRefUUID#79613, _extract_code#79611, _extract_internalRefUUID#79612]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35450]
(373) Project
Output [4]: [_extract_code#79611, _extract_internalRefUUID#79612, _extract_internalRefUUID#79613, _extract_internalRefUUID#79614]
Input [4]: [_extract_internalRefUUID#79614, _extract_internalRefUUID#79613, _extract_code#79611, _extract_internalRefUUID#79612]
(374) BroadcastExchange
Input [4]: [_extract_code#79611, _extract_internalRefUUID#79612, _extract_internalRefUUID#79613, _extract_internalRefUUID#79614]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=36560]
(375) BroadcastHashJoin
Left keys [4]: [coalesce(product#69628, ), isnull(product#69628), coalesce(plant#69629, ), isnull(plant#69629)]
Right keys [4]: [coalesce(_extract_internalRefUUID#79613, ), isnull(_extract_internalRefUUID#79613), coalesce(_extract_internalRefUUID#79614, ), isnull(_extract_internalRefUUID#79614)]
Join type: LeftOuter
Join condition: None
(376) Project
Output [4]: [product#69628, plant#69629, _extract_code#79611, _extract_internalRefUUID#79612]
Input [6]: [product#69628, plant#69629, _extract_code#79611, _extract_internalRefUUID#79612, _extract_internalRefUUID#79613, _extract_internalRefUUID#79614]
(377) Scan parquet
Output [2]: [internalUUID#69642, systemId#69641]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(378) Project
Output [1]: [internalUUID#69642]
Input [2]: [internalUUID#69642, systemId#69641]
(379) Exchange
Input [1]: [internalUUID#69642]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35456]
(380) BroadcastExchange
Input [1]: [internalUUID#69642]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=36564]
(381) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69629, ), isnull(plant#69629)]
Right keys [2]: [coalesce(internalUUID#69642, ), isnull(internalUUID#69642)]
Join type: LeftOuter
Join condition: None
(382) Project
Output [4]: [product#69628, plant#69629, _extract_code#79611, _extract_internalRefUUID#79612]
Input [5]: [product#69628, plant#69629, _extract_code#79611, _extract_internalRefUUID#79612, internalUUID#69642]
(383) Scan parquet
Output [4]: [internalUUID#69656, baseUnitOfMeasure#69660, unitOfMeasureConversions#69662, systemId#69655]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(384) Filter
Input [4]: [internalUUID#69656, baseUnitOfMeasure#69660, unitOfMeasureConversions#69662, systemId#69655]
Condition : isnotnull(internalUUID#69656)
(385) Project
Output [3]: [internalUUID#69656, baseUnitOfMeasure#69660, unitOfMeasureConversions#69662]
Input [4]: [internalUUID#69656, baseUnitOfMeasure#69660, unitOfMeasureConversions#69662, systemId#69655]
(386) Exchange
Input [3]: [internalUUID#69656, baseUnitOfMeasure#69660, unitOfMeasureConversions#69662]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35462]
(387) BroadcastExchange
Input [3]: [internalUUID#69656, baseUnitOfMeasure#69660, unitOfMeasureConversions#69662]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36568]
(388) BroadcastHashJoin
Left keys [1]: [product#69628]
Right keys [1]: [internalUUID#69656]
Join type: LeftOuter
Join condition: None
(389) Project
Output [2]: [plant#69629, filter(unitOfMeasureConversions#69662, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#79611) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#79612)) 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]
Input [7]: [product#69628, plant#69629, _extract_code#79611, _extract_internalRefUUID#79612, internalUUID#69656, baseUnitOfMeasure#69660, unitOfMeasureConversions#69662]
(390) Generate
Input [2]: [plant#69629, filteredUnitOfMeasureConversions#69667]
Arguments: explode(filteredUnitOfMeasureConversions#69667.quantityNumerator), [plant#69629, filteredUnitOfMeasureConversions#69667], true, [quantityNumerator#69668]
(391) Project
Output [2]: [plant#69629, filteredUnitOfMeasureConversions#69667.quantityDenominator AS _extract_quantityDenominator#79278]
Input [3]: [plant#69629, filteredUnitOfMeasureConversions#69667, quantityNumerator#69668]
(392) Generate
Input [2]: [plant#69629, _extract_quantityDenominator#79278]
Arguments: explode(_extract_quantityDenominator#79278), [plant#69629], true, [quantityDenominator#69669]
(393) Project
Output [1]: [plant#69629]
Input [2]: [plant#69629, quantityDenominator#69669]
(394) HashAggregate
Input [1]: [plant#69629]
Keys [1]: [plant#69629]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69629]
(395) Exchange
Input [1]: [plant#69629]
Arguments: hashpartitioning(plant#69629, 25), ENSURE_REQUIREMENTS, [plan_id=36577]
(396) HashAggregate
Input [1]: [plant#69629]
Keys [1]: [plant#69629]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69629]
(397) BroadcastHashJoin
Left keys [1]: [plantUuid#69625]
Right keys [1]: [plant#69629]
Join type: Inner
Join condition: None
(398) Project
Output [3]: [plantUuid#69625, storageLocId#69626, storageLocUuid#69627]
Input [4]: [plantUuid#69625, storageLocId#69626, storageLocUuid#69627, plant#69629]
(399) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69595.internalRefUUID, ), isnull(plant#69595.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#69625, ), isnull(plantUuid#69625)]
Join type: Inner
Join condition: None
(400) Generate
Input [9]: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597, plantUuid#69625, storageLocId#69626, storageLocUuid#69627]
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))), [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, plantUuid#69625], false, [stockQuantity#69672]
(401) ObjectHashAggregate
Input [7]: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, plantUuid#69625, stockQuantity#69672]
Keys [5]: [plantUuid#69625, internalUUID#69593, plant#69595, product#69594, systemId#69592]
Functions [2]: [partial_first(calculationDateTime#69596, false), partial_collect_list(stockQuantity#69672, 0, 0)]
Aggregate Attributes [3]: [first#73918, valueSet#73919, buf#73920]
Results [8]: [plantUuid#69625, internalUUID#69593, plant#69595, product#69594, systemId#69592, first#73921, valueSet#73922, buf#73923]
(402) ObjectHashAggregate
Input [8]: [plantUuid#69625, internalUUID#69593, plant#69595, product#69594, systemId#69592, first#73921, valueSet#73922, buf#73923]
Keys [5]: [plantUuid#69625, internalUUID#69593, plant#69595, product#69594, systemId#69592]
Functions [2]: [first(calculationDateTime#69596, false), collect_list(stockQuantity#69672, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#69596)()#69321, collect_list(stockQuantity#69672, 0, 0)#69322]
Results [4]: [product#69594, plant#69595, first(calculationDateTime#69596)()#69321 AS calculationDateTime#69673, collect_list(stockQuantity#69672, 0, 0)#69322 AS stockQuantities#69674]
(403) Filter
Input [4]: [product#69594, plant#69595, calculationDateTime#69673, stockQuantities#69674]
Condition : ((size(stockQuantities#69674, true) > 0) AND isnotnull(calculationDateTime#69673))
(404) Generate
Input [4]: [product#69594, plant#69595, calculationDateTime#69673, stockQuantities#69674]
Arguments: explode(stockQuantities#69674), [product#69594, plant#69595, calculationDateTime#69673], false, [stockQuantity#69675]
(405) Filter
Input [4]: [product#69594, plant#69595, calculationDateTime#69673, stockQuantity#69675]
Condition : (((isnotnull(stockQuantity#69675.specialStockIndicator.code) AND isnotnull(stockQuantity#69675.stockType.code)) AND (stockQuantity#69675.specialStockIndicator.code = )) AND (stockQuantity#69675.stockType.code = 01))
(406) Project
Output [4]: [plant#69595.internalRefUUID AS plantUuid#69677, product#69594.internalRefUUID AS productUuid#69679, calculationDateTime#69673, stockQuantity#69675.storagelocation.id AS storageLocId#69680]
Input [4]: [product#69594, plant#69595, calculationDateTime#69673, stockQuantity#69675]
(407) Exchange
Input [4]: [plantUuid#69677, productUuid#69679, calculationDateTime#69673, storageLocId#69680]
Arguments: hashpartitioning(productUuid#69679, plantUuid#69677, 25), ENSURE_REQUIREMENTS, [plan_id=36610]
(408) Sort
Input [4]: [plantUuid#69677, productUuid#69679, calculationDateTime#69673, storageLocId#69680]
Arguments: [productUuid#69679 ASC NULLS FIRST, plantUuid#69677 ASC NULLS FIRST], false, 0
(409) Scan parquet
Output [3]: [product#69685, plant#69686, orderDateTime#69687]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(410) Filter
Input [3]: [product#69685, plant#69686, orderDateTime#69687]
Condition : ((isnotnull(orderDateTime#69687) AND isnotnull(plant#69686)) AND isnotnull(product#69685))
(411) Exchange
Input [3]: [product#69685, plant#69686, orderDateTime#69687]
Arguments: hashpartitioning(product#69685, plant#69686, 25), REPARTITION_BY_NUM, [plan_id=36189]
(412) Scan parquet
Output [4]: [plant#69691, product#69692, productionAspect#69694, systemId#69689]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(413) Project
Output [4]: [plant#69691.internalRefUUID AS _extract_internalRefUUID#79615, product#69692.internalRefUUID AS _extract_internalRefUUID#79616, productionAspect#69694.productMovementPlants.unitOfIssue.code AS _extract_code#79617, productionAspect#69694.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#79618]
Input [4]: [plant#69691, product#69692, productionAspect#69694, systemId#69689]
(414) Exchange
Input [4]: [_extract_internalRefUUID#79615, _extract_internalRefUUID#79616, _extract_code#79617, _extract_internalRefUUID#79618]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35487]
(415) Project
Output [4]: [_extract_code#79617, _extract_internalRefUUID#79618, _extract_internalRefUUID#79616, _extract_internalRefUUID#79615]
Input [4]: [_extract_internalRefUUID#79615, _extract_internalRefUUID#79616, _extract_code#79617, _extract_internalRefUUID#79618]
(416) BroadcastExchange
Input [4]: [_extract_code#79617, _extract_internalRefUUID#79618, _extract_internalRefUUID#79616, _extract_internalRefUUID#79615]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=36593]
(417) BroadcastHashJoin
Left keys [4]: [coalesce(product#69685, ), isnull(product#69685), coalesce(plant#69686, ), isnull(plant#69686)]
Right keys [4]: [coalesce(_extract_internalRefUUID#79616, ), isnull(_extract_internalRefUUID#79616), coalesce(_extract_internalRefUUID#79615, ), isnull(_extract_internalRefUUID#79615)]
Join type: LeftOuter
Join condition: None
(418) Project
Output [5]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#79617, _extract_internalRefUUID#79618]
Input [7]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#79617, _extract_internalRefUUID#79618, _extract_internalRefUUID#79616, _extract_internalRefUUID#79615]
(419) Scan parquet
Output [2]: [internalUUID#69699, systemId#69698]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(420) Project
Output [1]: [internalUUID#69699]
Input [2]: [internalUUID#69699, systemId#69698]
(421) Exchange
Input [1]: [internalUUID#69699]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35493]
(422) BroadcastExchange
Input [1]: [internalUUID#69699]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=36597]
(423) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69686, ), isnull(plant#69686)]
Right keys [2]: [coalesce(internalUUID#69699, ), isnull(internalUUID#69699)]
Join type: LeftOuter
Join condition: None
(424) Project
Output [5]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#79617, _extract_internalRefUUID#79618]
Input [6]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#79617, _extract_internalRefUUID#79618, internalUUID#69699]
(425) Scan parquet
Output [4]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719, systemId#69712]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(426) Filter
Input [4]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719, systemId#69712]
Condition : isnotnull(internalUUID#69713)
(427) Project
Output [3]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719]
Input [4]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719, systemId#69712]
(428) Exchange
Input [3]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35499]
(429) BroadcastExchange
Input [3]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36601]
(430) BroadcastHashJoin
Left keys [1]: [product#69685]
Right keys [1]: [internalUUID#69713]
Join type: LeftOuter
Join condition: None
(431) Project
Output [4]: [product#69685, plant#69686, orderDateTime#69687, filter(unitOfMeasureConversions#69719, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#79617) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#79618)) 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]
Input [8]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#79617, _extract_internalRefUUID#79618, internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719]
(432) Generate
Input [4]: [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724]
Arguments: explode(filteredUnitOfMeasureConversions#69724.quantityNumerator), [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724], true, [quantityNumerator#69725]
(433) Project
Output [4]: [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724.quantityDenominator AS _extract_quantityDenominator#79282]
Input [5]: [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724, quantityNumerator#69725]
(434) Generate
Input [4]: [product#69685, plant#69686, orderDateTime#69687, _extract_quantityDenominator#79282]
Arguments: explode(_extract_quantityDenominator#79282), [product#69685, plant#69686, orderDateTime#69687], true, [quantityDenominator#69726]
(435) Project
Output [3]: [product#69685, plant#69686, orderDateTime#69687]
Input [4]: [product#69685, plant#69686, orderDateTime#69687, quantityDenominator#69726]
(436) Sort
Input [3]: [product#69685, plant#69686, orderDateTime#69687]
Arguments: [product#69685 ASC NULLS FIRST, plant#69686 ASC NULLS FIRST], false, 0
(437) SortMergeJoin
Left keys [2]: [productUuid#69679, plantUuid#69677]
Right keys [2]: [product#69685, plant#69686]
Join type: Inner
Join condition: (calculationDateTime#69673 <= orderDateTime#69687)
(438) Project
Output [4]: [plantUuid#69677 AS plant#69729, productUuid#69679 AS product#69730, storageLocId#69680, calculationDateTime#69673]
Input [7]: [plantUuid#69677, productUuid#69679, calculationDateTime#69673, storageLocId#69680, product#69685, plant#69686, orderDateTime#69687]
(439) HashAggregate
Input [4]: [plant#69729, product#69730, storageLocId#69680, calculationDateTime#69673]
Keys [3]: [plant#69729, product#69730, storageLocId#69680]
Functions [1]: [partial_max(calculationDateTime#69673)]
Aggregate Attributes [1]: [max#73916]
Results [4]: [plant#69729, product#69730, storageLocId#69680, max#73917]
(440) HashAggregate
Input [4]: [plant#69729, product#69730, storageLocId#69680, max#73917]
Keys [3]: [plant#69729, product#69730, storageLocId#69680]
Functions [1]: [max(calculationDateTime#69673)]
Aggregate Attributes [1]: [max(calculationDateTime#69673)#69456]
Results [4]: [plant#69729, product#69730, storageLocId#69680, max(calculationDateTime#69673)#69456 AS max_calc_datetime#69450]
(441) Exchange
Input [4]: [plant#69729, product#69730, storageLocId#69680, max_calc_datetime#69450]
Arguments: hashpartitioning(coalesce(plant#69729, ), isnull(plant#69729), coalesce(product#69730, ), isnull(product#69730), coalesce(storageLocId#69680, ), isnull(storageLocId#69680), coalesce(max_calc_datetime#69450, 1970-01-01 00:00:00), isnull(max_calc_datetime#69450), 25), ENSURE_REQUIREMENTS, [plan_id=36620]
(442) Sort
Input [4]: [plant#69729, product#69730, storageLocId#69680, max_calc_datetime#69450]
Arguments: [coalesce(plant#69729, ) ASC NULLS FIRST, isnull(plant#69729) ASC NULLS FIRST, coalesce(product#69730, ) ASC NULLS FIRST, isnull(product#69730) ASC NULLS FIRST, coalesce(storageLocId#69680, ) ASC NULLS FIRST, isnull(storageLocId#69680) ASC NULLS FIRST, coalesce(max_calc_datetime#69450, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#69450) ASC NULLS FIRST], false, 0
(443) SortMergeJoin
Left keys [8]: [coalesce(plant#69448, ), isnull(plant#69448), coalesce(product#69449, ), isnull(product#69449), coalesce(storageLocId#69373, ), isnull(storageLocId#69373), coalesce(calculationDateTime#69308, 1970-01-01 00:00:00), isnull(calculationDateTime#69308)]
Right keys [8]: [coalesce(plant#69729, ), isnull(plant#69729), coalesce(product#69730, ), isnull(product#69730), coalesce(storageLocId#69680, ), isnull(storageLocId#69680), coalesce(max_calc_datetime#69450, 1970-01-01 00:00:00), isnull(max_calc_datetime#69450)]
Join type: Inner
Join condition: None
(444) Project
Output [4]: [plant#69448, product#69449, calculationDateTime#69308, quantity#69375]
Input [9]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308, quantity#69375, plant#69729, product#69730, storageLocId#69680, max_calc_datetime#69450]
(445) HashAggregate
Input [4]: [plant#69448, product#69449, calculationDateTime#69308, quantity#69375]
Keys [2]: [product#69449, plant#69448]
Functions [2]: [partial_min(calculationDateTime#69308), partial_sum(quantity#69375)]
Aggregate Attributes [2]: [min#73906, sum#81407]
Results [4]: [product#69449, plant#69448, min#73907, sum#81408]
(446) Exchange
Input [4]: [product#69449, plant#69448, min#73907, sum#81408]
Arguments: hashpartitioning(product#69449, plant#69448, 25), ENSURE_REQUIREMENTS, [plan_id=36627]
(447) HashAggregate
Input [4]: [product#69449, plant#69448, min#73907, sum#81408]
Keys [2]: [product#69449, plant#69448]
Functions [2]: [min(calculationDateTime#69308), sum(quantity#69375)]
Aggregate Attributes [2]: [min(calculationDateTime#69308)#69768, sum(quantity#69375)#69767]
Results [4]: [product#69449, plant#69448, min(calculationDateTime#69308)#69768 AS minCalculationDateTime#69754, round(sum(quantity#69375)#69767, 0) AS roundedQuantitySum#69770]
(448) Sort
Input [4]: [product#69449, plant#69448, minCalculationDateTime#69754, roundedQuantitySum#69770]
Arguments: [product#69449 ASC NULLS FIRST, plant#69448 ASC NULLS FIRST], false, 0
(449) SortMergeJoin
Left keys [2]: [product#69015, plant#69016]
Right keys [2]: [product#69449, plant#69448]
Join type: LeftOuter
Join condition: None
(450) Project
Output [6]: [product#69015, plant#69016, _extract_minimumSafetyStock#79671, outboundUnit#69133, CASE WHEN isnotnull(minCalculationDateTime#69754) THEN minCalculationDateTime#69754 ELSE orderDateTime#69017 END AS stockDatetime#69867, CASE WHEN isnotnull(roundedQuantitySum#69770) THEN array(roundedQuantitySum#69770) ELSE [0.0] END AS stockBatchQuantities#69870]
Input [9]: [product#69015, plant#69016, orderDateTime#69017, _extract_minimumSafetyStock#79671, outboundUnit#69133, product#69449, plant#69448, minCalculationDateTime#69754, roundedQuantitySum#69770]
(451) Exchange
Input [6]: [product#69015, plant#69016, _extract_minimumSafetyStock#79671, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870]
Arguments: hashpartitioning(coalesce(plant#69016, ), isnull(plant#69016), coalesce(product#69015, ), isnull(product#69015), 25), ENSURE_REQUIREMENTS, [plan_id=36791]
(452) Sort
Input [6]: [product#69015, plant#69016, _extract_minimumSafetyStock#79671, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870]
Arguments: [coalesce(plant#69016, ) ASC NULLS FIRST, isnull(plant#69016) ASC NULLS FIRST, coalesce(product#69015, ) ASC NULLS FIRST, isnull(product#69015) ASC NULLS FIRST], false, 0
(453) Scan parquet
Output [3]: [product#70356, plant#70357, orderDateTime#70358]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(454) Exchange
Input [3]: [product#70356, plant#70357, orderDateTime#70358]
Arguments: hashpartitioning(product#70356, plant#70357, 25), REPARTITION_BY_NUM, [plan_id=35517]
(455) Scan parquet
Output [8]: [internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367, systemId#70360]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>
(456) Project
Output [8]: [systemId#70360, internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367]
Input [8]: [internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367, systemId#70360]
(457) Exchange
Input [8]: [systemId#70360, internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35520]
(458) Project
Output [1]: [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]
Input [8]: [systemId#70360, internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367]
(459) BroadcastExchange
Input [1]: [productPlant#70368]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=36635]
(460) BroadcastHashJoin
Left keys [4]: [coalesce(product#70356, ), isnull(product#70356), coalesce(plant#70357, ), isnull(plant#70357)]
Right keys [4]: [coalesce(productPlant#70368.product.internalRefUUID, ), isnull(productPlant#70368.product.internalRefUUID), coalesce(productPlant#70368.plant.internalRefUUID, ), isnull(productPlant#70368.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(461) Project
Output [2]: [internalUUID#70370, address#70376.timeZone.code AS timezonecode#70381]
Input [3]: [internalUUID#70370, address#70376, systemId#70369]
(462) Exchange
Input [2]: [internalUUID#70370, timezonecode#70381]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35525]
(463) BroadcastExchange
Input [2]: [internalUUID#70370, timezonecode#70381]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=36638]
(464) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70357, ), isnull(plant#70357)]
Right keys [2]: [coalesce(internalUUID#70370, ), isnull(internalUUID#70370)]
Join type: LeftOuter
Join condition: None
(465) Project
Output [5]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, CASE WHEN isnotnull(timezonecode#70381) THEN timezonecode#70381 ELSE UTC END AS timezonecode#70382]
Input [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, internalUUID#70370, timezonecode#70381]
(466) Scan parquet
Output [4]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390, systemId#70383]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(467) Filter
Input [4]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390, systemId#70383]
Condition : isnotnull(internalUUID#70384)
(468) Project
Output [3]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390]
Input [4]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390, systemId#70383]
(469) Exchange
Input [3]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35531]
(470) BroadcastExchange
Input [3]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36642]
(471) BroadcastHashJoin
Left keys [1]: [product#70356]
Right keys [1]: [internalUUID#70384]
Join type: LeftOuter
Join condition: None
(472) Project
Output [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, 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]
Input [8]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390]
(473) Project
Output [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, filteredUnitOfMeasureConversions#70396.quantityDenominator AS _extract_quantityDenominator#79384, filteredUnitOfMeasureConversions#70396.quantityNumerator AS _extract_quantityNumerator#79385]
Input [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, filteredUnitOfMeasureConversions#70396]
(474) Generate
Input [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, _extract_quantityDenominator#79384, _extract_quantityNumerator#79385]
Arguments: explode(_extract_quantityNumerator#79385), [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, _extract_quantityDenominator#79384], true, [quantityNumerator#70398]
(475) Generate
Input [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, _extract_quantityDenominator#79384, quantityNumerator#70398]
Arguments: explode(_extract_quantityDenominator#79384), [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, quantityNumerator#70398], true, [quantityDenominator#70399]
(476) Project
Output [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, (cast(quantityNumerator#70398 as double) / cast(quantityDenominator#70399 as double)) AS outboundUnit#70400]
Input [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, quantityNumerator#70398, quantityDenominator#70399]
(477) Project
Output [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, CASE WHEN (isnull(outboundUnit#70400) OR (outboundUnit#70400 <= 0.0)) THEN 1.0 ELSE outboundUnit#70400 END AS outboundUnit#70401]
Input [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70400]
(478) Sort
Input [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401]
Arguments: [product#70356 ASC NULLS FIRST, plant#70357 ASC NULLS FIRST], false, 0
(479) Scan parquet
Output [6]: [internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407, systemId#70402]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(480) Filter
Input [6]: [internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407, systemId#70402]
Condition : (isnotnull(plant#70405.internalRefUUID) AND isnotnull(product#70404.internalRefUUID))
(481) Project
Output [6]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407]
Input [6]: [internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407, systemId#70402]
(482) Exchange
Input [6]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35542]
(483) BroadcastExchange
Input [6]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=36674]
(484) Scan parquet
Output [2]: [marketUnit#70408, distributionCenters#70414]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(485) Filter
Input [2]: [marketUnit#70408, distributionCenters#70414]
Condition : (((marketUnit#70408 <=> Daily_grocery) AND (size(distributionCenters#70414, true) > 0)) AND isnotnull(distributionCenters#70414))
(486) Project
Output [1]: [distributionCenters#70414]
Input [2]: [marketUnit#70408, distributionCenters#70414]
(487) Exchange
Input [1]: [distributionCenters#70414]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35546]
(488) Generate
Input [1]: [distributionCenters#70414]
Arguments: explode(distributionCenters#70414), false, [distributionCenters#70430]
(489) Filter
Input [1]: [distributionCenters#70430]
Condition : (((size(distributionCenters#70430.storageLocations, true) > 0) AND isnotnull(distributionCenters#70430.storageLocations)) AND isnotnull(distributionCenters#70430.internalRefUUID))
(490) Project
Output [2]: [distributionCenters#70430.internalRefUUID AS _extract_internalRefUUID#79288, distributionCenters#70430.storageLocations AS _extract_storageLocations#79289]
Input [1]: [distributionCenters#70430]
(491) Generate
Input [2]: [_extract_internalRefUUID#79288, _extract_storageLocations#79289]
Arguments: explode(_extract_storageLocations#79289), [_extract_internalRefUUID#79288], false, [storageLocations#70431]
(492) Project
Output [3]: [_extract_internalRefUUID#79288 AS plantUuid#70433, storageLocations#70431.id AS storageLocId#70434, storageLocations#70431.internalRefUUID AS storageLocUuid#70435]
Input [2]: [_extract_internalRefUUID#79288, storageLocations#70431]
(493) BroadcastExchange
Input [3]: [plantUuid#70433, storageLocId#70434, storageLocUuid#70435]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36670]
(494) Scan parquet
Output [2]: [product#70437, plant#70438]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(495) Filter
Input [2]: [product#70437, plant#70438]
Condition : isnotnull(plant#70438)
(496) Exchange
Input [2]: [product#70437, plant#70438]
Arguments: hashpartitioning(product#70437, plant#70438, 25), REPARTITION_BY_NUM, [plan_id=36210]
(497) Scan parquet
Output [4]: [plant#70444, product#70445, productionAspect#70447, systemId#70442]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(498) Project
Output [4]: [plant#70444.internalRefUUID AS _extract_internalRefUUID#79620, product#70445.internalRefUUID AS _extract_internalRefUUID#79619, productionAspect#70447.productMovementPlants.unitOfIssue.code AS _extract_code#79621, productionAspect#70447.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#79622]
Input [4]: [plant#70444, product#70445, productionAspect#70447, systemId#70442]
(499) Exchange
Input [4]: [_extract_internalRefUUID#79620, _extract_internalRefUUID#79619, _extract_code#79621, _extract_internalRefUUID#79622]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35558]
(500) Project
Output [4]: [_extract_code#79621, _extract_internalRefUUID#79622, _extract_internalRefUUID#79619, _extract_internalRefUUID#79620]
Input [4]: [_extract_internalRefUUID#79620, _extract_internalRefUUID#79619, _extract_code#79621, _extract_internalRefUUID#79622]
(501) BroadcastExchange
Input [4]: [_extract_code#79621, _extract_internalRefUUID#79622, _extract_internalRefUUID#79619, _extract_internalRefUUID#79620]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=36650]
(502) BroadcastHashJoin
Left keys [4]: [coalesce(product#70437, ), isnull(product#70437), coalesce(plant#70438, ), isnull(plant#70438)]
Right keys [4]: [coalesce(_extract_internalRefUUID#79619, ), isnull(_extract_internalRefUUID#79619), coalesce(_extract_internalRefUUID#79620, ), isnull(_extract_internalRefUUID#79620)]
Join type: LeftOuter
Join condition: None
(503) Project
Output [4]: [product#70437, plant#70438, _extract_code#79621, _extract_internalRefUUID#79622]
Input [6]: [product#70437, plant#70438, _extract_code#79621, _extract_internalRefUUID#79622, _extract_internalRefUUID#79619, _extract_internalRefUUID#79620]
(504) Scan parquet
Output [2]: [internalUUID#70454, systemId#70453]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(505) Project
Output [1]: [internalUUID#70454]
Input [2]: [internalUUID#70454, systemId#70453]
(506) Exchange
Input [1]: [internalUUID#70454]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35564]
(507) BroadcastExchange
Input [1]: [internalUUID#70454]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=36654]
(508) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70438, ), isnull(plant#70438)]
Right keys [2]: [coalesce(internalUUID#70454, ), isnull(internalUUID#70454)]
Join type: LeftOuter
Join condition: None
(509) Project
Output [4]: [product#70437, plant#70438, _extract_code#79621, _extract_internalRefUUID#79622]
Input [5]: [product#70437, plant#70438, _extract_code#79621, _extract_internalRefUUID#79622, internalUUID#70454]
(510) Scan parquet
Output [4]: [internalUUID#70472, baseUnitOfMeasure#70476, unitOfMeasureConversions#70478, systemId#70471]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(511) Filter
Input [4]: [internalUUID#70472, baseUnitOfMeasure#70476, unitOfMeasureConversions#70478, systemId#70471]
Condition : isnotnull(internalUUID#70472)
(512) Project
Output [3]: [internalUUID#70472, baseUnitOfMeasure#70476, unitOfMeasureConversions#70478]
Input [4]: [internalUUID#70472, baseUnitOfMeasure#70476, unitOfMeasureConversions#70478, systemId#70471]
(513) Exchange
Input [3]: [internalUUID#70472, baseUnitOfMeasure#70476, unitOfMeasureConversions#70478]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35570]
(514) BroadcastExchange
Input [3]: [internalUUID#70472, baseUnitOfMeasure#70476, unitOfMeasureConversions#70478]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36658]
(515) BroadcastHashJoin
Left keys [1]: [product#70437]
Right keys [1]: [internalUUID#70472]
Join type: LeftOuter
Join condition: None
(516) Project
Output [2]: [plant#70438, filter(unitOfMeasureConversions#70478, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#79621) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#79622)) 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]
Input [7]: [product#70437, plant#70438, _extract_code#79621, _extract_internalRefUUID#79622, internalUUID#70472, baseUnitOfMeasure#70476, unitOfMeasureConversions#70478]
(517) Generate
Input [2]: [plant#70438, filteredUnitOfMeasureConversions#70483]
Arguments: explode(filteredUnitOfMeasureConversions#70483.quantityNumerator), [plant#70438, filteredUnitOfMeasureConversions#70483], true, [quantityNumerator#70484]
(518) Project
Output [2]: [plant#70438, filteredUnitOfMeasureConversions#70483.quantityDenominator AS _extract_quantityDenominator#79290]
Input [3]: [plant#70438, filteredUnitOfMeasureConversions#70483, quantityNumerator#70484]
(519) Generate
Input [2]: [plant#70438, _extract_quantityDenominator#79290]
Arguments: explode(_extract_quantityDenominator#79290), [plant#70438], true, [quantityDenominator#70487]
(520) Project
Output [1]: [plant#70438]
Input [2]: [plant#70438, quantityDenominator#70487]
(521) HashAggregate
Input [1]: [plant#70438]
Keys [1]: [plant#70438]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70438]
(522) Exchange
Input [1]: [plant#70438]
Arguments: hashpartitioning(plant#70438, 25), ENSURE_REQUIREMENTS, [plan_id=36667]
(523) HashAggregate
Input [1]: [plant#70438]
Keys [1]: [plant#70438]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70438]
(524) BroadcastHashJoin
Left keys [1]: [plantUuid#70433]
Right keys [1]: [plant#70438]
Join type: Inner
Join condition: None
(525) Project
Output [3]: [plantUuid#70433, storageLocId#70434, storageLocUuid#70435]
Input [4]: [plantUuid#70433, storageLocId#70434, storageLocUuid#70435, plant#70438]
(526) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70405.internalRefUUID, ), isnull(plant#70405.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#70433, ), isnull(plantUuid#70433)]
Join type: Inner
Join condition: None
(527) Generate
Input [9]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407, plantUuid#70433, storageLocId#70434, storageLocUuid#70435]
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))), [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, plantUuid#70433], false, [stockQuantity#70498]
(528) ObjectHashAggregate
Input [7]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, plantUuid#70433, stockQuantity#70498]
Keys [5]: [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402]
Functions [2]: [partial_first(calculationDateTime#70406, false), partial_collect_list(stockQuantity#70498, 0, 0)]
Aggregate Attributes [3]: [first#73946, valueSet#73947, buf#73948]
Results [8]: [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402, first#73949, valueSet#73950, buf#73951]
(529) ObjectHashAggregate
Input [8]: [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402, first#73949, valueSet#73950, buf#73951]
Keys [5]: [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402]
Functions [2]: [first(calculationDateTime#70406, false), collect_list(stockQuantity#70498, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#70406)()#69321, collect_list(stockQuantity#70498, 0, 0)#69322]
Results [4]: [product#70404, plant#70405, first(calculationDateTime#70406)()#69321 AS calculationDateTime#70499, collect_list(stockQuantity#70498, 0, 0)#69322 AS stockQuantities#70500]
(530) Filter
Input [4]: [product#70404, plant#70405, calculationDateTime#70499, stockQuantities#70500]
Condition : ((size(stockQuantities#70500, true) > 0) AND isnotnull(calculationDateTime#70499))
(531) Generate
Input [4]: [product#70404, plant#70405, calculationDateTime#70499, stockQuantities#70500]
Arguments: explode(stockQuantities#70500), [product#70404, plant#70405, calculationDateTime#70499], false, [stockQuantity#70501]
(532) Filter
Input [4]: [product#70404, plant#70405, calculationDateTime#70499, stockQuantity#70501]
Condition : (((isnotnull(stockQuantity#70501.specialStockIndicator.code) AND isnotnull(stockQuantity#70501.stockType.code)) AND (stockQuantity#70501.specialStockIndicator.code = )) AND (stockQuantity#70501.stockType.code = 01))
(533) Project
Output [5]: [plant#70405.internalRefUUID AS plantUuid#70503, product#70404.internalRefUUID AS productUuid#70505, calculationDateTime#70499, stockQuantity#70501.storagelocation.id AS storageLocId#70506, stockQuantity#70501.quantity.measure AS quantity#70508]
Input [4]: [product#70404, plant#70405, calculationDateTime#70499, stockQuantity#70501]
(534) Exchange
Input [5]: [plantUuid#70503, productUuid#70505, calculationDateTime#70499, storageLocId#70506, quantity#70508]
Arguments: hashpartitioning(productUuid#70505, plantUuid#70503, 25), ENSURE_REQUIREMENTS, [plan_id=36700]
(535) Sort
Input [5]: [plantUuid#70503, productUuid#70505, calculationDateTime#70499, storageLocId#70506, quantity#70508]
Arguments: [productUuid#70505 ASC NULLS FIRST, plantUuid#70503 ASC NULLS FIRST], false, 0
(536) Scan parquet
Output [3]: [product#70513, plant#70514, orderDateTime#70515]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(537) Filter
Input [3]: [product#70513, plant#70514, orderDateTime#70515]
Condition : ((isnotnull(orderDateTime#70515) AND isnotnull(plant#70514)) AND isnotnull(product#70513))
(538) Exchange
Input [3]: [product#70513, plant#70514, orderDateTime#70515]
Arguments: hashpartitioning(product#70513, plant#70514, 25), REPARTITION_BY_NUM, [plan_id=36233]
(539) Scan parquet
Output [4]: [plant#70519, product#70520, productionAspect#70522, systemId#70517]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(540) Project
Output [4]: [plant#70519.internalRefUUID AS _extract_internalRefUUID#79625, product#70520.internalRefUUID AS _extract_internalRefUUID#79626, productionAspect#70522.productMovementPlants.unitOfIssue.code AS _extract_code#79623, productionAspect#70522.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#79624]
Input [4]: [plant#70519, product#70520, productionAspect#70522, systemId#70517]
(541) Exchange
Input [4]: [_extract_internalRefUUID#79625, _extract_internalRefUUID#79626, _extract_code#79623, _extract_internalRefUUID#79624]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35595]
(542) Project
Output [4]: [_extract_code#79623, _extract_internalRefUUID#79624, _extract_internalRefUUID#79626, _extract_internalRefUUID#79625]
Input [4]: [_extract_internalRefUUID#79625, _extract_internalRefUUID#79626, _extract_code#79623, _extract_internalRefUUID#79624]
(543) BroadcastExchange
Input [4]: [_extract_code#79623, _extract_internalRefUUID#79624, _extract_internalRefUUID#79626, _extract_internalRefUUID#79625]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=36683]
(544) BroadcastHashJoin
Left keys [4]: [coalesce(product#70513, ), isnull(product#70513), coalesce(plant#70514, ), isnull(plant#70514)]
Right keys [4]: [coalesce(_extract_internalRefUUID#79626, ), isnull(_extract_internalRefUUID#79626), coalesce(_extract_internalRefUUID#79625, ), isnull(_extract_internalRefUUID#79625)]
Join type: LeftOuter
Join condition: None
(545) Project
Output [5]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#79623, _extract_internalRefUUID#79624]
Input [7]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#79623, _extract_internalRefUUID#79624, _extract_internalRefUUID#79626, _extract_internalRefUUID#79625]
(546) Scan parquet
Output [2]: [internalUUID#70529, systemId#70528]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(547) Project
Output [1]: [internalUUID#70529]
Input [2]: [internalUUID#70529, systemId#70528]
(548) Exchange
Input [1]: [internalUUID#70529]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35601]
(549) BroadcastExchange
Input [1]: [internalUUID#70529]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=36687]
(550) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70514, ), isnull(plant#70514)]
Right keys [2]: [coalesce(internalUUID#70529, ), isnull(internalUUID#70529)]
Join type: LeftOuter
Join condition: None
(551) Project
Output [5]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#79623, _extract_internalRefUUID#79624]
Input [6]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#79623, _extract_internalRefUUID#79624, internalUUID#70529]
(552) Scan parquet
Output [4]: [internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549, systemId#70542]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(553) Filter
Input [4]: [internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549, systemId#70542]
Condition : isnotnull(internalUUID#70543)
(554) Project
Output [3]: [internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549]
Input [4]: [internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549, systemId#70542]
(555) Exchange
Input [3]: [internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35607]
(556) BroadcastExchange
Input [3]: [internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36691]
(557) BroadcastHashJoin
Left keys [1]: [product#70513]
Right keys [1]: [internalUUID#70543]
Join type: LeftOuter
Join condition: None
(558) Project
Output [4]: [product#70513, plant#70514, orderDateTime#70515, filter(unitOfMeasureConversions#70549, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#79623) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#79624)) 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]
Input [8]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#79623, _extract_internalRefUUID#79624, internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549]
(559) Generate
Input [4]: [product#70513, plant#70514, orderDateTime#70515, filteredUnitOfMeasureConversions#70554]
Arguments: explode(filteredUnitOfMeasureConversions#70554.quantityNumerator), [product#70513, plant#70514, orderDateTime#70515, filteredUnitOfMeasureConversions#70554], true, [quantityNumerator#70555]
(560) Project
Output [4]: [product#70513, plant#70514, orderDateTime#70515, filteredUnitOfMeasureConversions#70554.quantityDenominator AS _extract_quantityDenominator#79294]
Input [5]: [product#70513, plant#70514, orderDateTime#70515, filteredUnitOfMeasureConversions#70554, quantityNumerator#70555]
(561) Generate
Input [4]: [product#70513, plant#70514, orderDateTime#70515, _extract_quantityDenominator#79294]
Arguments: explode(_extract_quantityDenominator#79294), [product#70513, plant#70514, orderDateTime#70515], true, [quantityDenominator#70556]
(562) Project
Output [3]: [product#70513, plant#70514, orderDateTime#70515]
Input [4]: [product#70513, plant#70514, orderDateTime#70515, quantityDenominator#70556]
(563) Sort
Input [3]: [product#70513, plant#70514, orderDateTime#70515]
Arguments: [product#70513 ASC NULLS FIRST, plant#70514 ASC NULLS FIRST], false, 0
(564) SortMergeJoin
Left keys [2]: [productUuid#70505, plantUuid#70503]
Right keys [2]: [product#70513, plant#70514]
Join type: Inner
Join condition: (calculationDateTime#70499 <= orderDateTime#70515)
(565) Project
Output [5]: [plantUuid#70503 AS plant#70559, productUuid#70505 AS product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
Input [8]: [plantUuid#70503, productUuid#70505, calculationDateTime#70499, storageLocId#70506, quantity#70508, product#70513, plant#70514, orderDateTime#70515]
(566) Exchange
Input [5]: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
Arguments: hashpartitioning(coalesce(plant#70559, ), isnull(plant#70559), coalesce(product#70560, ), isnull(product#70560), coalesce(storageLocId#70506, ), isnull(storageLocId#70506), coalesce(calculationDateTime#70499, 1970-01-01 00:00:00), isnull(calculationDateTime#70499), 25), ENSURE_REQUIREMENTS, [plan_id=36764]
(567) Sort
Input [5]: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
Arguments: [coalesce(plant#70559, ) ASC NULLS FIRST, isnull(plant#70559) ASC NULLS FIRST, coalesce(product#70560, ) ASC NULLS FIRST, isnull(product#70560) ASC NULLS FIRST, coalesce(storageLocId#70506, ) ASC NULLS FIRST, isnull(storageLocId#70506) ASC NULLS FIRST, coalesce(calculationDateTime#70499, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#70499) ASC NULLS FIRST], false, 0
(568) Scan parquet
Output [6]: [internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566, systemId#70561]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(569) Filter
Input [6]: [internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566, systemId#70561]
Condition : (isnotnull(plant#70564.internalRefUUID) AND isnotnull(product#70563.internalRefUUID))
(570) Project
Output [6]: [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566]
Input [6]: [internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566, systemId#70561]
(571) Exchange
Input [6]: [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35619]
(572) BroadcastExchange
Input [6]: [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=36729]
(573) Scan parquet
Output [2]: [marketUnit#70567, distributionCenters#70573]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(574) Filter
Input [2]: [marketUnit#70567, distributionCenters#70573]
Condition : (((marketUnit#70567 <=> Daily_grocery) AND (size(distributionCenters#70573, true) > 0)) AND isnotnull(distributionCenters#70573))
(575) Project
Output [1]: [distributionCenters#70573]
Input [2]: [marketUnit#70567, distributionCenters#70573]
(576) Exchange
Input [1]: [distributionCenters#70573]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35623]
(577) Generate
Input [1]: [distributionCenters#70573]
Arguments: explode(distributionCenters#70573), false, [distributionCenters#70589]
(578) Filter
Input [1]: [distributionCenters#70589]
Condition : (((size(distributionCenters#70589.storageLocations, true) > 0) AND isnotnull(distributionCenters#70589.storageLocations)) AND isnotnull(distributionCenters#70589.internalRefUUID))
(579) Project
Output [2]: [distributionCenters#70589.internalRefUUID AS _extract_internalRefUUID#79298, distributionCenters#70589.storageLocations AS _extract_storageLocations#79299]
Input [1]: [distributionCenters#70589]
(580) Generate
Input [2]: [_extract_internalRefUUID#79298, _extract_storageLocations#79299]
Arguments: explode(_extract_storageLocations#79299), [_extract_internalRefUUID#79298], false, [storageLocations#70590]
(581) Project
Output [3]: [_extract_internalRefUUID#79298 AS plantUuid#70592, storageLocations#70590.id AS storageLocId#70593, storageLocations#70590.internalRefUUID AS storageLocUuid#70594]
Input [2]: [_extract_internalRefUUID#79298, storageLocations#70590]
(582) BroadcastExchange
Input [3]: [plantUuid#70592, storageLocId#70593, storageLocUuid#70594]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36725]
(583) Scan parquet
Output [2]: [product#70595, plant#70596]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(584) Filter
Input [2]: [product#70595, plant#70596]
Condition : isnotnull(plant#70596)
(585) Exchange
Input [2]: [product#70595, plant#70596]
Arguments: hashpartitioning(product#70595, plant#70596, 25), REPARTITION_BY_NUM, [plan_id=36246]
(586) Scan parquet
Output [4]: [plant#70601, product#70602, productionAspect#70604, systemId#70599]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(587) Project
Output [4]: [plant#70601.internalRefUUID AS _extract_internalRefUUID#79628, product#70602.internalRefUUID AS _extract_internalRefUUID#79627, productionAspect#70604.productMovementPlants.unitOfIssue.code AS _extract_code#79629, productionAspect#70604.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#79630]
Input [4]: [plant#70601, product#70602, productionAspect#70604, systemId#70599]
(588) Exchange
Input [4]: [_extract_internalRefUUID#79628, _extract_internalRefUUID#79627, _extract_code#79629, _extract_internalRefUUID#79630]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35635]
(589) Project
Output [4]: [_extract_code#79629, _extract_internalRefUUID#79630, _extract_internalRefUUID#79627, _extract_internalRefUUID#79628]
Input [4]: [_extract_internalRefUUID#79628, _extract_internalRefUUID#79627, _extract_code#79629, _extract_internalRefUUID#79630]
(590) BroadcastExchange
Input [4]: [_extract_code#79629, _extract_internalRefUUID#79630, _extract_internalRefUUID#79627, _extract_internalRefUUID#79628]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=36705]
(591) BroadcastHashJoin
Left keys [4]: [coalesce(product#70595, ), isnull(product#70595), coalesce(plant#70596, ), isnull(plant#70596)]
Right keys [4]: [coalesce(_extract_internalRefUUID#79627, ), isnull(_extract_internalRefUUID#79627), coalesce(_extract_internalRefUUID#79628, ), isnull(_extract_internalRefUUID#79628)]
Join type: LeftOuter
Join condition: None
(592) Project
Output [4]: [product#70595, plant#70596, _extract_code#79629, _extract_internalRefUUID#79630]
Input [6]: [product#70595, plant#70596, _extract_code#79629, _extract_internalRefUUID#79630, _extract_internalRefUUID#79627, _extract_internalRefUUID#79628]
(593) Scan parquet
Output [2]: [internalUUID#70609, systemId#70608]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(594) Project
Output [1]: [internalUUID#70609]
Input [2]: [internalUUID#70609, systemId#70608]
(595) Exchange
Input [1]: [internalUUID#70609]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35641]
(596) BroadcastExchange
Input [1]: [internalUUID#70609]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=36709]
(597) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70596, ), isnull(plant#70596)]
Right keys [2]: [coalesce(internalUUID#70609, ), isnull(internalUUID#70609)]
Join type: LeftOuter
Join condition: None
(598) Project
Output [4]: [product#70595, plant#70596, _extract_code#79629, _extract_internalRefUUID#79630]
Input [5]: [product#70595, plant#70596, _extract_code#79629, _extract_internalRefUUID#79630, internalUUID#70609]
(599) Scan parquet
Output [4]: [internalUUID#70623, baseUnitOfMeasure#70627, unitOfMeasureConversions#70629, systemId#70622]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(600) Filter
Input [4]: [internalUUID#70623, baseUnitOfMeasure#70627, unitOfMeasureConversions#70629, systemId#70622]
Condition : isnotnull(internalUUID#70623)
(601) Project
Output [3]: [internalUUID#70623, baseUnitOfMeasure#70627, unitOfMeasureConversions#70629]
Input [4]: [internalUUID#70623, baseUnitOfMeasure#70627, unitOfMeasureConversions#70629, systemId#70622]
(602) Exchange
Input [3]: [internalUUID#70623, baseUnitOfMeasure#70627, unitOfMeasureConversions#70629]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35647]
(603) BroadcastExchange
Input [3]: [internalUUID#70623, baseUnitOfMeasure#70627, unitOfMeasureConversions#70629]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36713]
(604) BroadcastHashJoin
Left keys [1]: [product#70595]
Right keys [1]: [internalUUID#70623]
Join type: LeftOuter
Join condition: None
(605) Project
Output [2]: [plant#70596, filter(unitOfMeasureConversions#70629, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#79629) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#79630)) 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]
Input [7]: [product#70595, plant#70596, _extract_code#79629, _extract_internalRefUUID#79630, internalUUID#70623, baseUnitOfMeasure#70627, unitOfMeasureConversions#70629]
(606) Generate
Input [2]: [plant#70596, filteredUnitOfMeasureConversions#70634]
Arguments: explode(filteredUnitOfMeasureConversions#70634.quantityNumerator), [plant#70596, filteredUnitOfMeasureConversions#70634], true, [quantityNumerator#70635]
(607) Project
Output [2]: [plant#70596, filteredUnitOfMeasureConversions#70634.quantityDenominator AS _extract_quantityDenominator#79300]
Input [3]: [plant#70596, filteredUnitOfMeasureConversions#70634, quantityNumerator#70635]
(608) Generate
Input [2]: [plant#70596, _extract_quantityDenominator#79300]
Arguments: explode(_extract_quantityDenominator#79300), [plant#70596], true, [quantityDenominator#70636]
(609) Project
Output [1]: [plant#70596]
Input [2]: [plant#70596, quantityDenominator#70636]
(610) HashAggregate
Input [1]: [plant#70596]
Keys [1]: [plant#70596]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70596]
(611) Exchange
Input [1]: [plant#70596]
Arguments: hashpartitioning(plant#70596, 25), ENSURE_REQUIREMENTS, [plan_id=36722]
(612) HashAggregate
Input [1]: [plant#70596]
Keys [1]: [plant#70596]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70596]
(613) BroadcastHashJoin
Left keys [1]: [plantUuid#70592]
Right keys [1]: [plant#70596]
Join type: Inner
Join condition: None
(614) Project
Output [3]: [plantUuid#70592, storageLocId#70593, storageLocUuid#70594]
Input [4]: [plantUuid#70592, storageLocId#70593, storageLocUuid#70594, plant#70596]
(615) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70564.internalRefUUID, ), isnull(plant#70564.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#70592, ), isnull(plantUuid#70592)]
Join type: Inner
Join condition: None
(616) Generate
Input [9]: [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566, plantUuid#70592, storageLocId#70593, storageLocUuid#70594]
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))), [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, plantUuid#70592], false, [stockQuantity#70639]
(617) ObjectHashAggregate
Input [7]: [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, plantUuid#70592, stockQuantity#70639]
Keys [5]: [plantUuid#70592, internalUUID#70562, plant#70564, product#70563, systemId#70561]
Functions [2]: [partial_first(calculationDateTime#70565, false), partial_collect_list(stockQuantity#70639, 0, 0)]
Aggregate Attributes [3]: [first#73968, valueSet#73969, buf#73970]
Results [8]: [plantUuid#70592, internalUUID#70562, plant#70564, product#70563, systemId#70561, first#73971, valueSet#73972, buf#73973]
(618) ObjectHashAggregate
Input [8]: [plantUuid#70592, internalUUID#70562, plant#70564, product#70563, systemId#70561, first#73971, valueSet#73972, buf#73973]
Keys [5]: [plantUuid#70592, internalUUID#70562, plant#70564, product#70563, systemId#70561]
Functions [2]: [first(calculationDateTime#70565, false), collect_list(stockQuantity#70639, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#70565)()#69321, collect_list(stockQuantity#70639, 0, 0)#69322]
Results [4]: [product#70563, plant#70564, first(calculationDateTime#70565)()#69321 AS calculationDateTime#70640, collect_list(stockQuantity#70639, 0, 0)#69322 AS stockQuantities#70641]
(619) Filter
Input [4]: [product#70563, plant#70564, calculationDateTime#70640, stockQuantities#70641]
Condition : ((size(stockQuantities#70641, true) > 0) AND isnotnull(calculationDateTime#70640))
(620) Generate
Input [4]: [product#70563, plant#70564, calculationDateTime#70640, stockQuantities#70641]
Arguments: explode(stockQuantities#70641), [product#70563, plant#70564, calculationDateTime#70640], false, [stockQuantity#70642]
(621) Filter
Input [4]: [product#70563, plant#70564, calculationDateTime#70640, stockQuantity#70642]
Condition : (((isnotnull(stockQuantity#70642.specialStockIndicator.code) AND isnotnull(stockQuantity#70642.stockType.code)) AND (stockQuantity#70642.specialStockIndicator.code = )) AND (stockQuantity#70642.stockType.code = 01))
(622) Project
Output [4]: [plant#70564.internalRefUUID AS plantUuid#70644, product#70563.internalRefUUID AS productUuid#70646, calculationDateTime#70640, stockQuantity#70642.storagelocation.id AS storageLocId#70647]
Input [4]: [product#70563, plant#70564, calculationDateTime#70640, stockQuantity#70642]
(623) Exchange
Input [4]: [plantUuid#70644, productUuid#70646, calculationDateTime#70640, storageLocId#70647]
Arguments: hashpartitioning(productUuid#70646, plantUuid#70644, 25), ENSURE_REQUIREMENTS, [plan_id=36755]
(624) Sort
Input [4]: [plantUuid#70644, productUuid#70646, calculationDateTime#70640, storageLocId#70647]
Arguments: [productUuid#70646 ASC NULLS FIRST, plantUuid#70644 ASC NULLS FIRST], false, 0
(625) Scan parquet
Output [3]: [product#70652, plant#70653, orderDateTime#70654]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(626) Filter
Input [3]: [product#70652, plant#70653, orderDateTime#70654]
Condition : ((isnotnull(orderDateTime#70654) AND isnotnull(plant#70653)) AND isnotnull(product#70652))
(627) Exchange
Input [3]: [product#70652, plant#70653, orderDateTime#70654]
Arguments: hashpartitioning(product#70652, plant#70653, 25), REPARTITION_BY_NUM, [plan_id=36269]
(628) Scan parquet
Output [4]: [plant#70658, product#70659, productionAspect#70661, systemId#70656]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(629) Project
Output [4]: [plant#70658.internalRefUUID AS _extract_internalRefUUID#79631, product#70659.internalRefUUID AS _extract_internalRefUUID#79634, productionAspect#70661.productMovementPlants.unitOfIssue.code AS _extract_code#79632, productionAspect#70661.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#79633]
Input [4]: [plant#70658, product#70659, productionAspect#70661, systemId#70656]
(630) Exchange
Input [4]: [_extract_internalRefUUID#79631, _extract_internalRefUUID#79634, _extract_code#79632, _extract_internalRefUUID#79633]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35672]
(631) Project
Output [4]: [_extract_code#79632, _extract_internalRefUUID#79633, _extract_internalRefUUID#79634, _extract_internalRefUUID#79631]
Input [4]: [_extract_internalRefUUID#79631, _extract_internalRefUUID#79634, _extract_code#79632, _extract_internalRefUUID#79633]
(632) BroadcastExchange
Input [4]: [_extract_code#79632, _extract_internalRefUUID#79633, _extract_internalRefUUID#79634, _extract_internalRefUUID#79631]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=36738]
(633) BroadcastHashJoin
Left keys [4]: [coalesce(product#70652, ), isnull(product#70652), coalesce(plant#70653, ), isnull(plant#70653)]
Right keys [4]: [coalesce(_extract_internalRefUUID#79634, ), isnull(_extract_internalRefUUID#79634), coalesce(_extract_internalRefUUID#79631, ), isnull(_extract_internalRefUUID#79631)]
Join type: LeftOuter
Join condition: None
(634) Project
Output [5]: [product#70652, plant#70653, orderDateTime#70654, _extract_code#79632, _extract_internalRefUUID#79633]
Input [7]: [product#70652, plant#70653, orderDateTime#70654, _extract_code#79632, _extract_internalRefUUID#79633, _extract_internalRefUUID#79634, _extract_internalRefUUID#79631]
(635) Scan parquet
Output [2]: [internalUUID#70666, systemId#70665]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(636) Project
Output [1]: [internalUUID#70666]
Input [2]: [internalUUID#70666, systemId#70665]
(637) Exchange
Input [1]: [internalUUID#70666]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35678]
(638) BroadcastExchange
Input [1]: [internalUUID#70666]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=36742]
(639) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70653, ), isnull(plant#70653)]
Right keys [2]: [coalesce(internalUUID#70666, ), isnull(internalUUID#70666)]
Join type: LeftOuter
Join condition: None
(640) Project
Output [5]: [product#70652, plant#70653, orderDateTime#70654, _extract_code#79632, _extract_internalRefUUID#79633]
Input [6]: [product#70652, plant#70653, orderDateTime#70654, _extract_code#79632, _extract_internalRefUUID#79633, internalUUID#70666]
(641) Scan parquet
Output [4]: [internalUUID#70680, baseUnitOfMeasure#70684, unitOfMeasureConversions#70686, systemId#70679]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(642) Filter
Input [4]: [internalUUID#70680, baseUnitOfMeasure#70684, unitOfMeasureConversions#70686, systemId#70679]
Condition : isnotnull(internalUUID#70680)
(643) Project
Output [3]: [internalUUID#70680, baseUnitOfMeasure#70684, unitOfMeasureConversions#70686]
Input [4]: [internalUUID#70680, baseUnitOfMeasure#70684, unitOfMeasureConversions#70686, systemId#70679]
(644) Exchange
Input [3]: [internalUUID#70680, baseUnitOfMeasure#70684, unitOfMeasureConversions#70686]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35684]
(645) BroadcastExchange
Input [3]: [internalUUID#70680, baseUnitOfMeasure#70684, unitOfMeasureConversions#70686]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36746]
(646) BroadcastHashJoin
Left keys [1]: [product#70652]
Right keys [1]: [internalUUID#70680]
Join type: LeftOuter
Join condition: None
(647) Project
Output [4]: [product#70652, plant#70653, orderDateTime#70654, filter(unitOfMeasureConversions#70686, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#79632) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#79633)) 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]
Input [8]: [product#70652, plant#70653, orderDateTime#70654, _extract_code#79632, _extract_internalRefUUID#79633, internalUUID#70680, baseUnitOfMeasure#70684, unitOfMeasureConversions#70686]
(648) Generate
Input [4]: [product#70652, plant#70653, orderDateTime#70654, filteredUnitOfMeasureConversions#70691]
Arguments: explode(filteredUnitOfMeasureConversions#70691.quantityNumerator), [product#70652, plant#70653, orderDateTime#70654, filteredUnitOfMeasureConversions#70691], true, [quantityNumerator#70692]
(649) Project
Output [4]: [product#70652, plant#70653, orderDateTime#70654, filteredUnitOfMeasureConversions#70691.quantityDenominator AS _extract_quantityDenominator#79304]
Input [5]: [product#70652, plant#70653, orderDateTime#70654, filteredUnitOfMeasureConversions#70691, quantityNumerator#70692]
(650) Generate
Input [4]: [product#70652, plant#70653, orderDateTime#70654, _extract_quantityDenominator#79304]
Arguments: explode(_extract_quantityDenominator#79304), [product#70652, plant#70653, orderDateTime#70654], true, [quantityDenominator#70693]
(651) Project
Output [3]: [product#70652, plant#70653, orderDateTime#70654]
Input [4]: [product#70652, plant#70653, orderDateTime#70654, quantityDenominator#70693]
(652) Sort
Input [3]: [product#70652, plant#70653, orderDateTime#70654]
Arguments: [product#70652 ASC NULLS FIRST, plant#70653 ASC NULLS FIRST], false, 0
(653) SortMergeJoin
Left keys [2]: [productUuid#70646, plantUuid#70644]
Right keys [2]: [product#70652, plant#70653]
Join type: Inner
Join condition: (calculationDateTime#70640 <= orderDateTime#70654)
(654) Project
Output [4]: [plantUuid#70644 AS plant#70696, productUuid#70646 AS product#70697, storageLocId#70647, calculationDateTime#70640]
Input [7]: [plantUuid#70644, productUuid#70646, calculationDateTime#70640, storageLocId#70647, product#70652, plant#70653, orderDateTime#70654]
(655) HashAggregate
Input [4]: [plant#70696, product#70697, storageLocId#70647, calculationDateTime#70640]
Keys [3]: [plant#70696, product#70697, storageLocId#70647]
Functions [1]: [partial_max(calculationDateTime#70640)]
Aggregate Attributes [1]: [max#73960]
Results [4]: [plant#70696, product#70697, storageLocId#70647, max#73961]
(656) HashAggregate
Input [4]: [plant#70696, product#70697, storageLocId#70647, max#73961]
Keys [3]: [plant#70696, product#70697, storageLocId#70647]
Functions [1]: [max(calculationDateTime#70640)]
Aggregate Attributes [1]: [max(calculationDateTime#70640)#69456]
Results [4]: [plant#70696, product#70697, storageLocId#70647, max(calculationDateTime#70640)#69456 AS max_calc_datetime#70698]
(657) Exchange
Input [4]: [plant#70696, product#70697, storageLocId#70647, max_calc_datetime#70698]
Arguments: hashpartitioning(coalesce(plant#70696, ), isnull(plant#70696), coalesce(product#70697, ), isnull(product#70697), coalesce(storageLocId#70647, ), isnull(storageLocId#70647), coalesce(max_calc_datetime#70698, 1970-01-01 00:00:00), isnull(max_calc_datetime#70698), 25), ENSURE_REQUIREMENTS, [plan_id=36765]
(658) Sort
Input [4]: [plant#70696, product#70697, storageLocId#70647, max_calc_datetime#70698]
Arguments: [coalesce(plant#70696, ) ASC NULLS FIRST, isnull(plant#70696) ASC NULLS FIRST, coalesce(product#70697, ) ASC NULLS FIRST, isnull(product#70697) ASC NULLS FIRST, coalesce(storageLocId#70647, ) ASC NULLS FIRST, isnull(storageLocId#70647) ASC NULLS FIRST, coalesce(max_calc_datetime#70698, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#70698) ASC NULLS FIRST], false, 0
(659) SortMergeJoin
Left keys [8]: [coalesce(plant#70559, ), isnull(plant#70559), coalesce(product#70560, ), isnull(product#70560), coalesce(storageLocId#70506, ), isnull(storageLocId#70506), coalesce(calculationDateTime#70499, 1970-01-01 00:00:00), isnull(calculationDateTime#70499)]
Right keys [8]: [coalesce(plant#70696, ), isnull(plant#70696), coalesce(product#70697, ), isnull(product#70697), coalesce(storageLocId#70647, ), isnull(storageLocId#70647), coalesce(max_calc_datetime#70698, 1970-01-01 00:00:00), isnull(max_calc_datetime#70698)]
Join type: Inner
Join condition: None
(660) Project
Output [4]: [plant#70559, product#70560, calculationDateTime#70499, quantity#70508]
Input [9]: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508, plant#70696, product#70697, storageLocId#70647, max_calc_datetime#70698]
(661) HashAggregate
Input [4]: [plant#70559, product#70560, calculationDateTime#70499, quantity#70508]
Keys [2]: [product#70560, plant#70559]
Functions [2]: [partial_min(calculationDateTime#70499), partial_sum(quantity#70508)]
Aggregate Attributes [2]: [min#73942, sum#73943]
Results [4]: [product#70560, plant#70559, min#73944, sum#73945]
(662) Exchange
Input [4]: [product#70560, plant#70559, min#73944, sum#73945]
Arguments: hashpartitioning(product#70560, plant#70559, 25), ENSURE_REQUIREMENTS, [plan_id=36772]
(663) HashAggregate
Input [4]: [product#70560, plant#70559, min#73944, sum#73945]
Keys [2]: [product#70560, plant#70559]
Functions [2]: [min(calculationDateTime#70499), sum(quantity#70508)]
Aggregate Attributes [2]: [min(calculationDateTime#70499)#69768, sum(quantity#70508)#69767]
Results [4]: [product#70560, plant#70559, min(calculationDateTime#70499)#69768 AS minCalculationDateTime#70700, round(sum(quantity#70508)#69767, 0) AS roundedQuantitySum#70701]
(664) Sort
Input [4]: [product#70560, plant#70559, minCalculationDateTime#70700, roundedQuantitySum#70701]
Arguments: [product#70560 ASC NULLS FIRST, plant#70559 ASC NULLS FIRST], false, 0
(665) SortMergeJoin
Left keys [2]: [product#70356, plant#70357]
Right keys [2]: [product#70560, plant#70559]
Join type: LeftOuter
Join condition: None
(666) Project
Output [8]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, CASE WHEN isnotnull(minCalculationDateTime#70700) THEN minCalculationDateTime#70700 ELSE orderDateTime#70358 END AS stockDatetime#70702, CASE WHEN isnotnull(roundedQuantitySum#70701) THEN array(roundedQuantitySum#70701) ELSE [0.0] END AS stockBatchQuantities#70703]
Input [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, product#70560, plant#70559, minCalculationDateTime#70700, roundedQuantitySum#70701]
(667) Filter
Input [9]: [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
Condition : (isnotnull(product#69898) AND isnotnull(plant#69899))
(668) BroadcastExchange
Input [9]: [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=36781]
(669) BroadcastHashJoin
Left keys [2]: [product#70356, plant#70357]
Right keys [2]: [product#69898, plant#69899]
Join type: LeftOuter
Join condition: None
(670) Project
Output [9]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, CASE WHEN isnotnull(product#69898) THEN struct(demandChannel, demandChannel#69900, demandStream, demandStream#69901, considerVariance, considerVariance#69902, demandTimeBuckets, demandTimeBuckets#69903, demandPointInTimeStart, demandPointInTimeStart#69904, demandPointInTimeEnd, demandPointInTimeEnd#69905, demandPointInTime, demandPointInTime#69906) END AS rawDemands#69977]
Input [17]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
(671) ObjectHashAggregate
Input [9]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, rawDemands#69977]
Keys [9]: [product#70356, plant#70357, orderDateTime#70358, knownfloatingpointnormalized(if (isnull(productPlant#70368)) null else named_struct(systemId, productPlant#70368.systemId, internalUUID, productPlant#70368.internalUUID, plant, productPlant#70368.plant, product, productPlant#70368.product, blockedForReplenishmentStartingFrom, productPlant#70368.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#70368.productionAspect)) null else named_struct(productMovementPlants, productPlant#70368.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#70368.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#70368.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#70368.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#70368.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#70368.productionAspect.productPlanningPlants.minimumLotSize)), minimumSafetyStock, knownfloatingpointnormalized(normalizenanandzero(productPlant#70368.productionAspect.productPlanningPlants.minimumSafetyStock)), logisticalRoundingProfile, productPlant#70368.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#70368.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#70368.salesPlant, listing, productPlant#70368.listing)) AS productPlant#70368, timezonecode#70382, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#70401)) AS outboundUnit#70401, stockDatetime#70702, knownfloatingpointnormalized(transform(stockBatchQuantities#70703, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#81410)), lambda arg#81410, false))) AS stockBatchQuantities#70703, [7226582400000000] AS [7226582400000000]#81409]
Functions [1]: [partial_collect_list(rawDemands#69977, 0, 0)]
Aggregate Attributes [1]: [buf#73940]
Results [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000]#81409, buf#73941]
(672) ObjectHashAggregate
Input [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000]#81409, buf#73941]
Keys [9]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000]#81409]
Functions [1]: [collect_list(rawDemands#69977, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#69977, 0, 0)#70170]
Results [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#70704, collect_list(rawDemands#69977, 0, 0)#70170 AS rawDemands#70004]
(673) DeserializeToObject
Input [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, stockBatchShelfLifeEndDatetimes#70704, rawDemands#70004]
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, -11), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).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, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#70703, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), 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, -14), 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, -14).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, -14).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, -14).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).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, -14).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, -14).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, -14).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).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, -14).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
(674) MapElements
Input [1]: [obj#70342]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@22b451ac, obj#70347: org.apache.spark.sql.Row
(675) SerializeFromObject
Input [1]: [obj#70347]
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, -1), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -2), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -2), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -3), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -3), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -4), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -4), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -5), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -5), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -6), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -6), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), 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, -7), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), 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, -7), 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, -7), 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, -7), 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, -7), 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, -7), 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, -7), 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, -7), 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, -8), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -8), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), 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, -7), 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, -7), 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, -7), 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, -9), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -9), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), 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, -7), 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, -7), 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, -7), 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, -10), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -10), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), 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, -7), 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, -7), 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, -7), 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, -7), 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]
(676) Exchange
Input [4]: [product#70352, plant#70353, dayBucketDemands#70354, pointInTimeDemands#70355]
Arguments: hashpartitioning(coalesce(plant#70353, ), isnull(plant#70353), coalesce(product#70352, ), isnull(product#70352), 25), ENSURE_REQUIREMENTS, [plan_id=36792]
(677) Sort
Input [4]: [product#70352, plant#70353, dayBucketDemands#70354, pointInTimeDemands#70355]
Arguments: [coalesce(plant#70353, ) ASC NULLS FIRST, isnull(plant#70353) ASC NULLS FIRST, coalesce(product#70352, ) ASC NULLS FIRST, isnull(product#70352) ASC NULLS FIRST], false, 0
(678) SortMergeJoin
Left keys [4]: [coalesce(plant#69016, ), isnull(plant#69016), coalesce(product#69015, ), isnull(product#69015)]
Right keys [4]: [coalesce(plant#70353, ), isnull(plant#70353), coalesce(product#70352, ), isnull(product#70352)]
Join type: LeftOuter
Join condition: None
(679) Project
Output [8]: [product#69015, plant#69016, _extract_minimumSafetyStock#79671, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, dayBucketDemands#70354, pointInTimeDemands#70355]
Input [10]: [product#69015, plant#69016, _extract_minimumSafetyStock#79671, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, product#70352, plant#70353, dayBucketDemands#70354, pointInTimeDemands#70355]
(680) Exchange
Input [8]: [product#69015, plant#69016, _extract_minimumSafetyStock#79671, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, dayBucketDemands#70354, pointInTimeDemands#70355]
Arguments: hashpartitioning(product#69015, plant#69016, 25), ENSURE_REQUIREMENTS, [plan_id=37121]
(681) Sort
Input [8]: [product#69015, plant#69016, _extract_minimumSafetyStock#79671, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, dayBucketDemands#70354, pointInTimeDemands#70355]
Arguments: [product#69015 ASC NULLS FIRST, plant#69016 ASC NULLS FIRST], false, 0
(682) InMemoryTableScan
Output [3]: [product#70764, plant#70763, openGoodsMovements#75051]
Arguments: [product#70764, plant#70763, openGoodsMovements#75051], [isnotnull(product#70764), isnotnull(plant#70763)]
(683) InMemoryRelation
Arguments: [product#70764, plant#70763, openGoodsMovements#75051], StorageLevel(disk, memory, 2 replicas)
(684) EmptyRelation
Output [3]: [product#70764, plant#70763, openGoodsMovements#75051]
Arguments: [plan_id=129538]
(685) ResultQueryStage
Output [3]: [product#70764, plant#70763, openGoodsMovements#75051]
Arguments: 2
(686) InMemoryTableScan
Output [10]: [id#70740, internalUUID#70739, plant#70763, product#70764, quantityDenominator#70772, quantityNumerator#70771, quantityUom#70768, quantityUomUuid#70769, scheduleLines#70774, validConfirmations#70964]
Arguments: [id#70740, internalUUID#70739, plant#70763, product#70764, quantityDenominator#70772, quantityNumerator#70771, quantityUom#70768, quantityUomUuid#70769, scheduleLines#70774, validConfirmations#70964]
(687) InMemoryRelation
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#69867, timezonecode#69080, validConfirmations#70964], StorageLevel(disk, memory, deserialized, 1 replicas)
(688) Scan parquet
Output [3]: [product#69015, plant#69016, orderDateTime#69017]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(689) ColumnarToRow
Input [3]: [product#69015, plant#69016, orderDateTime#69017]
(690) Filter
Input [3]: [product#69015, plant#69016, orderDateTime#69017]
Condition : (isnotnull(plant#69016) AND isnotnull(product#69015))
(691) Exchange
Input [3]: [product#69015, plant#69016, orderDateTime#69017]
Arguments: hashpartitioning(product#69015, plant#69016, 25), REPARTITION_BY_NUM, [plan_id=45442]
(692) ShuffleQueryStage
Output [3]: [product#69015, plant#69016, orderDateTime#69017]
Arguments: 0
(693) Scan parquet
Output [4]: [plant#69030, product#69032, productionAspect#69035, systemId#69026]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(694) ColumnarToRow
Input [4]: [plant#69030, product#69032, productionAspect#69035, systemId#69026]
(695) Project
Output [4]: [plant#69030.internalRefUUID AS _extract_internalRefUUID#71356, product#69032.internalRefUUID AS _extract_internalRefUUID#71355, productionAspect#69035.productMovementPlants.unitOfIssue.code AS _extract_code#71358, productionAspect#69035.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71359]
Input [4]: [plant#69030, product#69032, productionAspect#69035, systemId#69026]
(696) Exchange
Input [4]: [_extract_internalRefUUID#71356, _extract_internalRefUUID#71355, _extract_code#71358, _extract_internalRefUUID#71359]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=45462]
(697) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#71356, _extract_internalRefUUID#71355, _extract_code#71358, _extract_internalRefUUID#71359]
Arguments: 1
(698) Project
Output [4]: [_extract_code#71358, _extract_internalRefUUID#71359, _extract_internalRefUUID#71355, _extract_internalRefUUID#71356]
Input [4]: [_extract_internalRefUUID#71356, _extract_internalRefUUID#71355, _extract_code#71358, _extract_internalRefUUID#71359]
(699) BroadcastExchange
Input [4]: [_extract_code#71358, _extract_internalRefUUID#71359, _extract_internalRefUUID#71355, _extract_internalRefUUID#71356]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=60476]
(700) BroadcastQueryStage
Output [4]: [_extract_code#71358, _extract_internalRefUUID#71359, _extract_internalRefUUID#71355, _extract_internalRefUUID#71356]
Arguments: 119
(701) BroadcastHashJoin
Left keys [4]: [coalesce(product#69015, ), isnull(product#69015), coalesce(plant#69016, ), isnull(plant#69016)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71355, ), isnull(_extract_internalRefUUID#71355), coalesce(_extract_internalRefUUID#71356, ), isnull(_extract_internalRefUUID#71356)]
Join type: LeftOuter
Join condition: None
(702) Project
Output [5]: [product#69015, plant#69016, orderDateTime#69017, _extract_code#71358, _extract_internalRefUUID#71359]
Input [7]: [product#69015, plant#69016, orderDateTime#69017, _extract_code#71358, _extract_internalRefUUID#71359, _extract_internalRefUUID#71355, _extract_internalRefUUID#71356]
(703) Scan parquet
Output [3]: [internalUUID#69050, address#69056, systemId#69049]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string,address:struct<timeZone:struct<code:string>>>
(704) ColumnarToRow
Input [3]: [internalUUID#69050, address#69056, systemId#69049]
(705) Project
Output [2]: [internalUUID#69050, address#69056.timeZone.code AS timezonecode#69073]
Input [3]: [internalUUID#69050, address#69056, systemId#69049]
(706) Exchange
Input [2]: [internalUUID#69050, timezonecode#69073]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=45486]
(707) ShuffleQueryStage
Output [2]: [internalUUID#69050, timezonecode#69073]
Arguments: 2
(708) BroadcastExchange
Input [2]: [internalUUID#69050, timezonecode#69073]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=56025]
(709) BroadcastQueryStage
Output [2]: [internalUUID#69050, timezonecode#69073]
Arguments: 108
(710) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69016, ), isnull(plant#69016)]
Right keys [2]: [coalesce(internalUUID#69050, ), isnull(internalUUID#69050)]
Join type: LeftOuter
Join condition: None
(711) Project
Output [6]: [product#69015, plant#69016, orderDateTime#69017, _extract_code#71358, _extract_internalRefUUID#71359, CASE WHEN isnotnull(timezonecode#69073) THEN timezonecode#69073 ELSE UTC END AS timezonecode#69080]
Input [7]: [product#69015, plant#69016, orderDateTime#69017, _extract_code#71358, _extract_internalRefUUID#71359, internalUUID#69050, timezonecode#69073]
(712) Scan parquet
Output [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(713) ColumnarToRow
Input [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
(714) Filter
Input [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
Condition : isnotnull(internalUUID#69082)
(715) Project
Output [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Input [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
(716) Exchange
Input [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=45516]
(717) ShuffleQueryStage
Output [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: 3
(718) BroadcastExchange
Input [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=54084]
(719) BroadcastQueryStage
Output [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: 97
(720) BroadcastHashJoin
Left keys [1]: [product#69015]
Right keys [1]: [internalUUID#69082]
Join type: LeftOuter
Join condition: None
(721) Project
Output [5]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, filter(unitOfMeasureConversions#69088, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71358) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71359)) 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]
Input [9]: [product#69015, plant#69016, orderDateTime#69017, _extract_code#71358, _extract_internalRefUUID#71359, timezonecode#69080, internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
(722) Generate
Input [5]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, filteredUnitOfMeasureConversions#69108]
Arguments: explode(filteredUnitOfMeasureConversions#69108.quantityNumerator), [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, filteredUnitOfMeasureConversions#69108], true, [quantityNumerator#69123]
(723) Project
Output [5]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, filteredUnitOfMeasureConversions#69108.quantityDenominator AS _extract_quantityDenominator#70967]
Input [6]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, filteredUnitOfMeasureConversions#69108, quantityNumerator#69123]
(724) Generate
Input [5]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, _extract_quantityDenominator#70967]
Arguments: explode(_extract_quantityDenominator#70967), [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080], true, [quantityDenominator#69130]
(725) Project
Output [4]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080]
Input [5]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, quantityDenominator#69130]
(726) Scan parquet
Output [6]: [internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, systemId#69251]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(727) ColumnarToRow
Input [6]: [internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, systemId#69251]
(728) Filter
Input [6]: [internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, systemId#69251]
Condition : (isnotnull(plant#69254.internalRefUUID) AND isnotnull(product#69253.internalRefUUID))
(729) Project
Output [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
Input [6]: [internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, systemId#69251]
(730) Exchange
Input [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=45551]
(731) ShuffleQueryStage
Output [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
Arguments: 4
(732) BroadcastExchange
Input [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=80250]
(733) BroadcastQueryStage
Output [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
Arguments: 148
(734) Scan parquet
Output [2]: [marketUnit#69147, distributionCenters#69161]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(735) ColumnarToRow
Input [2]: [marketUnit#69147, distributionCenters#69161]
(736) Filter
Input [2]: [marketUnit#69147, distributionCenters#69161]
Condition : (((marketUnit#69147 <=> Daily_grocery) AND (size(distributionCenters#69161, true) > 0)) AND isnotnull(distributionCenters#69161))
(737) Project
Output [1]: [distributionCenters#69161]
Input [2]: [marketUnit#69147, distributionCenters#69161]
(738) Exchange
Input [1]: [distributionCenters#69161]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=45575]
(739) ShuffleQueryStage
Output [1]: [distributionCenters#69161]
Arguments: 5
(740) Generate
Input [1]: [distributionCenters#69161]
Arguments: explode(distributionCenters#69161), false, [distributionCenters#69184]
(741) Filter
Input [1]: [distributionCenters#69184]
Condition : (((size(distributionCenters#69184.storageLocations, true) > 0) AND isnotnull(distributionCenters#69184.storageLocations)) AND isnotnull(distributionCenters#69184.internalRefUUID))
(742) Project
Output [2]: [distributionCenters#69184.internalRefUUID AS _extract_internalRefUUID#70975, distributionCenters#69184.storageLocations AS _extract_storageLocations#70976]
Input [1]: [distributionCenters#69184]
(743) Generate
Input [2]: [_extract_internalRefUUID#70975, _extract_storageLocations#70976]
Arguments: explode(_extract_storageLocations#70976), [_extract_internalRefUUID#70975], false, [storageLocations#69198]
(744) Project
Output [3]: [_extract_internalRefUUID#70975 AS plantUuid#69189, storageLocations#69198.id AS storageLocId#69201, storageLocations#69198.internalRefUUID AS storageLocUuid#69202]
Input [2]: [_extract_internalRefUUID#70975, storageLocations#69198]
(745) BroadcastExchange
Input [3]: [plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=60501]
(746) BroadcastQueryStage
Output [3]: [plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
Arguments: 120
(747) Scan parquet
Output [2]: [product#69783, plant#69784]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(748) ColumnarToRow
Input [2]: [product#69783, plant#69784]
(749) Filter
Input [2]: [product#69783, plant#69784]
Condition : isnotnull(plant#69784)
(750) Exchange
Input [2]: [product#69783, plant#69784]
Arguments: hashpartitioning(product#69783, plant#69784, 25), REPARTITION_BY_NUM, [plan_id=45603]
(751) ShuffleQueryStage
Output [2]: [product#69783, plant#69784]
Arguments: 6
(752) ReusedExchange [Reuses operator id: 699]
Output [4]: [_extract_code#71364, _extract_internalRefUUID#71365, _extract_internalRefUUID#71363, _extract_internalRefUUID#71366]
(753) BroadcastQueryStage
Output [4]: [_extract_code#71364, _extract_internalRefUUID#71365, _extract_internalRefUUID#71363, _extract_internalRefUUID#71366]
Arguments: 122
(754) BroadcastHashJoin
Left keys [4]: [coalesce(product#69783, ), isnull(product#69783), coalesce(plant#69784, ), isnull(plant#69784)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71363, ), isnull(_extract_internalRefUUID#71363), coalesce(_extract_internalRefUUID#71366, ), isnull(_extract_internalRefUUID#71366)]
Join type: LeftOuter
Join condition: None
(755) Project
Output [4]: [product#69783, plant#69784, _extract_code#71364, _extract_internalRefUUID#71365]
Input [6]: [product#69783, plant#69784, _extract_code#71364, _extract_internalRefUUID#71365, _extract_internalRefUUID#71363, _extract_internalRefUUID#71366]
(756) Scan parquet
Output [2]: [internalUUID#69810, systemId#69809]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(757) ColumnarToRow
Input [2]: [internalUUID#69810, systemId#69809]
(758) Project
Output [1]: [internalUUID#69810]
Input [2]: [internalUUID#69810, systemId#69809]
(759) Exchange
Input [1]: [internalUUID#69810]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=45644]
(760) ShuffleQueryStage
Output [1]: [internalUUID#69810]
Arguments: 9
(761) BroadcastExchange
Input [1]: [internalUUID#69810]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=57778]
(762) BroadcastQueryStage
Output [1]: [internalUUID#69810]
Arguments: 110
(763) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69784, ), isnull(plant#69784)]
Right keys [2]: [coalesce(internalUUID#69810, ), isnull(internalUUID#69810)]
Join type: LeftOuter
Join condition: None
(764) Project
Output [4]: [product#69783, plant#69784, _extract_code#71364, _extract_internalRefUUID#71365]
Input [5]: [product#69783, plant#69784, _extract_code#71364, _extract_internalRefUUID#71365, internalUUID#69810]
(765) ReusedExchange [Reuses operator id: 718]
Output [3]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844]
(766) BroadcastQueryStage
Output [3]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844]
Arguments: 98
(767) BroadcastHashJoin
Left keys [1]: [product#69783]
Right keys [1]: [internalUUID#69838]
Join type: LeftOuter
Join condition: None
(768) Project
Output [2]: [plant#69784, filter(unitOfMeasureConversions#69844, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71364) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71365)) 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]
Input [7]: [product#69783, plant#69784, _extract_code#71364, _extract_internalRefUUID#71365, internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844]
(769) Generate
Input [2]: [plant#69784, filteredUnitOfMeasureConversions#69850]
Arguments: explode(filteredUnitOfMeasureConversions#69850.quantityNumerator), [plant#69784, filteredUnitOfMeasureConversions#69850], true, [quantityNumerator#69852]
(770) Project
Output [2]: [plant#69784, filteredUnitOfMeasureConversions#69850.quantityDenominator AS _extract_quantityDenominator#70979]
Input [3]: [plant#69784, filteredUnitOfMeasureConversions#69850, quantityNumerator#69852]
(771) Generate
Input [2]: [plant#69784, _extract_quantityDenominator#70979]
Arguments: explode(_extract_quantityDenominator#70979), [plant#69784], true, [quantityDenominator#69853]
(772) Project
Output [1]: [plant#69784]
Input [2]: [plant#69784, quantityDenominator#69853]
(773) HashAggregate
Input [1]: [plant#69784]
Keys [1]: [plant#69784]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69784]
(774) Exchange
Input [1]: [plant#69784]
Arguments: hashpartitioning(plant#69784, 25), ENSURE_REQUIREMENTS, [plan_id=91603]
(775) ShuffleQueryStage
Output [1]: [plant#69784]
Arguments: 152
(776) AQEShuffleRead
Input [1]: [plant#69784]
Arguments: coalesced
(777) HashAggregate
Input [1]: [plant#69784]
Keys [1]: [plant#69784]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69784]
(778) BroadcastHashJoin
Left keys [1]: [plantUuid#69189]
Right keys [1]: [plant#69784]
Join type: Inner
Join condition: None
(779) Project
Output [3]: [plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
Input [4]: [plantUuid#69189, storageLocId#69201, storageLocUuid#69202, plant#69784]
(780) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69254.internalRefUUID, ), isnull(plant#69254.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#69189, ), isnull(plantUuid#69189)]
Join type: Inner
Join condition: None
(781) Generate
Input [9]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
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))), [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, plantUuid#69189], false, [stockQuantity#69271]
(782) ObjectHashAggregate
Input [7]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, plantUuid#69189, stockQuantity#69271]
Keys [5]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251]
Functions [2]: [partial_first(calculationDateTime#69255, false), partial_collect_list(stockQuantity#69271, 0, 0)]
Aggregate Attributes [3]: [first#73908, valueSet#73909, buf#73910]
Results [8]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251, first#73911, valueSet#73912, buf#73913]
(783) ObjectHashAggregate
Input [8]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251, first#73911, valueSet#73912, buf#73913]
Keys [5]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251]
Functions [2]: [first(calculationDateTime#69255, false), collect_list(stockQuantity#69271, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#69255)()#69321, collect_list(stockQuantity#69271, 0, 0)#69322]
Results [4]: [product#69253, plant#69254, first(calculationDateTime#69255)()#69321 AS calculationDateTime#69308, collect_list(stockQuantity#69271, 0, 0)#69322 AS stockQuantities#69309]
(784) Filter
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantities#69309]
Condition : ((size(stockQuantities#69309, true) > 0) AND isnotnull(calculationDateTime#69308))
(785) Generate
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantities#69309]
Arguments: explode(stockQuantities#69309), [product#69253, plant#69254, calculationDateTime#69308], false, [stockQuantity#69367]
(786) Filter
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantity#69367]
Condition : (((isnotnull(stockQuantity#69367.specialStockIndicator.code) AND isnotnull(stockQuantity#69367.stockType.code)) AND (stockQuantity#69367.specialStockIndicator.code = )) AND (stockQuantity#69367.stockType.code = 01))
(787) Project
Output [4]: [plant#69254.internalRefUUID AS plantUuid#69370, product#69253.internalRefUUID AS productUuid#69372, calculationDateTime#69308, stockQuantity#69367.storagelocation.id AS storageLocId#69373]
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantity#69367]
(788) Exchange
Input [4]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373]
Arguments: hashpartitioning(productUuid#69372, plantUuid#69370, 25), ENSURE_REQUIREMENTS, [plan_id=114438]
(789) ShuffleQueryStage
Output [4]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373]
Arguments: 161
(790) AQEShuffleRead
Input [4]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373]
Arguments: local
(791) BroadcastExchange
Input [4]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=121339]
(792) BroadcastQueryStage
Output [4]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373]
Arguments: 168
(793) Scan parquet
Output [3]: [product#69391, plant#69392, orderDateTime#69393]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(794) ColumnarToRow
Input [3]: [product#69391, plant#69392, orderDateTime#69393]
(795) Filter
Input [3]: [product#69391, plant#69392, orderDateTime#69393]
Condition : ((isnotnull(orderDateTime#69393) AND isnotnull(plant#69392)) AND isnotnull(product#69391))
(796) Exchange
Input [3]: [product#69391, plant#69392, orderDateTime#69393]
Arguments: hashpartitioning(product#69391, plant#69392, 25), REPARTITION_BY_NUM, [plan_id=45719]
(797) ShuffleQueryStage
Output [3]: [product#69391, plant#69392, orderDateTime#69393]
Arguments: 12
(798) ReusedExchange [Reuses operator id: 699]
Output [4]: [_extract_code#71372, _extract_internalRefUUID#71373, _extract_internalRefUUID#71371, _extract_internalRefUUID#71374]
(799) BroadcastQueryStage
Output [4]: [_extract_code#71372, _extract_internalRefUUID#71373, _extract_internalRefUUID#71371, _extract_internalRefUUID#71374]
Arguments: 124
(800) BroadcastHashJoin
Left keys [4]: [coalesce(product#69391, ), isnull(product#69391), coalesce(plant#69392, ), isnull(plant#69392)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71371, ), isnull(_extract_internalRefUUID#71371), coalesce(_extract_internalRefUUID#71374, ), isnull(_extract_internalRefUUID#71374)]
Join type: LeftOuter
Join condition: None
(801) Project
Output [5]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#71372, _extract_internalRefUUID#71373]
Input [7]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#71372, _extract_internalRefUUID#71373, _extract_internalRefUUID#71371, _extract_internalRefUUID#71374]
(802) ReusedExchange [Reuses operator id: 761]
Output [1]: [internalUUID#69405]
(803) BroadcastQueryStage
Output [1]: [internalUUID#69405]
Arguments: 111
(804) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69392, ), isnull(plant#69392)]
Right keys [2]: [coalesce(internalUUID#69405, ), isnull(internalUUID#69405)]
Join type: LeftOuter
Join condition: None
(805) Project
Output [5]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#71372, _extract_internalRefUUID#71373]
Input [6]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#71372, _extract_internalRefUUID#71373, internalUUID#69405]
(806) ReusedExchange [Reuses operator id: 718]
Output [3]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425]
(807) BroadcastQueryStage
Output [3]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425]
Arguments: 99
(808) BroadcastHashJoin
Left keys [1]: [product#69391]
Right keys [1]: [internalUUID#69419]
Join type: LeftOuter
Join condition: None
(809) Project
Output [4]: [product#69391, plant#69392, orderDateTime#69393, filter(unitOfMeasureConversions#69425, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71372) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71373)) 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]
Input [8]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#71372, _extract_internalRefUUID#71373, internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425]
(810) Generate
Input [4]: [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430]
Arguments: explode(filteredUnitOfMeasureConversions#69430.quantityNumerator), [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430], true, [quantityNumerator#69431]
(811) Project
Output [4]: [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430.quantityDenominator AS _extract_quantityDenominator#70987]
Input [5]: [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430, quantityNumerator#69431]
(812) Generate
Input [4]: [product#69391, plant#69392, orderDateTime#69393, _extract_quantityDenominator#70987]
Arguments: explode(_extract_quantityDenominator#70987), [product#69391, plant#69392, orderDateTime#69393], true, [quantityDenominator#69432]
(813) Project
Output [3]: [product#69391, plant#69392, orderDateTime#69393]
Input [4]: [product#69391, plant#69392, orderDateTime#69393, quantityDenominator#69432]
(814) BroadcastHashJoin
Left keys [2]: [plantUuid#69370, productUuid#69372]
Right keys [2]: [plant#69392, product#69391]
Join type: Inner
Join condition: (calculationDateTime#69308 <= orderDateTime#69393)
(815) Project
Output [4]: [plantUuid#69370 AS plant#69448, productUuid#69372 AS product#69449, storageLocId#69373, calculationDateTime#69308]
Input [7]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373, product#69391, plant#69392, orderDateTime#69393]
(816) Exchange
Input [4]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308]
Arguments: hashpartitioning(coalesce(plant#69448, ), isnull(plant#69448), coalesce(product#69449, ), isnull(product#69449), coalesce(storageLocId#69373, ), isnull(storageLocId#69373), coalesce(calculationDateTime#69308, 1970-01-01 00:00:00), isnull(calculationDateTime#69308), 25), ENSURE_REQUIREMENTS, [plan_id=122715]
(817) ShuffleQueryStage
Output [4]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308]
Arguments: 174
(818) AQEShuffleRead
Input [4]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308]
Arguments: local
(819) BroadcastExchange
Input [4]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true]), coalesce(input[1, string, true], ), isnull(input[1, string, true]), coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, timestamp, true], 1970-01-01 00:00:00), isnull(input[3, timestamp, true])),false), [plan_id=125325]
(820) BroadcastQueryStage
Output [4]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308]
Arguments: 179
(821) ReusedExchange [Reuses operator id: 791]
Output [4]: [plantUuid#69677, productUuid#69679, calculationDateTime#69673, storageLocId#69680]
(822) BroadcastQueryStage
Output [4]: [plantUuid#69677, productUuid#69679, calculationDateTime#69673, storageLocId#69680]
Arguments: 170
(823) ReusedExchange [Reuses operator id: 796]
Output [3]: [product#69685, plant#69686, orderDateTime#69687]
(824) ShuffleQueryStage
Output [3]: [product#69685, plant#69686, orderDateTime#69687]
Arguments: 32
(825) ReusedExchange [Reuses operator id: 699]
Output [4]: [_extract_code#71385, _extract_internalRefUUID#71386, _extract_internalRefUUID#71384, _extract_internalRefUUID#71383]
(826) BroadcastQueryStage
Output [4]: [_extract_code#71385, _extract_internalRefUUID#71386, _extract_internalRefUUID#71384, _extract_internalRefUUID#71383]
Arguments: 130
(827) BroadcastHashJoin
Left keys [4]: [coalesce(product#69685, ), isnull(product#69685), coalesce(plant#69686, ), isnull(plant#69686)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71384, ), isnull(_extract_internalRefUUID#71384), coalesce(_extract_internalRefUUID#71383, ), isnull(_extract_internalRefUUID#71383)]
Join type: LeftOuter
Join condition: None
(828) Project
Output [5]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#71385, _extract_internalRefUUID#71386]
Input [7]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#71385, _extract_internalRefUUID#71386, _extract_internalRefUUID#71384, _extract_internalRefUUID#71383]
(829) ReusedExchange [Reuses operator id: 761]
Output [1]: [internalUUID#69699]
(830) BroadcastQueryStage
Output [1]: [internalUUID#69699]
Arguments: 113
(831) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69686, ), isnull(plant#69686)]
Right keys [2]: [coalesce(internalUUID#69699, ), isnull(internalUUID#69699)]
Join type: LeftOuter
Join condition: None
(832) Project
Output [5]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#71385, _extract_internalRefUUID#71386]
Input [6]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#71385, _extract_internalRefUUID#71386, internalUUID#69699]
(833) ReusedExchange [Reuses operator id: 718]
Output [3]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719]
(834) BroadcastQueryStage
Output [3]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719]
Arguments: 101
(835) BroadcastHashJoin
Left keys [1]: [product#69685]
Right keys [1]: [internalUUID#69713]
Join type: LeftOuter
Join condition: None
(836) Project
Output [4]: [product#69685, plant#69686, orderDateTime#69687, filter(unitOfMeasureConversions#69719, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71385) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71386)) 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]
Input [8]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#71385, _extract_internalRefUUID#71386, internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719]
(837) Generate
Input [4]: [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724]
Arguments: explode(filteredUnitOfMeasureConversions#69724.quantityNumerator), [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724], true, [quantityNumerator#69725]
(838) Project
Output [4]: [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724.quantityDenominator AS _extract_quantityDenominator#71006]
Input [5]: [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724, quantityNumerator#69725]
(839) Generate
Input [4]: [product#69685, plant#69686, orderDateTime#69687, _extract_quantityDenominator#71006]
Arguments: explode(_extract_quantityDenominator#71006), [product#69685, plant#69686, orderDateTime#69687], true, [quantityDenominator#69726]
(840) Project
Output [3]: [product#69685, plant#69686, orderDateTime#69687]
Input [4]: [product#69685, plant#69686, orderDateTime#69687, quantityDenominator#69726]
(841) BroadcastHashJoin
Left keys [2]: [plantUuid#69677, productUuid#69679]
Right keys [2]: [plant#69686, product#69685]
Join type: Inner
Join condition: (calculationDateTime#69673 <= orderDateTime#69687)
(842) Project
Output [4]: [plantUuid#69677 AS plant#69729, productUuid#69679 AS product#69730, storageLocId#69680, calculationDateTime#69673]
Input [7]: [plantUuid#69677, productUuid#69679, calculationDateTime#69673, storageLocId#69680, product#69685, plant#69686, orderDateTime#69687]
(843) HashAggregate
Input [4]: [plant#69729, product#69730, storageLocId#69680, calculationDateTime#69673]
Keys [3]: [plant#69729, product#69730, storageLocId#69680]
Functions [1]: [partial_max(calculationDateTime#69673)]
Aggregate Attributes [1]: [max#73916]
Results [4]: [plant#69729, product#69730, storageLocId#69680, max#73917]
(844) HashAggregate
Input [4]: [plant#69729, product#69730, storageLocId#69680, max#73917]
Keys [3]: [plant#69729, product#69730, storageLocId#69680]
Functions [1]: [max(calculationDateTime#69673)]
Aggregate Attributes [1]: [max(calculationDateTime#69673)#69456]
Results [4]: [plant#69729, product#69730, storageLocId#69680, max(calculationDateTime#69673)#69456 AS max_calc_datetime#69450]
(845) Exchange
Input [4]: [plant#69729, product#69730, storageLocId#69680, max_calc_datetime#69450]
Arguments: hashpartitioning(coalesce(plant#69729, ), isnull(plant#69729), coalesce(product#69730, ), isnull(product#69730), coalesce(storageLocId#69680, ), isnull(storageLocId#69680), coalesce(max_calc_datetime#69450, 1970-01-01 00:00:00), isnull(max_calc_datetime#69450), 25), ENSURE_REQUIREMENTS, [plan_id=122774]
(846) ShuffleQueryStage
Output [4]: [plant#69729, product#69730, storageLocId#69680, max_calc_datetime#69450]
Arguments: 175
(847) AQEShuffleRead
Input [4]: [plant#69729, product#69730, storageLocId#69680, max_calc_datetime#69450]
Arguments: local
(848) BroadcastHashJoin
Left keys [8]: [coalesce(plant#69448, ), isnull(plant#69448), coalesce(product#69449, ), isnull(product#69449), coalesce(storageLocId#69373, ), isnull(storageLocId#69373), coalesce(calculationDateTime#69308, 1970-01-01 00:00:00), isnull(calculationDateTime#69308)]
Right keys [8]: [coalesce(plant#69729, ), isnull(plant#69729), coalesce(product#69730, ), isnull(product#69730), coalesce(storageLocId#69680, ), isnull(storageLocId#69680), coalesce(max_calc_datetime#69450, 1970-01-01 00:00:00), isnull(max_calc_datetime#69450)]
Join type: Inner
Join condition: None
(849) Project
Output [3]: [plant#69448, product#69449, calculationDateTime#69308]
Input [8]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308, plant#69729, product#69730, storageLocId#69680, max_calc_datetime#69450]
(850) HashAggregate
Input [3]: [plant#69448, product#69449, calculationDateTime#69308]
Keys [2]: [product#69449, plant#69448]
Functions [1]: [partial_min(calculationDateTime#69308)]
Aggregate Attributes [1]: [min#73906]
Results [3]: [product#69449, plant#69448, min#73907]
(851) Exchange
Input [3]: [product#69449, plant#69448, min#73907]
Arguments: hashpartitioning(product#69449, plant#69448, 25), ENSURE_REQUIREMENTS, [plan_id=126301]
(852) ShuffleQueryStage
Output [3]: [product#69449, plant#69448, min#73907]
Arguments: 180
(853) AQEShuffleRead
Input [3]: [product#69449, plant#69448, min#73907]
Arguments: coalesced
(854) HashAggregate
Input [3]: [product#69449, plant#69448, min#73907]
Keys [2]: [product#69449, plant#69448]
Functions [1]: [min(calculationDateTime#69308)]
Aggregate Attributes [1]: [min(calculationDateTime#69308)#69768]
Results [3]: [product#69449, plant#69448, min(calculationDateTime#69308)#69768 AS minCalculationDateTime#69754]
(855) BroadcastExchange
Input [3]: [product#69449, plant#69448, minCalculationDateTime#69754]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=127737]
(856) BroadcastQueryStage
Output [3]: [product#69449, plant#69448, minCalculationDateTime#69754]
Arguments: 183
(857) BroadcastHashJoin
Left keys [2]: [plant#69016, product#69015]
Right keys [2]: [plant#69448, product#69449]
Join type: LeftOuter
Join condition: None
(858) Project
Output [4]: [product#69015, plant#69016, timezonecode#69080, CASE WHEN isnotnull(minCalculationDateTime#69754) THEN minCalculationDateTime#69754 ELSE orderDateTime#69017 END AS stockDatetime#69867]
Input [7]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, product#69449, plant#69448, minCalculationDateTime#69754]
(859) Exchange
Input [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: hashpartitioning(coalesce(plant#69016, ), isnull(plant#69016), coalesce(product#69015, ), isnull(product#69015), 25), ENSURE_REQUIREMENTS, [plan_id=128760]
(860) ShuffleQueryStage
Output [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: 185
(861) AQEShuffleRead
Input [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: local
(862) Scan parquet
Output [3]: [product#70356, plant#70357, orderDateTime#70358]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(863) ColumnarToRow
Input [3]: [product#70356, plant#70357, orderDateTime#70358]
(864) Exchange
Input [3]: [product#70356, plant#70357, orderDateTime#70358]
Arguments: hashpartitioning(product#70356, plant#70357, 25), REPARTITION_BY_NUM, [plan_id=46130]
(865) ShuffleQueryStage
Output [3]: [product#70356, plant#70357, orderDateTime#70358]
Arguments: 39
(866) Scan parquet
Output [8]: [internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367, systemId#70360]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>
(867) ColumnarToRow
Input [8]: [internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367, systemId#70360]
(868) Project
Output [8]: [systemId#70360, internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367]
Input [8]: [internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367, systemId#70360]
(869) Exchange
Input [8]: [systemId#70360, internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=46149]
(870) ShuffleQueryStage
Output [8]: [systemId#70360, internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367]
Arguments: 40
(871) Project
Output [1]: [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]
Input [8]: [systemId#70360, internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367]
(872) BroadcastExchange
Input [1]: [productPlant#70368]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=62270]
(873) BroadcastQueryStage
Output [1]: [productPlant#70368]
Arguments: 146
(874) BroadcastHashJoin
Left keys [4]: [coalesce(product#70356, ), isnull(product#70356), coalesce(plant#70357, ), isnull(plant#70357)]
Right keys [4]: [coalesce(productPlant#70368.product.internalRefUUID, ), isnull(productPlant#70368.product.internalRefUUID), coalesce(productPlant#70368.plant.internalRefUUID, ), isnull(productPlant#70368.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(875) ReusedExchange [Reuses operator id: 708]
Output [2]: [internalUUID#70370, timezonecode#70381]
(876) BroadcastQueryStage
Output [2]: [internalUUID#70370, timezonecode#70381]
Arguments: 109
(877) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70357, ), isnull(plant#70357)]
Right keys [2]: [coalesce(internalUUID#70370, ), isnull(internalUUID#70370)]
Join type: LeftOuter
Join condition: None
(878) Project
Output [5]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, CASE WHEN isnotnull(timezonecode#70381) THEN timezonecode#70381 ELSE UTC END AS timezonecode#70382]
Input [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, internalUUID#70370, timezonecode#70381]
(879) ReusedExchange [Reuses operator id: 718]
Output [3]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390]
(880) BroadcastQueryStage
Output [3]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390]
Arguments: 102
(881) BroadcastHashJoin
Left keys [1]: [product#70356]
Right keys [1]: [internalUUID#70384]
Join type: LeftOuter
Join condition: None
(882) Project
Output [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, 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]
Input [8]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390]
(883) Project
Output [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, filteredUnitOfMeasureConversions#70396.quantityDenominator AS _extract_quantityDenominator#71131, filteredUnitOfMeasureConversions#70396.quantityNumerator AS _extract_quantityNumerator#71132]
Input [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, filteredUnitOfMeasureConversions#70396]
(884) Generate
Input [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, _extract_quantityDenominator#71131, _extract_quantityNumerator#71132]
Arguments: explode(_extract_quantityNumerator#71132), [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, _extract_quantityDenominator#71131], true, [quantityNumerator#70398]
(885) Generate
Input [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, _extract_quantityDenominator#71131, quantityNumerator#70398]
Arguments: explode(_extract_quantityDenominator#71131), [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, quantityNumerator#70398], true, [quantityDenominator#70399]
(886) Project
Output [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, (cast(quantityNumerator#70398 as double) / cast(quantityDenominator#70399 as double)) AS outboundUnit#70400]
Input [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, quantityNumerator#70398, quantityDenominator#70399]
(887) Project
Output [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, CASE WHEN (isnull(outboundUnit#70400) OR (outboundUnit#70400 <= 0.0)) THEN 1.0 ELSE outboundUnit#70400 END AS outboundUnit#70401]
Input [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70400]
(888) ReusedExchange [Reuses operator id: 732]
Output [6]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407]
(889) BroadcastQueryStage
Output [6]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407]
Arguments: 150
(890) ReusedExchange [Reuses operator id: 745]
Output [3]: [plantUuid#70433, storageLocId#70434, storageLocUuid#70435]
(891) BroadcastQueryStage
Output [3]: [plantUuid#70433, storageLocId#70434, storageLocUuid#70435]
Arguments: 132
(892) ReusedExchange [Reuses operator id: 774]
Output [1]: [plant#70438]
(893) ShuffleQueryStage
Output [1]: [plant#70438]
Arguments: 156
(894) AQEShuffleRead
Input [1]: [plant#70438]
Arguments: coalesced
(895) HashAggregate
Input [1]: [plant#70438]
Keys [1]: [plant#70438]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70438]
(896) BroadcastHashJoin
Left keys [1]: [plantUuid#70433]
Right keys [1]: [plant#70438]
Join type: Inner
Join condition: None
(897) Project
Output [3]: [plantUuid#70433, storageLocId#70434, storageLocUuid#70435]
Input [4]: [plantUuid#70433, storageLocId#70434, storageLocUuid#70435, plant#70438]
(898) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70405.internalRefUUID, ), isnull(plant#70405.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#70433, ), isnull(plantUuid#70433)]
Join type: Inner
Join condition: None
(899) Generate
Input [9]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407, plantUuid#70433, storageLocId#70434, storageLocUuid#70435]
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))), [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, plantUuid#70433], false, [stockQuantity#70498]
(900) ObjectHashAggregate
Input [7]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, plantUuid#70433, stockQuantity#70498]
Keys [5]: [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402]
Functions [2]: [partial_first(calculationDateTime#70406, false), partial_collect_list(stockQuantity#70498, 0, 0)]
Aggregate Attributes [3]: [first#73946, valueSet#73947, buf#73948]
Results [8]: [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402, first#73949, valueSet#73950, buf#73951]
(901) ObjectHashAggregate
Input [8]: [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402, first#73949, valueSet#73950, buf#73951]
Keys [5]: [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402]
Functions [2]: [first(calculationDateTime#70406, false), collect_list(stockQuantity#70498, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#70406)()#69321, collect_list(stockQuantity#70498, 0, 0)#69322]
Results [4]: [product#70404, plant#70405, first(calculationDateTime#70406)()#69321 AS calculationDateTime#70499, collect_list(stockQuantity#70498, 0, 0)#69322 AS stockQuantities#70500]
(902) Filter
Input [4]: [product#70404, plant#70405, calculationDateTime#70499, stockQuantities#70500]
Condition : ((size(stockQuantities#70500, true) > 0) AND isnotnull(calculationDateTime#70499))
(903) Generate
Input [4]: [product#70404, plant#70405, calculationDateTime#70499, stockQuantities#70500]
Arguments: explode(stockQuantities#70500), [product#70404, plant#70405, calculationDateTime#70499], false, [stockQuantity#70501]
(904) Filter
Input [4]: [product#70404, plant#70405, calculationDateTime#70499, stockQuantity#70501]
Condition : (((isnotnull(stockQuantity#70501.specialStockIndicator.code) AND isnotnull(stockQuantity#70501.stockType.code)) AND (stockQuantity#70501.specialStockIndicator.code = )) AND (stockQuantity#70501.stockType.code = 01))
(905) Project
Output [5]: [plant#70405.internalRefUUID AS plantUuid#70503, product#70404.internalRefUUID AS productUuid#70505, calculationDateTime#70499, stockQuantity#70501.storagelocation.id AS storageLocId#70506, stockQuantity#70501.quantity.measure AS quantity#70508]
Input [4]: [product#70404, plant#70405, calculationDateTime#70499, stockQuantity#70501]
(906) Exchange
Input [5]: [plantUuid#70503, productUuid#70505, calculationDateTime#70499, storageLocId#70506, quantity#70508]
Arguments: hashpartitioning(productUuid#70505, plantUuid#70503, 25), ENSURE_REQUIREMENTS, [plan_id=114769]
(907) ShuffleQueryStage
Output [5]: [plantUuid#70503, productUuid#70505, calculationDateTime#70499, storageLocId#70506, quantity#70508]
Arguments: 164
(908) AQEShuffleRead
Input [5]: [plantUuid#70503, productUuid#70505, calculationDateTime#70499, storageLocId#70506, quantity#70508]
Arguments: local
(909) BroadcastExchange
Input [5]: [plantUuid#70503, productUuid#70505, calculationDateTime#70499, storageLocId#70506, quantity#70508]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=120649]
(910) BroadcastQueryStage
Output [5]: [plantUuid#70503, productUuid#70505, calculationDateTime#70499, storageLocId#70506, quantity#70508]
Arguments: 167
(911) ReusedExchange [Reuses operator id: 796]
Output [3]: [product#70513, plant#70514, orderDateTime#70515]
(912) ShuffleQueryStage
Output [3]: [product#70513, plant#70514, orderDateTime#70515]
Arguments: 58
(913) ReusedExchange [Reuses operator id: 699]
Output [4]: [_extract_code#71399, _extract_internalRefUUID#71400, _extract_internalRefUUID#71402, _extract_internalRefUUID#71401]
(914) BroadcastQueryStage
Output [4]: [_extract_code#71399, _extract_internalRefUUID#71400, _extract_internalRefUUID#71402, _extract_internalRefUUID#71401]
Arguments: 136
(915) BroadcastHashJoin
Left keys [4]: [coalesce(product#70513, ), isnull(product#70513), coalesce(plant#70514, ), isnull(plant#70514)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71402, ), isnull(_extract_internalRefUUID#71402), coalesce(_extract_internalRefUUID#71401, ), isnull(_extract_internalRefUUID#71401)]
Join type: LeftOuter
Join condition: None
(916) Project
Output [5]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#71399, _extract_internalRefUUID#71400]
Input [7]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#71399, _extract_internalRefUUID#71400, _extract_internalRefUUID#71402, _extract_internalRefUUID#71401]
(917) ReusedExchange [Reuses operator id: 761]
Output [1]: [internalUUID#70529]
(918) BroadcastQueryStage
Output [1]: [internalUUID#70529]
Arguments: 115
(919) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70514, ), isnull(plant#70514)]
Right keys [2]: [coalesce(internalUUID#70529, ), isnull(internalUUID#70529)]
Join type: LeftOuter
Join condition: None
(920) Project
Output [5]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#71399, _extract_internalRefUUID#71400]
Input [6]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#71399, _extract_internalRefUUID#71400, internalUUID#70529]
(921) ReusedExchange [Reuses operator id: 718]
Output [3]: [internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549]
(922) BroadcastQueryStage
Output [3]: [internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549]
Arguments: 104
(923) BroadcastHashJoin
Left keys [1]: [product#70513]
Right keys [1]: [internalUUID#70543]
Join type: LeftOuter
Join condition: None
(924) Project
Output [4]: [product#70513, plant#70514, orderDateTime#70515, filter(unitOfMeasureConversions#70549, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71399) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71400)) 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]
Input [8]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#71399, _extract_internalRefUUID#71400, internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549]
(925) Generate
Input [4]: [product#70513, plant#70514, orderDateTime#70515, filteredUnitOfMeasureConversions#70554]
Arguments: explode(filteredUnitOfMeasureConversions#70554.quantityNumerator), [product#70513, plant#70514, orderDateTime#70515, filteredUnitOfMeasureConversions#70554], true, [quantityNumerator#70555]
(926) Project
Output [4]: [product#70513, plant#70514, orderDateTime#70515, filteredUnitOfMeasureConversions#70554.quantityDenominator AS _extract_quantityDenominator#71032]
Input [5]: [product#70513, plant#70514, orderDateTime#70515, filteredUnitOfMeasureConversions#70554, quantityNumerator#70555]
(927) Generate
Input [4]: [product#70513, plant#70514, orderDateTime#70515, _extract_quantityDenominator#71032]
Arguments: explode(_extract_quantityDenominator#71032), [product#70513, plant#70514, orderDateTime#70515], true, [quantityDenominator#70556]
(928) Project
Output [3]: [product#70513, plant#70514, orderDateTime#70515]
Input [4]: [product#70513, plant#70514, orderDateTime#70515, quantityDenominator#70556]
(929) BroadcastHashJoin
Left keys [2]: [plantUuid#70503, productUuid#70505]
Right keys [2]: [plant#70514, product#70513]
Join type: Inner
Join condition: (calculationDateTime#70499 <= orderDateTime#70515)
(930) Project
Output [5]: [plantUuid#70503 AS plant#70559, productUuid#70505 AS product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
Input [8]: [plantUuid#70503, productUuid#70505, calculationDateTime#70499, storageLocId#70506, quantity#70508, product#70513, plant#70514, orderDateTime#70515]
(931) Exchange
Input [5]: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
Arguments: hashpartitioning(coalesce(plant#70559, ), isnull(plant#70559), coalesce(product#70560, ), isnull(product#70560), coalesce(storageLocId#70506, ), isnull(storageLocId#70506), coalesce(calculationDateTime#70499, 1970-01-01 00:00:00), isnull(calculationDateTime#70499), 25), ENSURE_REQUIREMENTS, [plan_id=122067]
(932) ShuffleQueryStage
Output [5]: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
Arguments: 173
(933) AQEShuffleRead
Input [5]: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
Arguments: local
(934) BroadcastExchange
Input [5]: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true]), coalesce(input[1, string, true], ), isnull(input[1, string, true]), coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, timestamp, true], 1970-01-01 00:00:00), isnull(input[3, timestamp, true])),false), [plan_id=124975]
(935) BroadcastQueryStage
Output [5]: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
Arguments: 178
(936) ReusedExchange [Reuses operator id: 845]
Output [4]: [plant#70696, product#70697, storageLocId#70647, max_calc_datetime#70698]
(937) ShuffleQueryStage
Output [4]: [plant#70696, product#70697, storageLocId#70647, max_calc_datetime#70698]
Arguments: 177
(938) AQEShuffleRead
Input [4]: [plant#70696, product#70697, storageLocId#70647, max_calc_datetime#70698]
Arguments: local
(939) BroadcastHashJoin
Left keys [8]: [coalesce(plant#70559, ), isnull(plant#70559), coalesce(product#70560, ), isnull(product#70560), coalesce(storageLocId#70506, ), isnull(storageLocId#70506), coalesce(calculationDateTime#70499, 1970-01-01 00:00:00), isnull(calculationDateTime#70499)]
Right keys [8]: [coalesce(plant#70696, ), isnull(plant#70696), coalesce(product#70697, ), isnull(product#70697), coalesce(storageLocId#70647, ), isnull(storageLocId#70647), coalesce(max_calc_datetime#70698, 1970-01-01 00:00:00), isnull(max_calc_datetime#70698)]
Join type: Inner
Join condition: None
(940) Project
Output [4]: [plant#70559, product#70560, calculationDateTime#70499, quantity#70508]
Input [9]: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508, plant#70696, product#70697, storageLocId#70647, max_calc_datetime#70698]
(941) HashAggregate
Input [4]: [plant#70559, product#70560, calculationDateTime#70499, quantity#70508]
Keys [2]: [product#70560, plant#70559]
Functions [2]: [partial_min(calculationDateTime#70499), partial_sum(quantity#70508)]
Aggregate Attributes [2]: [min#73942, sum#73943]
Results [4]: [product#70560, plant#70559, min#73944, sum#73945]
(942) Exchange
Input [4]: [product#70560, plant#70559, min#73944, sum#73945]
Arguments: hashpartitioning(product#70560, plant#70559, 25), ENSURE_REQUIREMENTS, [plan_id=126336]
(943) ShuffleQueryStage
Output [4]: [product#70560, plant#70559, min#73944, sum#73945]
Arguments: 181
(944) AQEShuffleRead
Input [4]: [product#70560, plant#70559, min#73944, sum#73945]
Arguments: coalesced
(945) HashAggregate
Input [4]: [product#70560, plant#70559, min#73944, sum#73945]
Keys [2]: [product#70560, plant#70559]
Functions [2]: [min(calculationDateTime#70499), sum(quantity#70508)]
Aggregate Attributes [2]: [min(calculationDateTime#70499)#69768, sum(quantity#70508)#69767]
Results [4]: [product#70560, plant#70559, min(calculationDateTime#70499)#69768 AS minCalculationDateTime#70700, round(sum(quantity#70508)#69767, 0) AS roundedQuantitySum#70701]
(946) BroadcastExchange
Input [4]: [product#70560, plant#70559, minCalculationDateTime#70700, roundedQuantitySum#70701]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=127464]
(947) BroadcastQueryStage
Output [4]: [product#70560, plant#70559, minCalculationDateTime#70700, roundedQuantitySum#70701]
Arguments: 182
(948) BroadcastHashJoin
Left keys [2]: [plant#70357, product#70356]
Right keys [2]: [plant#70559, product#70560]
Join type: LeftOuter
Join condition: None
(949) Project
Output [8]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, CASE WHEN isnotnull(minCalculationDateTime#70700) THEN minCalculationDateTime#70700 ELSE orderDateTime#70358 END AS stockDatetime#70702, CASE WHEN isnotnull(roundedQuantitySum#70701) THEN array(roundedQuantitySum#70701) ELSE [0.0] END AS stockBatchQuantities#70703]
Input [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, product#70560, plant#70559, minCalculationDateTime#70700, roundedQuantitySum#70701]
(950) Scan parquet
Output [9]: [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000002107/0_1_10000002107]
PushedFilters: [IsNotNull(product), IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,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>>>
(951) ColumnarToRow
Input [9]: [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
(952) Filter
Input [9]: [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
Condition : (isnotnull(product#69898) AND isnotnull(plant#69899))
(953) BroadcastExchange
Input [9]: [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=46806]
(954) BroadcastQueryStage
Output [9]: [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
Arguments: 85
(955) BroadcastHashJoin
Left keys [2]: [product#70356, plant#70357]
Right keys [2]: [product#69898, plant#69899]
Join type: LeftOuter
Join condition: None
(956) Project
Output [9]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, CASE WHEN isnotnull(product#69898) THEN struct(demandChannel, demandChannel#69900, demandStream, demandStream#69901, considerVariance, considerVariance#69902, demandTimeBuckets, demandTimeBuckets#69903, demandPointInTimeStart, demandPointInTimeStart#69904, demandPointInTimeEnd, demandPointInTimeEnd#69905, demandPointInTime, demandPointInTime#69906) END AS rawDemands#69977]
Input [17]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
(957) ObjectHashAggregate
Input [9]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, rawDemands#69977]
Keys [9]: [product#70356, plant#70357, orderDateTime#70358, knownfloatingpointnormalized(if (isnull(productPlant#70368)) null else named_struct(systemId, productPlant#70368.systemId, internalUUID, productPlant#70368.internalUUID, plant, productPlant#70368.plant, product, productPlant#70368.product, blockedForReplenishmentStartingFrom, productPlant#70368.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#70368.productionAspect)) null else named_struct(productMovementPlants, productPlant#70368.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#70368.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#70368.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#70368.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#70368.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#70368.productionAspect.productPlanningPlants.minimumLotSize)), minimumSafetyStock, knownfloatingpointnormalized(normalizenanandzero(productPlant#70368.productionAspect.productPlanningPlants.minimumSafetyStock)), logisticalRoundingProfile, productPlant#70368.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#70368.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#70368.salesPlant, listing, productPlant#70368.listing)) AS productPlant#70368, timezonecode#70382, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#70401)) AS outboundUnit#70401, stockDatetime#70702, knownfloatingpointnormalized(transform(stockBatchQuantities#70703, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#85171)), lambda arg#85171, false))) AS stockBatchQuantities#70703, [7226582400000000] AS [7226582400000000]#85170]
Functions [1]: [partial_collect_list(rawDemands#69977, 0, 0)]
Aggregate Attributes [1]: [buf#73940]
Results [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000]#85170, buf#73941]
(958) ObjectHashAggregate
Input [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000]#85170, buf#73941]
Keys [9]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000]#85170]
Functions [1]: [collect_list(rawDemands#69977, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#69977, 0, 0)#70170]
Results [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#70704, collect_list(rawDemands#69977, 0, 0)#70170 AS rawDemands#70004]
(959) DeserializeToObject
Input [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, stockBatchShelfLifeEndDatetimes#70704, rawDemands#70004]
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, -1), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).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, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#70703, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), 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, -4), 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, -4).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, -4).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, -4).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).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, -4).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, -4).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, -4).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).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, -4).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
(960) MapElements
Input [1]: [obj#70342]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@22b451ac, obj#70347: org.apache.spark.sql.Row
(961) SerializeFromObject
Input [1]: [obj#70347]
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]
(962) Exchange
Input [2]: [product#70352, plant#70353]
Arguments: hashpartitioning(coalesce(plant#70353, ), isnull(plant#70353), coalesce(product#70352, ), isnull(product#70352), 25), ENSURE_REQUIREMENTS, [plan_id=128578]
(963) ShuffleQueryStage
Output [2]: [product#70352, plant#70353]
Arguments: 184
(964) AQEShuffleRead
Input [2]: [product#70352, plant#70353]
Arguments: local
(965) BroadcastExchange
Input [2]: [product#70352, plant#70353]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[1, string, true], ), isnull(input[1, string, true]), coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=129190]
(966) BroadcastQueryStage
Output [2]: [product#70352, plant#70353]
Arguments: 186
(967) BroadcastHashJoin
Left keys [4]: [coalesce(plant#69016, ), isnull(plant#69016), coalesce(product#69015, ), isnull(product#69015)]
Right keys [4]: [coalesce(plant#70353, ), isnull(plant#70353), coalesce(product#70352, ), isnull(product#70352)]
Join type: LeftOuter
Join condition: None
(968) Project
Output [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Input [6]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867, product#70352, plant#70353]
(969) Exchange
Input [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: hashpartitioning(plant#69016, 25), ENSURE_REQUIREMENTS, [plan_id=129261]
(970) ShuffleQueryStage
Output [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: 187
(971) AQEShuffleRead
Input [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: local
(972) BroadcastExchange
Input [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true]),false), [plan_id=129311]
(973) BroadcastQueryStage
Output [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: 188
(974) ReusedExchange [Reuses operator id: 738]
Output [1]: [distributionCenters#70837]
(975) ShuffleQueryStage
Output [1]: [distributionCenters#70837]
Arguments: 87
(976) Generate
Input [1]: [distributionCenters#70837]
Arguments: explode(distributionCenters#70837), false, [distributionCenters#70853]
(977) Filter
Input [1]: [distributionCenters#70853]
Condition : (((size(distributionCenters#70853.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#70853.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#70853.internalRefUUID))
(978) Project
Output [2]: [distributionCenters#70853.internalRefUUID AS _extract_internalRefUUID#71059, distributionCenters#70853.storageLocations.internalRefUUID AS _extract_internalRefUUID#71430]
Input [1]: [distributionCenters#70853]
(979) Generate
Input [2]: [_extract_internalRefUUID#71059, _extract_internalRefUUID#71430]
Arguments: explode(_extract_internalRefUUID#71430), [_extract_internalRefUUID#71059], false, [storageLocations#70856]
(980) Filter
Input [2]: [_extract_internalRefUUID#71059, storageLocations#70856]
Condition : isnotnull(storageLocations#70856)
(981) Project
Output [2]: [_extract_internalRefUUID#71059 AS plantUuid#70860, storageLocations#70856 AS storageLocUuid#70864]
Input [2]: [_extract_internalRefUUID#71059, storageLocations#70856]
(982) BroadcastExchange
Input [2]: [plantUuid#70860, storageLocUuid#70864]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=60900]
(983) BroadcastQueryStage
Output [2]: [plantUuid#70860, storageLocUuid#70864]
Arguments: 143
(984) ReusedExchange [Reuses operator id: 774]
Output [1]: [plant#70870]
(985) ShuffleQueryStage
Output [1]: [plant#70870]
Arguments: 160
(986) HashAggregate
Input [1]: [plant#70870]
Keys [1]: [plant#70870]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70870]
(987) BroadcastHashJoin
Left keys [1]: [plantUuid#70860]
Right keys [1]: [plant#70870]
Join type: Inner
Join condition: None
(988) Project
Output [2]: [plantUuid#70860 AS plant#70808, storageLocUuid#70864]
Input [3]: [plantUuid#70860, storageLocUuid#70864, plant#70870]
(989) BroadcastHashJoin
Left keys [1]: [plant#69016]
Right keys [1]: [plant#70808]
Join type: Inner
Join condition: None
(990) Project
Output [5]: [plant#69016, product#69015, timezonecode#69080, stockDatetime#69867, storageLocUuid#70864]
Input [6]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867, plant#70808, storageLocUuid#70864]
(991) Scan parquet
Output [6]: [internalUUID#70739, id#70740, supplier#70742, isMarkedForDeletion#70745, items#70746, systemId#70738]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-procurement-purchaseorder]
PushedFilters: [IsNotNull(isMarkedForDeletion), Not(EqualTo(isMarkedForDeletion,true)), IsNotNull(items)]
ReadSchema: struct<internalUUID:string,id:string,supplier:struct<internalRefUUID:string,id:string>,isMarkedForDeletion:boolean,items:array<struct<number:string,completeIndicator:boolean,returnIndicator:boolean,deletionIndicator:boolean,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:double,quantityUnit:struct<internalRefUUID:string,code:string>,quantityNumerator:double,quantityDenominator:double,scheduleLines:array<struct<number:string,deliveryAt:timestamp,quantity:double,quantityUnit:struct<internalRefUUID:string,code:string>,receivedQuantity:double,deliveredQuantity:double,productAvailabilityDateTime:timestamp>>,confirmations:array<struct<number:string,confirmationCategory:struct<internalRefUUID:string,code:string>,confirmationDeliveryDate:date,confirmedDeliveryAt:timestamp,confirmedQuantity:double,mrpRelevantQuantity:double,confirmationCreationCategory:string,deletionIndicator:boolean,isRelevantForConfirmation:boolean,delivery:struct<internalRefUUID:string,id:string>,deliveryItemNumber:string>>>>>
(992) ColumnarToRow
Input [6]: [internalUUID#70739, id#70740, supplier#70742, isMarkedForDeletion#70745, items#70746, systemId#70738]
(993) Filter
Input [6]: [internalUUID#70739, id#70740, supplier#70742, isMarkedForDeletion#70745, items#70746, systemId#70738]
Condition : (((isnotnull(isMarkedForDeletion#70745) AND NOT isMarkedForDeletion#70745) AND (size(items#70746, true) > 0)) AND isnotnull(items#70746))
(994) Project
Output [4]: [internalUUID#70739, id#70740, supplier#70742, items#70746]
Input [6]: [internalUUID#70739, id#70740, supplier#70742, isMarkedForDeletion#70745, items#70746, systemId#70738]
(995) Exchange
Input [4]: [internalUUID#70739, id#70740, supplier#70742, items#70746]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=47082]
(996) ShuffleQueryStage
Output [4]: [internalUUID#70739, id#70740, supplier#70742, items#70746]
Arguments: 96
(997) Generate
Input [4]: [internalUUID#70739, id#70740, supplier#70742, items#70746]
Arguments: explode(items#70746), [internalUUID#70739, id#70740, supplier#70742], false, [item#70754]
(998) Filter
Input [4]: [internalUUID#70739, id#70740, supplier#70742, item#70754]
Condition : ((((isnotnull(item#70754.deletionIndicator) AND isnotnull(item#70754.completeIndicator)) AND isnotnull(item#70754.returnIndicator)) AND ((NOT item#70754.deletionIndicator AND NOT item#70754.completeIndicator) AND NOT item#70754.returnIndicator)) AND ((isnotnull(item#70754.product.internalRefUUID) AND isnotnull(item#70754.plant.internalRefUUID)) AND isnotnull(item#70754.storageLocation.internalRefUUID)))
(999) Project
Output [14]: [id#70740, internalUUID#70739, supplier#70742.internalRefUUID AS 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]
Input [4]: [internalUUID#70739, id#70740, supplier#70742, item#70754]
(1000) BroadcastExchange
Input [14]: [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]
Arguments: HashedRelationBroadcastMode(List(input[4, string, true], input[3, string, true], input[7, string, true]),false), [plan_id=63658]
(1001) BroadcastQueryStage
Output [14]: [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]
Arguments: 147
(1002) BroadcastHashJoin
Left keys [3]: [product#69015, plant#69016, storageLocUuid#70864]
Right keys [3]: [product#70764, plant#70763, storageLocUuid#70767]
Join type: Inner
Join condition: None
(1003) Project
Output [17]: [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#69867, timezonecode#69080, filter(confirmations#70776, lambdafunction(((NOT lambda x_1#70965.deletionIndicator AND lambda x_1#70965.isRelevantForConfirmation) AND isnotnull(lambda x_1#70965.confirmedDeliveryAt)), lambda x_1#70965, false)) AS validConfirmations#70964]
Input [19]: [plant#69016, product#69015, timezonecode#69080, stockDatetime#69867, storageLocUuid#70864, 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]
(1004) ResultQueryStage
Output [17]: [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#69867, timezonecode#69080, validConfirmations#70964]
Arguments: 189
(1005) Filter
Input [3]: [product#69015, plant#69016, orderDateTime#69017]
Condition : (isnotnull(plant#69016) AND isnotnull(product#69015))
(1006) Exchange
Input [3]: [product#69015, plant#69016, orderDateTime#69017]
Arguments: hashpartitioning(product#69015, plant#69016, 25), REPARTITION_BY_NUM, [plan_id=31626]
(1007) Project
Output [4]: [plant#69030.internalRefUUID AS _extract_internalRefUUID#71356, product#69032.internalRefUUID AS _extract_internalRefUUID#71355, productionAspect#69035.productMovementPlants.unitOfIssue.code AS _extract_code#71358, productionAspect#69035.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71359]
Input [4]: [plant#69030, product#69032, productionAspect#69035, systemId#69026]
(1008) Exchange
Input [4]: [_extract_internalRefUUID#71356, _extract_internalRefUUID#71355, _extract_code#71358, _extract_internalRefUUID#71359]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30733]
(1009) Project
Output [4]: [_extract_code#71358, _extract_internalRefUUID#71359, _extract_internalRefUUID#71355, _extract_internalRefUUID#71356]
Input [4]: [_extract_internalRefUUID#71356, _extract_internalRefUUID#71355, _extract_code#71358, _extract_internalRefUUID#71359]
(1010) BroadcastExchange
Input [4]: [_extract_code#71358, _extract_internalRefUUID#71359, _extract_internalRefUUID#71355, _extract_internalRefUUID#71356]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=32025]
(1011) BroadcastHashJoin
Left keys [4]: [coalesce(product#69015, ), isnull(product#69015), coalesce(plant#69016, ), isnull(plant#69016)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71355, ), isnull(_extract_internalRefUUID#71355), coalesce(_extract_internalRefUUID#71356, ), isnull(_extract_internalRefUUID#71356)]
Join type: LeftOuter
Join condition: None
(1012) Project
Output [5]: [product#69015, plant#69016, orderDateTime#69017, _extract_code#71358, _extract_internalRefUUID#71359]
Input [7]: [product#69015, plant#69016, orderDateTime#69017, _extract_code#71358, _extract_internalRefUUID#71359, _extract_internalRefUUID#71355, _extract_internalRefUUID#71356]
(1013) Project
Output [2]: [internalUUID#69050, address#69056.timeZone.code AS timezonecode#69073]
Input [3]: [internalUUID#69050, address#69056, systemId#69049]
(1014) Exchange
Input [2]: [internalUUID#69050, timezonecode#69073]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30739]
(1015) BroadcastExchange
Input [2]: [internalUUID#69050, timezonecode#69073]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32032]
(1016) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69016, ), isnull(plant#69016)]
Right keys [2]: [coalesce(internalUUID#69050, ), isnull(internalUUID#69050)]
Join type: LeftOuter
Join condition: None
(1017) Project
Output [6]: [product#69015, plant#69016, orderDateTime#69017, _extract_code#71358, _extract_internalRefUUID#71359, CASE WHEN isnotnull(timezonecode#69073) THEN timezonecode#69073 ELSE UTC END AS timezonecode#69080]
Input [7]: [product#69015, plant#69016, orderDateTime#69017, _extract_code#71358, _extract_internalRefUUID#71359, internalUUID#69050, timezonecode#69073]
(1018) Filter
Input [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
Condition : isnotnull(internalUUID#69082)
(1019) Project
Output [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Input [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
(1020) Exchange
Input [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30749]
(1021) BroadcastExchange
Input [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32040]
(1022) BroadcastHashJoin
Left keys [1]: [product#69015]
Right keys [1]: [internalUUID#69082]
Join type: LeftOuter
Join condition: None
(1023) Project
Output [5]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, filter(unitOfMeasureConversions#69088, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71358) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71359)) 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]
Input [9]: [product#69015, plant#69016, orderDateTime#69017, _extract_code#71358, _extract_internalRefUUID#71359, timezonecode#69080, internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
(1024) Generate
Input [5]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, filteredUnitOfMeasureConversions#69108]
Arguments: explode(filteredUnitOfMeasureConversions#69108.quantityNumerator), [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, filteredUnitOfMeasureConversions#69108], true, [quantityNumerator#69123]
(1025) Project
Output [5]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, filteredUnitOfMeasureConversions#69108.quantityDenominator AS _extract_quantityDenominator#70967]
Input [6]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, filteredUnitOfMeasureConversions#69108, quantityNumerator#69123]
(1026) Generate
Input [5]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, _extract_quantityDenominator#70967]
Arguments: explode(_extract_quantityDenominator#70967), [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080], true, [quantityDenominator#69130]
(1027) Project
Output [4]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080]
Input [5]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, quantityDenominator#69130]
(1028) Sort
Input [4]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080]
Arguments: [product#69015 ASC NULLS FIRST, plant#69016 ASC NULLS FIRST], false, 0
(1029) Filter
Input [6]: [internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, systemId#69251]
Condition : (isnotnull(plant#69254.internalRefUUID) AND isnotnull(product#69253.internalRefUUID))
(1030) Project
Output [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
Input [6]: [internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, systemId#69251]
(1031) Exchange
Input [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30761]
(1032) BroadcastExchange
Input [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=32102]
(1033) Filter
Input [2]: [marketUnit#69147, distributionCenters#69161]
Condition : (((marketUnit#69147 <=> Daily_grocery) AND (size(distributionCenters#69161, true) > 0)) AND isnotnull(distributionCenters#69161))
(1034) Project
Output [1]: [distributionCenters#69161]
Input [2]: [marketUnit#69147, distributionCenters#69161]
(1035) Exchange
Input [1]: [distributionCenters#69161]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30765]
(1036) Generate
Input [1]: [distributionCenters#69161]
Arguments: explode(distributionCenters#69161), false, [distributionCenters#69184]
(1037) Filter
Input [1]: [distributionCenters#69184]
Condition : (((size(distributionCenters#69184.storageLocations, true) > 0) AND isnotnull(distributionCenters#69184.storageLocations)) AND isnotnull(distributionCenters#69184.internalRefUUID))
(1038) Project
Output [2]: [distributionCenters#69184.internalRefUUID AS _extract_internalRefUUID#70975, distributionCenters#69184.storageLocations AS _extract_storageLocations#70976]
Input [1]: [distributionCenters#69184]
(1039) Generate
Input [2]: [_extract_internalRefUUID#70975, _extract_storageLocations#70976]
Arguments: explode(_extract_storageLocations#70976), [_extract_internalRefUUID#70975], false, [storageLocations#69198]
(1040) Project
Output [3]: [_extract_internalRefUUID#70975 AS plantUuid#69189, storageLocations#69198.id AS storageLocId#69201, storageLocations#69198.internalRefUUID AS storageLocUuid#69202]
Input [2]: [_extract_internalRefUUID#70975, storageLocations#69198]
(1041) BroadcastExchange
Input [3]: [plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32091]
(1042) Filter
Input [2]: [product#69783, plant#69784]
Condition : isnotnull(plant#69784)
(1043) Exchange
Input [2]: [product#69783, plant#69784]
Arguments: hashpartitioning(product#69783, plant#69784, 25), REPARTITION_BY_NUM, [plan_id=31649]
(1044) Scan parquet
Output [4]: [plant#69789, product#69790, productionAspect#69792, systemId#69787]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1045) Project
Output [4]: [plant#69789.internalRefUUID AS _extract_internalRefUUID#71366, product#69790.internalRefUUID AS _extract_internalRefUUID#71363, productionAspect#69792.productMovementPlants.unitOfIssue.code AS _extract_code#71364, productionAspect#69792.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71365]
Input [4]: [plant#69789, product#69790, productionAspect#69792, systemId#69787]
(1046) Exchange
Input [4]: [_extract_internalRefUUID#71366, _extract_internalRefUUID#71363, _extract_code#71364, _extract_internalRefUUID#71365]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30777]
(1047) Project
Output [4]: [_extract_code#71364, _extract_internalRefUUID#71365, _extract_internalRefUUID#71363, _extract_internalRefUUID#71366]
Input [4]: [_extract_internalRefUUID#71366, _extract_internalRefUUID#71363, _extract_code#71364, _extract_internalRefUUID#71365]
(1048) BroadcastExchange
Input [4]: [_extract_code#71364, _extract_internalRefUUID#71365, _extract_internalRefUUID#71363, _extract_internalRefUUID#71366]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=32054]
(1049) BroadcastHashJoin
Left keys [4]: [coalesce(product#69783, ), isnull(product#69783), coalesce(plant#69784, ), isnull(plant#69784)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71363, ), isnull(_extract_internalRefUUID#71363), coalesce(_extract_internalRefUUID#71366, ), isnull(_extract_internalRefUUID#71366)]
Join type: LeftOuter
Join condition: None
(1050) Project
Output [4]: [product#69783, plant#69784, _extract_code#71364, _extract_internalRefUUID#71365]
Input [6]: [product#69783, plant#69784, _extract_code#71364, _extract_internalRefUUID#71365, _extract_internalRefUUID#71363, _extract_internalRefUUID#71366]
(1051) Project
Output [1]: [internalUUID#69810]
Input [2]: [internalUUID#69810, systemId#69809]
(1052) Exchange
Input [1]: [internalUUID#69810]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30783]
(1053) BroadcastExchange
Input [1]: [internalUUID#69810]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32058]
(1054) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69784, ), isnull(plant#69784)]
Right keys [2]: [coalesce(internalUUID#69810, ), isnull(internalUUID#69810)]
Join type: LeftOuter
Join condition: None
(1055) Project
Output [4]: [product#69783, plant#69784, _extract_code#71364, _extract_internalRefUUID#71365]
Input [5]: [product#69783, plant#69784, _extract_code#71364, _extract_internalRefUUID#71365, internalUUID#69810]
(1056) Scan parquet
Output [4]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844, systemId#69837]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1057) Filter
Input [4]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844, systemId#69837]
Condition : isnotnull(internalUUID#69838)
(1058) Project
Output [3]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844]
Input [4]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844, systemId#69837]
(1059) Exchange
Input [3]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30789]
(1060) BroadcastExchange
Input [3]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32065]
(1061) BroadcastHashJoin
Left keys [1]: [product#69783]
Right keys [1]: [internalUUID#69838]
Join type: LeftOuter
Join condition: None
(1062) Project
Output [2]: [plant#69784, filter(unitOfMeasureConversions#69844, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71364) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71365)) 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]
Input [7]: [product#69783, plant#69784, _extract_code#71364, _extract_internalRefUUID#71365, internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844]
(1063) Generate
Input [2]: [plant#69784, filteredUnitOfMeasureConversions#69850]
Arguments: explode(filteredUnitOfMeasureConversions#69850.quantityNumerator), [plant#69784, filteredUnitOfMeasureConversions#69850], true, [quantityNumerator#69852]
(1064) Project
Output [2]: [plant#69784, filteredUnitOfMeasureConversions#69850.quantityDenominator AS _extract_quantityDenominator#70979]
Input [3]: [plant#69784, filteredUnitOfMeasureConversions#69850, quantityNumerator#69852]
(1065) Generate
Input [2]: [plant#69784, _extract_quantityDenominator#70979]
Arguments: explode(_extract_quantityDenominator#70979), [plant#69784], true, [quantityDenominator#69853]
(1066) Project
Output [1]: [plant#69784]
Input [2]: [plant#69784, quantityDenominator#69853]
(1067) HashAggregate
Input [1]: [plant#69784]
Keys [1]: [plant#69784]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69784]
(1068) Exchange
Input [1]: [plant#69784]
Arguments: hashpartitioning(plant#69784, 25), ENSURE_REQUIREMENTS, [plan_id=32087]
(1069) HashAggregate
Input [1]: [plant#69784]
Keys [1]: [plant#69784]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69784]
(1070) BroadcastHashJoin
Left keys [1]: [plantUuid#69189]
Right keys [1]: [plant#69784]
Join type: Inner
Join condition: None
(1071) Project
Output [3]: [plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
Input [4]: [plantUuid#69189, storageLocId#69201, storageLocUuid#69202, plant#69784]
(1072) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69254.internalRefUUID, ), isnull(plant#69254.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#69189, ), isnull(plantUuid#69189)]
Join type: Inner
Join condition: None
(1073) Generate
Input [9]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
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))), [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, plantUuid#69189], false, [stockQuantity#69271]
(1074) ObjectHashAggregate
Input [7]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, plantUuid#69189, stockQuantity#69271]
Keys [5]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251]
Functions [2]: [partial_first(calculationDateTime#69255, false), partial_collect_list(stockQuantity#69271, 0, 0)]
Aggregate Attributes [3]: [first#73908, valueSet#73909, buf#73910]
Results [8]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251, first#73911, valueSet#73912, buf#73913]
(1075) ObjectHashAggregate
Input [8]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251, first#73911, valueSet#73912, buf#73913]
Keys [5]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251]
Functions [2]: [first(calculationDateTime#69255, false), collect_list(stockQuantity#69271, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#69255)()#69321, collect_list(stockQuantity#69271, 0, 0)#69322]
Results [4]: [product#69253, plant#69254, first(calculationDateTime#69255)()#69321 AS calculationDateTime#69308, collect_list(stockQuantity#69271, 0, 0)#69322 AS stockQuantities#69309]
(1076) Filter
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantities#69309]
Condition : ((size(stockQuantities#69309, true) > 0) AND isnotnull(calculationDateTime#69308))
(1077) Generate
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantities#69309]
Arguments: explode(stockQuantities#69309), [product#69253, plant#69254, calculationDateTime#69308], false, [stockQuantity#69367]
(1078) Filter
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantity#69367]
Condition : (((isnotnull(stockQuantity#69367.specialStockIndicator.code) AND isnotnull(stockQuantity#69367.stockType.code)) AND (stockQuantity#69367.specialStockIndicator.code = )) AND (stockQuantity#69367.stockType.code = 01))
(1079) Project
Output [4]: [plant#69254.internalRefUUID AS plantUuid#69370, product#69253.internalRefUUID AS productUuid#69372, calculationDateTime#69308, stockQuantity#69367.storagelocation.id AS storageLocId#69373]
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantity#69367]
(1080) Exchange
Input [4]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373]
Arguments: hashpartitioning(productUuid#69372, plantUuid#69370, 25), ENSURE_REQUIREMENTS, [plan_id=32155]
(1081) Sort
Input [4]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373]
Arguments: [productUuid#69372 ASC NULLS FIRST, plantUuid#69370 ASC NULLS FIRST], false, 0
(1082) Filter
Input [3]: [product#69391, plant#69392, orderDateTime#69393]
Condition : ((isnotnull(orderDateTime#69393) AND isnotnull(plant#69392)) AND isnotnull(product#69391))
(1083) Exchange
Input [3]: [product#69391, plant#69392, orderDateTime#69393]
Arguments: hashpartitioning(product#69391, plant#69392, 25), REPARTITION_BY_NUM, [plan_id=31694]
(1084) Scan parquet
Output [4]: [plant#69397, product#69398, productionAspect#69400, systemId#69395]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1085) Project
Output [4]: [plant#69397.internalRefUUID AS _extract_internalRefUUID#71374, product#69398.internalRefUUID AS _extract_internalRefUUID#71371, productionAspect#69400.productMovementPlants.unitOfIssue.code AS _extract_code#71372, productionAspect#69400.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71373]
Input [4]: [plant#69397, product#69398, productionAspect#69400, systemId#69395]
(1086) Exchange
Input [4]: [_extract_internalRefUUID#71374, _extract_internalRefUUID#71371, _extract_code#71372, _extract_internalRefUUID#71373]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30828]
(1087) Project
Output [4]: [_extract_code#71372, _extract_internalRefUUID#71373, _extract_internalRefUUID#71371, _extract_internalRefUUID#71374]
Input [4]: [_extract_internalRefUUID#71374, _extract_internalRefUUID#71371, _extract_code#71372, _extract_internalRefUUID#71373]
(1088) BroadcastExchange
Input [4]: [_extract_code#71372, _extract_internalRefUUID#71373, _extract_internalRefUUID#71371, _extract_internalRefUUID#71374]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=32120]
(1089) BroadcastHashJoin
Left keys [4]: [coalesce(product#69391, ), isnull(product#69391), coalesce(plant#69392, ), isnull(plant#69392)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71371, ), isnull(_extract_internalRefUUID#71371), coalesce(_extract_internalRefUUID#71374, ), isnull(_extract_internalRefUUID#71374)]
Join type: LeftOuter
Join condition: None
(1090) Project
Output [5]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#71372, _extract_internalRefUUID#71373]
Input [7]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#71372, _extract_internalRefUUID#71373, _extract_internalRefUUID#71371, _extract_internalRefUUID#71374]
(1091) Scan parquet
Output [2]: [internalUUID#69405, systemId#69404]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1092) Project
Output [1]: [internalUUID#69405]
Input [2]: [internalUUID#69405, systemId#69404]
(1093) Exchange
Input [1]: [internalUUID#69405]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30834]
(1094) BroadcastExchange
Input [1]: [internalUUID#69405]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32140]
(1095) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69392, ), isnull(plant#69392)]
Right keys [2]: [coalesce(internalUUID#69405, ), isnull(internalUUID#69405)]
Join type: LeftOuter
Join condition: None
(1096) Project
Output [5]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#71372, _extract_internalRefUUID#71373]
Input [6]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#71372, _extract_internalRefUUID#71373, internalUUID#69405]
(1097) Scan parquet
Output [4]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425, systemId#69418]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1098) Filter
Input [4]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425, systemId#69418]
Condition : isnotnull(internalUUID#69419)
(1099) Project
Output [3]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425]
Input [4]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425, systemId#69418]
(1100) Exchange
Input [3]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30840]
(1101) BroadcastExchange
Input [3]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32144]
(1102) BroadcastHashJoin
Left keys [1]: [product#69391]
Right keys [1]: [internalUUID#69419]
Join type: LeftOuter
Join condition: None
(1103) Project
Output [4]: [product#69391, plant#69392, orderDateTime#69393, filter(unitOfMeasureConversions#69425, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71372) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71373)) 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]
Input [8]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#71372, _extract_internalRefUUID#71373, internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425]
(1104) Generate
Input [4]: [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430]
Arguments: explode(filteredUnitOfMeasureConversions#69430.quantityNumerator), [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430], true, [quantityNumerator#69431]
(1105) Project
Output [4]: [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430.quantityDenominator AS _extract_quantityDenominator#70987]
Input [5]: [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430, quantityNumerator#69431]
(1106) Generate
Input [4]: [product#69391, plant#69392, orderDateTime#69393, _extract_quantityDenominator#70987]
Arguments: explode(_extract_quantityDenominator#70987), [product#69391, plant#69392, orderDateTime#69393], true, [quantityDenominator#69432]
(1107) Project
Output [3]: [product#69391, plant#69392, orderDateTime#69393]
Input [4]: [product#69391, plant#69392, orderDateTime#69393, quantityDenominator#69432]
(1108) Sort
Input [3]: [product#69391, plant#69392, orderDateTime#69393]
Arguments: [product#69391 ASC NULLS FIRST, plant#69392 ASC NULLS FIRST], false, 0
(1109) SortMergeJoin
Left keys [2]: [productUuid#69372, plantUuid#69370]
Right keys [2]: [product#69391, plant#69392]
Join type: Inner
Join condition: (calculationDateTime#69308 <= orderDateTime#69393)
(1110) Project
Output [4]: [plantUuid#69370 AS plant#69448, productUuid#69372 AS product#69449, storageLocId#69373, calculationDateTime#69308]
Input [7]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373, product#69391, plant#69392, orderDateTime#69393]
(1111) Exchange
Input [4]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308]
Arguments: hashpartitioning(coalesce(plant#69448, ), isnull(plant#69448), coalesce(product#69449, ), isnull(product#69449), coalesce(storageLocId#69373, ), isnull(storageLocId#69373), coalesce(calculationDateTime#69308, 1970-01-01 00:00:00), isnull(calculationDateTime#69308), 25), ENSURE_REQUIREMENTS, [plan_id=32282]
(1112) Sort
Input [4]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308]
Arguments: [coalesce(plant#69448, ) ASC NULLS FIRST, isnull(plant#69448) ASC NULLS FIRST, coalesce(product#69449, ) ASC NULLS FIRST, isnull(product#69449) ASC NULLS FIRST, coalesce(storageLocId#69373, ) ASC NULLS FIRST, isnull(storageLocId#69373) ASC NULLS FIRST, coalesce(calculationDateTime#69308, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#69308) ASC NULLS FIRST], false, 0
(1113) Scan parquet
Output [6]: [internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597, systemId#69592]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(1114) Filter
Input [6]: [internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597, systemId#69592]
Condition : (isnotnull(plant#69595.internalRefUUID) AND isnotnull(product#69594.internalRefUUID))
(1115) Project
Output [6]: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597]
Input [6]: [internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597, systemId#69592]
(1116) Exchange
Input [6]: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30859]
(1117) BroadcastExchange
Input [6]: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=32213]
(1118) Scan parquet
Output [2]: [marketUnit#69598, distributionCenters#69604]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1119) Filter
Input [2]: [marketUnit#69598, distributionCenters#69604]
Condition : (((marketUnit#69598 <=> Daily_grocery) AND (size(distributionCenters#69604, true) > 0)) AND isnotnull(distributionCenters#69604))
(1120) Project
Output [1]: [distributionCenters#69604]
Input [2]: [marketUnit#69598, distributionCenters#69604]
(1121) Exchange
Input [1]: [distributionCenters#69604]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30863]
(1122) Generate
Input [1]: [distributionCenters#69604]
Arguments: explode(distributionCenters#69604), false, [distributionCenters#69622]
(1123) Filter
Input [1]: [distributionCenters#69622]
Condition : (((size(distributionCenters#69622.storageLocations, true) > 0) AND isnotnull(distributionCenters#69622.storageLocations)) AND isnotnull(distributionCenters#69622.internalRefUUID))
(1124) Project
Output [2]: [distributionCenters#69622.internalRefUUID AS _extract_internalRefUUID#70995, distributionCenters#69622.storageLocations AS _extract_storageLocations#70996]
Input [1]: [distributionCenters#69622]
(1125) Generate
Input [2]: [_extract_internalRefUUID#70995, _extract_storageLocations#70996]
Arguments: explode(_extract_storageLocations#70996), [_extract_internalRefUUID#70995], false, [storageLocations#69623]
(1126) Project
Output [3]: [_extract_internalRefUUID#70995 AS plantUuid#69625, storageLocations#69623.id AS storageLocId#69626, storageLocations#69623.internalRefUUID AS storageLocUuid#69627]
Input [2]: [_extract_internalRefUUID#70995, storageLocations#69623]
(1127) BroadcastExchange
Input [3]: [plantUuid#69625, storageLocId#69626, storageLocUuid#69627]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32205]
(1128) Scan parquet
Output [2]: [product#69628, plant#69629]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1129) Filter
Input [2]: [product#69628, plant#69629]
Condition : isnotnull(plant#69629)
(1130) Exchange
Input [2]: [product#69628, plant#69629]
Arguments: hashpartitioning(product#69628, plant#69629, 25), REPARTITION_BY_NUM, [plan_id=31721]
(1131) Scan parquet
Output [4]: [plant#69634, product#69635, productionAspect#69637, systemId#69632]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1132) Project
Output [4]: [plant#69634.internalRefUUID AS _extract_internalRefUUID#71382, product#69635.internalRefUUID AS _extract_internalRefUUID#71381, productionAspect#69637.productMovementPlants.unitOfIssue.code AS _extract_code#71379, productionAspect#69637.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71380]
Input [4]: [plant#69634, product#69635, productionAspect#69637, systemId#69632]
(1133) Exchange
Input [4]: [_extract_internalRefUUID#71382, _extract_internalRefUUID#71381, _extract_code#71379, _extract_internalRefUUID#71380]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30875]
(1134) Project
Output [4]: [_extract_code#71379, _extract_internalRefUUID#71380, _extract_internalRefUUID#71381, _extract_internalRefUUID#71382]
Input [4]: [_extract_internalRefUUID#71382, _extract_internalRefUUID#71381, _extract_code#71379, _extract_internalRefUUID#71380]
(1135) BroadcastExchange
Input [4]: [_extract_code#71379, _extract_internalRefUUID#71380, _extract_internalRefUUID#71381, _extract_internalRefUUID#71382]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=32165]
(1136) BroadcastHashJoin
Left keys [4]: [coalesce(product#69628, ), isnull(product#69628), coalesce(plant#69629, ), isnull(plant#69629)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71381, ), isnull(_extract_internalRefUUID#71381), coalesce(_extract_internalRefUUID#71382, ), isnull(_extract_internalRefUUID#71382)]
Join type: LeftOuter
Join condition: None
(1137) Project
Output [4]: [product#69628, plant#69629, _extract_code#71379, _extract_internalRefUUID#71380]
Input [6]: [product#69628, plant#69629, _extract_code#71379, _extract_internalRefUUID#71380, _extract_internalRefUUID#71381, _extract_internalRefUUID#71382]
(1138) Scan parquet
Output [2]: [internalUUID#69642, systemId#69641]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1139) Project
Output [1]: [internalUUID#69642]
Input [2]: [internalUUID#69642, systemId#69641]
(1140) Exchange
Input [1]: [internalUUID#69642]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30881]
(1141) BroadcastExchange
Input [1]: [internalUUID#69642]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32173]
(1142) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69629, ), isnull(plant#69629)]
Right keys [2]: [coalesce(internalUUID#69642, ), isnull(internalUUID#69642)]
Join type: LeftOuter
Join condition: None
(1143) Project
Output [4]: [product#69628, plant#69629, _extract_code#71379, _extract_internalRefUUID#71380]
Input [5]: [product#69628, plant#69629, _extract_code#71379, _extract_internalRefUUID#71380, internalUUID#69642]
(1144) Scan parquet
Output [4]: [internalUUID#69656, baseUnitOfMeasure#69660, unitOfMeasureConversions#69662, systemId#69655]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1145) Filter
Input [4]: [internalUUID#69656, baseUnitOfMeasure#69660, unitOfMeasureConversions#69662, systemId#69655]
Condition : isnotnull(internalUUID#69656)
(1146) Project
Output [3]: [internalUUID#69656, baseUnitOfMeasure#69660, unitOfMeasureConversions#69662]
Input [4]: [internalUUID#69656, baseUnitOfMeasure#69660, unitOfMeasureConversions#69662, systemId#69655]
(1147) Exchange
Input [3]: [internalUUID#69656, baseUnitOfMeasure#69660, unitOfMeasureConversions#69662]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30887]
(1148) BroadcastExchange
Input [3]: [internalUUID#69656, baseUnitOfMeasure#69660, unitOfMeasureConversions#69662]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32183]
(1149) BroadcastHashJoin
Left keys [1]: [product#69628]
Right keys [1]: [internalUUID#69656]
Join type: LeftOuter
Join condition: None
(1150) Project
Output [2]: [plant#69629, filter(unitOfMeasureConversions#69662, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71379) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71380)) 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]
Input [7]: [product#69628, plant#69629, _extract_code#71379, _extract_internalRefUUID#71380, internalUUID#69656, baseUnitOfMeasure#69660, unitOfMeasureConversions#69662]
(1151) Generate
Input [2]: [plant#69629, filteredUnitOfMeasureConversions#69667]
Arguments: explode(filteredUnitOfMeasureConversions#69667.quantityNumerator), [plant#69629, filteredUnitOfMeasureConversions#69667], true, [quantityNumerator#69668]
(1152) Project
Output [2]: [plant#69629, filteredUnitOfMeasureConversions#69667.quantityDenominator AS _extract_quantityDenominator#70999]
Input [3]: [plant#69629, filteredUnitOfMeasureConversions#69667, quantityNumerator#69668]
(1153) Generate
Input [2]: [plant#69629, _extract_quantityDenominator#70999]
Arguments: explode(_extract_quantityDenominator#70999), [plant#69629], true, [quantityDenominator#69669]
(1154) Project
Output [1]: [plant#69629]
Input [2]: [plant#69629, quantityDenominator#69669]
(1155) HashAggregate
Input [1]: [plant#69629]
Keys [1]: [plant#69629]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69629]
(1156) Exchange
Input [1]: [plant#69629]
Arguments: hashpartitioning(plant#69629, 25), ENSURE_REQUIREMENTS, [plan_id=32199]
(1157) HashAggregate
Input [1]: [plant#69629]
Keys [1]: [plant#69629]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69629]
(1158) BroadcastHashJoin
Left keys [1]: [plantUuid#69625]
Right keys [1]: [plant#69629]
Join type: Inner
Join condition: None
(1159) Project
Output [3]: [plantUuid#69625, storageLocId#69626, storageLocUuid#69627]
Input [4]: [plantUuid#69625, storageLocId#69626, storageLocUuid#69627, plant#69629]
(1160) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69595.internalRefUUID, ), isnull(plant#69595.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#69625, ), isnull(plantUuid#69625)]
Join type: Inner
Join condition: None
(1161) Generate
Input [9]: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597, plantUuid#69625, storageLocId#69626, storageLocUuid#69627]
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))), [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, plantUuid#69625], false, [stockQuantity#69672]
(1162) ObjectHashAggregate
Input [7]: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, plantUuid#69625, stockQuantity#69672]
Keys [5]: [plantUuid#69625, internalUUID#69593, plant#69595, product#69594, systemId#69592]
Functions [2]: [partial_first(calculationDateTime#69596, false), partial_collect_list(stockQuantity#69672, 0, 0)]
Aggregate Attributes [3]: [first#73918, valueSet#73919, buf#73920]
Results [8]: [plantUuid#69625, internalUUID#69593, plant#69595, product#69594, systemId#69592, first#73921, valueSet#73922, buf#73923]
(1163) ObjectHashAggregate
Input [8]: [plantUuid#69625, internalUUID#69593, plant#69595, product#69594, systemId#69592, first#73921, valueSet#73922, buf#73923]
Keys [5]: [plantUuid#69625, internalUUID#69593, plant#69595, product#69594, systemId#69592]
Functions [2]: [first(calculationDateTime#69596, false), collect_list(stockQuantity#69672, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#69596)()#69321, collect_list(stockQuantity#69672, 0, 0)#69322]
Results [4]: [product#69594, plant#69595, first(calculationDateTime#69596)()#69321 AS calculationDateTime#69673, collect_list(stockQuantity#69672, 0, 0)#69322 AS stockQuantities#69674]
(1164) Filter
Input [4]: [product#69594, plant#69595, calculationDateTime#69673, stockQuantities#69674]
Condition : ((size(stockQuantities#69674, true) > 0) AND isnotnull(calculationDateTime#69673))
(1165) Generate
Input [4]: [product#69594, plant#69595, calculationDateTime#69673, stockQuantities#69674]
Arguments: explode(stockQuantities#69674), [product#69594, plant#69595, calculationDateTime#69673], false, [stockQuantity#69675]
(1166) Filter
Input [4]: [product#69594, plant#69595, calculationDateTime#69673, stockQuantity#69675]
Condition : (((isnotnull(stockQuantity#69675.specialStockIndicator.code) AND isnotnull(stockQuantity#69675.stockType.code)) AND (stockQuantity#69675.specialStockIndicator.code = )) AND (stockQuantity#69675.stockType.code = 01))
(1167) Project
Output [4]: [plant#69595.internalRefUUID AS plantUuid#69677, product#69594.internalRefUUID AS productUuid#69679, calculationDateTime#69673, stockQuantity#69675.storagelocation.id AS storageLocId#69680]
Input [4]: [product#69594, plant#69595, calculationDateTime#69673, stockQuantity#69675]
(1168) Exchange
Input [4]: [plantUuid#69677, productUuid#69679, calculationDateTime#69673, storageLocId#69680]
Arguments: hashpartitioning(productUuid#69679, plantUuid#69677, 25), ENSURE_REQUIREMENTS, [plan_id=32265]
(1169) Sort
Input [4]: [plantUuid#69677, productUuid#69679, calculationDateTime#69673, storageLocId#69680]
Arguments: [productUuid#69679 ASC NULLS FIRST, plantUuid#69677 ASC NULLS FIRST], false, 0
(1170) Scan parquet
Output [3]: [product#69685, plant#69686, orderDateTime#69687]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1171) Filter
Input [3]: [product#69685, plant#69686, orderDateTime#69687]
Condition : ((isnotnull(orderDateTime#69687) AND isnotnull(plant#69686)) AND isnotnull(product#69685))
(1172) Exchange
Input [3]: [product#69685, plant#69686, orderDateTime#69687]
Arguments: hashpartitioning(product#69685, plant#69686, 25), REPARTITION_BY_NUM, [plan_id=31766]
(1173) Scan parquet
Output [4]: [plant#69691, product#69692, productionAspect#69694, systemId#69689]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1174) Project
Output [4]: [plant#69691.internalRefUUID AS _extract_internalRefUUID#71383, product#69692.internalRefUUID AS _extract_internalRefUUID#71384, productionAspect#69694.productMovementPlants.unitOfIssue.code AS _extract_code#71385, productionAspect#69694.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71386]
Input [4]: [plant#69691, product#69692, productionAspect#69694, systemId#69689]
(1175) Exchange
Input [4]: [_extract_internalRefUUID#71383, _extract_internalRefUUID#71384, _extract_code#71385, _extract_internalRefUUID#71386]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30912]
(1176) Project
Output [4]: [_extract_code#71385, _extract_internalRefUUID#71386, _extract_internalRefUUID#71384, _extract_internalRefUUID#71383]
Input [4]: [_extract_internalRefUUID#71383, _extract_internalRefUUID#71384, _extract_code#71385, _extract_internalRefUUID#71386]
(1177) BroadcastExchange
Input [4]: [_extract_code#71385, _extract_internalRefUUID#71386, _extract_internalRefUUID#71384, _extract_internalRefUUID#71383]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=32230]
(1178) BroadcastHashJoin
Left keys [4]: [coalesce(product#69685, ), isnull(product#69685), coalesce(plant#69686, ), isnull(plant#69686)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71384, ), isnull(_extract_internalRefUUID#71384), coalesce(_extract_internalRefUUID#71383, ), isnull(_extract_internalRefUUID#71383)]
Join type: LeftOuter
Join condition: None
(1179) Project
Output [5]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#71385, _extract_internalRefUUID#71386]
Input [7]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#71385, _extract_internalRefUUID#71386, _extract_internalRefUUID#71384, _extract_internalRefUUID#71383]
(1180) Scan parquet
Output [2]: [internalUUID#69699, systemId#69698]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1181) Project
Output [1]: [internalUUID#69699]
Input [2]: [internalUUID#69699, systemId#69698]
(1182) Exchange
Input [1]: [internalUUID#69699]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30918]
(1183) BroadcastExchange
Input [1]: [internalUUID#69699]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32238]
(1184) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69686, ), isnull(plant#69686)]
Right keys [2]: [coalesce(internalUUID#69699, ), isnull(internalUUID#69699)]
Join type: LeftOuter
Join condition: None
(1185) Project
Output [5]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#71385, _extract_internalRefUUID#71386]
Input [6]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#71385, _extract_internalRefUUID#71386, internalUUID#69699]
(1186) Scan parquet
Output [4]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719, systemId#69712]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1187) Filter
Input [4]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719, systemId#69712]
Condition : isnotnull(internalUUID#69713)
(1188) Project
Output [3]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719]
Input [4]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719, systemId#69712]
(1189) Exchange
Input [3]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30924]
(1190) BroadcastExchange
Input [3]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32247]
(1191) BroadcastHashJoin
Left keys [1]: [product#69685]
Right keys [1]: [internalUUID#69713]
Join type: LeftOuter
Join condition: None
(1192) Project
Output [4]: [product#69685, plant#69686, orderDateTime#69687, filter(unitOfMeasureConversions#69719, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71385) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71386)) 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]
Input [8]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#71385, _extract_internalRefUUID#71386, internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719]
(1193) Generate
Input [4]: [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724]
Arguments: explode(filteredUnitOfMeasureConversions#69724.quantityNumerator), [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724], true, [quantityNumerator#69725]
(1194) Project
Output [4]: [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724.quantityDenominator AS _extract_quantityDenominator#71006]
Input [5]: [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724, quantityNumerator#69725]
(1195) Generate
Input [4]: [product#69685, plant#69686, orderDateTime#69687, _extract_quantityDenominator#71006]
Arguments: explode(_extract_quantityDenominator#71006), [product#69685, plant#69686, orderDateTime#69687], true, [quantityDenominator#69726]
(1196) Project
Output [3]: [product#69685, plant#69686, orderDateTime#69687]
Input [4]: [product#69685, plant#69686, orderDateTime#69687, quantityDenominator#69726]
(1197) Sort
Input [3]: [product#69685, plant#69686, orderDateTime#69687]
Arguments: [product#69685 ASC NULLS FIRST, plant#69686 ASC NULLS FIRST], false, 0
(1198) SortMergeJoin
Left keys [2]: [productUuid#69679, plantUuid#69677]
Right keys [2]: [product#69685, plant#69686]
Join type: Inner
Join condition: (calculationDateTime#69673 <= orderDateTime#69687)
(1199) Project
Output [4]: [plantUuid#69677 AS plant#69729, productUuid#69679 AS product#69730, storageLocId#69680, calculationDateTime#69673]
Input [7]: [plantUuid#69677, productUuid#69679, calculationDateTime#69673, storageLocId#69680, product#69685, plant#69686, orderDateTime#69687]
(1200) HashAggregate
Input [4]: [plant#69729, product#69730, storageLocId#69680, calculationDateTime#69673]
Keys [3]: [plant#69729, product#69730, storageLocId#69680]
Functions [1]: [partial_max(calculationDateTime#69673)]
Aggregate Attributes [1]: [max#73916]
Results [4]: [plant#69729, product#69730, storageLocId#69680, max#73917]
(1201) HashAggregate
Input [4]: [plant#69729, product#69730, storageLocId#69680, max#73917]
Keys [3]: [plant#69729, product#69730, storageLocId#69680]
Functions [1]: [max(calculationDateTime#69673)]
Aggregate Attributes [1]: [max(calculationDateTime#69673)#69456]
Results [4]: [plant#69729, product#69730, storageLocId#69680, max(calculationDateTime#69673)#69456 AS max_calc_datetime#69450]
(1202) Exchange
Input [4]: [plant#69729, product#69730, storageLocId#69680, max_calc_datetime#69450]
Arguments: hashpartitioning(coalesce(plant#69729, ), isnull(plant#69729), coalesce(product#69730, ), isnull(product#69730), coalesce(storageLocId#69680, ), isnull(storageLocId#69680), coalesce(max_calc_datetime#69450, 1970-01-01 00:00:00), isnull(max_calc_datetime#69450), 25), ENSURE_REQUIREMENTS, [plan_id=32284]
(1203) Sort
Input [4]: [plant#69729, product#69730, storageLocId#69680, max_calc_datetime#69450]
Arguments: [coalesce(plant#69729, ) ASC NULLS FIRST, isnull(plant#69729) ASC NULLS FIRST, coalesce(product#69730, ) ASC NULLS FIRST, isnull(product#69730) ASC NULLS FIRST, coalesce(storageLocId#69680, ) ASC NULLS FIRST, isnull(storageLocId#69680) ASC NULLS FIRST, coalesce(max_calc_datetime#69450, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#69450) ASC NULLS FIRST], false, 0
(1204) SortMergeJoin
Left keys [8]: [coalesce(plant#69448, ), isnull(plant#69448), coalesce(product#69449, ), isnull(product#69449), coalesce(storageLocId#69373, ), isnull(storageLocId#69373), coalesce(calculationDateTime#69308, 1970-01-01 00:00:00), isnull(calculationDateTime#69308)]
Right keys [8]: [coalesce(plant#69729, ), isnull(plant#69729), coalesce(product#69730, ), isnull(product#69730), coalesce(storageLocId#69680, ), isnull(storageLocId#69680), coalesce(max_calc_datetime#69450, 1970-01-01 00:00:00), isnull(max_calc_datetime#69450)]
Join type: Inner
Join condition: None
(1205) Project
Output [3]: [plant#69448, product#69449, calculationDateTime#69308]
Input [8]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308, plant#69729, product#69730, storageLocId#69680, max_calc_datetime#69450]
(1206) HashAggregate
Input [3]: [plant#69448, product#69449, calculationDateTime#69308]
Keys [2]: [product#69449, plant#69448]
Functions [1]: [partial_min(calculationDateTime#69308)]
Aggregate Attributes [1]: [min#73906]
Results [3]: [product#69449, plant#69448, min#73907]
(1207) Exchange
Input [3]: [product#69449, plant#69448, min#73907]
Arguments: hashpartitioning(product#69449, plant#69448, 25), ENSURE_REQUIREMENTS, [plan_id=32298]
(1208) HashAggregate
Input [3]: [product#69449, plant#69448, min#73907]
Keys [2]: [product#69449, plant#69448]
Functions [1]: [min(calculationDateTime#69308)]
Aggregate Attributes [1]: [min(calculationDateTime#69308)#69768]
Results [3]: [product#69449, plant#69448, min(calculationDateTime#69308)#69768 AS minCalculationDateTime#69754]
(1209) Sort
Input [3]: [product#69449, plant#69448, minCalculationDateTime#69754]
Arguments: [product#69449 ASC NULLS FIRST, plant#69448 ASC NULLS FIRST], false, 0
(1210) SortMergeJoin
Left keys [2]: [product#69015, plant#69016]
Right keys [2]: [product#69449, plant#69448]
Join type: LeftOuter
Join condition: None
(1211) Project
Output [4]: [product#69015, plant#69016, timezonecode#69080, CASE WHEN isnotnull(minCalculationDateTime#69754) THEN minCalculationDateTime#69754 ELSE orderDateTime#69017 END AS stockDatetime#69867]
Input [7]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, product#69449, plant#69448, minCalculationDateTime#69754]
(1212) Exchange
Input [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: hashpartitioning(coalesce(plant#69016, ), isnull(plant#69016), coalesce(product#69015, ), isnull(product#69015), 25), ENSURE_REQUIREMENTS, [plan_id=32620]
(1213) Sort
Input [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: [coalesce(plant#69016, ) ASC NULLS FIRST, isnull(plant#69016) ASC NULLS FIRST, coalesce(product#69015, ) ASC NULLS FIRST, isnull(product#69015) ASC NULLS FIRST], false, 0
(1214) Exchange
Input [3]: [product#70356, plant#70357, orderDateTime#70358]
Arguments: hashpartitioning(product#70356, plant#70357, 25), REPARTITION_BY_NUM, [plan_id=30944]
(1215) Project
Output [8]: [systemId#70360, internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367]
Input [8]: [internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367, systemId#70360]
(1216) Exchange
Input [8]: [systemId#70360, internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30947]
(1217) Project
Output [1]: [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]
Input [8]: [systemId#70360, internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367]
(1218) BroadcastExchange
Input [1]: [productPlant#70368]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=32314]
(1219) BroadcastHashJoin
Left keys [4]: [coalesce(product#70356, ), isnull(product#70356), coalesce(plant#70357, ), isnull(plant#70357)]
Right keys [4]: [coalesce(productPlant#70368.product.internalRefUUID, ), isnull(productPlant#70368.product.internalRefUUID), coalesce(productPlant#70368.plant.internalRefUUID, ), isnull(productPlant#70368.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1220) Scan parquet
Output [3]: [internalUUID#70370, address#70376, systemId#70369]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string,address:struct<timeZone:struct<code:string>>>
(1221) Project
Output [2]: [internalUUID#70370, address#70376.timeZone.code AS timezonecode#70381]
Input [3]: [internalUUID#70370, address#70376, systemId#70369]
(1222) Exchange
Input [2]: [internalUUID#70370, timezonecode#70381]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30952]
(1223) BroadcastExchange
Input [2]: [internalUUID#70370, timezonecode#70381]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32332]
(1224) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70357, ), isnull(plant#70357)]
Right keys [2]: [coalesce(internalUUID#70370, ), isnull(internalUUID#70370)]
Join type: LeftOuter
Join condition: None
(1225) Project
Output [5]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, CASE WHEN isnotnull(timezonecode#70381) THEN timezonecode#70381 ELSE UTC END AS timezonecode#70382]
Input [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, internalUUID#70370, timezonecode#70381]
(1226) Scan parquet
Output [4]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390, systemId#70383]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1227) Filter
Input [4]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390, systemId#70383]
Condition : isnotnull(internalUUID#70384)
(1228) Project
Output [3]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390]
Input [4]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390, systemId#70383]
(1229) Exchange
Input [3]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30960]
(1230) BroadcastExchange
Input [3]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32339]
(1231) BroadcastHashJoin
Left keys [1]: [product#70356]
Right keys [1]: [internalUUID#70384]
Join type: LeftOuter
Join condition: None
(1232) Project
Output [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, 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]
Input [8]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390]
(1233) Project
Output [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, filteredUnitOfMeasureConversions#70396.quantityDenominator AS _extract_quantityDenominator#71131, filteredUnitOfMeasureConversions#70396.quantityNumerator AS _extract_quantityNumerator#71132]
Input [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, filteredUnitOfMeasureConversions#70396]
(1234) Generate
Input [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, _extract_quantityDenominator#71131, _extract_quantityNumerator#71132]
Arguments: explode(_extract_quantityNumerator#71132), [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, _extract_quantityDenominator#71131], true, [quantityNumerator#70398]
(1235) Generate
Input [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, _extract_quantityDenominator#71131, quantityNumerator#70398]
Arguments: explode(_extract_quantityDenominator#71131), [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, quantityNumerator#70398], true, [quantityDenominator#70399]
(1236) Project
Output [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, (cast(quantityNumerator#70398 as double) / cast(quantityDenominator#70399 as double)) AS outboundUnit#70400]
Input [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, quantityNumerator#70398, quantityDenominator#70399]
(1237) Project
Output [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, CASE WHEN (isnull(outboundUnit#70400) OR (outboundUnit#70400 <= 0.0)) THEN 1.0 ELSE outboundUnit#70400 END AS outboundUnit#70401]
Input [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70400]
(1238) Sort
Input [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401]
Arguments: [product#70356 ASC NULLS FIRST, plant#70357 ASC NULLS FIRST], false, 0
(1239) Scan parquet
Output [6]: [internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407, systemId#70402]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(1240) Filter
Input [6]: [internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407, systemId#70402]
Condition : (isnotnull(plant#70405.internalRefUUID) AND isnotnull(product#70404.internalRefUUID))
(1241) Project
Output [6]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407]
Input [6]: [internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407, systemId#70402]
(1242) Exchange
Input [6]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30994]
(1243) BroadcastExchange
Input [6]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=32399]
(1244) Scan parquet
Output [2]: [marketUnit#70408, distributionCenters#70414]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1245) Filter
Input [2]: [marketUnit#70408, distributionCenters#70414]
Condition : (((marketUnit#70408 <=> Daily_grocery) AND (size(distributionCenters#70414, true) > 0)) AND isnotnull(distributionCenters#70414))
(1246) Project
Output [1]: [distributionCenters#70414]
Input [2]: [marketUnit#70408, distributionCenters#70414]
(1247) Exchange
Input [1]: [distributionCenters#70414]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31002]
(1248) Generate
Input [1]: [distributionCenters#70414]
Arguments: explode(distributionCenters#70414), false, [distributionCenters#70430]
(1249) Filter
Input [1]: [distributionCenters#70430]
Condition : (((size(distributionCenters#70430.storageLocations, true) > 0) AND isnotnull(distributionCenters#70430.storageLocations)) AND isnotnull(distributionCenters#70430.internalRefUUID))
(1250) Project
Output [2]: [distributionCenters#70430.internalRefUUID AS _extract_internalRefUUID#71019, distributionCenters#70430.storageLocations AS _extract_storageLocations#71020]
Input [1]: [distributionCenters#70430]
(1251) Generate
Input [2]: [_extract_internalRefUUID#71019, _extract_storageLocations#71020]
Arguments: explode(_extract_storageLocations#71020), [_extract_internalRefUUID#71019], false, [storageLocations#70431]
(1252) Project
Output [3]: [_extract_internalRefUUID#71019 AS plantUuid#70433, storageLocations#70431.id AS storageLocId#70434, storageLocations#70431.internalRefUUID AS storageLocUuid#70435]
Input [2]: [_extract_internalRefUUID#71019, storageLocations#70431]
(1253) BroadcastExchange
Input [3]: [plantUuid#70433, storageLocId#70434, storageLocUuid#70435]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32393]
(1254) Scan parquet
Output [2]: [product#70437, plant#70438]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1255) Filter
Input [2]: [product#70437, plant#70438]
Condition : isnotnull(plant#70438)
(1256) Exchange
Input [2]: [product#70437, plant#70438]
Arguments: hashpartitioning(product#70437, plant#70438, 25), REPARTITION_BY_NUM, [plan_id=31808]
(1257) Scan parquet
Output [4]: [plant#70444, product#70445, productionAspect#70447, systemId#70442]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1258) Project
Output [4]: [plant#70444.internalRefUUID AS _extract_internalRefUUID#71396, product#70445.internalRefUUID AS _extract_internalRefUUID#71395, productionAspect#70447.productMovementPlants.unitOfIssue.code AS _extract_code#71397, productionAspect#70447.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71398]
Input [4]: [plant#70444, product#70445, productionAspect#70447, systemId#70442]
(1259) Exchange
Input [4]: [_extract_internalRefUUID#71396, _extract_internalRefUUID#71395, _extract_code#71397, _extract_internalRefUUID#71398]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31023]
(1260) Project
Output [4]: [_extract_code#71397, _extract_internalRefUUID#71398, _extract_internalRefUUID#71395, _extract_internalRefUUID#71396]
Input [4]: [_extract_internalRefUUID#71396, _extract_internalRefUUID#71395, _extract_code#71397, _extract_internalRefUUID#71398]
(1261) BroadcastExchange
Input [4]: [_extract_code#71397, _extract_internalRefUUID#71398, _extract_internalRefUUID#71395, _extract_internalRefUUID#71396]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=32361]
(1262) BroadcastHashJoin
Left keys [4]: [coalesce(product#70437, ), isnull(product#70437), coalesce(plant#70438, ), isnull(plant#70438)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71395, ), isnull(_extract_internalRefUUID#71395), coalesce(_extract_internalRefUUID#71396, ), isnull(_extract_internalRefUUID#71396)]
Join type: LeftOuter
Join condition: None
(1263) Project
Output [4]: [product#70437, plant#70438, _extract_code#71397, _extract_internalRefUUID#71398]
Input [6]: [product#70437, plant#70438, _extract_code#71397, _extract_internalRefUUID#71398, _extract_internalRefUUID#71395, _extract_internalRefUUID#71396]
(1264) Scan parquet
Output [2]: [internalUUID#70454, systemId#70453]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1265) Project
Output [1]: [internalUUID#70454]
Input [2]: [internalUUID#70454, systemId#70453]
(1266) Exchange
Input [1]: [internalUUID#70454]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31033]
(1267) BroadcastExchange
Input [1]: [internalUUID#70454]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32367]
(1268) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70438, ), isnull(plant#70438)]
Right keys [2]: [coalesce(internalUUID#70454, ), isnull(internalUUID#70454)]
Join type: LeftOuter
Join condition: None
(1269) Project
Output [4]: [product#70437, plant#70438, _extract_code#71397, _extract_internalRefUUID#71398]
Input [5]: [product#70437, plant#70438, _extract_code#71397, _extract_internalRefUUID#71398, internalUUID#70454]
(1270) Scan parquet
Output [4]: [internalUUID#70472, baseUnitOfMeasure#70476, unitOfMeasureConversions#70478, systemId#70471]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1271) Filter
Input [4]: [internalUUID#70472, baseUnitOfMeasure#70476, unitOfMeasureConversions#70478, systemId#70471]
Condition : isnotnull(internalUUID#70472)
(1272) Project
Output [3]: [internalUUID#70472, baseUnitOfMeasure#70476, unitOfMeasureConversions#70478]
Input [4]: [internalUUID#70472, baseUnitOfMeasure#70476, unitOfMeasureConversions#70478, systemId#70471]
(1273) Exchange
Input [3]: [internalUUID#70472, baseUnitOfMeasure#70476, unitOfMeasureConversions#70478]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31046]
(1274) BroadcastExchange
Input [3]: [internalUUID#70472, baseUnitOfMeasure#70476, unitOfMeasureConversions#70478]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32375]
(1275) BroadcastHashJoin
Left keys [1]: [product#70437]
Right keys [1]: [internalUUID#70472]
Join type: LeftOuter
Join condition: None
(1276) Project
Output [2]: [plant#70438, filter(unitOfMeasureConversions#70478, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71397) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71398)) 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]
Input [7]: [product#70437, plant#70438, _extract_code#71397, _extract_internalRefUUID#71398, internalUUID#70472, baseUnitOfMeasure#70476, unitOfMeasureConversions#70478]
(1277) Generate
Input [2]: [plant#70438, filteredUnitOfMeasureConversions#70483]
Arguments: explode(filteredUnitOfMeasureConversions#70483.quantityNumerator), [plant#70438, filteredUnitOfMeasureConversions#70483], true, [quantityNumerator#70484]
(1278) Project
Output [2]: [plant#70438, filteredUnitOfMeasureConversions#70483.quantityDenominator AS _extract_quantityDenominator#71023]
Input [3]: [plant#70438, filteredUnitOfMeasureConversions#70483, quantityNumerator#70484]
(1279) Generate
Input [2]: [plant#70438, _extract_quantityDenominator#71023]
Arguments: explode(_extract_quantityDenominator#71023), [plant#70438], true, [quantityDenominator#70487]
(1280) Project
Output [1]: [plant#70438]
Input [2]: [plant#70438, quantityDenominator#70487]
(1281) HashAggregate
Input [1]: [plant#70438]
Keys [1]: [plant#70438]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70438]
(1282) Exchange
Input [1]: [plant#70438]
Arguments: hashpartitioning(plant#70438, 25), ENSURE_REQUIREMENTS, [plan_id=32389]
(1283) HashAggregate
Input [1]: [plant#70438]
Keys [1]: [plant#70438]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70438]
(1284) BroadcastHashJoin
Left keys [1]: [plantUuid#70433]
Right keys [1]: [plant#70438]
Join type: Inner
Join condition: None
(1285) Project
Output [3]: [plantUuid#70433, storageLocId#70434, storageLocUuid#70435]
Input [4]: [plantUuid#70433, storageLocId#70434, storageLocUuid#70435, plant#70438]
(1286) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70405.internalRefUUID, ), isnull(plant#70405.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#70433, ), isnull(plantUuid#70433)]
Join type: Inner
Join condition: None
(1287) Generate
Input [9]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407, plantUuid#70433, storageLocId#70434, storageLocUuid#70435]
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))), [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, plantUuid#70433], false, [stockQuantity#70498]
(1288) ObjectHashAggregate
Input [7]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, plantUuid#70433, stockQuantity#70498]
Keys [5]: [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402]
Functions [2]: [partial_first(calculationDateTime#70406, false), partial_collect_list(stockQuantity#70498, 0, 0)]
Aggregate Attributes [3]: [first#73946, valueSet#73947, buf#73948]
Results [8]: [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402, first#73949, valueSet#73950, buf#73951]
(1289) ObjectHashAggregate
Input [8]: [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402, first#73949, valueSet#73950, buf#73951]
Keys [5]: [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402]
Functions [2]: [first(calculationDateTime#70406, false), collect_list(stockQuantity#70498, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#70406)()#69321, collect_list(stockQuantity#70498, 0, 0)#69322]
Results [4]: [product#70404, plant#70405, first(calculationDateTime#70406)()#69321 AS calculationDateTime#70499, collect_list(stockQuantity#70498, 0, 0)#69322 AS stockQuantities#70500]
(1290) Filter
Input [4]: [product#70404, plant#70405, calculationDateTime#70499, stockQuantities#70500]
Condition : ((size(stockQuantities#70500, true) > 0) AND isnotnull(calculationDateTime#70499))
(1291) Generate
Input [4]: [product#70404, plant#70405, calculationDateTime#70499, stockQuantities#70500]
Arguments: explode(stockQuantities#70500), [product#70404, plant#70405, calculationDateTime#70499], false, [stockQuantity#70501]
(1292) Filter
Input [4]: [product#70404, plant#70405, calculationDateTime#70499, stockQuantity#70501]
Condition : (((isnotnull(stockQuantity#70501.specialStockIndicator.code) AND isnotnull(stockQuantity#70501.stockType.code)) AND (stockQuantity#70501.specialStockIndicator.code = )) AND (stockQuantity#70501.stockType.code = 01))
(1293) Project
Output [5]: [plant#70405.internalRefUUID AS plantUuid#70503, product#70404.internalRefUUID AS productUuid#70505, calculationDateTime#70499, stockQuantity#70501.storagelocation.id AS storageLocId#70506, stockQuantity#70501.quantity.measure AS quantity#70508]
Input [4]: [product#70404, plant#70405, calculationDateTime#70499, stockQuantity#70501]
(1294) Exchange
Input [5]: [plantUuid#70503, productUuid#70505, calculationDateTime#70499, storageLocId#70506, quantity#70508]
Arguments: hashpartitioning(productUuid#70505, plantUuid#70503, 25), ENSURE_REQUIREMENTS, [plan_id=32445]
(1295) Sort
Input [5]: [plantUuid#70503, productUuid#70505, calculationDateTime#70499, storageLocId#70506, quantity#70508]
Arguments: [productUuid#70505 ASC NULLS FIRST, plantUuid#70503 ASC NULLS FIRST], false, 0
(1296) Scan parquet
Output [3]: [product#70513, plant#70514, orderDateTime#70515]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1297) Filter
Input [3]: [product#70513, plant#70514, orderDateTime#70515]
Condition : ((isnotnull(orderDateTime#70515) AND isnotnull(plant#70514)) AND isnotnull(product#70513))
(1298) Exchange
Input [3]: [product#70513, plant#70514, orderDateTime#70515]
Arguments: hashpartitioning(product#70513, plant#70514, 25), REPARTITION_BY_NUM, [plan_id=31854]
(1299) Scan parquet
Output [4]: [plant#70519, product#70520, productionAspect#70522, systemId#70517]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1300) Project
Output [4]: [plant#70519.internalRefUUID AS _extract_internalRefUUID#71401, product#70520.internalRefUUID AS _extract_internalRefUUID#71402, productionAspect#70522.productMovementPlants.unitOfIssue.code AS _extract_code#71399, productionAspect#70522.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71400]
Input [4]: [plant#70519, product#70520, productionAspect#70522, systemId#70517]
(1301) Exchange
Input [4]: [_extract_internalRefUUID#71401, _extract_internalRefUUID#71402, _extract_code#71399, _extract_internalRefUUID#71400]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31097]
(1302) Project
Output [4]: [_extract_code#71399, _extract_internalRefUUID#71400, _extract_internalRefUUID#71402, _extract_internalRefUUID#71401]
Input [4]: [_extract_internalRefUUID#71401, _extract_internalRefUUID#71402, _extract_code#71399, _extract_internalRefUUID#71400]
(1303) BroadcastExchange
Input [4]: [_extract_code#71399, _extract_internalRefUUID#71400, _extract_internalRefUUID#71402, _extract_internalRefUUID#71401]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=32423]
(1304) BroadcastHashJoin
Left keys [4]: [coalesce(product#70513, ), isnull(product#70513), coalesce(plant#70514, ), isnull(plant#70514)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71402, ), isnull(_extract_internalRefUUID#71402), coalesce(_extract_internalRefUUID#71401, ), isnull(_extract_internalRefUUID#71401)]
Join type: LeftOuter
Join condition: None
(1305) Project
Output [5]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#71399, _extract_internalRefUUID#71400]
Input [7]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#71399, _extract_internalRefUUID#71400, _extract_internalRefUUID#71402, _extract_internalRefUUID#71401]
(1306) Scan parquet
Output [2]: [internalUUID#70529, systemId#70528]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1307) Project
Output [1]: [internalUUID#70529]
Input [2]: [internalUUID#70529, systemId#70528]
(1308) Exchange
Input [1]: [internalUUID#70529]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31105]
(1309) BroadcastExchange
Input [1]: [internalUUID#70529]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32429]
(1310) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70514, ), isnull(plant#70514)]
Right keys [2]: [coalesce(internalUUID#70529, ), isnull(internalUUID#70529)]
Join type: LeftOuter
Join condition: None
(1311) Project
Output [5]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#71399, _extract_internalRefUUID#71400]
Input [6]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#71399, _extract_internalRefUUID#71400, internalUUID#70529]
(1312) Scan parquet
Output [4]: [internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549, systemId#70542]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1313) Filter
Input [4]: [internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549, systemId#70542]
Condition : isnotnull(internalUUID#70543)
(1314) Project
Output [3]: [internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549]
Input [4]: [internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549, systemId#70542]
(1315) Exchange
Input [3]: [internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31115]
(1316) BroadcastExchange
Input [3]: [internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32434]
(1317) BroadcastHashJoin
Left keys [1]: [product#70513]
Right keys [1]: [internalUUID#70543]
Join type: LeftOuter
Join condition: None
(1318) Project
Output [4]: [product#70513, plant#70514, orderDateTime#70515, filter(unitOfMeasureConversions#70549, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71399) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71400)) 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]
Input [8]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#71399, _extract_internalRefUUID#71400, internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549]
(1319) Generate
Input [4]: [product#70513, plant#70514, orderDateTime#70515, filteredUnitOfMeasureConversions#70554]
Arguments: explode(filteredUnitOfMeasureConversions#70554.quantityNumerator), [product#70513, plant#70514, orderDateTime#70515, filteredUnitOfMeasureConversions#70554], true, [quantityNumerator#70555]
(1320) Project
Output [4]: [product#70513, plant#70514, orderDateTime#70515, filteredUnitOfMeasureConversions#70554.quantityDenominator AS _extract_quantityDenominator#71032]
Input [5]: [product#70513, plant#70514, orderDateTime#70515, filteredUnitOfMeasureConversions#70554, quantityNumerator#70555]
(1321) Generate
Input [4]: [product#70513, plant#70514, orderDateTime#70515, _extract_quantityDenominator#71032]
Arguments: explode(_extract_quantityDenominator#71032), [product#70513, plant#70514, orderDateTime#70515], true, [quantityDenominator#70556]
(1322) Project
Output [3]: [product#70513, plant#70514, orderDateTime#70515]
Input [4]: [product#70513, plant#70514, orderDateTime#70515, quantityDenominator#70556]
(1323) Sort
Input [3]: [product#70513, plant#70514, orderDateTime#70515]
Arguments: [product#70513 ASC NULLS FIRST, plant#70514 ASC NULLS FIRST], false, 0
(1324) SortMergeJoin
Left keys [2]: [productUuid#70505, plantUuid#70503]
Right keys [2]: [product#70513, plant#70514]
Join type: Inner
Join condition: (calculationDateTime#70499 <= orderDateTime#70515)
(1325) Project
Output [5]: [plantUuid#70503 AS plant#70559, productUuid#70505 AS product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
Input [8]: [plantUuid#70503, productUuid#70505, calculationDateTime#70499, storageLocId#70506, quantity#70508, product#70513, plant#70514, orderDateTime#70515]
(1326) Exchange
Input [5]: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
Arguments: hashpartitioning(coalesce(plant#70559, ), isnull(plant#70559), coalesce(product#70560, ), isnull(product#70560), coalesce(storageLocId#70506, ), isnull(storageLocId#70506), coalesce(calculationDateTime#70499, 1970-01-01 00:00:00), isnull(calculationDateTime#70499), 25), ENSURE_REQUIREMENTS, [plan_id=32569]
(1327) Sort
Input [5]: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
Arguments: [coalesce(plant#70559, ) ASC NULLS FIRST, isnull(plant#70559) ASC NULLS FIRST, coalesce(product#70560, ) ASC NULLS FIRST, isnull(product#70560) ASC NULLS FIRST, coalesce(storageLocId#70506, ) ASC NULLS FIRST, isnull(storageLocId#70506) ASC NULLS FIRST, coalesce(calculationDateTime#70499, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#70499) ASC NULLS FIRST], false, 0
(1328) Scan parquet
Output [6]: [internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566, systemId#70561]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(1329) Filter
Input [6]: [internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566, systemId#70561]
Condition : (isnotnull(plant#70564.internalRefUUID) AND isnotnull(product#70563.internalRefUUID))
(1330) Project
Output [6]: [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566]
Input [6]: [internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566, systemId#70561]
(1331) Exchange
Input [6]: [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31148]
(1332) BroadcastExchange
Input [6]: [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=32502]
(1333) Scan parquet
Output [2]: [marketUnit#70567, distributionCenters#70573]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1334) Filter
Input [2]: [marketUnit#70567, distributionCenters#70573]
Condition : (((marketUnit#70567 <=> Daily_grocery) AND (size(distributionCenters#70573, true) > 0)) AND isnotnull(distributionCenters#70573))
(1335) Project
Output [1]: [distributionCenters#70573]
Input [2]: [marketUnit#70567, distributionCenters#70573]
(1336) Exchange
Input [1]: [distributionCenters#70573]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31152]
(1337) Generate
Input [1]: [distributionCenters#70573]
Arguments: explode(distributionCenters#70573), false, [distributionCenters#70589]
(1338) Filter
Input [1]: [distributionCenters#70589]
Condition : (((size(distributionCenters#70589.storageLocations, true) > 0) AND isnotnull(distributionCenters#70589.storageLocations)) AND isnotnull(distributionCenters#70589.internalRefUUID))
(1339) Project
Output [2]: [distributionCenters#70589.internalRefUUID AS _extract_internalRefUUID#71039, distributionCenters#70589.storageLocations AS _extract_storageLocations#71040]
Input [1]: [distributionCenters#70589]
(1340) Generate
Input [2]: [_extract_internalRefUUID#71039, _extract_storageLocations#71040]
Arguments: explode(_extract_storageLocations#71040), [_extract_internalRefUUID#71039], false, [storageLocations#70590]
(1341) Project
Output [3]: [_extract_internalRefUUID#71039 AS plantUuid#70592, storageLocations#70590.id AS storageLocId#70593, storageLocations#70590.internalRefUUID AS storageLocUuid#70594]
Input [2]: [_extract_internalRefUUID#71039, storageLocations#70590]
(1342) BroadcastExchange
Input [3]: [plantUuid#70592, storageLocId#70593, storageLocUuid#70594]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32495]
(1343) Scan parquet
Output [2]: [product#70595, plant#70596]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1344) Filter
Input [2]: [product#70595, plant#70596]
Condition : isnotnull(plant#70596)
(1345) Exchange
Input [2]: [product#70595, plant#70596]
Arguments: hashpartitioning(product#70595, plant#70596, 25), REPARTITION_BY_NUM, [plan_id=31880]
(1346) Scan parquet
Output [4]: [plant#70601, product#70602, productionAspect#70604, systemId#70599]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1347) Project
Output [4]: [plant#70601.internalRefUUID AS _extract_internalRefUUID#71412, product#70602.internalRefUUID AS _extract_internalRefUUID#71411, productionAspect#70604.productMovementPlants.unitOfIssue.code AS _extract_code#71413, productionAspect#70604.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71414]
Input [4]: [plant#70601, product#70602, productionAspect#70604, systemId#70599]
(1348) Exchange
Input [4]: [_extract_internalRefUUID#71412, _extract_internalRefUUID#71411, _extract_code#71413, _extract_internalRefUUID#71414]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31177]
(1349) Project
Output [4]: [_extract_code#71413, _extract_internalRefUUID#71414, _extract_internalRefUUID#71411, _extract_internalRefUUID#71412]
Input [4]: [_extract_internalRefUUID#71412, _extract_internalRefUUID#71411, _extract_code#71413, _extract_internalRefUUID#71414]
(1350) BroadcastExchange
Input [4]: [_extract_code#71413, _extract_internalRefUUID#71414, _extract_internalRefUUID#71411, _extract_internalRefUUID#71412]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=32457]
(1351) BroadcastHashJoin
Left keys [4]: [coalesce(product#70595, ), isnull(product#70595), coalesce(plant#70596, ), isnull(plant#70596)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71411, ), isnull(_extract_internalRefUUID#71411), coalesce(_extract_internalRefUUID#71412, ), isnull(_extract_internalRefUUID#71412)]
Join type: LeftOuter
Join condition: None
(1352) Project
Output [4]: [product#70595, plant#70596, _extract_code#71413, _extract_internalRefUUID#71414]
Input [6]: [product#70595, plant#70596, _extract_code#71413, _extract_internalRefUUID#71414, _extract_internalRefUUID#71411, _extract_internalRefUUID#71412]
(1353) Scan parquet
Output [2]: [internalUUID#70609, systemId#70608]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1354) Project
Output [1]: [internalUUID#70609]
Input [2]: [internalUUID#70609, systemId#70608]
(1355) Exchange
Input [1]: [internalUUID#70609]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31184]
(1356) BroadcastExchange
Input [1]: [internalUUID#70609]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32465]
(1357) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70596, ), isnull(plant#70596)]
Right keys [2]: [coalesce(internalUUID#70609, ), isnull(internalUUID#70609)]
Join type: LeftOuter
Join condition: None
(1358) Project
Output [4]: [product#70595, plant#70596, _extract_code#71413, _extract_internalRefUUID#71414]
Input [5]: [product#70595, plant#70596, _extract_code#71413, _extract_internalRefUUID#71414, internalUUID#70609]
(1359) Scan parquet
Output [4]: [internalUUID#70623, baseUnitOfMeasure#70627, unitOfMeasureConversions#70629, systemId#70622]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1360) Filter
Input [4]: [internalUUID#70623, baseUnitOfMeasure#70627, unitOfMeasureConversions#70629, systemId#70622]
Condition : isnotnull(internalUUID#70623)
(1361) Project
Output [3]: [internalUUID#70623, baseUnitOfMeasure#70627, unitOfMeasureConversions#70629]
Input [4]: [internalUUID#70623, baseUnitOfMeasure#70627, unitOfMeasureConversions#70629, systemId#70622]
(1362) Exchange
Input [3]: [internalUUID#70623, baseUnitOfMeasure#70627, unitOfMeasureConversions#70629]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31195]
(1363) BroadcastExchange
Input [3]: [internalUUID#70623, baseUnitOfMeasure#70627, unitOfMeasureConversions#70629]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32474]
(1364) BroadcastHashJoin
Left keys [1]: [product#70595]
Right keys [1]: [internalUUID#70623]
Join type: LeftOuter
Join condition: None
(1365) Project
Output [2]: [plant#70596, filter(unitOfMeasureConversions#70629, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71413) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71414)) 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]
Input [7]: [product#70595, plant#70596, _extract_code#71413, _extract_internalRefUUID#71414, internalUUID#70623, baseUnitOfMeasure#70627, unitOfMeasureConversions#70629]
(1366) Generate
Input [2]: [plant#70596, filteredUnitOfMeasureConversions#70634]
Arguments: explode(filteredUnitOfMeasureConversions#70634.quantityNumerator), [plant#70596, filteredUnitOfMeasureConversions#70634], true, [quantityNumerator#70635]
(1367) Project
Output [2]: [plant#70596, filteredUnitOfMeasureConversions#70634.quantityDenominator AS _extract_quantityDenominator#71043]
Input [3]: [plant#70596, filteredUnitOfMeasureConversions#70634, quantityNumerator#70635]
(1368) Generate
Input [2]: [plant#70596, _extract_quantityDenominator#71043]
Arguments: explode(_extract_quantityDenominator#71043), [plant#70596], true, [quantityDenominator#70636]
(1369) Project
Output [1]: [plant#70596]
Input [2]: [plant#70596, quantityDenominator#70636]
(1370) HashAggregate
Input [1]: [plant#70596]
Keys [1]: [plant#70596]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70596]
(1371) Exchange
Input [1]: [plant#70596]
Arguments: hashpartitioning(plant#70596, 25), ENSURE_REQUIREMENTS, [plan_id=32491]
(1372) HashAggregate
Input [1]: [plant#70596]
Keys [1]: [plant#70596]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70596]
(1373) BroadcastHashJoin
Left keys [1]: [plantUuid#70592]
Right keys [1]: [plant#70596]
Join type: Inner
Join condition: None
(1374) Project
Output [3]: [plantUuid#70592, storageLocId#70593, storageLocUuid#70594]
Input [4]: [plantUuid#70592, storageLocId#70593, storageLocUuid#70594, plant#70596]
(1375) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70564.internalRefUUID, ), isnull(plant#70564.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#70592, ), isnull(plantUuid#70592)]
Join type: Inner
Join condition: None
(1376) Generate
Input [9]: [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566, plantUuid#70592, storageLocId#70593, storageLocUuid#70594]
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))), [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, plantUuid#70592], false, [stockQuantity#70639]
(1377) ObjectHashAggregate
Input [7]: [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, plantUuid#70592, stockQuantity#70639]
Keys [5]: [plantUuid#70592, internalUUID#70562, plant#70564, product#70563, systemId#70561]
Functions [2]: [partial_first(calculationDateTime#70565, false), partial_collect_list(stockQuantity#70639, 0, 0)]
Aggregate Attributes [3]: [first#73968, valueSet#73969, buf#73970]
Results [8]: [plantUuid#70592, internalUUID#70562, plant#70564, product#70563, systemId#70561, first#73971, valueSet#73972, buf#73973]
(1378) ObjectHashAggregate
Input [8]: [plantUuid#70592, internalUUID#70562, plant#70564, product#70563, systemId#70561, first#73971, valueSet#73972, buf#73973]
Keys [5]: [plantUuid#70592, internalUUID#70562, plant#70564, product#70563, systemId#70561]
Functions [2]: [first(calculationDateTime#70565, false), collect_list(stockQuantity#70639, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#70565)()#69321, collect_list(stockQuantity#70639, 0, 0)#69322]
Results [4]: [product#70563, plant#70564, first(calculationDateTime#70565)()#69321 AS calculationDateTime#70640, collect_list(stockQuantity#70639, 0, 0)#69322 AS stockQuantities#70641]
(1379) Filter
Input [4]: [product#70563, plant#70564, calculationDateTime#70640, stockQuantities#70641]
Condition : ((size(stockQuantities#70641, true) > 0) AND isnotnull(calculationDateTime#70640))
(1380) Generate
Input [4]: [product#70563, plant#70564, calculationDateTime#70640, stockQuantities#70641]
Arguments: explode(stockQuantities#70641), [product#70563, plant#70564, calculationDateTime#70640], false, [stockQuantity#70642]
(1381) Filter
Input [4]: [product#70563, plant#70564, calculationDateTime#70640, stockQuantity#70642]
Condition : (((isnotnull(stockQuantity#70642.specialStockIndicator.code) AND isnotnull(stockQuantity#70642.stockType.code)) AND (stockQuantity#70642.specialStockIndicator.code = )) AND (stockQuantity#70642.stockType.code = 01))
(1382) Project
Output [4]: [plant#70564.internalRefUUID AS plantUuid#70644, product#70563.internalRefUUID AS productUuid#70646, calculationDateTime#70640, stockQuantity#70642.storagelocation.id AS storageLocId#70647]
Input [4]: [product#70563, plant#70564, calculationDateTime#70640, stockQuantity#70642]
(1383) Exchange
Input [4]: [plantUuid#70644, productUuid#70646, calculationDateTime#70640, storageLocId#70647]
Arguments: hashpartitioning(productUuid#70646, plantUuid#70644, 25), ENSURE_REQUIREMENTS, [plan_id=32553]
(1384) Sort
Input [4]: [plantUuid#70644, productUuid#70646, calculationDateTime#70640, storageLocId#70647]
Arguments: [productUuid#70646 ASC NULLS FIRST, plantUuid#70644 ASC NULLS FIRST], false, 0
(1385) Scan parquet
Output [3]: [product#70652, plant#70653, orderDateTime#70654]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1386) Filter
Input [3]: [product#70652, plant#70653, orderDateTime#70654]
Condition : ((isnotnull(orderDateTime#70654) AND isnotnull(plant#70653)) AND isnotnull(product#70652))
(1387) Exchange
Input [3]: [product#70652, plant#70653, orderDateTime#70654]
Arguments: hashpartitioning(product#70652, plant#70653, 25), REPARTITION_BY_NUM, [plan_id=31926]
(1388) Scan parquet
Output [4]: [plant#70658, product#70659, productionAspect#70661, systemId#70656]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1389) Project
Output [4]: [plant#70658.internalRefUUID AS _extract_internalRefUUID#71415, product#70659.internalRefUUID AS _extract_internalRefUUID#71418, productionAspect#70661.productMovementPlants.unitOfIssue.code AS _extract_code#71416, productionAspect#70661.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71417]
Input [4]: [plant#70658, product#70659, productionAspect#70661, systemId#70656]
(1390) Exchange
Input [4]: [_extract_internalRefUUID#71415, _extract_internalRefUUID#71418, _extract_code#71416, _extract_internalRefUUID#71417]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31251]
(1391) Project
Output [4]: [_extract_code#71416, _extract_internalRefUUID#71417, _extract_internalRefUUID#71418, _extract_internalRefUUID#71415]
Input [4]: [_extract_internalRefUUID#71415, _extract_internalRefUUID#71418, _extract_code#71416, _extract_internalRefUUID#71417]
(1392) BroadcastExchange
Input [4]: [_extract_code#71416, _extract_internalRefUUID#71417, _extract_internalRefUUID#71418, _extract_internalRefUUID#71415]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=32520]
(1393) BroadcastHashJoin
Left keys [4]: [coalesce(product#70652, ), isnull(product#70652), coalesce(plant#70653, ), isnull(plant#70653)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71418, ), isnull(_extract_internalRefUUID#71418), coalesce(_extract_internalRefUUID#71415, ), isnull(_extract_internalRefUUID#71415)]
Join type: LeftOuter
Join condition: None
(1394) Project
Output [5]: [product#70652, plant#70653, orderDateTime#70654, _extract_code#71416, _extract_internalRefUUID#71417]
Input [7]: [product#70652, plant#70653, orderDateTime#70654, _extract_code#71416, _extract_internalRefUUID#71417, _extract_internalRefUUID#71418, _extract_internalRefUUID#71415]
(1395) Scan parquet
Output [2]: [internalUUID#70666, systemId#70665]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1396) Project
Output [1]: [internalUUID#70666]
Input [2]: [internalUUID#70666, systemId#70665]
(1397) Exchange
Input [1]: [internalUUID#70666]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31257]
(1398) BroadcastExchange
Input [1]: [internalUUID#70666]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32528]
(1399) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70653, ), isnull(plant#70653)]
Right keys [2]: [coalesce(internalUUID#70666, ), isnull(internalUUID#70666)]
Join type: LeftOuter
Join condition: None
(1400) Project
Output [5]: [product#70652, plant#70653, orderDateTime#70654, _extract_code#71416, _extract_internalRefUUID#71417]
Input [6]: [product#70652, plant#70653, orderDateTime#70654, _extract_code#71416, _extract_internalRefUUID#71417, internalUUID#70666]
(1401) Scan parquet
Output [4]: [internalUUID#70680, baseUnitOfMeasure#70684, unitOfMeasureConversions#70686, systemId#70679]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1402) Filter
Input [4]: [internalUUID#70680, baseUnitOfMeasure#70684, unitOfMeasureConversions#70686, systemId#70679]
Condition : isnotnull(internalUUID#70680)
(1403) Project
Output [3]: [internalUUID#70680, baseUnitOfMeasure#70684, unitOfMeasureConversions#70686]
Input [4]: [internalUUID#70680, baseUnitOfMeasure#70684, unitOfMeasureConversions#70686, systemId#70679]
(1404) Exchange
Input [3]: [internalUUID#70680, baseUnitOfMeasure#70684, unitOfMeasureConversions#70686]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31267]
(1405) BroadcastExchange
Input [3]: [internalUUID#70680, baseUnitOfMeasure#70684, unitOfMeasureConversions#70686]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32536]
(1406) BroadcastHashJoin
Left keys [1]: [product#70652]
Right keys [1]: [internalUUID#70680]
Join type: LeftOuter
Join condition: None
(1407) Project
Output [4]: [product#70652, plant#70653, orderDateTime#70654, filter(unitOfMeasureConversions#70686, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71416) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71417)) 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]
Input [8]: [product#70652, plant#70653, orderDateTime#70654, _extract_code#71416, _extract_internalRefUUID#71417, internalUUID#70680, baseUnitOfMeasure#70684, unitOfMeasureConversions#70686]
(1408) Generate
Input [4]: [product#70652, plant#70653, orderDateTime#70654, filteredUnitOfMeasureConversions#70691]
Arguments: explode(filteredUnitOfMeasureConversions#70691.quantityNumerator), [product#70652, plant#70653, orderDateTime#70654, filteredUnitOfMeasureConversions#70691], true, [quantityNumerator#70692]
(1409) Project
Output [4]: [product#70652, plant#70653, orderDateTime#70654, filteredUnitOfMeasureConversions#70691.quantityDenominator AS _extract_quantityDenominator#71051]
Input [5]: [product#70652, plant#70653, orderDateTime#70654, filteredUnitOfMeasureConversions#70691, quantityNumerator#70692]
(1410) Generate
Input [4]: [product#70652, plant#70653, orderDateTime#70654, _extract_quantityDenominator#71051]
Arguments: explode(_extract_quantityDenominator#71051), [product#70652, plant#70653, orderDateTime#70654], true, [quantityDenominator#70693]
(1411) Project
Output [3]: [product#70652, plant#70653, orderDateTime#70654]
Input [4]: [product#70652, plant#70653, orderDateTime#70654, quantityDenominator#70693]
(1412) Sort
Input [3]: [product#70652, plant#70653, orderDateTime#70654]
Arguments: [product#70652 ASC NULLS FIRST, plant#70653 ASC NULLS FIRST], false, 0
(1413) SortMergeJoin
Left keys [2]: [productUuid#70646, plantUuid#70644]
Right keys [2]: [product#70652, plant#70653]
Join type: Inner
Join condition: (calculationDateTime#70640 <= orderDateTime#70654)
(1414) Project
Output [4]: [plantUuid#70644 AS plant#70696, productUuid#70646 AS product#70697, storageLocId#70647, calculationDateTime#70640]
Input [7]: [plantUuid#70644, productUuid#70646, calculationDateTime#70640, storageLocId#70647, product#70652, plant#70653, orderDateTime#70654]
(1415) HashAggregate
Input [4]: [plant#70696, product#70697, storageLocId#70647, calculationDateTime#70640]
Keys [3]: [plant#70696, product#70697, storageLocId#70647]
Functions [1]: [partial_max(calculationDateTime#70640)]
Aggregate Attributes [1]: [max#73960]
Results [4]: [plant#70696, product#70697, storageLocId#70647, max#73961]
(1416) HashAggregate
Input [4]: [plant#70696, product#70697, storageLocId#70647, max#73961]
Keys [3]: [plant#70696, product#70697, storageLocId#70647]
Functions [1]: [max(calculationDateTime#70640)]
Aggregate Attributes [1]: [max(calculationDateTime#70640)#69456]
Results [4]: [plant#70696, product#70697, storageLocId#70647, max(calculationDateTime#70640)#69456 AS max_calc_datetime#70698]
(1417) Exchange
Input [4]: [plant#70696, product#70697, storageLocId#70647, max_calc_datetime#70698]
Arguments: hashpartitioning(coalesce(plant#70696, ), isnull(plant#70696), coalesce(product#70697, ), isnull(product#70697), coalesce(storageLocId#70647, ), isnull(storageLocId#70647), coalesce(max_calc_datetime#70698, 1970-01-01 00:00:00), isnull(max_calc_datetime#70698), 25), ENSURE_REQUIREMENTS, [plan_id=32570]
(1418) Sort
Input [4]: [plant#70696, product#70697, storageLocId#70647, max_calc_datetime#70698]
Arguments: [coalesce(plant#70696, ) ASC NULLS FIRST, isnull(plant#70696) ASC NULLS FIRST, coalesce(product#70697, ) ASC NULLS FIRST, isnull(product#70697) ASC NULLS FIRST, coalesce(storageLocId#70647, ) ASC NULLS FIRST, isnull(storageLocId#70647) ASC NULLS FIRST, coalesce(max_calc_datetime#70698, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#70698) ASC NULLS FIRST], false, 0
(1419) SortMergeJoin
Left keys [8]: [coalesce(plant#70559, ), isnull(plant#70559), coalesce(product#70560, ), isnull(product#70560), coalesce(storageLocId#70506, ), isnull(storageLocId#70506), coalesce(calculationDateTime#70499, 1970-01-01 00:00:00), isnull(calculationDateTime#70499)]
Right keys [8]: [coalesce(plant#70696, ), isnull(plant#70696), coalesce(product#70697, ), isnull(product#70697), coalesce(storageLocId#70647, ), isnull(storageLocId#70647), coalesce(max_calc_datetime#70698, 1970-01-01 00:00:00), isnull(max_calc_datetime#70698)]
Join type: Inner
Join condition: None
(1420) Project
Output [4]: [plant#70559, product#70560, calculationDateTime#70499, quantity#70508]
Input [9]: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508, plant#70696, product#70697, storageLocId#70647, max_calc_datetime#70698]
(1421) HashAggregate
Input [4]: [plant#70559, product#70560, calculationDateTime#70499, quantity#70508]
Keys [2]: [product#70560, plant#70559]
Functions [2]: [partial_min(calculationDateTime#70499), partial_sum(quantity#70508)]
Aggregate Attributes [2]: [min#73942, sum#73943]
Results [4]: [product#70560, plant#70559, min#73944, sum#73945]
(1422) Exchange
Input [4]: [product#70560, plant#70559, min#73944, sum#73945]
Arguments: hashpartitioning(product#70560, plant#70559, 25), ENSURE_REQUIREMENTS, [plan_id=32580]
(1423) HashAggregate
Input [4]: [product#70560, plant#70559, min#73944, sum#73945]
Keys [2]: [product#70560, plant#70559]
Functions [2]: [min(calculationDateTime#70499), sum(quantity#70508)]
Aggregate Attributes [2]: [min(calculationDateTime#70499)#69768, sum(quantity#70508)#69767]
Results [4]: [product#70560, plant#70559, min(calculationDateTime#70499)#69768 AS minCalculationDateTime#70700, round(sum(quantity#70508)#69767, 0) AS roundedQuantitySum#70701]
(1424) Sort
Input [4]: [product#70560, plant#70559, minCalculationDateTime#70700, roundedQuantitySum#70701]
Arguments: [product#70560 ASC NULLS FIRST, plant#70559 ASC NULLS FIRST], false, 0
(1425) SortMergeJoin
Left keys [2]: [product#70356, plant#70357]
Right keys [2]: [product#70560, plant#70559]
Join type: LeftOuter
Join condition: None
(1426) Project
Output [8]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, CASE WHEN isnotnull(minCalculationDateTime#70700) THEN minCalculationDateTime#70700 ELSE orderDateTime#70358 END AS stockDatetime#70702, CASE WHEN isnotnull(roundedQuantitySum#70701) THEN array(roundedQuantitySum#70701) ELSE [0.0] END AS stockBatchQuantities#70703]
Input [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, product#70560, plant#70559, minCalculationDateTime#70700, roundedQuantitySum#70701]
(1427) Filter
Input [9]: [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
Condition : (isnotnull(product#69898) AND isnotnull(plant#69899))
(1428) BroadcastExchange
Input [9]: [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=32601]
(1429) BroadcastHashJoin
Left keys [2]: [product#70356, plant#70357]
Right keys [2]: [product#69898, plant#69899]
Join type: LeftOuter
Join condition: None
(1430) Project
Output [9]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, CASE WHEN isnotnull(product#69898) THEN struct(demandChannel, demandChannel#69900, demandStream, demandStream#69901, considerVariance, considerVariance#69902, demandTimeBuckets, demandTimeBuckets#69903, demandPointInTimeStart, demandPointInTimeStart#69904, demandPointInTimeEnd, demandPointInTimeEnd#69905, demandPointInTime, demandPointInTime#69906) END AS rawDemands#69977]
Input [17]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
(1431) ObjectHashAggregate
Input [9]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, rawDemands#69977]
Keys [9]: [product#70356, plant#70357, orderDateTime#70358, knownfloatingpointnormalized(if (isnull(productPlant#70368)) null else named_struct(systemId, productPlant#70368.systemId, internalUUID, productPlant#70368.internalUUID, plant, productPlant#70368.plant, product, productPlant#70368.product, blockedForReplenishmentStartingFrom, productPlant#70368.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#70368.productionAspect)) null else named_struct(productMovementPlants, productPlant#70368.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#70368.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#70368.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#70368.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#70368.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#70368.productionAspect.productPlanningPlants.minimumLotSize)), minimumSafetyStock, knownfloatingpointnormalized(normalizenanandzero(productPlant#70368.productionAspect.productPlanningPlants.minimumSafetyStock)), logisticalRoundingProfile, productPlant#70368.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#70368.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#70368.salesPlant, listing, productPlant#70368.listing)) AS productPlant#70368, timezonecode#70382, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#70401)) AS outboundUnit#70401, stockDatetime#70702, knownfloatingpointnormalized(transform(stockBatchQuantities#70703, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#73933)), lambda arg#73933, false))) AS stockBatchQuantities#70703, [7226582400000000] AS [7226582400000000]#73932]
Functions [1]: [partial_collect_list(rawDemands#69977, 0, 0)]
Aggregate Attributes [1]: [buf#73940]
Results [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000]#73932, buf#73941]
(1432) ObjectHashAggregate
Input [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000]#73932, buf#73941]
Keys [9]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000]#73932]
Functions [1]: [collect_list(rawDemands#69977, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#69977, 0, 0)#70170]
Results [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#70704, collect_list(rawDemands#69977, 0, 0)#70170 AS rawDemands#70004]
(1433) DeserializeToObject
Input [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, stockBatchShelfLifeEndDatetimes#70704, rawDemands#70004]
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, -1), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).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, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#70703, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), 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, -4), 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, -4).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, -4).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, -4).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).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, -4).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, -4).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, -4).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).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, -4).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
(1434) MapElements
Input [1]: [obj#70342]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@22b451ac, obj#70347: org.apache.spark.sql.Row
(1435) SerializeFromObject
Input [1]: [obj#70347]
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]
(1436) Exchange
Input [2]: [product#70352, plant#70353]
Arguments: hashpartitioning(coalesce(plant#70353, ), isnull(plant#70353), coalesce(product#70352, ), isnull(product#70352), 25), ENSURE_REQUIREMENTS, [plan_id=32621]
(1437) Sort
Input [2]: [product#70352, plant#70353]
Arguments: [coalesce(plant#70353, ) ASC NULLS FIRST, isnull(plant#70353) ASC NULLS FIRST, coalesce(product#70352, ) ASC NULLS FIRST, isnull(product#70352) ASC NULLS FIRST], false, 0
(1438) SortMergeJoin
Left keys [4]: [coalesce(plant#69016, ), isnull(plant#69016), coalesce(product#69015, ), isnull(product#69015)]
Right keys [4]: [coalesce(plant#70353, ), isnull(plant#70353), coalesce(product#70352, ), isnull(product#70352)]
Join type: LeftOuter
Join condition: None
(1439) Project
Output [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Input [6]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867, product#70352, plant#70353]
(1440) Exchange
Input [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: hashpartitioning(plant#69016, 25), ENSURE_REQUIREMENTS, [plan_id=32684]
(1441) Sort
Input [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: [plant#69016 ASC NULLS FIRST], false, 0
(1442) Scan parquet
Output [2]: [marketUnit#70831, distributionCenters#70837]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1443) Filter
Input [2]: [marketUnit#70831, distributionCenters#70837]
Condition : (((marketUnit#70831 <=> Daily_grocery) AND (size(distributionCenters#70837, true) > 0)) AND isnotnull(distributionCenters#70837))
(1444) Project
Output [1]: [distributionCenters#70837]
Input [2]: [marketUnit#70831, distributionCenters#70837]
(1445) Exchange
Input [1]: [distributionCenters#70837]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31353]
(1446) Generate
Input [1]: [distributionCenters#70837]
Arguments: explode(distributionCenters#70837), false, [distributionCenters#70853]
(1447) Filter
Input [1]: [distributionCenters#70853]
Condition : (((size(distributionCenters#70853.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#70853.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#70853.internalRefUUID))
(1448) Project
Output [2]: [distributionCenters#70853.internalRefUUID AS _extract_internalRefUUID#71059, distributionCenters#70853.storageLocations.internalRefUUID AS _extract_internalRefUUID#71430]
Input [1]: [distributionCenters#70853]
(1449) Generate
Input [2]: [_extract_internalRefUUID#71059, _extract_internalRefUUID#71430]
Arguments: explode(_extract_internalRefUUID#71430), [_extract_internalRefUUID#71059], false, [storageLocations#70856]
(1450) Filter
Input [2]: [_extract_internalRefUUID#71059, storageLocations#70856]
Condition : isnotnull(storageLocations#70856)
(1451) Project
Output [2]: [_extract_internalRefUUID#71059 AS plantUuid#70860, storageLocations#70856 AS storageLocUuid#70864]
Input [2]: [_extract_internalRefUUID#71059, storageLocations#70856]
(1452) BroadcastExchange
Input [2]: [plantUuid#70860, storageLocUuid#70864]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32671]
(1453) Scan parquet
Output [2]: [product#70869, plant#70870]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1454) Filter
Input [2]: [product#70869, plant#70870]
Condition : isnotnull(plant#70870)
(1455) Exchange
Input [2]: [product#70869, plant#70870]
Arguments: hashpartitioning(product#70869, plant#70870, 25), REPARTITION_BY_NUM, [plan_id=32005]
(1456) Scan parquet
Output [4]: [plant#70875, product#70876, productionAspect#70878, systemId#70873]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1457) Project
Output [4]: [plant#70875.internalRefUUID AS _extract_internalRefUUID#71438, product#70876.internalRefUUID AS _extract_internalRefUUID#71435, productionAspect#70878.productMovementPlants.unitOfIssue.code AS _extract_code#71436, productionAspect#70878.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71437]
Input [4]: [plant#70875, product#70876, productionAspect#70878, systemId#70873]
(1458) Exchange
Input [4]: [_extract_internalRefUUID#71438, _extract_internalRefUUID#71435, _extract_code#71436, _extract_internalRefUUID#71437]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31370]
(1459) Project
Output [4]: [_extract_code#71436, _extract_internalRefUUID#71437, _extract_internalRefUUID#71435, _extract_internalRefUUID#71438]
Input [4]: [_extract_internalRefUUID#71438, _extract_internalRefUUID#71435, _extract_code#71436, _extract_internalRefUUID#71437]
(1460) BroadcastExchange
Input [4]: [_extract_code#71436, _extract_internalRefUUID#71437, _extract_internalRefUUID#71435, _extract_internalRefUUID#71438]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=32634]
(1461) BroadcastHashJoin
Left keys [4]: [coalesce(product#70869, ), isnull(product#70869), coalesce(plant#70870, ), isnull(plant#70870)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71435, ), isnull(_extract_internalRefUUID#71435), coalesce(_extract_internalRefUUID#71438, ), isnull(_extract_internalRefUUID#71438)]
Join type: LeftOuter
Join condition: None
(1462) Project
Output [4]: [product#70869, plant#70870, _extract_code#71436, _extract_internalRefUUID#71437]
Input [6]: [product#70869, plant#70870, _extract_code#71436, _extract_internalRefUUID#71437, _extract_internalRefUUID#71435, _extract_internalRefUUID#71438]
(1463) Scan parquet
Output [2]: [internalUUID#70905, systemId#70904]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1464) Project
Output [1]: [internalUUID#70905]
Input [2]: [internalUUID#70905, systemId#70904]
(1465) Exchange
Input [1]: [internalUUID#70905]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31382]
(1466) BroadcastExchange
Input [1]: [internalUUID#70905]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32642]
(1467) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70870, ), isnull(plant#70870)]
Right keys [2]: [coalesce(internalUUID#70905, ), isnull(internalUUID#70905)]
Join type: LeftOuter
Join condition: None
(1468) Project
Output [4]: [product#70869, plant#70870, _extract_code#71436, _extract_internalRefUUID#71437]
Input [5]: [product#70869, plant#70870, _extract_code#71436, _extract_internalRefUUID#71437, internalUUID#70905]
(1469) Scan parquet
Output [4]: [internalUUID#70932, baseUnitOfMeasure#70936, unitOfMeasureConversions#70938, systemId#70931]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1470) Filter
Input [4]: [internalUUID#70932, baseUnitOfMeasure#70936, unitOfMeasureConversions#70938, systemId#70931]
Condition : isnotnull(internalUUID#70932)
(1471) Project
Output [3]: [internalUUID#70932, baseUnitOfMeasure#70936, unitOfMeasureConversions#70938]
Input [4]: [internalUUID#70932, baseUnitOfMeasure#70936, unitOfMeasureConversions#70938, systemId#70931]
(1472) Exchange
Input [3]: [internalUUID#70932, baseUnitOfMeasure#70936, unitOfMeasureConversions#70938]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31391]
(1473) BroadcastExchange
Input [3]: [internalUUID#70932, baseUnitOfMeasure#70936, unitOfMeasureConversions#70938]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32646]
(1474) BroadcastHashJoin
Left keys [1]: [product#70869]
Right keys [1]: [internalUUID#70932]
Join type: LeftOuter
Join condition: None
(1475) Project
Output [2]: [plant#70870, filter(unitOfMeasureConversions#70938, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71436) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71437)) 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]
Input [7]: [product#70869, plant#70870, _extract_code#71436, _extract_internalRefUUID#71437, internalUUID#70932, baseUnitOfMeasure#70936, unitOfMeasureConversions#70938]
(1476) Generate
Input [2]: [plant#70870, filteredUnitOfMeasureConversions#70945]
Arguments: explode(filteredUnitOfMeasureConversions#70945.quantityNumerator), [plant#70870, filteredUnitOfMeasureConversions#70945], true, [quantityNumerator#70947]
(1477) Project
Output [2]: [plant#70870, filteredUnitOfMeasureConversions#70945.quantityDenominator AS _extract_quantityDenominator#71063]
Input [3]: [plant#70870, filteredUnitOfMeasureConversions#70945, quantityNumerator#70947]
(1478) Generate
Input [2]: [plant#70870, _extract_quantityDenominator#71063]
Arguments: explode(_extract_quantityDenominator#71063), [plant#70870], true, [quantityDenominator#70948]
(1479) Project
Output [1]: [plant#70870]
Input [2]: [plant#70870, quantityDenominator#70948]
(1480) HashAggregate
Input [1]: [plant#70870]
Keys [1]: [plant#70870]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70870]
(1481) Exchange
Input [1]: [plant#70870]
Arguments: hashpartitioning(plant#70870, 25), ENSURE_REQUIREMENTS, [plan_id=32667]
(1482) HashAggregate
Input [1]: [plant#70870]
Keys [1]: [plant#70870]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70870]
(1483) BroadcastHashJoin
Left keys [1]: [plantUuid#70860]
Right keys [1]: [plant#70870]
Join type: Inner
Join condition: None
(1484) Project
Output [2]: [plantUuid#70860 AS plant#70808, storageLocUuid#70864]
Input [3]: [plantUuid#70860, storageLocUuid#70864, plant#70870]
(1485) Sort
Input [2]: [plant#70808, storageLocUuid#70864]
Arguments: [plant#70808 ASC NULLS FIRST], false, 0
(1486) SortMergeJoin
Left keys [1]: [plant#69016]
Right keys [1]: [plant#70808]
Join type: Inner
Join condition: None
(1487) Project
Output [5]: [plant#69016, product#69015, timezonecode#69080, stockDatetime#69867, storageLocUuid#70864]
Input [6]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867, plant#70808, storageLocUuid#70864]
(1488) Filter
Input [6]: [internalUUID#70739, id#70740, supplier#70742, isMarkedForDeletion#70745, items#70746, systemId#70738]
Condition : (((isnotnull(isMarkedForDeletion#70745) AND NOT isMarkedForDeletion#70745) AND (size(items#70746, true) > 0)) AND isnotnull(items#70746))
(1489) Project
Output [4]: [internalUUID#70739, id#70740, supplier#70742, items#70746]
Input [6]: [internalUUID#70739, id#70740, supplier#70742, isMarkedForDeletion#70745, items#70746, systemId#70738]
(1490) Exchange
Input [4]: [internalUUID#70739, id#70740, supplier#70742, items#70746]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31424]
(1491) Generate
Input [4]: [internalUUID#70739, id#70740, supplier#70742, items#70746]
Arguments: explode(items#70746), [internalUUID#70739, id#70740, supplier#70742], false, [item#70754]
(1492) Filter
Input [4]: [internalUUID#70739, id#70740, supplier#70742, item#70754]
Condition : ((((isnotnull(item#70754.deletionIndicator) AND isnotnull(item#70754.completeIndicator)) AND isnotnull(item#70754.returnIndicator)) AND ((NOT item#70754.deletionIndicator AND NOT item#70754.completeIndicator) AND NOT item#70754.returnIndicator)) AND ((isnotnull(item#70754.product.internalRefUUID) AND isnotnull(item#70754.plant.internalRefUUID)) AND isnotnull(item#70754.storageLocation.internalRefUUID)))
(1493) Project
Output [14]: [id#70740, internalUUID#70739, supplier#70742.internalRefUUID AS 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]
Input [4]: [internalUUID#70739, id#70740, supplier#70742, item#70754]
(1494) BroadcastExchange
Input [14]: [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]
Arguments: HashedRelationBroadcastMode(List(input[4, string, true], input[3, string, true], input[7, string, true]),false), [plan_id=32690]
(1495) BroadcastHashJoin
Left keys [3]: [product#69015, plant#69016, storageLocUuid#70864]
Right keys [3]: [product#70764, plant#70763, storageLocUuid#70767]
Join type: Inner
Join condition: None
(1496) Project
Output [17]: [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#69867, timezonecode#69080, filter(confirmations#70776, lambdafunction(((NOT lambda x_1#70965.deletionIndicator AND lambda x_1#70965.isRelevantForConfirmation) AND isnotnull(lambda x_1#70965.confirmedDeliveryAt)), lambda x_1#70965, false)) AS validConfirmations#70964]
Input [19]: [plant#69016, product#69015, timezonecode#69080, stockDatetime#69867, storageLocUuid#70864, 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]
(1497) AdaptiveSparkPlan
Output [17]: [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#69867, timezonecode#69080, validConfirmations#70964]
Arguments: isFinalPlan=true
(1498) Project
Output [11]: [id#70740, internalUUID#70739, plant#70763, product#70764, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, validConfirmations#70964, size(validConfirmations#70964, false) AS _w0#75047]
Input [10]: [id#70740, internalUUID#70739, plant#70763, product#70764, quantityDenominator#70772, quantityNumerator#70771, quantityUom#70768, quantityUomUuid#70769, scheduleLines#70774, validConfirmations#70964]
(1499) Exchange
Input [11]: [id#70740, internalUUID#70739, plant#70763, product#70764, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, validConfirmations#70964, _w0#75047]
Arguments: hashpartitioning(internalUUID#70739, 25), ENSURE_REQUIREMENTS, [plan_id=32756]
(1500) Sort
Input [11]: [id#70740, internalUUID#70739, plant#70763, product#70764, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, validConfirmations#70964, _w0#75047]
Arguments: [internalUUID#70739 ASC NULLS FIRST], false, 0
(1501) Window
Input [11]: [id#70740, internalUUID#70739, plant#70763, product#70764, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, validConfirmations#70964, _w0#75047]
Arguments: [sum(_w0#75047) windowspecdefinition(internalUUID#70739, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#75048L], [internalUUID#70739]
(1502) Project
Output [3]: [plant#70763, product#70764, filter(transform(CASE WHEN (_we0#75048L > 0) THEN transform(validConfirmations#70964, lambdafunction(struct(openQty, greatest((lambda x_12#75038.confirmedQuantity - coalesce(lambda x_12#75038.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_12#75038.confirmedDeliveryAt), lambda x_12#75038, false)) ELSE transform(scheduleLines#70774, lambdafunction(struct(openQty, greatest((lambda x_11#75040.quantity - coalesce(lambda x_11#75040.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_11#75040.deliveryAt), lambda x_11#75040, false)) END, lambdafunction(struct(documentId, id#70740, documentUuid, internalUUID#70739, openQty, lambda x_13#75042.openQty, openQtyInBaseUnit, ((lambda x_13#75042.openQty * quantityNumerator#70771) / quantityDenominator#70772), qtyUom, quantityUom#70768, qtyUomUuid, quantityUomUuid#70769, availabilityDatetime, lambda x_13#75042.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_13#75042, false)), lambdafunction(NOT (lambda x_14#75044.openQty = 0.0), lambda x_14#75044, false)) AS openGoodsMovements#75024]
Input [12]: [id#70740, internalUUID#70739, plant#70763, product#70764, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, validConfirmations#70964, _w0#75047, _we0#75048L]
(1503) ObjectHashAggregate
Input [3]: [plant#70763, product#70764, openGoodsMovements#75024]
Keys [2]: [product#70764, plant#70763]
Functions [1]: [partial_collect_list(openGoodsMovements#75024, 0, 0)]
Aggregate Attributes [1]: [buf#75602]
Results [3]: [product#70764, plant#70763, buf#75603]
(1504) Exchange
Input [3]: [product#70764, plant#70763, buf#75603]
Arguments: hashpartitioning(product#70764, plant#70763, 25), ENSURE_REQUIREMENTS, [plan_id=32769]
(1505) ObjectHashAggregate
Input [3]: [product#70764, plant#70763, buf#75603]
Keys [2]: [product#70764, plant#70763]
Functions [1]: [collect_list(openGoodsMovements#75024, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#75024, 0, 0)#75089]
Results [3]: [product#70764, plant#70763, flatten(collect_list(openGoodsMovements#75024, 0, 0)#75089) AS openGoodsMovements#75051]
(1506) Filter
Input [3]: [product#70764, plant#70763, openGoodsMovements#75051]
Condition : (size(openGoodsMovements#75051, false) > 0)
(1507) AdaptiveSparkPlan
Output [3]: [product#70764, plant#70763, openGoodsMovements#75051]
Arguments: isFinalPlan=true
(1508) Filter
Input [3]: [product#70764, plant#70763, openGoodsMovements#75051]
Condition : (isnotnull(product#70764) AND isnotnull(plant#70763))
(1509) Scan parquet
Output [3]: [product#75696, plant#75697, orderDateTime#75698]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1510) Filter
Input [3]: [product#75696, plant#75697, orderDateTime#75698]
Condition : isnotnull(plant#75697)
(1511) Exchange
Input [3]: [product#75696, plant#75697, orderDateTime#75698]
Arguments: hashpartitioning(product#75696, plant#75697, 25), REPARTITION_BY_NUM, [plan_id=36299]
(1512) Scan parquet
Output [4]: [plant#75702, product#75703, productionAspect#75705, systemId#75700]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1513) Project
Output [4]: [plant#75702.internalRefUUID AS _extract_internalRefUUID#79638, product#75703.internalRefUUID AS _extract_internalRefUUID#79637, productionAspect#75705.productMovementPlants.unitOfIssue.code AS _extract_code#79635, productionAspect#75705.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#79636]
Input [4]: [plant#75702, product#75703, productionAspect#75705, systemId#75700]
(1514) Exchange
Input [4]: [_extract_internalRefUUID#79638, _extract_internalRefUUID#79637, _extract_code#79635, _extract_internalRefUUID#79636]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35722]
(1515) Project
Output [4]: [_extract_code#79635, _extract_internalRefUUID#79636, _extract_internalRefUUID#79637, _extract_internalRefUUID#79638]
Input [4]: [_extract_internalRefUUID#79638, _extract_internalRefUUID#79637, _extract_code#79635, _extract_internalRefUUID#79636]
(1516) BroadcastExchange
Input [4]: [_extract_code#79635, _extract_internalRefUUID#79636, _extract_internalRefUUID#79637, _extract_internalRefUUID#79638]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=36797]
(1517) BroadcastHashJoin
Left keys [4]: [coalesce(product#75696, ), isnull(product#75696), coalesce(plant#75697, ), isnull(plant#75697)]
Right keys [4]: [coalesce(_extract_internalRefUUID#79637, ), isnull(_extract_internalRefUUID#79637), coalesce(_extract_internalRefUUID#79638, ), isnull(_extract_internalRefUUID#79638)]
Join type: LeftOuter
Join condition: None
(1518) Project
Output [5]: [product#75696, plant#75697, orderDateTime#75698, _extract_code#79635, _extract_internalRefUUID#79636]
Input [7]: [product#75696, plant#75697, orderDateTime#75698, _extract_code#79635, _extract_internalRefUUID#79636, _extract_internalRefUUID#79637, _extract_internalRefUUID#79638]
(1519) Scan parquet
Output [2]: [internalUUID#75710, systemId#75709]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1520) Project
Output [1]: [internalUUID#75710]
Input [2]: [internalUUID#75710, systemId#75709]
(1521) Exchange
Input [1]: [internalUUID#75710]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35728]
(1522) BroadcastExchange
Input [1]: [internalUUID#75710]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=36801]
(1523) BroadcastHashJoin
Left keys [2]: [coalesce(plant#75697, ), isnull(plant#75697)]
Right keys [2]: [coalesce(internalUUID#75710, ), isnull(internalUUID#75710)]
Join type: LeftOuter
Join condition: None
(1524) Project
Output [5]: [product#75696, plant#75697, orderDateTime#75698, _extract_code#79635, _extract_internalRefUUID#79636]
Input [6]: [product#75696, plant#75697, orderDateTime#75698, _extract_code#79635, _extract_internalRefUUID#79636, internalUUID#75710]
(1525) Scan parquet
Output [4]: [internalUUID#75724, baseUnitOfMeasure#75728, unitOfMeasureConversions#75730, systemId#75723]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1526) Filter
Input [4]: [internalUUID#75724, baseUnitOfMeasure#75728, unitOfMeasureConversions#75730, systemId#75723]
Condition : isnotnull(internalUUID#75724)
(1527) Project
Output [3]: [internalUUID#75724, baseUnitOfMeasure#75728, unitOfMeasureConversions#75730]
Input [4]: [internalUUID#75724, baseUnitOfMeasure#75728, unitOfMeasureConversions#75730, systemId#75723]
(1528) Exchange
Input [3]: [internalUUID#75724, baseUnitOfMeasure#75728, unitOfMeasureConversions#75730]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35736]
(1529) BroadcastExchange
Input [3]: [internalUUID#75724, baseUnitOfMeasure#75728, unitOfMeasureConversions#75730]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36805]
(1530) BroadcastHashJoin
Left keys [1]: [product#75696]
Right keys [1]: [internalUUID#75724]
Join type: LeftOuter
Join condition: None
(1531) Project
Output [4]: [product#75696, plant#75697, orderDateTime#75698, filter(unitOfMeasureConversions#75730, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#79635) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#79636)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#75728.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#75728.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#75739]
Input [8]: [product#75696, plant#75697, orderDateTime#75698, _extract_code#79635, _extract_internalRefUUID#79636, internalUUID#75724, baseUnitOfMeasure#75728, unitOfMeasureConversions#75730]
(1532) Generate
Input [4]: [product#75696, plant#75697, orderDateTime#75698, filteredUnitOfMeasureConversions#75739]
Arguments: explode(filteredUnitOfMeasureConversions#75739.quantityNumerator), [product#75696, plant#75697, orderDateTime#75698, filteredUnitOfMeasureConversions#75739], true, [quantityNumerator#75740]
(1533) Project
Output [4]: [product#75696, plant#75697, orderDateTime#75698, filteredUnitOfMeasureConversions#75739.quantityDenominator AS _extract_quantityDenominator#79308]
Input [5]: [product#75696, plant#75697, orderDateTime#75698, filteredUnitOfMeasureConversions#75739, quantityNumerator#75740]
(1534) Generate
Input [4]: [product#75696, plant#75697, orderDateTime#75698, _extract_quantityDenominator#79308]
Arguments: explode(_extract_quantityDenominator#79308), [product#75696, plant#75697, orderDateTime#75698], true, [quantityDenominator#75749]
(1535) Project
Output [3]: [product#75696, plant#75697, orderDateTime#75698]
Input [4]: [product#75696, plant#75697, orderDateTime#75698, quantityDenominator#75749]
(1536) Sort
Input [3]: [product#75696, plant#75697, orderDateTime#75698]
Arguments: [product#75696 ASC NULLS FIRST, plant#75697 ASC NULLS FIRST], false, 0
(1537) Scan parquet
Output [6]: [internalUUID#75767, product#75768, plant#75769, calculationDateTime#75770, stockQuantities#75771, systemId#75766]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(1538) Filter
Input [6]: [internalUUID#75767, product#75768, plant#75769, calculationDateTime#75770, stockQuantities#75771, systemId#75766]
Condition : (isnotnull(plant#75769.internalRefUUID) AND isnotnull(product#75768.internalRefUUID))
(1539) Project
Output [6]: [systemId#75766, internalUUID#75767, product#75768, plant#75769, calculationDateTime#75770, stockQuantities#75771]
Input [6]: [internalUUID#75767, product#75768, plant#75769, calculationDateTime#75770, stockQuantities#75771, systemId#75766]
(1540) Exchange
Input [6]: [systemId#75766, internalUUID#75767, product#75768, plant#75769, calculationDateTime#75770, stockQuantities#75771]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35746]
(1541) BroadcastExchange
Input [6]: [systemId#75766, internalUUID#75767, product#75768, plant#75769, calculationDateTime#75770, stockQuantities#75771]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=36836]
(1542) Scan parquet
Output [2]: [marketUnit#75773, distributionCenters#75779]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1543) Filter
Input [2]: [marketUnit#75773, distributionCenters#75779]
Condition : (((marketUnit#75773 <=> Daily_grocery) AND (size(distributionCenters#75779, true) > 0)) AND isnotnull(distributionCenters#75779))
(1544) Project
Output [1]: [distributionCenters#75779]
Input [2]: [marketUnit#75773, distributionCenters#75779]
(1545) Exchange
Input [1]: [distributionCenters#75779]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35750]
(1546) Generate
Input [1]: [distributionCenters#75779]
Arguments: explode(distributionCenters#75779), false, [distributionCenters#75807]
(1547) Filter
Input [1]: [distributionCenters#75807]
Condition : (((size(distributionCenters#75807.storageLocations, true) > 0) AND isnotnull(distributionCenters#75807.storageLocations)) AND isnotnull(distributionCenters#75807.internalRefUUID))
(1548) Project
Output [2]: [distributionCenters#75807.internalRefUUID AS _extract_internalRefUUID#79312, distributionCenters#75807.storageLocations AS _extract_storageLocations#79313]
Input [1]: [distributionCenters#75807]
(1549) Generate
Input [2]: [_extract_internalRefUUID#79312, _extract_storageLocations#79313]
Arguments: explode(_extract_storageLocations#79313), [_extract_internalRefUUID#79312], false, [storageLocations#75808]
(1550) Project
Output [3]: [_extract_internalRefUUID#79312 AS plantUuid#75810, storageLocations#75808.id AS storageLocId#75812, storageLocations#75808.internalRefUUID AS storageLocUuid#75813]
Input [2]: [_extract_internalRefUUID#79312, storageLocations#75808]
(1551) BroadcastExchange
Input [3]: [plantUuid#75810, storageLocId#75812, storageLocUuid#75813]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36832]
(1552) Scan parquet
Output [2]: [product#75814, plant#75815]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1553) Filter
Input [2]: [product#75814, plant#75815]
Condition : isnotnull(plant#75815)
(1554) Exchange
Input [2]: [product#75814, plant#75815]
Arguments: hashpartitioning(product#75814, plant#75815, 25), REPARTITION_BY_NUM, [plan_id=36310]
(1555) Scan parquet
Output [4]: [plant#75821, product#75822, productionAspect#75824, systemId#75819]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1556) Project
Output [4]: [plant#75821.internalRefUUID AS _extract_internalRefUUID#79642, product#75822.internalRefUUID AS _extract_internalRefUUID#79641, productionAspect#75824.productMovementPlants.unitOfIssue.code AS _extract_code#79639, productionAspect#75824.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#79640]
Input [4]: [plant#75821, product#75822, productionAspect#75824, systemId#75819]
(1557) Exchange
Input [4]: [_extract_internalRefUUID#79642, _extract_internalRefUUID#79641, _extract_code#79639, _extract_internalRefUUID#79640]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35762]
(1558) Project
Output [4]: [_extract_code#79639, _extract_internalRefUUID#79640, _extract_internalRefUUID#79641, _extract_internalRefUUID#79642]
Input [4]: [_extract_internalRefUUID#79642, _extract_internalRefUUID#79641, _extract_code#79639, _extract_internalRefUUID#79640]
(1559) BroadcastExchange
Input [4]: [_extract_code#79639, _extract_internalRefUUID#79640, _extract_internalRefUUID#79641, _extract_internalRefUUID#79642]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=36812]
(1560) BroadcastHashJoin
Left keys [4]: [coalesce(product#75814, ), isnull(product#75814), coalesce(plant#75815, ), isnull(plant#75815)]
Right keys [4]: [coalesce(_extract_internalRefUUID#79641, ), isnull(_extract_internalRefUUID#79641), coalesce(_extract_internalRefUUID#79642, ), isnull(_extract_internalRefUUID#79642)]
Join type: LeftOuter
Join condition: None
(1561) Project
Output [4]: [product#75814, plant#75815, _extract_code#79639, _extract_internalRefUUID#79640]
Input [6]: [product#75814, plant#75815, _extract_code#79639, _extract_internalRefUUID#79640, _extract_internalRefUUID#79641, _extract_internalRefUUID#79642]
(1562) Scan parquet
Output [2]: [internalUUID#75831, systemId#75830]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1563) Project
Output [1]: [internalUUID#75831]
Input [2]: [internalUUID#75831, systemId#75830]
(1564) Exchange
Input [1]: [internalUUID#75831]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35768]
(1565) BroadcastExchange
Input [1]: [internalUUID#75831]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=36816]
(1566) BroadcastHashJoin
Left keys [2]: [coalesce(plant#75815, ), isnull(plant#75815)]
Right keys [2]: [coalesce(internalUUID#75831, ), isnull(internalUUID#75831)]
Join type: LeftOuter
Join condition: None
(1567) Project
Output [4]: [product#75814, plant#75815, _extract_code#79639, _extract_internalRefUUID#79640]
Input [5]: [product#75814, plant#75815, _extract_code#79639, _extract_internalRefUUID#79640, internalUUID#75831]
(1568) Scan parquet
Output [4]: [internalUUID#75874, baseUnitOfMeasure#75878, unitOfMeasureConversions#75880, systemId#75873]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1569) Filter
Input [4]: [internalUUID#75874, baseUnitOfMeasure#75878, unitOfMeasureConversions#75880, systemId#75873]
Condition : isnotnull(internalUUID#75874)
(1570) Project
Output [3]: [internalUUID#75874, baseUnitOfMeasure#75878, unitOfMeasureConversions#75880]
Input [4]: [internalUUID#75874, baseUnitOfMeasure#75878, unitOfMeasureConversions#75880, systemId#75873]
(1571) Exchange
Input [3]: [internalUUID#75874, baseUnitOfMeasure#75878, unitOfMeasureConversions#75880]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35774]
(1572) BroadcastExchange
Input [3]: [internalUUID#75874, baseUnitOfMeasure#75878, unitOfMeasureConversions#75880]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36820]
(1573) BroadcastHashJoin
Left keys [1]: [product#75814]
Right keys [1]: [internalUUID#75874]
Join type: LeftOuter
Join condition: None
(1574) Project
Output [2]: [plant#75815, filter(unitOfMeasureConversions#75880, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#79639) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#79640)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#75878.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#75878.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#75895]
Input [7]: [product#75814, plant#75815, _extract_code#79639, _extract_internalRefUUID#79640, internalUUID#75874, baseUnitOfMeasure#75878, unitOfMeasureConversions#75880]
(1575) Generate
Input [2]: [plant#75815, filteredUnitOfMeasureConversions#75895]
Arguments: explode(filteredUnitOfMeasureConversions#75895.quantityNumerator), [plant#75815, filteredUnitOfMeasureConversions#75895], true, [quantityNumerator#75904]
(1576) Project
Output [2]: [plant#75815, filteredUnitOfMeasureConversions#75895.quantityDenominator AS _extract_quantityDenominator#79314]
Input [3]: [plant#75815, filteredUnitOfMeasureConversions#75895, quantityNumerator#75904]
(1577) Generate
Input [2]: [plant#75815, _extract_quantityDenominator#79314]
Arguments: explode(_extract_quantityDenominator#79314), [plant#75815], true, [quantityDenominator#75906]
(1578) Project
Output [1]: [plant#75815]
Input [2]: [plant#75815, quantityDenominator#75906]
(1579) HashAggregate
Input [1]: [plant#75815]
Keys [1]: [plant#75815]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#75815]
(1580) Exchange
Input [1]: [plant#75815]
Arguments: hashpartitioning(plant#75815, 25), ENSURE_REQUIREMENTS, [plan_id=36829]
(1581) HashAggregate
Input [1]: [plant#75815]
Keys [1]: [plant#75815]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#75815]
(1582) BroadcastHashJoin
Left keys [1]: [plantUuid#75810]
Right keys [1]: [plant#75815]
Join type: Inner
Join condition: None
(1583) Project
Output [3]: [plantUuid#75810, storageLocId#75812, storageLocUuid#75813]
Input [4]: [plantUuid#75810, storageLocId#75812, storageLocUuid#75813, plant#75815]
(1584) BroadcastHashJoin
Left keys [2]: [coalesce(plant#75769.internalRefUUID, ), isnull(plant#75769.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#75810, ), isnull(plantUuid#75810)]
Join type: Inner
Join condition: None
(1585) Generate
Input [9]: [systemId#75766, internalUUID#75767, product#75768, plant#75769, calculationDateTime#75770, stockQuantities#75771, plantUuid#75810, storageLocId#75812, storageLocUuid#75813]
Arguments: explode(filter(stockQuantities#75771, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#75813) AND (lambda x#69270.storageLocation.Id = storageLocId#75812)), lambda x#69270, false))), [systemId#75766, internalUUID#75767, product#75768, plant#75769, calculationDateTime#75770, plantUuid#75810], false, [stockQuantity#75936]
(1586) ObjectHashAggregate
Input [7]: [systemId#75766, internalUUID#75767, product#75768, plant#75769, calculationDateTime#75770, plantUuid#75810, stockQuantity#75936]
Keys [5]: [plantUuid#75810, internalUUID#75767, plant#75769, product#75768, systemId#75766]
Functions [2]: [partial_first(calculationDateTime#75770, false), partial_collect_list(stockQuantity#75936, 0, 0)]
Aggregate Attributes [3]: [first#81417, valueSet#81418, buf#81419]
Results [8]: [plantUuid#75810, internalUUID#75767, plant#75769, product#75768, systemId#75766, first#81420, valueSet#81421, buf#81422]
(1587) ObjectHashAggregate
Input [8]: [plantUuid#75810, internalUUID#75767, plant#75769, product#75768, systemId#75766, first#81420, valueSet#81421, buf#81422]
Keys [5]: [plantUuid#75810, internalUUID#75767, plant#75769, product#75768, systemId#75766]
Functions [2]: [first(calculationDateTime#75770, false), collect_list(stockQuantity#75936, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#75770)()#69321, collect_list(stockQuantity#75936, 0, 0)#69322]
Results [4]: [product#75768, plant#75769, first(calculationDateTime#75770)()#69321 AS calculationDateTime#75939, collect_list(stockQuantity#75936, 0, 0)#69322 AS stockQuantities#75940]
(1588) Filter
Input [4]: [product#75768, plant#75769, calculationDateTime#75939, stockQuantities#75940]
Condition : ((size(stockQuantities#75940, true) > 0) AND isnotnull(calculationDateTime#75939))
(1589) Generate
Input [4]: [product#75768, plant#75769, calculationDateTime#75939, stockQuantities#75940]
Arguments: explode(stockQuantities#75940), [product#75768, plant#75769, calculationDateTime#75939], false, [stockQuantity#75942]
(1590) Filter
Input [4]: [product#75768, plant#75769, calculationDateTime#75939, stockQuantity#75942]
Condition : (((isnotnull(stockQuantity#75942.specialStockIndicator.code) AND isnotnull(stockQuantity#75942.stockType.code)) AND (stockQuantity#75942.specialStockIndicator.code = )) AND (stockQuantity#75942.stockType.code = 01))
(1591) Project
Output [4]: [plant#75769.internalRefUUID AS plantUuid#75945, product#75768.internalRefUUID AS productUuid#75947, calculationDateTime#75939, stockQuantity#75942.storagelocation.id AS storageLocId#75948]
Input [4]: [product#75768, plant#75769, calculationDateTime#75939, stockQuantity#75942]
(1592) Exchange
Input [4]: [plantUuid#75945, productUuid#75947, calculationDateTime#75939, storageLocId#75948]
Arguments: hashpartitioning(productUuid#75947, plantUuid#75945, 25), ENSURE_REQUIREMENTS, [plan_id=36862]
(1593) Sort
Input [4]: [plantUuid#75945, productUuid#75947, calculationDateTime#75939, storageLocId#75948]
Arguments: [productUuid#75947 ASC NULLS FIRST, plantUuid#75945 ASC NULLS FIRST], false, 0
(1594) Scan parquet
Output [3]: [product#75953, plant#75954, orderDateTime#75955]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1595) Filter
Input [3]: [product#75953, plant#75954, orderDateTime#75955]
Condition : ((isnotnull(orderDateTime#75955) AND isnotnull(plant#75954)) AND isnotnull(product#75953))
(1596) Exchange
Input [3]: [product#75953, plant#75954, orderDateTime#75955]
Arguments: hashpartitioning(product#75953, plant#75954, 25), REPARTITION_BY_NUM, [plan_id=36333]
(1597) Scan parquet
Output [4]: [plant#75959, product#75960, productionAspect#75962, systemId#75957]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1598) Project
Output [4]: [plant#75959.internalRefUUID AS _extract_internalRefUUID#79643, product#75960.internalRefUUID AS _extract_internalRefUUID#79646, productionAspect#75962.productMovementPlants.unitOfIssue.code AS _extract_code#79644, productionAspect#75962.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#79645]
Input [4]: [plant#75959, product#75960, productionAspect#75962, systemId#75957]
(1599) Exchange
Input [4]: [_extract_internalRefUUID#79643, _extract_internalRefUUID#79646, _extract_code#79644, _extract_internalRefUUID#79645]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35803]
(1600) Project
Output [4]: [_extract_code#79644, _extract_internalRefUUID#79645, _extract_internalRefUUID#79646, _extract_internalRefUUID#79643]
Input [4]: [_extract_internalRefUUID#79643, _extract_internalRefUUID#79646, _extract_code#79644, _extract_internalRefUUID#79645]
(1601) BroadcastExchange
Input [4]: [_extract_code#79644, _extract_internalRefUUID#79645, _extract_internalRefUUID#79646, _extract_internalRefUUID#79643]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=36845]
(1602) BroadcastHashJoin
Left keys [4]: [coalesce(product#75953, ), isnull(product#75953), coalesce(plant#75954, ), isnull(plant#75954)]
Right keys [4]: [coalesce(_extract_internalRefUUID#79646, ), isnull(_extract_internalRefUUID#79646), coalesce(_extract_internalRefUUID#79643, ), isnull(_extract_internalRefUUID#79643)]
Join type: LeftOuter
Join condition: None
(1603) Project
Output [5]: [product#75953, plant#75954, orderDateTime#75955, _extract_code#79644, _extract_internalRefUUID#79645]
Input [7]: [product#75953, plant#75954, orderDateTime#75955, _extract_code#79644, _extract_internalRefUUID#79645, _extract_internalRefUUID#79646, _extract_internalRefUUID#79643]
(1604) Scan parquet
Output [2]: [internalUUID#75968, systemId#75967]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1605) Project
Output [1]: [internalUUID#75968]
Input [2]: [internalUUID#75968, systemId#75967]
(1606) Exchange
Input [1]: [internalUUID#75968]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35810]
(1607) BroadcastExchange
Input [1]: [internalUUID#75968]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=36849]
(1608) BroadcastHashJoin
Left keys [2]: [coalesce(plant#75954, ), isnull(plant#75954)]
Right keys [2]: [coalesce(internalUUID#75968, ), isnull(internalUUID#75968)]
Join type: LeftOuter
Join condition: None
(1609) Project
Output [5]: [product#75953, plant#75954, orderDateTime#75955, _extract_code#79644, _extract_internalRefUUID#79645]
Input [6]: [product#75953, plant#75954, orderDateTime#75955, _extract_code#79644, _extract_internalRefUUID#79645, internalUUID#75968]
(1610) Scan parquet
Output [4]: [internalUUID#75985, baseUnitOfMeasure#75989, unitOfMeasureConversions#75991, systemId#75984]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1611) Filter
Input [4]: [internalUUID#75985, baseUnitOfMeasure#75989, unitOfMeasureConversions#75991, systemId#75984]
Condition : isnotnull(internalUUID#75985)
(1612) Project
Output [3]: [internalUUID#75985, baseUnitOfMeasure#75989, unitOfMeasureConversions#75991]
Input [4]: [internalUUID#75985, baseUnitOfMeasure#75989, unitOfMeasureConversions#75991, systemId#75984]
(1613) Exchange
Input [3]: [internalUUID#75985, baseUnitOfMeasure#75989, unitOfMeasureConversions#75991]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35817]
(1614) BroadcastExchange
Input [3]: [internalUUID#75985, baseUnitOfMeasure#75989, unitOfMeasureConversions#75991]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36853]
(1615) BroadcastHashJoin
Left keys [1]: [product#75953]
Right keys [1]: [internalUUID#75985]
Join type: LeftOuter
Join condition: None
(1616) Project
Output [4]: [product#75953, plant#75954, orderDateTime#75955, filter(unitOfMeasureConversions#75991, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#79644) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#79645)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#75989.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#75989.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#76018]
Input [8]: [product#75953, plant#75954, orderDateTime#75955, _extract_code#79644, _extract_internalRefUUID#79645, internalUUID#75985, baseUnitOfMeasure#75989, unitOfMeasureConversions#75991]
(1617) Generate
Input [4]: [product#75953, plant#75954, orderDateTime#75955, filteredUnitOfMeasureConversions#76018]
Arguments: explode(filteredUnitOfMeasureConversions#76018.quantityNumerator), [product#75953, plant#75954, orderDateTime#75955, filteredUnitOfMeasureConversions#76018], true, [quantityNumerator#76019]
(1618) Project
Output [4]: [product#75953, plant#75954, orderDateTime#75955, filteredUnitOfMeasureConversions#76018.quantityDenominator AS _extract_quantityDenominator#79318]
Input [5]: [product#75953, plant#75954, orderDateTime#75955, filteredUnitOfMeasureConversions#76018, quantityNumerator#76019]
(1619) Generate
Input [4]: [product#75953, plant#75954, orderDateTime#75955, _extract_quantityDenominator#79318]
Arguments: explode(_extract_quantityDenominator#79318), [product#75953, plant#75954, orderDateTime#75955], true, [quantityDenominator#76032]
(1620) Project
Output [3]: [product#75953, plant#75954, orderDateTime#75955]
Input [4]: [product#75953, plant#75954, orderDateTime#75955, quantityDenominator#76032]
(1621) Sort
Input [3]: [product#75953, plant#75954, orderDateTime#75955]
Arguments: [product#75953 ASC NULLS FIRST, plant#75954 ASC NULLS FIRST], false, 0
(1622) SortMergeJoin
Left keys [2]: [productUuid#75947, plantUuid#75945]
Right keys [2]: [product#75953, plant#75954]
Join type: Inner
Join condition: (calculationDateTime#75939 <= orderDateTime#75955)
(1623) Project
Output [4]: [plantUuid#75945 AS plant#76050, productUuid#75947 AS product#76051, storageLocId#75948, calculationDateTime#75939]
Input [7]: [plantUuid#75945, productUuid#75947, calculationDateTime#75939, storageLocId#75948, product#75953, plant#75954, orderDateTime#75955]
(1624) Exchange
Input [4]: [plant#76050, product#76051, storageLocId#75948, calculationDateTime#75939]
Arguments: hashpartitioning(coalesce(plant#76050, ), isnull(plant#76050), coalesce(product#76051, ), isnull(product#76051), coalesce(storageLocId#75948, ), isnull(storageLocId#75948), coalesce(calculationDateTime#75939, 1970-01-01 00:00:00), isnull(calculationDateTime#75939), 25), ENSURE_REQUIREMENTS, [plan_id=36926]
(1625) Sort
Input [4]: [plant#76050, product#76051, storageLocId#75948, calculationDateTime#75939]
Arguments: [coalesce(plant#76050, ) ASC NULLS FIRST, isnull(plant#76050) ASC NULLS FIRST, coalesce(product#76051, ) ASC NULLS FIRST, isnull(product#76051) ASC NULLS FIRST, coalesce(storageLocId#75948, ) ASC NULLS FIRST, isnull(storageLocId#75948) ASC NULLS FIRST, coalesce(calculationDateTime#75939, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#75939) ASC NULLS FIRST], false, 0
(1626) Scan parquet
Output [6]: [internalUUID#76054, product#76055, plant#76056, calculationDateTime#76057, stockQuantities#76058, systemId#76053]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(1627) Filter
Input [6]: [internalUUID#76054, product#76055, plant#76056, calculationDateTime#76057, stockQuantities#76058, systemId#76053]
Condition : (isnotnull(plant#76056.internalRefUUID) AND isnotnull(product#76055.internalRefUUID))
(1628) Project
Output [6]: [systemId#76053, internalUUID#76054, product#76055, plant#76056, calculationDateTime#76057, stockQuantities#76058]
Input [6]: [internalUUID#76054, product#76055, plant#76056, calculationDateTime#76057, stockQuantities#76058, systemId#76053]
(1629) Exchange
Input [6]: [systemId#76053, internalUUID#76054, product#76055, plant#76056, calculationDateTime#76057, stockQuantities#76058]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35831]
(1630) BroadcastExchange
Input [6]: [systemId#76053, internalUUID#76054, product#76055, plant#76056, calculationDateTime#76057, stockQuantities#76058]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=36891]
(1631) Scan parquet
Output [2]: [marketUnit#76059, distributionCenters#76065]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1632) Filter
Input [2]: [marketUnit#76059, distributionCenters#76065]
Condition : (((marketUnit#76059 <=> Daily_grocery) AND (size(distributionCenters#76065, true) > 0)) AND isnotnull(distributionCenters#76065))
(1633) Project
Output [1]: [distributionCenters#76065]
Input [2]: [marketUnit#76059, distributionCenters#76065]
(1634) Exchange
Input [1]: [distributionCenters#76065]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35835]
(1635) Generate
Input [1]: [distributionCenters#76065]
Arguments: explode(distributionCenters#76065), false, [distributionCenters#76082]
(1636) Filter
Input [1]: [distributionCenters#76082]
Condition : (((size(distributionCenters#76082.storageLocations, true) > 0) AND isnotnull(distributionCenters#76082.storageLocations)) AND isnotnull(distributionCenters#76082.internalRefUUID))
(1637) Project
Output [2]: [distributionCenters#76082.internalRefUUID AS _extract_internalRefUUID#79322, distributionCenters#76082.storageLocations AS _extract_storageLocations#79323]
Input [1]: [distributionCenters#76082]
(1638) Generate
Input [2]: [_extract_internalRefUUID#79322, _extract_storageLocations#79323]
Arguments: explode(_extract_storageLocations#79323), [_extract_internalRefUUID#79322], false, [storageLocations#76084]
(1639) Project
Output [3]: [_extract_internalRefUUID#79322 AS plantUuid#76086, storageLocations#76084.id AS storageLocId#76087, storageLocations#76084.internalRefUUID AS storageLocUuid#76088]
Input [2]: [_extract_internalRefUUID#79322, storageLocations#76084]
(1640) BroadcastExchange
Input [3]: [plantUuid#76086, storageLocId#76087, storageLocUuid#76088]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36887]
(1641) Scan parquet
Output [2]: [product#76089, plant#76090]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1642) Filter
Input [2]: [product#76089, plant#76090]
Condition : isnotnull(plant#76090)
(1643) Exchange
Input [2]: [product#76089, plant#76090]
Arguments: hashpartitioning(product#76089, plant#76090, 25), REPARTITION_BY_NUM, [plan_id=36346]
(1644) Scan parquet
Output [4]: [plant#76096, product#76097, productionAspect#76099, systemId#76094]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1645) Project
Output [4]: [plant#76096.internalRefUUID AS _extract_internalRefUUID#79647, product#76097.internalRefUUID AS _extract_internalRefUUID#79650, productionAspect#76099.productMovementPlants.unitOfIssue.code AS _extract_code#79648, productionAspect#76099.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#79649]
Input [4]: [plant#76096, product#76097, productionAspect#76099, systemId#76094]
(1646) Exchange
Input [4]: [_extract_internalRefUUID#79647, _extract_internalRefUUID#79650, _extract_code#79648, _extract_internalRefUUID#79649]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35847]
(1647) Project
Output [4]: [_extract_code#79648, _extract_internalRefUUID#79649, _extract_internalRefUUID#79650, _extract_internalRefUUID#79647]
Input [4]: [_extract_internalRefUUID#79647, _extract_internalRefUUID#79650, _extract_code#79648, _extract_internalRefUUID#79649]
(1648) BroadcastExchange
Input [4]: [_extract_code#79648, _extract_internalRefUUID#79649, _extract_internalRefUUID#79650, _extract_internalRefUUID#79647]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=36867]
(1649) BroadcastHashJoin
Left keys [4]: [coalesce(product#76089, ), isnull(product#76089), coalesce(plant#76090, ), isnull(plant#76090)]
Right keys [4]: [coalesce(_extract_internalRefUUID#79650, ), isnull(_extract_internalRefUUID#79650), coalesce(_extract_internalRefUUID#79647, ), isnull(_extract_internalRefUUID#79647)]
Join type: LeftOuter
Join condition: None
(1650) Project
Output [4]: [product#76089, plant#76090, _extract_code#79648, _extract_internalRefUUID#79649]
Input [6]: [product#76089, plant#76090, _extract_code#79648, _extract_internalRefUUID#79649, _extract_internalRefUUID#79650, _extract_internalRefUUID#79647]
(1651) Scan parquet
Output [2]: [internalUUID#76134, systemId#76133]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1652) Project
Output [1]: [internalUUID#76134]
Input [2]: [internalUUID#76134, systemId#76133]
(1653) Exchange
Input [1]: [internalUUID#76134]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35853]
(1654) BroadcastExchange
Input [1]: [internalUUID#76134]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=36871]
(1655) BroadcastHashJoin
Left keys [2]: [coalesce(plant#76090, ), isnull(plant#76090)]
Right keys [2]: [coalesce(internalUUID#76134, ), isnull(internalUUID#76134)]
Join type: LeftOuter
Join condition: None
(1656) Project
Output [4]: [product#76089, plant#76090, _extract_code#79648, _extract_internalRefUUID#79649]
Input [5]: [product#76089, plant#76090, _extract_code#79648, _extract_internalRefUUID#79649, internalUUID#76134]
(1657) Scan parquet
Output [4]: [internalUUID#76152, baseUnitOfMeasure#76156, unitOfMeasureConversions#76158, systemId#76151]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1658) Filter
Input [4]: [internalUUID#76152, baseUnitOfMeasure#76156, unitOfMeasureConversions#76158, systemId#76151]
Condition : isnotnull(internalUUID#76152)
(1659) Project
Output [3]: [internalUUID#76152, baseUnitOfMeasure#76156, unitOfMeasureConversions#76158]
Input [4]: [internalUUID#76152, baseUnitOfMeasure#76156, unitOfMeasureConversions#76158, systemId#76151]
(1660) Exchange
Input [3]: [internalUUID#76152, baseUnitOfMeasure#76156, unitOfMeasureConversions#76158]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35859]
(1661) BroadcastExchange
Input [3]: [internalUUID#76152, baseUnitOfMeasure#76156, unitOfMeasureConversions#76158]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36875]
(1662) BroadcastHashJoin
Left keys [1]: [product#76089]
Right keys [1]: [internalUUID#76152]
Join type: LeftOuter
Join condition: None
(1663) Project
Output [2]: [plant#76090, filter(unitOfMeasureConversions#76158, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#79648) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#79649)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#76156.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76156.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#76178]
Input [7]: [product#76089, plant#76090, _extract_code#79648, _extract_internalRefUUID#79649, internalUUID#76152, baseUnitOfMeasure#76156, unitOfMeasureConversions#76158]
(1664) Generate
Input [2]: [plant#76090, filteredUnitOfMeasureConversions#76178]
Arguments: explode(filteredUnitOfMeasureConversions#76178.quantityNumerator), [plant#76090, filteredUnitOfMeasureConversions#76178], true, [quantityNumerator#76179]
(1665) Project
Output [2]: [plant#76090, filteredUnitOfMeasureConversions#76178.quantityDenominator AS _extract_quantityDenominator#79324]
Input [3]: [plant#76090, filteredUnitOfMeasureConversions#76178, quantityNumerator#76179]
(1666) Generate
Input [2]: [plant#76090, _extract_quantityDenominator#79324]
Arguments: explode(_extract_quantityDenominator#79324), [plant#76090], true, [quantityDenominator#76193]
(1667) Project
Output [1]: [plant#76090]
Input [2]: [plant#76090, quantityDenominator#76193]
(1668) HashAggregate
Input [1]: [plant#76090]
Keys [1]: [plant#76090]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#76090]
(1669) Exchange
Input [1]: [plant#76090]
Arguments: hashpartitioning(plant#76090, 25), ENSURE_REQUIREMENTS, [plan_id=36884]
(1670) HashAggregate
Input [1]: [plant#76090]
Keys [1]: [plant#76090]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#76090]
(1671) BroadcastHashJoin
Left keys [1]: [plantUuid#76086]
Right keys [1]: [plant#76090]
Join type: Inner
Join condition: None
(1672) Project
Output [3]: [plantUuid#76086, storageLocId#76087, storageLocUuid#76088]
Input [4]: [plantUuid#76086, storageLocId#76087, storageLocUuid#76088, plant#76090]
(1673) BroadcastHashJoin
Left keys [2]: [coalesce(plant#76056.internalRefUUID, ), isnull(plant#76056.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#76086, ), isnull(plantUuid#76086)]
Join type: Inner
Join condition: None
(1674) Generate
Input [9]: [systemId#76053, internalUUID#76054, product#76055, plant#76056, calculationDateTime#76057, stockQuantities#76058, plantUuid#76086, storageLocId#76087, storageLocUuid#76088]
Arguments: explode(filter(stockQuantities#76058, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#76088) AND (lambda x#69270.storageLocation.Id = storageLocId#76087)), lambda x#69270, false))), [systemId#76053, internalUUID#76054, product#76055, plant#76056, calculationDateTime#76057, plantUuid#76086], false, [stockQuantity#76212]
(1675) ObjectHashAggregate
Input [7]: [systemId#76053, internalUUID#76054, product#76055, plant#76056, calculationDateTime#76057, plantUuid#76086, stockQuantity#76212]
Keys [5]: [plantUuid#76086, internalUUID#76054, plant#76056, product#76055, systemId#76053]
Functions [2]: [partial_first(calculationDateTime#76057, false), partial_collect_list(stockQuantity#76212, 0, 0)]
Aggregate Attributes [3]: [first#81431, valueSet#81432, buf#81433]
Results [8]: [plantUuid#76086, internalUUID#76054, plant#76056, product#76055, systemId#76053, first#81434, valueSet#81435, buf#81436]
(1676) ObjectHashAggregate
Input [8]: [plantUuid#76086, internalUUID#76054, plant#76056, product#76055, systemId#76053, first#81434, valueSet#81435, buf#81436]
Keys [5]: [plantUuid#76086, internalUUID#76054, plant#76056, product#76055, systemId#76053]
Functions [2]: [first(calculationDateTime#76057, false), collect_list(stockQuantity#76212, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#76057)()#69321, collect_list(stockQuantity#76212, 0, 0)#69322]
Results [4]: [product#76055, plant#76056, first(calculationDateTime#76057)()#69321 AS calculationDateTime#76215, collect_list(stockQuantity#76212, 0, 0)#69322 AS stockQuantities#76216]
(1677) Filter
Input [4]: [product#76055, plant#76056, calculationDateTime#76215, stockQuantities#76216]
Condition : ((size(stockQuantities#76216, true) > 0) AND isnotnull(calculationDateTime#76215))
(1678) Generate
Input [4]: [product#76055, plant#76056, calculationDateTime#76215, stockQuantities#76216]
Arguments: explode(stockQuantities#76216), [product#76055, plant#76056, calculationDateTime#76215], false, [stockQuantity#76217]
(1679) Filter
Input [4]: [product#76055, plant#76056, calculationDateTime#76215, stockQuantity#76217]
Condition : (((isnotnull(stockQuantity#76217.specialStockIndicator.code) AND isnotnull(stockQuantity#76217.stockType.code)) AND (stockQuantity#76217.specialStockIndicator.code = )) AND (stockQuantity#76217.stockType.code = 01))
(1680) Project
Output [4]: [plant#76056.internalRefUUID AS plantUuid#76220, product#76055.internalRefUUID AS productUuid#76222, calculationDateTime#76215, stockQuantity#76217.storagelocation.id AS storageLocId#76223]
Input [4]: [product#76055, plant#76056, calculationDateTime#76215, stockQuantity#76217]
(1681) Exchange
Input [4]: [plantUuid#76220, productUuid#76222, calculationDateTime#76215, storageLocId#76223]
Arguments: hashpartitioning(productUuid#76222, plantUuid#76220, 25), ENSURE_REQUIREMENTS, [plan_id=36917]
(1682) Sort
Input [4]: [plantUuid#76220, productUuid#76222, calculationDateTime#76215, storageLocId#76223]
Arguments: [productUuid#76222 ASC NULLS FIRST, plantUuid#76220 ASC NULLS FIRST], false, 0
(1683) Scan parquet
Output [3]: [product#76230, plant#76231, orderDateTime#76232]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1684) Filter
Input [3]: [product#76230, plant#76231, orderDateTime#76232]
Condition : ((isnotnull(orderDateTime#76232) AND isnotnull(plant#76231)) AND isnotnull(product#76230))
(1685) Exchange
Input [3]: [product#76230, plant#76231, orderDateTime#76232]
Arguments: hashpartitioning(product#76230, plant#76231, 25), REPARTITION_BY_NUM, [plan_id=36369]
(1686) Scan parquet
Output [4]: [plant#76236, product#76237, productionAspect#76239, systemId#76234]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1687) Project
Output [4]: [plant#76236.internalRefUUID AS _extract_internalRefUUID#79651, product#76237.internalRefUUID AS _extract_internalRefUUID#79652, productionAspect#76239.productMovementPlants.unitOfIssue.code AS _extract_code#79653, productionAspect#76239.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#79654]
Input [4]: [plant#76236, product#76237, productionAspect#76239, systemId#76234]
(1688) Exchange
Input [4]: [_extract_internalRefUUID#79651, _extract_internalRefUUID#79652, _extract_code#79653, _extract_internalRefUUID#79654]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35884]
(1689) Project
Output [4]: [_extract_code#79653, _extract_internalRefUUID#79654, _extract_internalRefUUID#79652, _extract_internalRefUUID#79651]
Input [4]: [_extract_internalRefUUID#79651, _extract_internalRefUUID#79652, _extract_code#79653, _extract_internalRefUUID#79654]
(1690) BroadcastExchange
Input [4]: [_extract_code#79653, _extract_internalRefUUID#79654, _extract_internalRefUUID#79652, _extract_internalRefUUID#79651]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=36900]
(1691) BroadcastHashJoin
Left keys [4]: [coalesce(product#76230, ), isnull(product#76230), coalesce(plant#76231, ), isnull(plant#76231)]
Right keys [4]: [coalesce(_extract_internalRefUUID#79652, ), isnull(_extract_internalRefUUID#79652), coalesce(_extract_internalRefUUID#79651, ), isnull(_extract_internalRefUUID#79651)]
Join type: LeftOuter
Join condition: None
(1692) Project
Output [5]: [product#76230, plant#76231, orderDateTime#76232, _extract_code#79653, _extract_internalRefUUID#79654]
Input [7]: [product#76230, plant#76231, orderDateTime#76232, _extract_code#79653, _extract_internalRefUUID#79654, _extract_internalRefUUID#79652, _extract_internalRefUUID#79651]
(1693) Scan parquet
Output [2]: [internalUUID#76266, systemId#76265]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1694) Project
Output [1]: [internalUUID#76266]
Input [2]: [internalUUID#76266, systemId#76265]
(1695) Exchange
Input [1]: [internalUUID#76266]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35890]
(1696) BroadcastExchange
Input [1]: [internalUUID#76266]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=36904]
(1697) BroadcastHashJoin
Left keys [2]: [coalesce(plant#76231, ), isnull(plant#76231)]
Right keys [2]: [coalesce(internalUUID#76266, ), isnull(internalUUID#76266)]
Join type: LeftOuter
Join condition: None
(1698) Project
Output [5]: [product#76230, plant#76231, orderDateTime#76232, _extract_code#79653, _extract_internalRefUUID#79654]
Input [6]: [product#76230, plant#76231, orderDateTime#76232, _extract_code#79653, _extract_internalRefUUID#79654, internalUUID#76266]
(1699) Scan parquet
Output [4]: [internalUUID#76281, baseUnitOfMeasure#76285, unitOfMeasureConversions#76287, systemId#76280]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1700) Filter
Input [4]: [internalUUID#76281, baseUnitOfMeasure#76285, unitOfMeasureConversions#76287, systemId#76280]
Condition : isnotnull(internalUUID#76281)
(1701) Project
Output [3]: [internalUUID#76281, baseUnitOfMeasure#76285, unitOfMeasureConversions#76287]
Input [4]: [internalUUID#76281, baseUnitOfMeasure#76285, unitOfMeasureConversions#76287, systemId#76280]
(1702) Exchange
Input [3]: [internalUUID#76281, baseUnitOfMeasure#76285, unitOfMeasureConversions#76287]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35896]
(1703) BroadcastExchange
Input [3]: [internalUUID#76281, baseUnitOfMeasure#76285, unitOfMeasureConversions#76287]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36908]
(1704) BroadcastHashJoin
Left keys [1]: [product#76230]
Right keys [1]: [internalUUID#76281]
Join type: LeftOuter
Join condition: None
(1705) Project
Output [4]: [product#76230, plant#76231, orderDateTime#76232, filter(unitOfMeasureConversions#76287, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#79653) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#79654)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#76285.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76285.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#76306]
Input [8]: [product#76230, plant#76231, orderDateTime#76232, _extract_code#79653, _extract_internalRefUUID#79654, internalUUID#76281, baseUnitOfMeasure#76285, unitOfMeasureConversions#76287]
(1706) Generate
Input [4]: [product#76230, plant#76231, orderDateTime#76232, filteredUnitOfMeasureConversions#76306]
Arguments: explode(filteredUnitOfMeasureConversions#76306.quantityNumerator), [product#76230, plant#76231, orderDateTime#76232, filteredUnitOfMeasureConversions#76306], true, [quantityNumerator#76319]
(1707) Project
Output [4]: [product#76230, plant#76231, orderDateTime#76232, filteredUnitOfMeasureConversions#76306.quantityDenominator AS _extract_quantityDenominator#79328]
Input [5]: [product#76230, plant#76231, orderDateTime#76232, filteredUnitOfMeasureConversions#76306, quantityNumerator#76319]
(1708) Generate
Input [4]: [product#76230, plant#76231, orderDateTime#76232, _extract_quantityDenominator#79328]
Arguments: explode(_extract_quantityDenominator#79328), [product#76230, plant#76231, orderDateTime#76232], true, [quantityDenominator#76320]
(1709) Project
Output [3]: [product#76230, plant#76231, orderDateTime#76232]
Input [4]: [product#76230, plant#76231, orderDateTime#76232, quantityDenominator#76320]
(1710) Sort
Input [3]: [product#76230, plant#76231, orderDateTime#76232]
Arguments: [product#76230 ASC NULLS FIRST, plant#76231 ASC NULLS FIRST], false, 0
(1711) SortMergeJoin
Left keys [2]: [productUuid#76222, plantUuid#76220]
Right keys [2]: [product#76230, plant#76231]
Join type: Inner
Join condition: (calculationDateTime#76215 <= orderDateTime#76232)
(1712) Project
Output [4]: [plantUuid#76220 AS plant#76326, productUuid#76222 AS product#76327, storageLocId#76223, calculationDateTime#76215]
Input [7]: [plantUuid#76220, productUuid#76222, calculationDateTime#76215, storageLocId#76223, product#76230, plant#76231, orderDateTime#76232]
(1713) HashAggregate
Input [4]: [plant#76326, product#76327, storageLocId#76223, calculationDateTime#76215]
Keys [3]: [plant#76326, product#76327, storageLocId#76223]
Functions [1]: [partial_max(calculationDateTime#76215)]
Aggregate Attributes [1]: [max#81428]
Results [4]: [plant#76326, product#76327, storageLocId#76223, max#81429]
(1714) HashAggregate
Input [4]: [plant#76326, product#76327, storageLocId#76223, max#81429]
Keys [3]: [plant#76326, product#76327, storageLocId#76223]
Functions [1]: [max(calculationDateTime#76215)]
Aggregate Attributes [1]: [max(calculationDateTime#76215)#69456]
Results [4]: [plant#76326, product#76327, storageLocId#76223, max(calculationDateTime#76215)#69456 AS max_calc_datetime#76328]
(1715) Exchange
Input [4]: [plant#76326, product#76327, storageLocId#76223, max_calc_datetime#76328]
Arguments: hashpartitioning(coalesce(plant#76326, ), isnull(plant#76326), coalesce(product#76327, ), isnull(product#76327), coalesce(storageLocId#76223, ), isnull(storageLocId#76223), coalesce(max_calc_datetime#76328, 1970-01-01 00:00:00), isnull(max_calc_datetime#76328), 25), ENSURE_REQUIREMENTS, [plan_id=36927]
(1716) Sort
Input [4]: [plant#76326, product#76327, storageLocId#76223, max_calc_datetime#76328]
Arguments: [coalesce(plant#76326, ) ASC NULLS FIRST, isnull(plant#76326) ASC NULLS FIRST, coalesce(product#76327, ) ASC NULLS FIRST, isnull(product#76327) ASC NULLS FIRST, coalesce(storageLocId#76223, ) ASC NULLS FIRST, isnull(storageLocId#76223) ASC NULLS FIRST, coalesce(max_calc_datetime#76328, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#76328) ASC NULLS FIRST], false, 0
(1717) SortMergeJoin
Left keys [8]: [coalesce(plant#76050, ), isnull(plant#76050), coalesce(product#76051, ), isnull(product#76051), coalesce(storageLocId#75948, ), isnull(storageLocId#75948), coalesce(calculationDateTime#75939, 1970-01-01 00:00:00), isnull(calculationDateTime#75939)]
Right keys [8]: [coalesce(plant#76326, ), isnull(plant#76326), coalesce(product#76327, ), isnull(product#76327), coalesce(storageLocId#76223, ), isnull(storageLocId#76223), coalesce(max_calc_datetime#76328, 1970-01-01 00:00:00), isnull(max_calc_datetime#76328)]
Join type: Inner
Join condition: None
(1718) Project
Output [3]: [plant#76050, product#76051, calculationDateTime#75939]
Input [8]: [plant#76050, product#76051, storageLocId#75948, calculationDateTime#75939, plant#76326, product#76327, storageLocId#76223, max_calc_datetime#76328]
(1719) HashAggregate
Input [3]: [plant#76050, product#76051, calculationDateTime#75939]
Keys [2]: [product#76051, plant#76050]
Functions [1]: [partial_min(calculationDateTime#75939)]
Aggregate Attributes [1]: [min#81415]
Results [3]: [product#76051, plant#76050, min#81416]
(1720) Exchange
Input [3]: [product#76051, plant#76050, min#81416]
Arguments: hashpartitioning(product#76051, plant#76050, 25), ENSURE_REQUIREMENTS, [plan_id=36934]
(1721) HashAggregate
Input [3]: [product#76051, plant#76050, min#81416]
Keys [2]: [product#76051, plant#76050]
Functions [1]: [min(calculationDateTime#75939)]
Aggregate Attributes [1]: [min(calculationDateTime#75939)#69768]
Results [3]: [product#76051, plant#76050, min(calculationDateTime#75939)#69768 AS minCalculationDateTime#76330]
(1722) Sort
Input [3]: [product#76051, plant#76050, minCalculationDateTime#76330]
Arguments: [product#76051 ASC NULLS FIRST, plant#76050 ASC NULLS FIRST], false, 0
(1723) SortMergeJoin
Left keys [2]: [product#75696, plant#75697]
Right keys [2]: [product#76051, plant#76050]
Join type: LeftOuter
Join condition: None
(1724) Project
Output [3]: [product#75696, plant#75697, CASE WHEN isnotnull(minCalculationDateTime#76330) THEN minCalculationDateTime#76330 ELSE orderDateTime#75698 END AS stockDatetime#76334]
Input [6]: [product#75696, plant#75697, orderDateTime#75698, product#76051, plant#76050, minCalculationDateTime#76330]
(1725) Exchange
Input [3]: [product#75696, plant#75697, stockDatetime#76334]
Arguments: hashpartitioning(coalesce(plant#75697, ), isnull(plant#75697), coalesce(product#75696, ), isnull(product#75696), 25), ENSURE_REQUIREMENTS, [plan_id=37098]
(1726) Sort
Input [3]: [product#75696, plant#75697, stockDatetime#76334]
Arguments: [coalesce(plant#75697, ) ASC NULLS FIRST, isnull(plant#75697) ASC NULLS FIRST, coalesce(product#75696, ) ASC NULLS FIRST, isnull(product#75696) ASC NULLS FIRST], false, 0
(1727) Scan parquet
Output [3]: [product#76340, plant#76341, orderDateTime#76342]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1728) Exchange
Input [3]: [product#76340, plant#76341, orderDateTime#76342]
Arguments: hashpartitioning(product#76340, plant#76341, 25), REPARTITION_BY_NUM, [plan_id=35914]
(1729) Scan parquet
Output [8]: [internalUUID#76345, plant#76346, product#76347, blockedForReplenishmentStartingFrom#76348, productionAspect#76349, salesPlant#76350, listing#76351, systemId#76344]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>
(1730) Project
Output [8]: [systemId#76344, internalUUID#76345, plant#76346, product#76347, blockedForReplenishmentStartingFrom#76348, productionAspect#76349, salesPlant#76350, listing#76351]
Input [8]: [internalUUID#76345, plant#76346, product#76347, blockedForReplenishmentStartingFrom#76348, productionAspect#76349, salesPlant#76350, listing#76351, systemId#76344]
(1731) Exchange
Input [8]: [systemId#76344, internalUUID#76345, plant#76346, product#76347, blockedForReplenishmentStartingFrom#76348, productionAspect#76349, salesPlant#76350, listing#76351]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35917]
(1732) Project
Output [1]: [struct(systemId, systemId#76344, internalUUID, internalUUID#76345, plant, plant#76346, product, product#76347, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#76348, productionAspect, productionAspect#76349, salesPlant, salesPlant#76350, listing, listing#76351) AS productPlant#76354]
Input [8]: [systemId#76344, internalUUID#76345, plant#76346, product#76347, blockedForReplenishmentStartingFrom#76348, productionAspect#76349, salesPlant#76350, listing#76351]
(1733) BroadcastExchange
Input [1]: [productPlant#76354]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=36942]
(1734) BroadcastHashJoin
Left keys [4]: [coalesce(product#76340, ), isnull(product#76340), coalesce(plant#76341, ), isnull(plant#76341)]
Right keys [4]: [coalesce(productPlant#76354.product.internalRefUUID, ), isnull(productPlant#76354.product.internalRefUUID), coalesce(productPlant#76354.plant.internalRefUUID, ), isnull(productPlant#76354.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1735) Scan parquet
Output [3]: [internalUUID#76357, address#76363, systemId#76356]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string,address:struct<timeZone:struct<code:string>>>
(1736) Project
Output [2]: [internalUUID#76357, address#76363.timeZone.code AS timezonecode#76368]
Input [3]: [internalUUID#76357, address#76363, systemId#76356]
(1737) Exchange
Input [2]: [internalUUID#76357, timezonecode#76368]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35922]
(1738) BroadcastExchange
Input [2]: [internalUUID#76357, timezonecode#76368]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=36945]
(1739) BroadcastHashJoin
Left keys [2]: [coalesce(plant#76341, ), isnull(plant#76341)]
Right keys [2]: [coalesce(internalUUID#76357, ), isnull(internalUUID#76357)]
Join type: LeftOuter
Join condition: None
(1740) Project
Output [5]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, CASE WHEN isnotnull(timezonecode#76368) THEN timezonecode#76368 ELSE UTC END AS timezonecode#76371]
Input [6]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, internalUUID#76357, timezonecode#76368]
(1741) Scan parquet
Output [4]: [internalUUID#76374, baseUnitOfMeasure#76378, unitOfMeasureConversions#76380, systemId#76373]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1742) Filter
Input [4]: [internalUUID#76374, baseUnitOfMeasure#76378, unitOfMeasureConversions#76380, systemId#76373]
Condition : isnotnull(internalUUID#76374)
(1743) Project
Output [3]: [internalUUID#76374, baseUnitOfMeasure#76378, unitOfMeasureConversions#76380]
Input [4]: [internalUUID#76374, baseUnitOfMeasure#76378, unitOfMeasureConversions#76380, systemId#76373]
(1744) Exchange
Input [3]: [internalUUID#76374, baseUnitOfMeasure#76378, unitOfMeasureConversions#76380]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35928]
(1745) BroadcastExchange
Input [3]: [internalUUID#76374, baseUnitOfMeasure#76378, unitOfMeasureConversions#76380]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36949]
(1746) BroadcastHashJoin
Left keys [1]: [product#76340]
Right keys [1]: [internalUUID#76374]
Join type: LeftOuter
Join condition: None
(1747) Project
Output [6]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, filter(unitOfMeasureConversions#76380, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#76354.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#76354.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#76378.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76378.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#76411]
Input [8]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, internalUUID#76374, baseUnitOfMeasure#76378, unitOfMeasureConversions#76380]
(1748) Project
Output [7]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, filteredUnitOfMeasureConversions#76411.quantityDenominator AS _extract_quantityDenominator#79440, filteredUnitOfMeasureConversions#76411.quantityNumerator AS _extract_quantityNumerator#79441]
Input [6]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, filteredUnitOfMeasureConversions#76411]
(1749) Generate
Input [7]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, _extract_quantityDenominator#79440, _extract_quantityNumerator#79441]
Arguments: explode(_extract_quantityNumerator#79441), [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, _extract_quantityDenominator#79440], true, [quantityNumerator#76412]
(1750) Generate
Input [7]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, _extract_quantityDenominator#79440, quantityNumerator#76412]
Arguments: explode(_extract_quantityDenominator#79440), [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, quantityNumerator#76412], true, [quantityDenominator#76426]
(1751) Project
Output [6]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, (cast(quantityNumerator#76412 as double) / cast(quantityDenominator#76426 as double)) AS outboundUnit#76427]
Input [7]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, quantityNumerator#76412, quantityDenominator#76426]
(1752) Project
Output [6]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, CASE WHEN (isnull(outboundUnit#76427) OR (outboundUnit#76427 <= 0.0)) THEN 1.0 ELSE outboundUnit#76427 END AS outboundUnit#76430]
Input [6]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76427]
(1753) Sort
Input [6]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76430]
Arguments: [product#76340 ASC NULLS FIRST, plant#76341 ASC NULLS FIRST], false, 0
(1754) Scan parquet
Output [6]: [internalUUID#76433, product#76434, plant#76435, calculationDateTime#76436, stockQuantities#76437, systemId#76432]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(1755) Filter
Input [6]: [internalUUID#76433, product#76434, plant#76435, calculationDateTime#76436, stockQuantities#76437, systemId#76432]
Condition : (isnotnull(plant#76435.internalRefUUID) AND isnotnull(product#76434.internalRefUUID))
(1756) Project
Output [6]: [systemId#76432, internalUUID#76433, product#76434, plant#76435, calculationDateTime#76436, stockQuantities#76437]
Input [6]: [internalUUID#76433, product#76434, plant#76435, calculationDateTime#76436, stockQuantities#76437, systemId#76432]
(1757) Exchange
Input [6]: [systemId#76432, internalUUID#76433, product#76434, plant#76435, calculationDateTime#76436, stockQuantities#76437]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35939]
(1758) BroadcastExchange
Input [6]: [systemId#76432, internalUUID#76433, product#76434, plant#76435, calculationDateTime#76436, stockQuantities#76437]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=36981]
(1759) Scan parquet
Output [2]: [marketUnit#76438, distributionCenters#76444]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1760) Filter
Input [2]: [marketUnit#76438, distributionCenters#76444]
Condition : (((marketUnit#76438 <=> Daily_grocery) AND (size(distributionCenters#76444, true) > 0)) AND isnotnull(distributionCenters#76444))
(1761) Project
Output [1]: [distributionCenters#76444]
Input [2]: [marketUnit#76438, distributionCenters#76444]
(1762) Exchange
Input [1]: [distributionCenters#76444]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35943]
(1763) Generate
Input [1]: [distributionCenters#76444]
Arguments: explode(distributionCenters#76444), false, [distributionCenters#76461]
(1764) Filter
Input [1]: [distributionCenters#76461]
Condition : (((size(distributionCenters#76461.storageLocations, true) > 0) AND isnotnull(distributionCenters#76461.storageLocations)) AND isnotnull(distributionCenters#76461.internalRefUUID))
(1765) Project
Output [2]: [distributionCenters#76461.internalRefUUID AS _extract_internalRefUUID#79334, distributionCenters#76461.storageLocations AS _extract_storageLocations#79335]
Input [1]: [distributionCenters#76461]
(1766) Generate
Input [2]: [_extract_internalRefUUID#79334, _extract_storageLocations#79335]
Arguments: explode(_extract_storageLocations#79335), [_extract_internalRefUUID#79334], false, [storageLocations#76462]
(1767) Project
Output [3]: [_extract_internalRefUUID#79334 AS plantUuid#76465, storageLocations#76462.id AS storageLocId#76466, storageLocations#76462.internalRefUUID AS storageLocUuid#76467]
Input [2]: [_extract_internalRefUUID#79334, storageLocations#76462]
(1768) BroadcastExchange
Input [3]: [plantUuid#76465, storageLocId#76466, storageLocUuid#76467]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36977]
(1769) Scan parquet
Output [2]: [product#76468, plant#76469]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1770) Filter
Input [2]: [product#76468, plant#76469]
Condition : isnotnull(plant#76469)
(1771) Exchange
Input [2]: [product#76468, plant#76469]
Arguments: hashpartitioning(product#76468, plant#76469, 25), REPARTITION_BY_NUM, [plan_id=36390]
(1772) Scan parquet
Output [4]: [plant#76502, product#76503, productionAspect#76505, systemId#76500]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1773) Project
Output [4]: [plant#76502.internalRefUUID AS _extract_internalRefUUID#79658, product#76503.internalRefUUID AS _extract_internalRefUUID#79655, productionAspect#76505.productMovementPlants.unitOfIssue.code AS _extract_code#79656, productionAspect#76505.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#79657]
Input [4]: [plant#76502, product#76503, productionAspect#76505, systemId#76500]
(1774) Exchange
Input [4]: [_extract_internalRefUUID#79658, _extract_internalRefUUID#79655, _extract_code#79656, _extract_internalRefUUID#79657]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35955]
(1775) Project
Output [4]: [_extract_code#79656, _extract_internalRefUUID#79657, _extract_internalRefUUID#79655, _extract_internalRefUUID#79658]
Input [4]: [_extract_internalRefUUID#79658, _extract_internalRefUUID#79655, _extract_code#79656, _extract_internalRefUUID#79657]
(1776) BroadcastExchange
Input [4]: [_extract_code#79656, _extract_internalRefUUID#79657, _extract_internalRefUUID#79655, _extract_internalRefUUID#79658]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=36957]
(1777) BroadcastHashJoin
Left keys [4]: [coalesce(product#76468, ), isnull(product#76468), coalesce(plant#76469, ), isnull(plant#76469)]
Right keys [4]: [coalesce(_extract_internalRefUUID#79655, ), isnull(_extract_internalRefUUID#79655), coalesce(_extract_internalRefUUID#79658, ), isnull(_extract_internalRefUUID#79658)]
Join type: LeftOuter
Join condition: None
(1778) Project
Output [4]: [product#76468, plant#76469, _extract_code#79656, _extract_internalRefUUID#79657]
Input [6]: [product#76468, plant#76469, _extract_code#79656, _extract_internalRefUUID#79657, _extract_internalRefUUID#79655, _extract_internalRefUUID#79658]
(1779) Scan parquet
Output [2]: [internalUUID#76511, systemId#76510]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1780) Project
Output [1]: [internalUUID#76511]
Input [2]: [internalUUID#76511, systemId#76510]
(1781) Exchange
Input [1]: [internalUUID#76511]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35961]
(1782) BroadcastExchange
Input [1]: [internalUUID#76511]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=36961]
(1783) BroadcastHashJoin
Left keys [2]: [coalesce(plant#76469, ), isnull(plant#76469)]
Right keys [2]: [coalesce(internalUUID#76511, ), isnull(internalUUID#76511)]
Join type: LeftOuter
Join condition: None
(1784) Project
Output [4]: [product#76468, plant#76469, _extract_code#79656, _extract_internalRefUUID#79657]
Input [5]: [product#76468, plant#76469, _extract_code#79656, _extract_internalRefUUID#79657, internalUUID#76511]
(1785) Scan parquet
Output [4]: [internalUUID#76543, baseUnitOfMeasure#76547, unitOfMeasureConversions#76549, systemId#76542]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1786) Filter
Input [4]: [internalUUID#76543, baseUnitOfMeasure#76547, unitOfMeasureConversions#76549, systemId#76542]
Condition : isnotnull(internalUUID#76543)
(1787) Project
Output [3]: [internalUUID#76543, baseUnitOfMeasure#76547, unitOfMeasureConversions#76549]
Input [4]: [internalUUID#76543, baseUnitOfMeasure#76547, unitOfMeasureConversions#76549, systemId#76542]
(1788) Exchange
Input [3]: [internalUUID#76543, baseUnitOfMeasure#76547, unitOfMeasureConversions#76549]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35967]
(1789) BroadcastExchange
Input [3]: [internalUUID#76543, baseUnitOfMeasure#76547, unitOfMeasureConversions#76549]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36965]
(1790) BroadcastHashJoin
Left keys [1]: [product#76468]
Right keys [1]: [internalUUID#76543]
Join type: LeftOuter
Join condition: None
(1791) Project
Output [2]: [plant#76469, filter(unitOfMeasureConversions#76549, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#79656) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#79657)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#76547.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76547.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#76580]
Input [7]: [product#76468, plant#76469, _extract_code#79656, _extract_internalRefUUID#79657, internalUUID#76543, baseUnitOfMeasure#76547, unitOfMeasureConversions#76549]
(1792) Generate
Input [2]: [plant#76469, filteredUnitOfMeasureConversions#76580]
Arguments: explode(filteredUnitOfMeasureConversions#76580.quantityNumerator), [plant#76469, filteredUnitOfMeasureConversions#76580], true, [quantityNumerator#76582]
(1793) Project
Output [2]: [plant#76469, filteredUnitOfMeasureConversions#76580.quantityDenominator AS _extract_quantityDenominator#79336]
Input [3]: [plant#76469, filteredUnitOfMeasureConversions#76580, quantityNumerator#76582]
(1794) Generate
Input [2]: [plant#76469, _extract_quantityDenominator#79336]
Arguments: explode(_extract_quantityDenominator#79336), [plant#76469], true, [quantityDenominator#76584]
(1795) Project
Output [1]: [plant#76469]
Input [2]: [plant#76469, quantityDenominator#76584]
(1796) HashAggregate
Input [1]: [plant#76469]
Keys [1]: [plant#76469]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#76469]
(1797) Exchange
Input [1]: [plant#76469]
Arguments: hashpartitioning(plant#76469, 25), ENSURE_REQUIREMENTS, [plan_id=36974]
(1798) HashAggregate
Input [1]: [plant#76469]
Keys [1]: [plant#76469]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#76469]
(1799) BroadcastHashJoin
Left keys [1]: [plantUuid#76465]
Right keys [1]: [plant#76469]
Join type: Inner
Join condition: None
(1800) Project
Output [3]: [plantUuid#76465, storageLocId#76466, storageLocUuid#76467]
Input [4]: [plantUuid#76465, storageLocId#76466, storageLocUuid#76467, plant#76469]
(1801) BroadcastHashJoin
Left keys [2]: [coalesce(plant#76435.internalRefUUID, ), isnull(plant#76435.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#76465, ), isnull(plantUuid#76465)]
Join type: Inner
Join condition: None
(1802) Generate
Input [9]: [systemId#76432, internalUUID#76433, product#76434, plant#76435, calculationDateTime#76436, stockQuantities#76437, plantUuid#76465, storageLocId#76466, storageLocUuid#76467]
Arguments: explode(filter(stockQuantities#76437, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#76467) AND (lambda x#69270.storageLocation.Id = storageLocId#76466)), lambda x#69270, false))), [systemId#76432, internalUUID#76433, product#76434, plant#76435, calculationDateTime#76436, plantUuid#76465], false, [stockQuantity#76591]
(1803) ObjectHashAggregate
Input [7]: [systemId#76432, internalUUID#76433, product#76434, plant#76435, calculationDateTime#76436, plantUuid#76465, stockQuantity#76591]
Keys [5]: [plantUuid#76465, internalUUID#76433, plant#76435, product#76434, systemId#76432]
Functions [2]: [partial_first(calculationDateTime#76436, false), partial_collect_list(stockQuantity#76591, 0, 0)]
Aggregate Attributes [3]: [first#81477, valueSet#81478, buf#81479]
Results [8]: [plantUuid#76465, internalUUID#76433, plant#76435, product#76434, systemId#76432, first#81480, valueSet#81481, buf#81482]
(1804) ObjectHashAggregate
Input [8]: [plantUuid#76465, internalUUID#76433, plant#76435, product#76434, systemId#76432, first#81480, valueSet#81481, buf#81482]
Keys [5]: [plantUuid#76465, internalUUID#76433, plant#76435, product#76434, systemId#76432]
Functions [2]: [first(calculationDateTime#76436, false), collect_list(stockQuantity#76591, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#76436)()#69321, collect_list(stockQuantity#76591, 0, 0)#69322]
Results [4]: [product#76434, plant#76435, first(calculationDateTime#76436)()#69321 AS calculationDateTime#76595, collect_list(stockQuantity#76591, 0, 0)#69322 AS stockQuantities#76596]
(1805) Filter
Input [4]: [product#76434, plant#76435, calculationDateTime#76595, stockQuantities#76596]
Condition : ((size(stockQuantities#76596, true) > 0) AND isnotnull(calculationDateTime#76595))
(1806) Generate
Input [4]: [product#76434, plant#76435, calculationDateTime#76595, stockQuantities#76596]
Arguments: explode(stockQuantities#76596), [product#76434, plant#76435, calculationDateTime#76595], false, [stockQuantity#76597]
(1807) Filter
Input [4]: [product#76434, plant#76435, calculationDateTime#76595, stockQuantity#76597]
Condition : (((isnotnull(stockQuantity#76597.specialStockIndicator.code) AND isnotnull(stockQuantity#76597.stockType.code)) AND (stockQuantity#76597.specialStockIndicator.code = )) AND (stockQuantity#76597.stockType.code = 01))
(1808) Project
Output [5]: [plant#76435.internalRefUUID AS plantUuid#76599, product#76434.internalRefUUID AS productUuid#76601, calculationDateTime#76595, stockQuantity#76597.storagelocation.id AS storageLocId#76602, stockQuantity#76597.quantity.measure AS quantity#76604]
Input [4]: [product#76434, plant#76435, calculationDateTime#76595, stockQuantity#76597]
(1809) Exchange
Input [5]: [plantUuid#76599, productUuid#76601, calculationDateTime#76595, storageLocId#76602, quantity#76604]
Arguments: hashpartitioning(productUuid#76601, plantUuid#76599, 25), ENSURE_REQUIREMENTS, [plan_id=37007]
(1810) Sort
Input [5]: [plantUuid#76599, productUuid#76601, calculationDateTime#76595, storageLocId#76602, quantity#76604]
Arguments: [productUuid#76601 ASC NULLS FIRST, plantUuid#76599 ASC NULLS FIRST], false, 0
(1811) Scan parquet
Output [3]: [product#76607, plant#76608, orderDateTime#76609]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1812) Filter
Input [3]: [product#76607, plant#76608, orderDateTime#76609]
Condition : ((isnotnull(orderDateTime#76609) AND isnotnull(plant#76608)) AND isnotnull(product#76607))
(1813) Exchange
Input [3]: [product#76607, plant#76608, orderDateTime#76609]
Arguments: hashpartitioning(product#76607, plant#76608, 25), REPARTITION_BY_NUM, [plan_id=36413]
(1814) Scan parquet
Output [4]: [plant#76613, product#76614, productionAspect#76616, systemId#76611]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1815) Project
Output [4]: [plant#76613.internalRefUUID AS _extract_internalRefUUID#79659, product#76614.internalRefUUID AS _extract_internalRefUUID#79660, productionAspect#76616.productMovementPlants.unitOfIssue.code AS _extract_code#79661, productionAspect#76616.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#79662]
Input [4]: [plant#76613, product#76614, productionAspect#76616, systemId#76611]
(1816) Exchange
Input [4]: [_extract_internalRefUUID#79659, _extract_internalRefUUID#79660, _extract_code#79661, _extract_internalRefUUID#79662]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35992]
(1817) Project
Output [4]: [_extract_code#79661, _extract_internalRefUUID#79662, _extract_internalRefUUID#79660, _extract_internalRefUUID#79659]
Input [4]: [_extract_internalRefUUID#79659, _extract_internalRefUUID#79660, _extract_code#79661, _extract_internalRefUUID#79662]
(1818) BroadcastExchange
Input [4]: [_extract_code#79661, _extract_internalRefUUID#79662, _extract_internalRefUUID#79660, _extract_internalRefUUID#79659]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=36990]
(1819) BroadcastHashJoin
Left keys [4]: [coalesce(product#76607, ), isnull(product#76607), coalesce(plant#76608, ), isnull(plant#76608)]
Right keys [4]: [coalesce(_extract_internalRefUUID#79660, ), isnull(_extract_internalRefUUID#79660), coalesce(_extract_internalRefUUID#79659, ), isnull(_extract_internalRefUUID#79659)]
Join type: LeftOuter
Join condition: None
(1820) Project
Output [5]: [product#76607, plant#76608, orderDateTime#76609, _extract_code#79661, _extract_internalRefUUID#79662]
Input [7]: [product#76607, plant#76608, orderDateTime#76609, _extract_code#79661, _extract_internalRefUUID#79662, _extract_internalRefUUID#79660, _extract_internalRefUUID#79659]
(1821) Scan parquet
Output [2]: [internalUUID#76642, systemId#76641]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1822) Project
Output [1]: [internalUUID#76642]
Input [2]: [internalUUID#76642, systemId#76641]
(1823) Exchange
Input [1]: [internalUUID#76642]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=35998]
(1824) BroadcastExchange
Input [1]: [internalUUID#76642]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=36994]
(1825) BroadcastHashJoin
Left keys [2]: [coalesce(plant#76608, ), isnull(plant#76608)]
Right keys [2]: [coalesce(internalUUID#76642, ), isnull(internalUUID#76642)]
Join type: LeftOuter
Join condition: None
(1826) Project
Output [5]: [product#76607, plant#76608, orderDateTime#76609, _extract_code#79661, _extract_internalRefUUID#79662]
Input [6]: [product#76607, plant#76608, orderDateTime#76609, _extract_code#79661, _extract_internalRefUUID#79662, internalUUID#76642]
(1827) Scan parquet
Output [4]: [internalUUID#76669, baseUnitOfMeasure#76673, unitOfMeasureConversions#76675, systemId#76668]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1828) Filter
Input [4]: [internalUUID#76669, baseUnitOfMeasure#76673, unitOfMeasureConversions#76675, systemId#76668]
Condition : isnotnull(internalUUID#76669)
(1829) Project
Output [3]: [internalUUID#76669, baseUnitOfMeasure#76673, unitOfMeasureConversions#76675]
Input [4]: [internalUUID#76669, baseUnitOfMeasure#76673, unitOfMeasureConversions#76675, systemId#76668]
(1830) Exchange
Input [3]: [internalUUID#76669, baseUnitOfMeasure#76673, unitOfMeasureConversions#76675]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=36004]
(1831) BroadcastExchange
Input [3]: [internalUUID#76669, baseUnitOfMeasure#76673, unitOfMeasureConversions#76675]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=36998]
(1832) BroadcastHashJoin
Left keys [1]: [product#76607]
Right keys [1]: [internalUUID#76669]
Join type: LeftOuter
Join condition: None
(1833) Project
Output [4]: [product#76607, plant#76608, orderDateTime#76609, filter(unitOfMeasureConversions#76675, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#79661) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#79662)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#76673.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76673.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#76694]
Input [8]: [product#76607, plant#76608, orderDateTime#76609, _extract_code#79661, _extract_internalRefUUID#79662, internalUUID#76669, baseUnitOfMeasure#76673, unitOfMeasureConversions#76675]
(1834) Generate
Input [4]: [product#76607, plant#76608, orderDateTime#76609, filteredUnitOfMeasureConversions#76694]
Arguments: explode(filteredUnitOfMeasureConversions#76694.quantityNumerator), [product#76607, plant#76608, orderDateTime#76609, filteredUnitOfMeasureConversions#76694], true, [quantityNumerator#76695]
(1835) Project
Output [4]: [product#76607, plant#76608, orderDateTime#76609, filteredUnitOfMeasureConversions#76694.quantityDenominator AS _extract_quantityDenominator#79340]
Input [5]: [product#76607, plant#76608, orderDateTime#76609, filteredUnitOfMeasureConversions#76694, quantityNumerator#76695]
(1836) Generate
Input [4]: [product#76607, plant#76608, orderDateTime#76609, _extract_quantityDenominator#79340]
Arguments: explode(_extract_quantityDenominator#79340), [product#76607, plant#76608, orderDateTime#76609], true, [quantityDenominator#76696]
(1837) Project
Output [3]: [product#76607, plant#76608, orderDateTime#76609]
Input [4]: [product#76607, plant#76608, orderDateTime#76609, quantityDenominator#76696]
(1838) Sort
Input [3]: [product#76607, plant#76608, orderDateTime#76609]
Arguments: [product#76607 ASC NULLS FIRST, plant#76608 ASC NULLS FIRST], false, 0
(1839) SortMergeJoin
Left keys [2]: [productUuid#76601, plantUuid#76599]
Right keys [2]: [product#76607, plant#76608]
Join type: Inner
Join condition: (calculationDateTime#76595 <= orderDateTime#76609)
(1840) Project
Output [5]: [plantUuid#76599 AS plant#76765, productUuid#76601 AS product#76766, storageLocId#76602, calculationDateTime#76595, quantity#76604]
Input [8]: [plantUuid#76599, productUuid#76601, calculationDateTime#76595, storageLocId#76602, quantity#76604, product#76607, plant#76608, orderDateTime#76609]
(1841) Exchange
Input [5]: [plant#76765, product#76766, storageLocId#76602, calculationDateTime#76595, quantity#76604]
Arguments: hashpartitioning(coalesce(plant#76765, ), isnull(plant#76765), coalesce(product#76766, ), isnull(product#76766), coalesce(storageLocId#76602, ), isnull(storageLocId#76602), coalesce(calculationDateTime#76595, 1970-01-01 00:00:00), isnull(calculationDateTime#76595), 25), ENSURE_REQUIREMENTS, [plan_id=37071]
(1842) Sort
Input [5]: [plant#76765, product#76766, storageLocId#76602, calculationDateTime#76595, quantity#76604]
Arguments: [coalesce(plant#76765, ) ASC NULLS FIRST, isnull(plant#76765) ASC NULLS FIRST, coalesce(product#76766, ) ASC NULLS FIRST, isnull(product#76766) ASC NULLS FIRST, coalesce(storageLocId#76602, ) ASC NULLS FIRST, isnull(storageLocId#76602) ASC NULLS FIRST, coalesce(calculationDateTime#76595, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#76595) ASC NULLS FIRST], false, 0
(1843) Scan parquet
Output [6]: [internalUUID#76769, product#76770, plant#76771, calculationDateTime#76772, stockQuantities#76773, systemId#76768]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(1844) Filter
Input [6]: [internalUUID#76769, product#76770, plant#76771, calculationDateTime#76772, stockQuantities#76773, systemId#76768]
Condition : (isnotnull(plant#76771.internalRefUUID) AND isnotnull(product#76770.internalRefUUID))
(1845) Project
Output [6]: [systemId#76768, internalUUID#76769, product#76770, plant#76771, calculationDateTime#76772, stockQuantities#76773]
Input [6]: [internalUUID#76769, product#76770, plant#76771, calculationDateTime#76772, stockQuantities#76773, systemId#76768]
(1846) Exchange
Input [6]: [systemId#76768, internalUUID#76769, product#76770, plant#76771, calculationDateTime#76772, stockQuantities#76773]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=36016]
(1847) BroadcastExchange
Input [6]: [systemId#76768, internalUUID#76769, product#76770, plant#76771, calculationDateTime#76772, stockQuantities#76773]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=37036]
(1848) Scan parquet
Output [2]: [marketUnit#76774, distributionCenters#76780]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1849) Filter
Input [2]: [marketUnit#76774, distributionCenters#76780]
Condition : (((marketUnit#76774 <=> Daily_grocery) AND (size(distributionCenters#76780, true) > 0)) AND isnotnull(distributionCenters#76780))
(1850) Project
Output [1]: [distributionCenters#76780]
Input [2]: [marketUnit#76774, distributionCenters#76780]
(1851) Exchange
Input [1]: [distributionCenters#76780]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=36020]
(1852) Generate
Input [1]: [distributionCenters#76780]
Arguments: explode(distributionCenters#76780), false, [distributionCenters#76809]
(1853) Filter
Input [1]: [distributionCenters#76809]
Condition : (((size(distributionCenters#76809.storageLocations, true) > 0) AND isnotnull(distributionCenters#76809.storageLocations)) AND isnotnull(distributionCenters#76809.internalRefUUID))
(1854) Project
Output [2]: [distributionCenters#76809.internalRefUUID AS _extract_internalRefUUID#79344, distributionCenters#76809.storageLocations AS _extract_storageLocations#79345]
Input [1]: [distributionCenters#76809]
(1855) Generate
Input [2]: [_extract_internalRefUUID#79344, _extract_storageLocations#79345]
Arguments: explode(_extract_storageLocations#79345), [_extract_internalRefUUID#79344], false, [storageLocations#76810]
(1856) Project
Output [3]: [_extract_internalRefUUID#79344 AS plantUuid#76812, storageLocations#76810.id AS storageLocId#76813, storageLocations#76810.internalRefUUID AS storageLocUuid#76814]
Input [2]: [_extract_internalRefUUID#79344, storageLocations#76810]
(1857) BroadcastExchange
Input [3]: [plantUuid#76812, storageLocId#76813, storageLocUuid#76814]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=37032]
(1858) Scan parquet
Output [2]: [product#76815, plant#76816]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1859) Filter
Input [2]: [product#76815, plant#76816]
Condition : isnotnull(plant#76816)
(1860) Exchange
Input [2]: [product#76815, plant#76816]
Arguments: hashpartitioning(product#76815, plant#76816, 25), REPARTITION_BY_NUM, [plan_id=36426]
(1861) Scan parquet
Output [4]: [plant#76822, product#76823, productionAspect#76825, systemId#76820]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1862) Project
Output [4]: [plant#76822.internalRefUUID AS _extract_internalRefUUID#79664, product#76823.internalRefUUID AS _extract_internalRefUUID#79663, productionAspect#76825.productMovementPlants.unitOfIssue.code AS _extract_code#79665, productionAspect#76825.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#79666]
Input [4]: [plant#76822, product#76823, productionAspect#76825, systemId#76820]
(1863) Exchange
Input [4]: [_extract_internalRefUUID#79664, _extract_internalRefUUID#79663, _extract_code#79665, _extract_internalRefUUID#79666]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=36032]
(1864) Project
Output [4]: [_extract_code#79665, _extract_internalRefUUID#79666, _extract_internalRefUUID#79663, _extract_internalRefUUID#79664]
Input [4]: [_extract_internalRefUUID#79664, _extract_internalRefUUID#79663, _extract_code#79665, _extract_internalRefUUID#79666]
(1865) BroadcastExchange
Input [4]: [_extract_code#79665, _extract_internalRefUUID#79666, _extract_internalRefUUID#79663, _extract_internalRefUUID#79664]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=37012]
(1866) BroadcastHashJoin
Left keys [4]: [coalesce(product#76815, ), isnull(product#76815), coalesce(plant#76816, ), isnull(plant#76816)]
Right keys [4]: [coalesce(_extract_internalRefUUID#79663, ), isnull(_extract_internalRefUUID#79663), coalesce(_extract_internalRefUUID#79664, ), isnull(_extract_internalRefUUID#79664)]
Join type: LeftOuter
Join condition: None
(1867) Project
Output [4]: [product#76815, plant#76816, _extract_code#79665, _extract_internalRefUUID#79666]
Input [6]: [product#76815, plant#76816, _extract_code#79665, _extract_internalRefUUID#79666, _extract_internalRefUUID#79663, _extract_internalRefUUID#79664]
(1868) Scan parquet
Output [2]: [internalUUID#76832, systemId#76831]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1869) Project
Output [1]: [internalUUID#76832]
Input [2]: [internalUUID#76832, systemId#76831]
(1870) Exchange
Input [1]: [internalUUID#76832]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=36038]
(1871) BroadcastExchange
Input [1]: [internalUUID#76832]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=37016]
(1872) BroadcastHashJoin
Left keys [2]: [coalesce(plant#76816, ), isnull(plant#76816)]
Right keys [2]: [coalesce(internalUUID#76832, ), isnull(internalUUID#76832)]
Join type: LeftOuter
Join condition: None
(1873) Project
Output [4]: [product#76815, plant#76816, _extract_code#79665, _extract_internalRefUUID#79666]
Input [5]: [product#76815, plant#76816, _extract_code#79665, _extract_internalRefUUID#79666, internalUUID#76832]
(1874) Scan parquet
Output [4]: [internalUUID#76846, baseUnitOfMeasure#76850, unitOfMeasureConversions#76852, systemId#76845]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1875) Filter
Input [4]: [internalUUID#76846, baseUnitOfMeasure#76850, unitOfMeasureConversions#76852, systemId#76845]
Condition : isnotnull(internalUUID#76846)
(1876) Project
Output [3]: [internalUUID#76846, baseUnitOfMeasure#76850, unitOfMeasureConversions#76852]
Input [4]: [internalUUID#76846, baseUnitOfMeasure#76850, unitOfMeasureConversions#76852, systemId#76845]
(1877) Exchange
Input [3]: [internalUUID#76846, baseUnitOfMeasure#76850, unitOfMeasureConversions#76852]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=36044]
(1878) BroadcastExchange
Input [3]: [internalUUID#76846, baseUnitOfMeasure#76850, unitOfMeasureConversions#76852]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=37020]
(1879) BroadcastHashJoin
Left keys [1]: [product#76815]
Right keys [1]: [internalUUID#76846]
Join type: LeftOuter
Join condition: None
(1880) Project
Output [2]: [plant#76816, filter(unitOfMeasureConversions#76852, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#79665) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#79666)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#76850.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76850.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#76859]
Input [7]: [product#76815, plant#76816, _extract_code#79665, _extract_internalRefUUID#79666, internalUUID#76846, baseUnitOfMeasure#76850, unitOfMeasureConversions#76852]
(1881) Generate
Input [2]: [plant#76816, filteredUnitOfMeasureConversions#76859]
Arguments: explode(filteredUnitOfMeasureConversions#76859.quantityNumerator), [plant#76816, filteredUnitOfMeasureConversions#76859], true, [quantityNumerator#76860]
(1882) Project
Output [2]: [plant#76816, filteredUnitOfMeasureConversions#76859.quantityDenominator AS _extract_quantityDenominator#79346]
Input [3]: [plant#76816, filteredUnitOfMeasureConversions#76859, quantityNumerator#76860]
(1883) Generate
Input [2]: [plant#76816, _extract_quantityDenominator#79346]
Arguments: explode(_extract_quantityDenominator#79346), [plant#76816], true, [quantityDenominator#76861]
(1884) Project
Output [1]: [plant#76816]
Input [2]: [plant#76816, quantityDenominator#76861]
(1885) HashAggregate
Input [1]: [plant#76816]
Keys [1]: [plant#76816]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#76816]
(1886) Exchange
Input [1]: [plant#76816]
Arguments: hashpartitioning(plant#76816, 25), ENSURE_REQUIREMENTS, [plan_id=37029]
(1887) HashAggregate
Input [1]: [plant#76816]
Keys [1]: [plant#76816]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#76816]
(1888) BroadcastHashJoin
Left keys [1]: [plantUuid#76812]
Right keys [1]: [plant#76816]
Join type: Inner
Join condition: None
(1889) Project
Output [3]: [plantUuid#76812, storageLocId#76813, storageLocUuid#76814]
Input [4]: [plantUuid#76812, storageLocId#76813, storageLocUuid#76814, plant#76816]
(1890) BroadcastHashJoin
Left keys [2]: [coalesce(plant#76771.internalRefUUID, ), isnull(plant#76771.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#76812, ), isnull(plantUuid#76812)]
Join type: Inner
Join condition: None
(1891) Generate
Input [9]: [systemId#76768, internalUUID#76769, product#76770, plant#76771, calculationDateTime#76772, stockQuantities#76773, plantUuid#76812, storageLocId#76813, storageLocUuid#76814]
Arguments: explode(filter(stockQuantities#76773, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#76814) AND (lambda x#69270.storageLocation.Id = storageLocId#76813)), lambda x#69270, false))), [systemId#76768, internalUUID#76769, product#76770, plant#76771, calculationDateTime#76772, plantUuid#76812], false, [stockQuantity#76881]
(1892) ObjectHashAggregate
Input [7]: [systemId#76768, internalUUID#76769, product#76770, plant#76771, calculationDateTime#76772, plantUuid#76812, stockQuantity#76881]
Keys [5]: [plantUuid#76812, internalUUID#76769, plant#76771, product#76770, systemId#76768]
Functions [2]: [partial_first(calculationDateTime#76772, false), partial_collect_list(stockQuantity#76881, 0, 0)]
Aggregate Attributes [3]: [first#81502, valueSet#81503, buf#81504]
Results [8]: [plantUuid#76812, internalUUID#76769, plant#76771, product#76770, systemId#76768, first#81505, valueSet#81506, buf#81507]
(1893) ObjectHashAggregate
Input [8]: [plantUuid#76812, internalUUID#76769, plant#76771, product#76770, systemId#76768, first#81505, valueSet#81506, buf#81507]
Keys [5]: [plantUuid#76812, internalUUID#76769, plant#76771, product#76770, systemId#76768]
Functions [2]: [first(calculationDateTime#76772, false), collect_list(stockQuantity#76881, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#76772)()#69321, collect_list(stockQuantity#76881, 0, 0)#69322]
Results [4]: [product#76770, plant#76771, first(calculationDateTime#76772)()#69321 AS calculationDateTime#76890, collect_list(stockQuantity#76881, 0, 0)#69322 AS stockQuantities#76891]
(1894) Filter
Input [4]: [product#76770, plant#76771, calculationDateTime#76890, stockQuantities#76891]
Condition : ((size(stockQuantities#76891, true) > 0) AND isnotnull(calculationDateTime#76890))
(1895) Generate
Input [4]: [product#76770, plant#76771, calculationDateTime#76890, stockQuantities#76891]
Arguments: explode(stockQuantities#76891), [product#76770, plant#76771, calculationDateTime#76890], false, [stockQuantity#76893]
(1896) Filter
Input [4]: [product#76770, plant#76771, calculationDateTime#76890, stockQuantity#76893]
Condition : (((isnotnull(stockQuantity#76893.specialStockIndicator.code) AND isnotnull(stockQuantity#76893.stockType.code)) AND (stockQuantity#76893.specialStockIndicator.code = )) AND (stockQuantity#76893.stockType.code = 01))
(1897) Project
Output [4]: [plant#76771.internalRefUUID AS plantUuid#76907, product#76770.internalRefUUID AS productUuid#76909, calculationDateTime#76890, stockQuantity#76893.storagelocation.id AS storageLocId#76910]
Input [4]: [product#76770, plant#76771, calculationDateTime#76890, stockQuantity#76893]
(1898) Exchange
Input [4]: [plantUuid#76907, productUuid#76909, calculationDateTime#76890, storageLocId#76910]
Arguments: hashpartitioning(productUuid#76909, plantUuid#76907, 25), ENSURE_REQUIREMENTS, [plan_id=37062]
(1899) Sort
Input [4]: [plantUuid#76907, productUuid#76909, calculationDateTime#76890, storageLocId#76910]
Arguments: [productUuid#76909 ASC NULLS FIRST, plantUuid#76907 ASC NULLS FIRST], false, 0
(1900) Scan parquet
Output [3]: [product#76916, plant#76917, orderDateTime#76918]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1901) Filter
Input [3]: [product#76916, plant#76917, orderDateTime#76918]
Condition : ((isnotnull(orderDateTime#76918) AND isnotnull(plant#76917)) AND isnotnull(product#76916))
(1902) Exchange
Input [3]: [product#76916, plant#76917, orderDateTime#76918]
Arguments: hashpartitioning(product#76916, plant#76917, 25), REPARTITION_BY_NUM, [plan_id=36449]
(1903) Scan parquet
Output [4]: [plant#76922, product#76923, productionAspect#76925, systemId#76920]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1904) Project
Output [4]: [plant#76922.internalRefUUID AS _extract_internalRefUUID#79669, product#76923.internalRefUUID AS _extract_internalRefUUID#79670, productionAspect#76925.productMovementPlants.unitOfIssue.code AS _extract_code#79667, productionAspect#76925.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#79668]
Input [4]: [plant#76922, product#76923, productionAspect#76925, systemId#76920]
(1905) Exchange
Input [4]: [_extract_internalRefUUID#79669, _extract_internalRefUUID#79670, _extract_code#79667, _extract_internalRefUUID#79668]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=36069]
(1906) Project
Output [4]: [_extract_code#79667, _extract_internalRefUUID#79668, _extract_internalRefUUID#79670, _extract_internalRefUUID#79669]
Input [4]: [_extract_internalRefUUID#79669, _extract_internalRefUUID#79670, _extract_code#79667, _extract_internalRefUUID#79668]
(1907) BroadcastExchange
Input [4]: [_extract_code#79667, _extract_internalRefUUID#79668, _extract_internalRefUUID#79670, _extract_internalRefUUID#79669]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=37045]
(1908) BroadcastHashJoin
Left keys [4]: [coalesce(product#76916, ), isnull(product#76916), coalesce(plant#76917, ), isnull(plant#76917)]
Right keys [4]: [coalesce(_extract_internalRefUUID#79670, ), isnull(_extract_internalRefUUID#79670), coalesce(_extract_internalRefUUID#79669, ), isnull(_extract_internalRefUUID#79669)]
Join type: LeftOuter
Join condition: None
(1909) Project
Output [5]: [product#76916, plant#76917, orderDateTime#76918, _extract_code#79667, _extract_internalRefUUID#79668]
Input [7]: [product#76916, plant#76917, orderDateTime#76918, _extract_code#79667, _extract_internalRefUUID#79668, _extract_internalRefUUID#79670, _extract_internalRefUUID#79669]
(1910) Scan parquet
Output [2]: [internalUUID#76943, systemId#76942]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1911) Project
Output [1]: [internalUUID#76943]
Input [2]: [internalUUID#76943, systemId#76942]
(1912) Exchange
Input [1]: [internalUUID#76943]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=36075]
(1913) BroadcastExchange
Input [1]: [internalUUID#76943]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=37049]
(1914) BroadcastHashJoin
Left keys [2]: [coalesce(plant#76917, ), isnull(plant#76917)]
Right keys [2]: [coalesce(internalUUID#76943, ), isnull(internalUUID#76943)]
Join type: LeftOuter
Join condition: None
(1915) Project
Output [5]: [product#76916, plant#76917, orderDateTime#76918, _extract_code#79667, _extract_internalRefUUID#79668]
Input [6]: [product#76916, plant#76917, orderDateTime#76918, _extract_code#79667, _extract_internalRefUUID#79668, internalUUID#76943]
(1916) Scan parquet
Output [4]: [internalUUID#76959, baseUnitOfMeasure#76963, unitOfMeasureConversions#76965, systemId#76958]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1917) Filter
Input [4]: [internalUUID#76959, baseUnitOfMeasure#76963, unitOfMeasureConversions#76965, systemId#76958]
Condition : isnotnull(internalUUID#76959)
(1918) Project
Output [3]: [internalUUID#76959, baseUnitOfMeasure#76963, unitOfMeasureConversions#76965]
Input [4]: [internalUUID#76959, baseUnitOfMeasure#76963, unitOfMeasureConversions#76965, systemId#76958]
(1919) Exchange
Input [3]: [internalUUID#76959, baseUnitOfMeasure#76963, unitOfMeasureConversions#76965]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=36081]
(1920) BroadcastExchange
Input [3]: [internalUUID#76959, baseUnitOfMeasure#76963, unitOfMeasureConversions#76965]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=37053]
(1921) BroadcastHashJoin
Left keys [1]: [product#76916]
Right keys [1]: [internalUUID#76959]
Join type: LeftOuter
Join condition: None
(1922) Project
Output [4]: [product#76916, plant#76917, orderDateTime#76918, filter(unitOfMeasureConversions#76965, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#79667) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#79668)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#76963.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76963.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#76972]
Input [8]: [product#76916, plant#76917, orderDateTime#76918, _extract_code#79667, _extract_internalRefUUID#79668, internalUUID#76959, baseUnitOfMeasure#76963, unitOfMeasureConversions#76965]
(1923) Generate
Input [4]: [product#76916, plant#76917, orderDateTime#76918, filteredUnitOfMeasureConversions#76972]
Arguments: explode(filteredUnitOfMeasureConversions#76972.quantityNumerator), [product#76916, plant#76917, orderDateTime#76918, filteredUnitOfMeasureConversions#76972], true, [quantityNumerator#76974]
(1924) Project
Output [4]: [product#76916, plant#76917, orderDateTime#76918, filteredUnitOfMeasureConversions#76972.quantityDenominator AS _extract_quantityDenominator#79350]
Input [5]: [product#76916, plant#76917, orderDateTime#76918, filteredUnitOfMeasureConversions#76972, quantityNumerator#76974]
(1925) Generate
Input [4]: [product#76916, plant#76917, orderDateTime#76918, _extract_quantityDenominator#79350]
Arguments: explode(_extract_quantityDenominator#79350), [product#76916, plant#76917, orderDateTime#76918], true, [quantityDenominator#76975]
(1926) Project
Output [3]: [product#76916, plant#76917, orderDateTime#76918]
Input [4]: [product#76916, plant#76917, orderDateTime#76918, quantityDenominator#76975]
(1927) Sort
Input [3]: [product#76916, plant#76917, orderDateTime#76918]
Arguments: [product#76916 ASC NULLS FIRST, plant#76917 ASC NULLS FIRST], false, 0
(1928) SortMergeJoin
Left keys [2]: [productUuid#76909, plantUuid#76907]
Right keys [2]: [product#76916, plant#76917]
Join type: Inner
Join condition: (calculationDateTime#76890 <= orderDateTime#76918)
(1929) Project
Output [4]: [plantUuid#76907 AS plant#76984, productUuid#76909 AS product#76985, storageLocId#76910, calculationDateTime#76890]
Input [7]: [plantUuid#76907, productUuid#76909, calculationDateTime#76890, storageLocId#76910, product#76916, plant#76917, orderDateTime#76918]
(1930) HashAggregate
Input [4]: [plant#76984, product#76985, storageLocId#76910, calculationDateTime#76890]
Keys [3]: [plant#76984, product#76985, storageLocId#76910]
Functions [1]: [partial_max(calculationDateTime#76890)]
Aggregate Attributes [1]: [max#81500]
Results [4]: [plant#76984, product#76985, storageLocId#76910, max#81501]
(1931) HashAggregate
Input [4]: [plant#76984, product#76985, storageLocId#76910, max#81501]
Keys [3]: [plant#76984, product#76985, storageLocId#76910]
Functions [1]: [max(calculationDateTime#76890)]
Aggregate Attributes [1]: [max(calculationDateTime#76890)#69456]
Results [4]: [plant#76984, product#76985, storageLocId#76910, max(calculationDateTime#76890)#69456 AS max_calc_datetime#76986]
(1932) Exchange
Input [4]: [plant#76984, product#76985, storageLocId#76910, max_calc_datetime#76986]
Arguments: hashpartitioning(coalesce(plant#76984, ), isnull(plant#76984), coalesce(product#76985, ), isnull(product#76985), coalesce(storageLocId#76910, ), isnull(storageLocId#76910), coalesce(max_calc_datetime#76986, 1970-01-01 00:00:00), isnull(max_calc_datetime#76986), 25), ENSURE_REQUIREMENTS, [plan_id=37072]
(1933) Sort
Input [4]: [plant#76984, product#76985, storageLocId#76910, max_calc_datetime#76986]
Arguments: [coalesce(plant#76984, ) ASC NULLS FIRST, isnull(plant#76984) ASC NULLS FIRST, coalesce(product#76985, ) ASC NULLS FIRST, isnull(product#76985) ASC NULLS FIRST, coalesce(storageLocId#76910, ) ASC NULLS FIRST, isnull(storageLocId#76910) ASC NULLS FIRST, coalesce(max_calc_datetime#76986, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#76986) ASC NULLS FIRST], false, 0
(1934) SortMergeJoin
Left keys [8]: [coalesce(plant#76765, ), isnull(plant#76765), coalesce(product#76766, ), isnull(product#76766), coalesce(storageLocId#76602, ), isnull(storageLocId#76602), coalesce(calculationDateTime#76595, 1970-01-01 00:00:00), isnull(calculationDateTime#76595)]
Right keys [8]: [coalesce(plant#76984, ), isnull(plant#76984), coalesce(product#76985, ), isnull(product#76985), coalesce(storageLocId#76910, ), isnull(storageLocId#76910), coalesce(max_calc_datetime#76986, 1970-01-01 00:00:00), isnull(max_calc_datetime#76986)]
Join type: Inner
Join condition: None
(1935) Project
Output [4]: [plant#76765, product#76766, calculationDateTime#76595, quantity#76604]
Input [9]: [plant#76765, product#76766, storageLocId#76602, calculationDateTime#76595, quantity#76604, plant#76984, product#76985, storageLocId#76910, max_calc_datetime#76986]
(1936) HashAggregate
Input [4]: [plant#76765, product#76766, calculationDateTime#76595, quantity#76604]
Keys [2]: [product#76766, plant#76765]
Functions [2]: [partial_min(calculationDateTime#76595), partial_sum(quantity#76604)]
Aggregate Attributes [2]: [min#81467, sum#81468]
Results [4]: [product#76766, plant#76765, min#81469, sum#81470]
(1937) Exchange
Input [4]: [product#76766, plant#76765, min#81469, sum#81470]
Arguments: hashpartitioning(product#76766, plant#76765, 25), ENSURE_REQUIREMENTS, [plan_id=37079]
(1938) HashAggregate
Input [4]: [product#76766, plant#76765, min#81469, sum#81470]
Keys [2]: [product#76766, plant#76765]
Functions [2]: [min(calculationDateTime#76595), sum(quantity#76604)]
Aggregate Attributes [2]: [min(calculationDateTime#76595)#69768, sum(quantity#76604)#69767]
Results [4]: [product#76766, plant#76765, min(calculationDateTime#76595)#69768 AS minCalculationDateTime#76991, round(sum(quantity#76604)#69767, 0) AS roundedQuantitySum#77001]
(1939) Sort
Input [4]: [product#76766, plant#76765, minCalculationDateTime#76991, roundedQuantitySum#77001]
Arguments: [product#76766 ASC NULLS FIRST, plant#76765 ASC NULLS FIRST], false, 0
(1940) SortMergeJoin
Left keys [2]: [product#76340, plant#76341]
Right keys [2]: [product#76766, plant#76765]
Join type: LeftOuter
Join condition: None
(1941) Project
Output [8]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76430, CASE WHEN isnotnull(minCalculationDateTime#76991) THEN minCalculationDateTime#76991 ELSE orderDateTime#76342 END AS stockDatetime#77002, CASE WHEN isnotnull(roundedQuantitySum#77001) THEN array(roundedQuantitySum#77001) ELSE [0.0] END AS stockBatchQuantities#77003]
Input [10]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76430, product#76766, plant#76765, minCalculationDateTime#76991, roundedQuantitySum#77001]
(1942) Scan parquet
Output [9]: [product#77006, plant#77007, demandChannel#77008, demandStream#77009, considerVariance#77010, demandTimeBuckets#77011, demandPointInTimeStart#77012, demandPointInTimeEnd#77013, demandPointInTime#77014]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000002107/0_1_10000002107]
PushedFilters: [IsNotNull(product), IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,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>>>
(1943) Filter
Input [9]: [product#77006, plant#77007, demandChannel#77008, demandStream#77009, considerVariance#77010, demandTimeBuckets#77011, demandPointInTimeStart#77012, demandPointInTimeEnd#77013, demandPointInTime#77014]
Condition : (isnotnull(product#77006) AND isnotnull(plant#77007))
(1944) BroadcastExchange
Input [9]: [product#77006, plant#77007, demandChannel#77008, demandStream#77009, considerVariance#77010, demandTimeBuckets#77011, demandPointInTimeStart#77012, demandPointInTimeEnd#77013, demandPointInTime#77014]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=37088]
(1945) BroadcastHashJoin
Left keys [2]: [product#76340, plant#76341]
Right keys [2]: [product#77006, plant#77007]
Join type: LeftOuter
Join condition: None
(1946) Project
Output [9]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76430, stockDatetime#77002, stockBatchQuantities#77003, CASE WHEN isnotnull(product#77006) THEN struct(demandChannel, demandChannel#77008, demandStream, demandStream#77009, considerVariance, considerVariance#77010, demandTimeBuckets, demandTimeBuckets#77011, demandPointInTimeStart, demandPointInTimeStart#77012, demandPointInTimeEnd, demandPointInTimeEnd#77013, demandPointInTime, demandPointInTime#77014) END AS rawDemands#77016]
Input [17]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76430, stockDatetime#77002, stockBatchQuantities#77003, product#77006, plant#77007, demandChannel#77008, demandStream#77009, considerVariance#77010, demandTimeBuckets#77011, demandPointInTimeStart#77012, demandPointInTimeEnd#77013, demandPointInTime#77014]
(1947) ObjectHashAggregate
Input [9]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76430, stockDatetime#77002, stockBatchQuantities#77003, rawDemands#77016]
Keys [9]: [product#76340, plant#76341, orderDateTime#76342, knownfloatingpointnormalized(if (isnull(productPlant#76354)) null else named_struct(systemId, productPlant#76354.systemId, internalUUID, productPlant#76354.internalUUID, plant, productPlant#76354.plant, product, productPlant#76354.product, blockedForReplenishmentStartingFrom, productPlant#76354.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#76354.productionAspect)) null else named_struct(productMovementPlants, productPlant#76354.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#76354.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#76354.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#76354.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#76354.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#76354.productionAspect.productPlanningPlants.minimumLotSize)), minimumSafetyStock, knownfloatingpointnormalized(normalizenanandzero(productPlant#76354.productionAspect.productPlanningPlants.minimumSafetyStock)), logisticalRoundingProfile, productPlant#76354.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#76354.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#76354.salesPlant, listing, productPlant#76354.listing)) AS productPlant#76354, timezonecode#76371, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#76430)) AS outboundUnit#76430, stockDatetime#77002, knownfloatingpointnormalized(transform(stockBatchQuantities#77003, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#81455)), lambda arg#81455, false))) AS stockBatchQuantities#77003, [7226582400000000] AS [7226582400000000]#81454]
Functions [1]: [partial_collect_list(rawDemands#77016, 0, 0)]
Aggregate Attributes [1]: [buf#81456]
Results [10]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76430, stockDatetime#77002, stockBatchQuantities#77003, [7226582400000000]#81454, buf#81457]
(1948) ObjectHashAggregate
Input [10]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76430, stockDatetime#77002, stockBatchQuantities#77003, [7226582400000000]#81454, buf#81457]
Keys [9]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76430, stockDatetime#77002, stockBatchQuantities#77003, [7226582400000000]#81454]
Functions [1]: [collect_list(rawDemands#77016, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#77016, 0, 0)#70170]
Results [10]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76430, stockDatetime#77002, stockBatchQuantities#77003, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#77005, collect_list(rawDemands#77016, 0, 0)#70170 AS rawDemands#77017]
(1949) DeserializeToObject
Input [10]: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76430, stockDatetime#77002, stockBatchQuantities#77003, stockBatchShelfLifeEndDatetimes#77005, rawDemands#77017]
Arguments: createexternalrow(invoke(product#76340.toString()), invoke(plant#76341.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#76342)), if (isnull(productPlant#76354)) null else createexternalrow(invoke(productPlant#76354.systemId.toString()), invoke(productPlant#76354.internalUUID.toString()), if (isnull(productPlant#76354.plant)) null else createexternalrow(invoke(productPlant#76354.plant.internalRefUUID.toString()), invoke(productPlant#76354.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#76354.product)) null else createexternalrow(invoke(productPlant#76354.product.internalRefUUID.toString()), invoke(productPlant#76354.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#76354.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#76354.productionAspect)) null else createexternalrow(if (isnull(productPlant#76354.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#76354.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#76354.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#76354.productionAspect.productMovementPlants.unitOfIssue.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), if (isnull(productPlant#76354.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#76354.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#76354.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#76354.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#76354.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#76354.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#76354.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#76354.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#76354.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#76354.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#76354.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#76354.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#76354.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#76354.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#76354.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#76354.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#76354.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#76354.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(minimumSafetyStock,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#76354.salesPlant)) null else createexternalrow(if (isnull(productPlant#76354.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#76354.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#76354.salesPlant.loadingGroup.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#76354.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#76371.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#76430)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#77002)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#77003, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#77005, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14), 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, -14).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, -14).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, -14).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).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, -14).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, -14).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, -14).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).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, -14).demandPointInTime, Some(class scala.collection.mutable.ArraySeq)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)), rawDemands#77017, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#70342: org.apache.spark.sql.Row
(1950) MapElements
Input [1]: [obj#70342]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@22b451ac, obj#70347: org.apache.spark.sql.Row
(1951) SerializeFromObject
Input [1]: [obj#70347]
Arguments: [if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(0))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 0, product), StringType, ObjectType(class java.lang.String)))) AS product#77033, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(1))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 1, plant), StringType, ObjectType(class java.lang.String)))) AS plant#77034]
(1952) Exchange
Input [2]: [product#77033, plant#77034]
Arguments: hashpartitioning(coalesce(plant#77034, ), isnull(plant#77034), coalesce(product#77033, ), isnull(product#77033), 25), ENSURE_REQUIREMENTS, [plan_id=37099]
(1953) Sort
Input [2]: [product#77033, plant#77034]
Arguments: [coalesce(plant#77034, ) ASC NULLS FIRST, isnull(plant#77034) ASC NULLS FIRST, coalesce(product#77033, ) ASC NULLS FIRST, isnull(product#77033) ASC NULLS FIRST], false, 0
(1954) SortMergeJoin
Left keys [4]: [coalesce(plant#75697, ), isnull(plant#75697), coalesce(product#75696, ), isnull(product#75696)]
Right keys [4]: [coalesce(plant#77034, ), isnull(plant#77034), coalesce(product#77033, ), isnull(product#77033)]
Join type: LeftOuter
Join condition: None
(1955) Project
Output [3]: [product#75696, plant#75697, stockDatetime#76334]
Input [5]: [product#75696, plant#75697, stockDatetime#76334, product#77033, plant#77034]
(1956) Scan parquet
Output [6]: [internalUUID#77049, id#77050, supplier#77052, isMarkedForDeletion#77055, items#77056, systemId#77048]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-procurement-purchaseorder]
PushedFilters: [IsNotNull(isMarkedForDeletion), Not(EqualTo(isMarkedForDeletion,true)), IsNotNull(items)]
ReadSchema: struct<internalUUID:string,id:string,supplier:struct<internalRefUUID:string,id:string>,isMarkedForDeletion:boolean,items:array<struct<number:string,completeIndicator:boolean,returnIndicator:boolean,deletionIndicator:boolean,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:double,quantityUnit:struct<internalRefUUID:string,code:string>,quantityNumerator:double,quantityDenominator:double,scheduleLines:array<struct<number:string,deliveryAt:timestamp,quantity:double,quantityUnit:struct<internalRefUUID:string,code:string>,receivedQuantity:double,deliveredQuantity:double,productAvailabilityDateTime:timestamp>>,confirmations:array<struct<number:string,confirmationCategory:struct<internalRefUUID:string,code:string>,confirmationDeliveryDate:date,confirmedDeliveryAt:timestamp,confirmedQuantity:double,mrpRelevantQuantity:double,confirmationCreationCategory:string,deletionIndicator:boolean,isRelevantForConfirmation:boolean,delivery:struct<internalRefUUID:string,id:string>,deliveryItemNumber:string>>>>>
(1957) Filter
Input [6]: [internalUUID#77049, id#77050, supplier#77052, isMarkedForDeletion#77055, items#77056, systemId#77048]
Condition : (((isnotnull(isMarkedForDeletion#77055) AND NOT isMarkedForDeletion#77055) AND (size(items#77056, true) > 0)) AND isnotnull(items#77056))
(1958) Project
Output [4]: [internalUUID#77049, id#77050, supplier#77052, items#77056]
Input [6]: [internalUUID#77049, id#77050, supplier#77052, isMarkedForDeletion#77055, items#77056, systemId#77048]
(1959) Exchange
Input [4]: [internalUUID#77049, id#77050, supplier#77052, items#77056]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=36113]
(1960) Generate
Input [4]: [internalUUID#77049, id#77050, supplier#77052, items#77056]
Arguments: explode(items#77056), [internalUUID#77049, id#77050, supplier#77052], false, [item#77057]
(1961) Filter
Input [4]: [internalUUID#77049, id#77050, supplier#77052, item#77057]
Condition : ((((isnotnull(item#77057.deletionIndicator) AND isnotnull(item#77057.completeIndicator)) AND isnotnull(item#77057.returnIndicator)) AND ((NOT item#77057.deletionIndicator AND NOT item#77057.completeIndicator) AND NOT item#77057.returnIndicator)) AND isnotnull(item#77057.product.internalRefUUID))
(1962) Project
Output [9]: [id#77050, internalUUID#77049, supplier#77052.internalRefUUID AS supplierUuid#77058, item#77057.product.internalRefUUID AS product#77060, item#77057.quantityUnit.code AS quantityUom#77064, item#77057.quantityUnit.internalRefUUID AS quantityUomUuid#77065, item#77057.quantityNumerator AS quantityNumerator#77066, item#77057.quantityDenominator AS quantityDenominator#77067, item#77057.scheduleLines AS scheduleLines#77068]
Input [4]: [internalUUID#77049, id#77050, supplier#77052, item#77057]
(1963) BroadcastExchange
Input [9]: [id#77050, internalUUID#77049, supplierUuid#77058, product#77060, quantityUom#77064, quantityUomUuid#77065, quantityNumerator#77066, quantityDenominator#77067, scheduleLines#77068]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, string, true], ), isnull(input[3, string, true]), coalesce(input[2, string, true], ), isnull(input[2, string, true])),false), [plan_id=37105]
(1964) BroadcastHashJoin
Left keys [4]: [coalesce(product#75696, ), isnull(product#75696), coalesce(plant#75697, ), isnull(plant#75697)]
Right keys [4]: [coalesce(product#77060, ), isnull(product#77060), coalesce(supplierUuid#77058, ), isnull(supplierUuid#77058)]
Join type: Inner
Join condition: None
(1965) Project
Output [3]: [product#77060, plant#75697, filter(transform(filter(transform(scheduleLines#77068, lambdafunction(struct(openQty, (greatest((lambda x_19#75653.quantity - coalesce(lambda x_19#75653.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_19#75653.productAvailabilityDateTime, lambda x_19#75653.deliveryAt)), lambda x_19#75653, false)), lambdafunction((lambda x_21#75654.availabilityDatetime < stockDatetime#76334), lambda x_21#75654, false)), lambdafunction(struct(documentId, id#77050, documentUuid, internalUUID#77049, openQty, lambda x_24#75656.openQty, openQtyInBaseUnit, ((lambda x_24#75656.openQty * quantityNumerator#77066) / quantityDenominator#77067), qtyUom, quantityUom#77064, qtyUomUuid, quantityUomUuid#77065, availabilityDatetime, lambda x_24#75656.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_24#75656, false)), lambdafunction(NOT (lambda x_26#75658.openQty = 0.0), lambda x_26#75658, false)) AS openGoodsMovements#75650]
Input [12]: [product#75696, plant#75697, stockDatetime#76334, id#77050, internalUUID#77049, supplierUuid#77058, product#77060, quantityUom#77064, quantityUomUuid#77065, quantityNumerator#77066, quantityDenominator#77067, scheduleLines#77068]
(1966) ObjectHashAggregate
Input [3]: [product#77060, plant#75697, openGoodsMovements#75650]
Keys [2]: [product#77060, plant#75697]
Functions [1]: [partial_collect_list(openGoodsMovements#75650, 0, 0)]
Aggregate Attributes [1]: [buf#81413]
Results [3]: [product#77060, plant#75697, buf#81414]
(1967) Exchange
Input [3]: [product#77060, plant#75697, buf#81414]
Arguments: hashpartitioning(product#77060, plant#75697, 25), ENSURE_REQUIREMENTS, [plan_id=37110]
(1968) ObjectHashAggregate
Input [3]: [product#77060, plant#75697, buf#81414]
Keys [2]: [product#77060, plant#75697]
Functions [1]: [collect_list(openGoodsMovements#75650, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#75650, 0, 0)#75694]
Results [3]: [product#77060, plant#75697, flatten(collect_list(openGoodsMovements#75650, 0, 0)#75694) AS openGoodsMovements#75660]
(1969) Filter
Input [3]: [product#77060, plant#75697, openGoodsMovements#75660]
Condition : (size(openGoodsMovements#75660, false) > 0)
(1970) Union
(1971) ObjectHashAggregate
Input [3]: [product#70764, plant#70763, openGoodsMovements#75051]
Keys [2]: [product#70764, plant#70763]
Functions [1]: [partial_collect_list(openGoodsMovements#75051, 0, 0)]
Aggregate Attributes [1]: [buf#81411]
Results [3]: [product#70764, plant#70763, buf#81412]
(1972) Exchange
Input [3]: [product#70764, plant#70763, buf#81412]
Arguments: hashpartitioning(product#70764, plant#70763, 25), ENSURE_REQUIREMENTS, [plan_id=37116]
(1973) ObjectHashAggregate
Input [3]: [product#70764, plant#70763, buf#81412]
Keys [2]: [product#70764, plant#70763]
Functions [1]: [collect_list(openGoodsMovements#75051, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#75051, 0, 0)#77178]
Results [3]: [product#70764, plant#70763, flatten(collect_list(openGoodsMovements#75051, 0, 0)#77178) AS openGoodsMovements#77174]
(1974) Project
Output [5]: [product#70764, plant#70763, openGoodsMovements#77174.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#79354, openGoodsMovements#77174.availabilityDatetime AS _extract_availabilityDatetime#79355, openGoodsMovements#77174.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#79356]
Input [3]: [product#70764, plant#70763, openGoodsMovements#77174]
(1975) Sort
Input [5]: [product#70764, plant#70763, _extract_openQtyInBaseUnit#79354, _extract_availabilityDatetime#79355, _extract_shelfLifeEndDatetime#79356]
Arguments: [product#70764 ASC NULLS FIRST, plant#70763 ASC NULLS FIRST], false, 0
(1976) SortMergeJoin
Left keys [2]: [product#69015, plant#69016]
Right keys [2]: [product#70764, plant#70763]
Join type: LeftOuter
Join condition: None
(1977) Project
Output [16]: [product#69015, plant#69016, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#69872, dayBucketDemands#70354, pointInTimeDemands#70355, coalesce(_extract_openQtyInBaseUnit#79354, []) AS openGoodsMovementQuantities#78611, coalesce(_extract_availabilityDatetime#79355, []) AS openGoodsMovementAvailabilityDatetimes#78612, coalesce(_extract_shelfLifeEndDatetime#79356, []) AS openGoodsMovementShelfLifeEndDatetimes#78613, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#78808, concat([ListingPeriod], CASE WHEN isnotnull(_extract_minimumSafetyStock#79671) THEN [MinStock] ELSE [] END) AS timeDependentSettingsName#79096, concat([-2208988800000000], CASE WHEN isnotnull(_extract_minimumSafetyStock#79671) THEN [-2208988800000000] ELSE [] END) AS timeDependentSettingsStartDatetime#79098, concat([7226582400000000], CASE WHEN isnotnull(_extract_minimumSafetyStock#79671) THEN [7226582400000000] ELSE [] END) AS timeDependentSettingsEndDatetime#79100, concat([1.0], CASE WHEN isnotnull(_extract_minimumSafetyStock#79671) THEN array(_extract_minimumSafetyStock#79671) ELSE [] END) AS timeDependentSettingsValue#79102]
Input [13]: [product#69015, plant#69016, _extract_minimumSafetyStock#79671, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, dayBucketDemands#70354, pointInTimeDemands#70355, product#70764, plant#70763, _extract_openQtyInBaseUnit#79354, _extract_availabilityDatetime#79355, _extract_shelfLifeEndDatetime#79356]
(1978) AdaptiveSparkPlan
Output [16]: [product#69015, plant#69016, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872, dayBucketDemands#70354, pointInTimeDemands#70355, openGoodsMovementQuantities#78611, openGoodsMovementAvailabilityDatetimes#78612, openGoodsMovementShelfLifeEndDatetimes#78613, configuration#78808, timeDependentSettingsName#79096, timeDependentSettingsStartDatetime#79098, timeDependentSettingsEndDatetime#79100, timeDependentSettingsValue#79102]
Arguments: isFinalPlan=false