== Physical Plan ==
AdaptiveSparkPlan (2456)
+- == Current Plan ==
ResultQueryStage (290)
+- * Project (289)
+- * BroadcastHashJoin LeftOuter BuildRight (288)
:- * Project (247)
: +- * Project (246)
: +- AQEShuffleRead (245)
: +- ShuffleQueryStage (244), Statistics(sizeInBytes=64.0 KiB, rowCount=195)
: +- Exchange (243)
: +- * Project (242)
: +- * BroadcastHashJoin LeftOuter BuildRight (241)
: :- AQEShuffleRead (190)
: : +- ShuffleQueryStage (189), Statistics(sizeInBytes=25.9 KiB, rowCount=195)
: : +- Exchange (188)
: : +- * Project (187)
: : +- * BroadcastHashJoin LeftOuter BuildRight (186)
: : :- * Project (38)
: : : +- * Project (37)
: : : +- * Generate (36)
: : : +- * Generate (35)
: : : +- * Project (34)
: : : +- Project (33)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (32)
: : : :- * Project (23)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (22)
: : : : :- * Project (14)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (13)
: : : : : :- ShuffleQueryStage (4), Statistics(sizeInBytes=18.3 KiB, rowCount=195)
: : : : : : +- Exchange (3)
: : : : : : +- * ColumnarToRow (2)
: : : : : : +- Scan parquet (1)
: : : : : +- BroadcastQueryStage (12), Statistics(sizeInBytes=2.1 MiB, rowCount=1.52E+3)
: : : : : +- BroadcastExchange (11)
: : : : : +- * Project (10)
: : : : : +- ShuffleQueryStage (9), Statistics(sizeInBytes=207.5 KiB, rowCount=1.52E+3)
: : : : : +- Exchange (8)
: : : : : +- * Project (7)
: : : : : +- * ColumnarToRow (6)
: : : : : +- Scan parquet (5)
: : : : +- BroadcastQueryStage (21), Statistics(sizeInBytes=2.0 MiB, rowCount=27)
: : : : +- BroadcastExchange (20)
: : : : +- ShuffleQueryStage (19), Statistics(sizeInBytes=1296.0 B, rowCount=27)
: : : : +- Exchange (18)
: : : : +- * Project (17)
: : : : +- * ColumnarToRow (16)
: : : : +- Scan parquet (15)
: : : +- BroadcastQueryStage (31), Statistics(sizeInBytes=2.0 MiB, rowCount=150)
: : : +- BroadcastExchange (30)
: : : +- ShuffleQueryStage (29), Statistics(sizeInBytes=89.7 KiB, rowCount=150)
: : : +- Exchange (28)
: : : +- * Project (27)
: : : +- * Filter (26)
: : : +- * ColumnarToRow (25)
: : : +- Scan parquet (24)
: : +- BroadcastQueryStage (185), Statistics(sizeInBytes=2.0 MiB, rowCount=40)
: : +- BroadcastExchange (184)
: : +- * HashAggregate (183)
: : +- AQEShuffleRead (182)
: : +- ShuffleQueryStage (181), Statistics(sizeInBytes=4.1 KiB, rowCount=40)
: : +- Exchange (180)
: : +- * HashAggregate (179)
: : +- * Project (178)
: : +- * BroadcastHashJoin Inner BuildRight (177)
: : :- AQEShuffleRead (126)
: : : +- ShuffleQueryStage (125), Statistics(sizeInBytes=4.7 KiB, rowCount=40)
: : : +- Exchange (124)
: : : +- * Project (123)
: : : +- * BroadcastHashJoin Inner BuildLeft (122)
: : : :- BroadcastQueryStage (100), Statistics(sizeInBytes=2.0 MiB, rowCount=390)
: : : : +- BroadcastExchange (99)
: : : : +- AQEShuffleRead (98)
: : : : +- ShuffleQueryStage (97), Statistics(sizeInBytes=45.7 KiB, rowCount=390)
: : : : +- Exchange (96)
: : : : +- * Project (95)
: : : : +- * Filter (94)
: : : : +- * Generate (93)
: : : : +- * Filter (92)
: : : : +- ObjectHashAggregate (91)
: : : : +- ObjectHashAggregate (90)
: : : : +- Generate (89)
: : : : +- * BroadcastHashJoin Inner BuildLeft (88)
: : : : :- BroadcastQueryStage (46), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : +- BroadcastExchange (45)
: : : : : +- ShuffleQueryStage (44), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : : +- Exchange (43)
: : : : : +- * Project (42)
: : : : : +- * Filter (41)
: : : : : +- * ColumnarToRow (40)
: : : : : +- Scan parquet (39)
: : : : +- * Project (87)
: : : : +- * BroadcastHashJoin Inner BuildLeft (86)
: : : : :- BroadcastQueryStage (59), Statistics(sizeInBytes=2.0 MiB, rowCount=9)
: : : : : +- BroadcastExchange (58)
: : : : : +- * Project (57)
: : : : : +- * Generate (56)
: : : : : +- * Project (55)
: : : : : +- * Filter (54)
: : : : : +- * Generate (53)
: : : : : +- ShuffleQueryStage (52), Statistics(sizeInBytes=1544.0 B, rowCount=1)
: : : : : +- Exchange (51)
: : : : : +- * Project (50)
: : : : : +- * Filter (49)
: : : : : +- * ColumnarToRow (48)
: : : : : +- Scan parquet (47)
: : : : +- * HashAggregate (85)
: : : : +- AQEShuffleRead (84)
: : : : +- ShuffleQueryStage (83), Statistics(sizeInBytes=4.1 KiB, rowCount=87)
: : : : +- Exchange (82)
: : : : +- * HashAggregate (81)
: : : : +- * Project (80)
: : : : +- * Generate (79)
: : : : +- * Project (78)
: : : : +- * Generate (77)
: : : : +- Project (76)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (75)
: : : : :- * Project (72)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (71)
: : : : : :- * Project (68)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (67)
: : : : : : :- ShuffleQueryStage (64), Statistics(sizeInBytes=16.8 KiB, rowCount=195)
: : : : : : : +- Exchange (63)
: : : : : : : +- * Filter (62)
: : : : : : : +- * ColumnarToRow (61)
: : : : : : : +- Scan parquet (60)
: : : : : : +- BroadcastQueryStage (66), Statistics(sizeInBytes=2.1 MiB, rowCount=1.52E+3)
: : : : : : +- ReusedExchange (65)
: : : : : +- BroadcastQueryStage (70), Statistics(sizeInBytes=2.0 MiB, rowCount=27)
: : : : : +- ReusedExchange (69)
: : : : +- BroadcastQueryStage (74), Statistics(sizeInBytes=2.0 MiB, rowCount=150)
: : : : +- ReusedExchange (73)
: : : +- * Project (121)
: : : +- * Generate (120)
: : : +- * Project (119)
: : : +- * Generate (118)
: : : +- Project (117)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (116)
: : : :- * Project (113)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (112)
: : : : :- * Project (109)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (108)
: : : : : :- ShuffleQueryStage (105), Statistics(sizeInBytes=18.3 KiB, rowCount=195)
: : : : : : +- Exchange (104)
: : : : : : +- * Filter (103)
: : : : : : +- * ColumnarToRow (102)
: : : : : : +- Scan parquet (101)
: : : : : +- BroadcastQueryStage (107), Statistics(sizeInBytes=2.1 MiB, rowCount=1.52E+3)
: : : : : +- ReusedExchange (106)
: : : : +- BroadcastQueryStage (111), Statistics(sizeInBytes=2.0 MiB, rowCount=27)
: : : : +- ReusedExchange (110)
: : : +- BroadcastQueryStage (115), Statistics(sizeInBytes=2.0 MiB, rowCount=150)
: : : +- ReusedExchange (114)
: : +- BroadcastQueryStage (176), Statistics(sizeInBytes=2.0 MiB, rowCount=40)
: : +- BroadcastExchange (175)
: : +- AQEShuffleRead (174)
: : +- ShuffleQueryStage (173), Statistics(sizeInBytes=4.4 KiB, rowCount=40)
: : +- Exchange (172)
: : +- * HashAggregate (171)
: : +- * HashAggregate (170)
: : +- * Project (169)
: : +- * BroadcastHashJoin Inner BuildLeft (168)
: : :- BroadcastQueryStage (149), Statistics(sizeInBytes=2.0 MiB, rowCount=390)
: : : +- BroadcastExchange (148)
: : : +- AQEShuffleRead (147)
: : : +- ShuffleQueryStage (146), Statistics(sizeInBytes=42.7 KiB, rowCount=390)
: : : +- Exchange (145)
: : : +- * Project (144)
: : : +- * Filter (143)
: : : +- * Generate (142)
: : : +- * Filter (141)
: : : +- ObjectHashAggregate (140)
: : : +- ObjectHashAggregate (139)
: : : +- Generate (138)
: : : +- * BroadcastHashJoin Inner BuildLeft (137)
: : : :- BroadcastQueryStage (128), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : +- ReusedExchange (127)
: : : +- * Project (136)
: : : +- * BroadcastHashJoin Inner BuildLeft (135)
: : : :- BroadcastQueryStage (130), Statistics(sizeInBytes=2.0 MiB, rowCount=9)
: : : : +- ReusedExchange (129)
: : : +- * HashAggregate (134)
: : : +- AQEShuffleRead (133)
: : : +- ShuffleQueryStage (132), Statistics(sizeInBytes=4.1 KiB, rowCount=87)
: : : +- ReusedExchange (131)
: : +- * Project (167)
: : +- * Generate (166)
: : +- * Project (165)
: : +- * Generate (164)
: : +- Project (163)
: : +- * BroadcastHashJoin LeftOuter BuildRight (162)
: : :- * Project (159)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (158)
: : : :- * Project (155)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (154)
: : : : :- ShuffleQueryStage (151), Statistics(sizeInBytes=18.3 KiB, rowCount=195)
: : : : : +- ReusedExchange (150)
: : : : +- BroadcastQueryStage (153), Statistics(sizeInBytes=2.1 MiB, rowCount=1.52E+3)
: : : : +- ReusedExchange (152)
: : : +- BroadcastQueryStage (157), Statistics(sizeInBytes=2.0 MiB, rowCount=27)
: : : +- ReusedExchange (156)
: : +- BroadcastQueryStage (161), Statistics(sizeInBytes=2.0 MiB, rowCount=150)
: : +- ReusedExchange (160)
: +- BroadcastQueryStage (240), Statistics(sizeInBytes=2.0 MiB, rowCount=195)
: +- BroadcastExchange (239)
: +- AQEShuffleRead (238)
: +- ShuffleQueryStage (237), Statistics(sizeInBytes=54.8 KiB, rowCount=195)
: +- Exchange (236)
: +- * SerializeFromObject (235)
: +- * MapElements (234)
: +- * DeserializeToObject (233)
: +- ObjectHashAggregate (232)
: +- ObjectHashAggregate (231)
: +- * Project (230)
: +- * BroadcastHashJoin LeftOuter BuildRight (229)
: :- * Project (223)
: : +- * BroadcastHashJoin LeftOuter BuildRight (222)
: : :- * Project (219)
: : : +- * Project (218)
: : : +- * Generate (217)
: : : +- * Generate (216)
: : : +- * Project (215)
: : : +- Project (214)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (213)
: : : :- * Project (210)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (209)
: : : : :- * BroadcastHashJoin LeftOuter BuildRight (201)
: : : : : :- ShuffleQueryStage (192), Statistics(sizeInBytes=18.3 KiB, rowCount=195)
: : : : : : +- ReusedExchange (191)
: : : : : +- BroadcastQueryStage (200), Statistics(sizeInBytes=2.1 MiB, rowCount=1.52E+3)
: : : : : +- BroadcastExchange (199)
: : : : : +- * Project (198)
: : : : : +- ShuffleQueryStage (197), Statistics(sizeInBytes=1214.4 KiB, rowCount=1.52E+3)
: : : : : +- Exchange (196)
: : : : : +- * Project (195)
: : : : : +- * ColumnarToRow (194)
: : : : : +- Scan parquet (193)
: : : : +- BroadcastQueryStage (208), Statistics(sizeInBytes=2.0 MiB, rowCount=27)
: : : : +- BroadcastExchange (207)
: : : : +- ShuffleQueryStage (206), Statistics(sizeInBytes=1944.0 B, rowCount=27)
: : : : +- Exchange (205)
: : : : +- * Project (204)
: : : : +- * ColumnarToRow (203)
: : : : +- Scan parquet (202)
: : : +- BroadcastQueryStage (212), Statistics(sizeInBytes=2.0 MiB, rowCount=150)
: : : +- ReusedExchange (211)
: : +- BroadcastQueryStage (221), Statistics(sizeInBytes=2.0 MiB, rowCount=40)
: : +- ReusedExchange (220)
: +- BroadcastQueryStage (228), Statistics(sizeInBytes=2.0 MiB, rowCount=195)
: +- BroadcastExchange (227)
: +- * Filter (226)
: +- * ColumnarToRow (225)
: +- Scan parquet (224)
+- BroadcastQueryStage (287), Statistics(sizeInBytes=2.0 MiB, rowCount=195)
+- BroadcastExchange (286)
+- * Filter (285)
+- * SerializeFromObject (284)
+- * MapElements (283)
+- * DeserializeToObject (282)
+- Project (281)
+- * Project (280)
+- AQEShuffleRead (279)
+- ShuffleQueryStage (278), Statistics(sizeInBytes=228.6 KiB, rowCount=195)
+- Exchange (277)
+- * Project (276)
+- * BroadcastHashJoin LeftOuter BuildRight (275)
:- AQEShuffleRead (272)
: +- ShuffleQueryStage (271), Statistics(sizeInBytes=190.5 KiB, rowCount=195)
: +- Exchange (270)
: +- * Project (269)
: +- * BroadcastHashJoin LeftOuter BuildRight (268)
: :- * Project (265)
: : +- * Project (264)
: : +- * Generate (263)
: : +- * Generate (262)
: : +- * Project (261)
: : +- Project (260)
: : +- * BroadcastHashJoin LeftOuter BuildRight (259)
: : :- * Project (256)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (255)
: : : :- * BroadcastHashJoin LeftOuter BuildRight (252)
: : : : :- ShuffleQueryStage (249), Statistics(sizeInBytes=18.3 KiB, rowCount=195)
: : : : : +- ReusedExchange (248)
: : : : +- BroadcastQueryStage (251), Statistics(sizeInBytes=2.1 MiB, rowCount=1.52E+3)
: : : : +- ReusedExchange (250)
: : : +- BroadcastQueryStage (254), Statistics(sizeInBytes=2.0 MiB, rowCount=27)
: : : +- ReusedExchange (253)
: : +- BroadcastQueryStage (258), Statistics(sizeInBytes=2.0 MiB, rowCount=150)
: : +- ReusedExchange (257)
: +- BroadcastQueryStage (267), Statistics(sizeInBytes=2.0 MiB, rowCount=40)
: +- ReusedExchange (266)
+- BroadcastQueryStage (274), Statistics(sizeInBytes=2.0 MiB, rowCount=195)
+- ReusedExchange (273)
+- == Initial Plan ==
Project (2455)
+- SortMergeJoin LeftOuter (2454)
:- Project (1527)
: +- SortMergeJoin LeftOuter (1526)
: :- Sort (728)
: : +- Exchange (727)
: : +- Project (726)
: : +- SortMergeJoin LeftOuter (725)
: : :- Sort (500)
: : : +- Exchange (499)
: : : +- Project (498)
: : : +- SortMergeJoin LeftOuter (497)
: : : :- Sort (314)
: : : : +- Project (313)
: : : : +- Project (312)
: : : : +- Generate (311)
: : : : +- Generate (310)
: : : : +- Project (309)
: : : : +- Project (308)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (307)
: : : : :- Project (302)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (301)
: : : : : :- Project (297)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (296)
: : : : : : :- Exchange (291)
: : : : : : : +- Scan parquet (1)
: : : : : : +- BroadcastExchange (295)
: : : : : : +- Project (294)
: : : : : : +- Exchange (293)
: : : : : : +- Project (292)
: : : : : : +- Scan parquet (5)
: : : : : +- BroadcastExchange (300)
: : : : : +- Exchange (299)
: : : : : +- Project (298)
: : : : : +- Scan parquet (15)
: : : : +- BroadcastExchange (306)
: : : : +- Exchange (305)
: : : : +- Project (304)
: : : : +- Filter (303)
: : : : +- Scan parquet (24)
: : : +- Sort (496)
: : : +- HashAggregate (495)
: : : +- Exchange (494)
: : : +- HashAggregate (493)
: : : +- Project (492)
: : : +- SortMergeJoin Inner (491)
: : : :- Sort (399)
: : : : +- Exchange (398)
: : : : +- Project (397)
: : : : +- SortMergeJoin Inner (396)
: : : : :- Sort (368)
: : : : : +- Exchange (367)
: : : : : +- Project (366)
: : : : : +- Filter (365)
: : : : : +- Generate (364)
: : : : : +- Filter (363)
: : : : : +- ObjectHashAggregate (362)
: : : : : +- ObjectHashAggregate (361)
: : : : : +- Generate (360)
: : : : : +- BroadcastHashJoin Inner BuildLeft (359)
: : : : : :- BroadcastExchange (318)
: : : : : : +- Exchange (317)
: : : : : : +- Project (316)
: : : : : : +- Filter (315)
: : : : : : +- Scan parquet (39)
: : : : : +- Project (358)
: : : : : +- BroadcastHashJoin Inner BuildLeft (357)
: : : : : :- BroadcastExchange (327)
: : : : : : +- Project (326)
: : : : : : +- Generate (325)
: : : : : : +- Project (324)
: : : : : : +- Filter (323)
: : : : : : +- Generate (322)
: : : : : : +- Exchange (321)
: : : : : : +- Project (320)
: : : : : : +- Filter (319)
: : : : : : +- Scan parquet (47)
: : : : : +- HashAggregate (356)
: : : : : +- Exchange (355)
: : : : : +- HashAggregate (354)
: : : : : +- Project (353)
: : : : : +- Generate (352)
: : : : : +- Project (351)
: : : : : +- Generate (350)
: : : : : +- Project (349)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (348)
: : : : : :- Project (342)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (341)
: : : : : : :- Project (336)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (335)
: : : : : : : :- Exchange (329)
: : : : : : : : +- Filter (328)
: : : : : : : : +- Scan parquet (60)
: : : : : : : +- BroadcastExchange (334)
: : : : : : : +- Project (333)
: : : : : : : +- Exchange (332)
: : : : : : : +- Project (331)
: : : : : : : +- Scan parquet (330)
: : : : : : +- BroadcastExchange (340)
: : : : : : +- Exchange (339)
: : : : : : +- Project (338)
: : : : : : +- Scan parquet (337)
: : : : : +- BroadcastExchange (347)
: : : : : +- Exchange (346)
: : : : : +- Project (345)
: : : : : +- Filter (344)
: : : : : +- Scan parquet (343)
: : : : +- Sort (395)
: : : : +- Project (394)
: : : : +- Generate (393)
: : : : +- Project (392)
: : : : +- Generate (391)
: : : : +- Project (390)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (389)
: : : : :- Project (383)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (382)
: : : : : :- Project (377)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (376)
: : : : : : :- Exchange (370)
: : : : : : : +- Filter (369)
: : : : : : : +- Scan parquet (101)
: : : : : : +- BroadcastExchange (375)
: : : : : : +- Project (374)
: : : : : : +- Exchange (373)
: : : : : : +- Project (372)
: : : : : : +- Scan parquet (371)
: : : : : +- BroadcastExchange (381)
: : : : : +- Exchange (380)
: : : : : +- Project (379)
: : : : : +- Scan parquet (378)
: : : : +- BroadcastExchange (388)
: : : : +- Exchange (387)
: : : : +- Project (386)
: : : : +- Filter (385)
: : : : +- Scan parquet (384)
: : : +- Sort (490)
: : : +- Exchange (489)
: : : +- HashAggregate (488)
: : : +- HashAggregate (487)
: : : +- Project (486)
: : : +- SortMergeJoin Inner (485)
: : : :- Sort (456)
: : : : +- Exchange (455)
: : : : +- Project (454)
: : : : +- Filter (453)
: : : : +- Generate (452)
: : : : +- Filter (451)
: : : : +- ObjectHashAggregate (450)
: : : : +- ObjectHashAggregate (449)
: : : : +- Generate (448)
: : : : +- BroadcastHashJoin Inner BuildLeft (447)
: : : : :- BroadcastExchange (404)
: : : : : +- Exchange (403)
: : : : : +- Project (402)
: : : : : +- Filter (401)
: : : : : +- Scan parquet (400)
: : : : +- Project (446)
: : : : +- BroadcastHashJoin Inner BuildLeft (445)
: : : : :- BroadcastExchange (414)
: : : : : +- Project (413)
: : : : : +- Generate (412)
: : : : : +- Project (411)
: : : : : +- Filter (410)
: : : : : +- Generate (409)
: : : : : +- Exchange (408)
: : : : : +- Project (407)
: : : : : +- Filter (406)
: : : : : +- Scan parquet (405)
: : : : +- HashAggregate (444)
: : : : +- Exchange (443)
: : : : +- HashAggregate (442)
: : : : +- Project (441)
: : : : +- Generate (440)
: : : : +- Project (439)
: : : : +- Generate (438)
: : : : +- Project (437)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (436)
: : : : :- Project (430)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (429)
: : : : : :- Project (424)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (423)
: : : : : : :- Exchange (417)
: : : : : : : +- Filter (416)
: : : : : : : +- Scan parquet (415)
: : : : : : +- BroadcastExchange (422)
: : : : : : +- Project (421)
: : : : : : +- Exchange (420)
: : : : : : +- Project (419)
: : : : : : +- Scan parquet (418)
: : : : : +- BroadcastExchange (428)
: : : : : +- Exchange (427)
: : : : : +- Project (426)
: : : : : +- Scan parquet (425)
: : : : +- BroadcastExchange (435)
: : : : +- Exchange (434)
: : : : +- Project (433)
: : : : +- Filter (432)
: : : : +- Scan parquet (431)
: : : +- Sort (484)
: : : +- Project (483)
: : : +- Generate (482)
: : : +- Project (481)
: : : +- Generate (480)
: : : +- Project (479)
: : : +- BroadcastHashJoin LeftOuter BuildRight (478)
: : : :- Project (472)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (471)
: : : : :- Project (466)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (465)
: : : : : :- Exchange (459)
: : : : : : +- Filter (458)
: : : : : : +- Scan parquet (457)
: : : : : +- BroadcastExchange (464)
: : : : : +- Project (463)
: : : : : +- Exchange (462)
: : : : : +- Project (461)
: : : : : +- Scan parquet (460)
: : : : +- BroadcastExchange (470)
: : : : +- Exchange (469)
: : : : +- Project (468)
: : : : +- Scan parquet (467)
: : : +- BroadcastExchange (477)
: : : +- Exchange (476)
: : : +- Project (475)
: : : +- Filter (474)
: : : +- Scan parquet (473)
: : +- Sort (724)
: : +- Exchange (723)
: : +- SerializeFromObject (722)
: : +- MapElements (721)
: : +- DeserializeToObject (720)
: : +- ObjectHashAggregate (719)
: : +- ObjectHashAggregate (718)
: : +- Project (717)
: : +- BroadcastHashJoin LeftOuter BuildRight (716)
: : :- Project (713)
: : : +- SortMergeJoin LeftOuter (712)
: : : :- Sort (525)
: : : : +- Project (524)
: : : : +- Project (523)
: : : : +- Generate (522)
: : : : +- Generate (521)
: : : : +- Project (520)
: : : : +- Project (519)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (518)
: : : : :- Project (512)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (511)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (507)
: : : : : : :- Exchange (502)
: : : : : : : +- Scan parquet (501)
: : : : : : +- BroadcastExchange (506)
: : : : : : +- Project (505)
: : : : : : +- Exchange (504)
: : : : : : +- Project (503)
: : : : : : +- Scan parquet (193)
: : : : : +- BroadcastExchange (510)
: : : : : +- Exchange (509)
: : : : : +- Project (508)
: : : : : +- Scan parquet (202)
: : : : +- BroadcastExchange (517)
: : : : +- Exchange (516)
: : : : +- Project (515)
: : : : +- Filter (514)
: : : : +- Scan parquet (513)
: : : +- Sort (711)
: : : +- HashAggregate (710)
: : : +- Exchange (709)
: : : +- HashAggregate (708)
: : : +- Project (707)
: : : +- SortMergeJoin Inner (706)
: : : :- Sort (614)
: : : : +- Exchange (613)
: : : : +- Project (612)
: : : : +- SortMergeJoin Inner (611)
: : : : :- Sort (582)
: : : : : +- Exchange (581)
: : : : : +- Project (580)
: : : : : +- Filter (579)
: : : : : +- Generate (578)
: : : : : +- Filter (577)
: : : : : +- ObjectHashAggregate (576)
: : : : : +- ObjectHashAggregate (575)
: : : : : +- Generate (574)
: : : : : +- BroadcastHashJoin Inner BuildLeft (573)
: : : : : :- BroadcastExchange (530)
: : : : : : +- Exchange (529)
: : : : : : +- Project (528)
: : : : : : +- Filter (527)
: : : : : : +- Scan parquet (526)
: : : : : +- Project (572)
: : : : : +- BroadcastHashJoin Inner BuildLeft (571)
: : : : : :- BroadcastExchange (540)
: : : : : : +- Project (539)
: : : : : : +- Generate (538)
: : : : : : +- Project (537)
: : : : : : +- Filter (536)
: : : : : : +- Generate (535)
: : : : : : +- Exchange (534)
: : : : : : +- Project (533)
: : : : : : +- Filter (532)
: : : : : : +- Scan parquet (531)
: : : : : +- HashAggregate (570)
: : : : : +- Exchange (569)
: : : : : +- HashAggregate (568)
: : : : : +- Project (567)
: : : : : +- Generate (566)
: : : : : +- Project (565)
: : : : : +- Generate (564)
: : : : : +- Project (563)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (562)
: : : : : :- Project (556)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (555)
: : : : : : :- Project (550)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (549)
: : : : : : : :- Exchange (543)
: : : : : : : : +- Filter (542)
: : : : : : : : +- Scan parquet (541)
: : : : : : : +- BroadcastExchange (548)
: : : : : : : +- Project (547)
: : : : : : : +- Exchange (546)
: : : : : : : +- Project (545)
: : : : : : : +- Scan parquet (544)
: : : : : : +- BroadcastExchange (554)
: : : : : : +- Exchange (553)
: : : : : : +- Project (552)
: : : : : : +- Scan parquet (551)
: : : : : +- BroadcastExchange (561)
: : : : : +- Exchange (560)
: : : : : +- Project (559)
: : : : : +- Filter (558)
: : : : : +- Scan parquet (557)
: : : : +- Sort (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 (705)
: : : +- Exchange (704)
: : : +- HashAggregate (703)
: : : +- HashAggregate (702)
: : : +- Project (701)
: : : +- SortMergeJoin Inner (700)
: : : :- Sort (671)
: : : : +- Exchange (670)
: : : : +- Project (669)
: : : : +- Filter (668)
: : : : +- Generate (667)
: : : : +- Filter (666)
: : : : +- ObjectHashAggregate (665)
: : : : +- ObjectHashAggregate (664)
: : : : +- Generate (663)
: : : : +- BroadcastHashJoin Inner BuildLeft (662)
: : : : :- BroadcastExchange (619)
: : : : : +- Exchange (618)
: : : : : +- Project (617)
: : : : : +- Filter (616)
: : : : : +- Scan parquet (615)
: : : : +- Project (661)
: : : : +- BroadcastHashJoin Inner BuildLeft (660)
: : : : :- BroadcastExchange (629)
: : : : : +- Project (628)
: : : : : +- Generate (627)
: : : : : +- Project (626)
: : : : : +- Filter (625)
: : : : : +- Generate (624)
: : : : : +- Exchange (623)
: : : : : +- Project (622)
: : : : : +- Filter (621)
: : : : : +- Scan parquet (620)
: : : : +- HashAggregate (659)
: : : : +- Exchange (658)
: : : : +- HashAggregate (657)
: : : : +- Project (656)
: : : : +- Generate (655)
: : : : +- Project (654)
: : : : +- Generate (653)
: : : : +- Project (652)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (651)
: : : : :- Project (645)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (644)
: : : : : :- Project (639)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (638)
: : : : : : :- Exchange (632)
: : : : : : : +- Filter (631)
: : : : : : : +- Scan parquet (630)
: : : : : : +- BroadcastExchange (637)
: : : : : : +- Project (636)
: : : : : : +- Exchange (635)
: : : : : : +- Project (634)
: : : : : : +- Scan parquet (633)
: : : : : +- BroadcastExchange (643)
: : : : : +- Exchange (642)
: : : : : +- Project (641)
: : : : : +- Scan parquet (640)
: : : : +- BroadcastExchange (650)
: : : : +- Exchange (649)
: : : : +- Project (648)
: : : : +- Filter (647)
: : : : +- Scan parquet (646)
: : : +- Sort (699)
: : : +- Project (698)
: : : +- Generate (697)
: : : +- Project (696)
: : : +- Generate (695)
: : : +- Project (694)
: : : +- BroadcastHashJoin LeftOuter BuildRight (693)
: : : :- Project (687)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (686)
: : : : :- Project (681)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (680)
: : : : : :- Exchange (674)
: : : : : : +- Filter (673)
: : : : : : +- Scan parquet (672)
: : : : : +- BroadcastExchange (679)
: : : : : +- Project (678)
: : : : : +- Exchange (677)
: : : : : +- Project (676)
: : : : : +- Scan parquet (675)
: : : : +- BroadcastExchange (685)
: : : : +- Exchange (684)
: : : : +- Project (683)
: : : : +- Scan parquet (682)
: : : +- BroadcastExchange (692)
: : : +- Exchange (691)
: : : +- Project (690)
: : : +- Filter (689)
: : : +- Scan parquet (688)
: : +- BroadcastExchange (715)
: : +- Filter (714)
: : +- Scan parquet (224)
: +- Sort (1525)
: +- Project (1524)
: +- ObjectHashAggregate (1523)
: +- Exchange (1522)
: +- ObjectHashAggregate (1521)
: +- Union (1520)
: :- Filter (1058)
: : +- InMemoryTableScan (729)
: : +- InMemoryRelation (730)
: : +- AdaptiveSparkPlan (1057)
+- == Final Plan ==
ResultQueryStage (732)
+- EmptyRelation (731)
+- Filter (unknown)
+- EmptyRelation (unknown)
+- == Initial Plan ==
Filter (1056)
+- ObjectHashAggregate (1055)
+- Exchange (1054)
+- ObjectHashAggregate (1053)
+- Project (1052)
+- Window (1051)
+- Sort (1050)
+- Exchange (1049)
+- Project (1048)
+- BroadcastHashJoin Inner BuildRight (1047)
:- Project (1038)
: +- SortMergeJoin Inner (1037)
: :- Sort (992)
: : +- Exchange (991)
: : +- Project (990)
: : +- SortMergeJoin LeftOuter (989)
: : :- Sort (761)
: : : +- Exchange (760)
: : : +- Project (759)
: : : +- Generate (758)
: : : +- Project (757)
: : : +- Generate (756)
: : : +- Project (755)
: : : +- BroadcastHashJoin LeftOuter BuildRight (754)
: : : :- Project (748)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (747)
: : : : :- Project (742)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (741)
: : : : : :- Exchange (735)
: : : : : : +- Filter (734)
: : : : : : +- Scan parquet (733)
: : : : : +- BroadcastExchange (740)
: : : : : +- Project (739)
: : : : : +- Exchange (738)
: : : : : +- Project (737)
: : : : : +- Scan parquet (736)
: : : : +- BroadcastExchange (746)
: : : : +- Exchange (745)
: : : : +- Project (744)
: : : : +- Scan parquet (743)
: : : +- BroadcastExchange (753)
: : : +- Exchange (752)
: : : +- Project (751)
: : : +- Filter (750)
: : : +- Scan parquet (749)
: : +- Sort (988)
: : +- Exchange (987)
: : +- SerializeFromObject (986)
: : +- MapElements (985)
: : +- DeserializeToObject (984)
: : +- ObjectHashAggregate (983)
: : +- ObjectHashAggregate (982)
: : +- Project (981)
: : +- BroadcastHashJoin LeftOuter BuildRight (980)
: : :- Project (976)
: : : +- SortMergeJoin LeftOuter (975)
: : : :- Sort (788)
: : : : +- Project (787)
: : : : +- Project (786)
: : : : +- Generate (785)
: : : : +- Generate (784)
: : : : +- Project (783)
: : : : +- Project (782)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (781)
: : : : :- Project (775)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (774)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (769)
: : : : : : :- Exchange (763)
: : : : : : : +- Scan parquet (762)
: : : : : : +- BroadcastExchange (768)
: : : : : : +- Project (767)
: : : : : : +- Exchange (766)
: : : : : : +- Project (765)
: : : : : : +- Scan parquet (764)
: : : : : +- BroadcastExchange (773)
: : : : : +- Exchange (772)
: : : : : +- Project (771)
: : : : : +- Scan parquet (770)
: : : : +- BroadcastExchange (780)
: : : : +- Exchange (779)
: : : : +- Project (778)
: : : : +- Filter (777)
: : : : +- Scan parquet (776)
: : : +- Sort (974)
: : : +- HashAggregate (973)
: : : +- Exchange (972)
: : : +- HashAggregate (971)
: : : +- Project (970)
: : : +- SortMergeJoin Inner (969)
: : : :- Sort (877)
: : : : +- Exchange (876)
: : : : +- Project (875)
: : : : +- SortMergeJoin Inner (874)
: : : : :- Sort (845)
: : : : : +- Exchange (844)
: : : : : +- Project (843)
: : : : : +- Filter (842)
: : : : : +- Generate (841)
: : : : : +- Filter (840)
: : : : : +- ObjectHashAggregate (839)
: : : : : +- ObjectHashAggregate (838)
: : : : : +- Generate (837)
: : : : : +- BroadcastHashJoin Inner BuildLeft (836)
: : : : : :- BroadcastExchange (793)
: : : : : : +- Exchange (792)
: : : : : : +- Project (791)
: : : : : : +- Filter (790)
: : : : : : +- Scan parquet (789)
: : : : : +- Project (835)
: : : : : +- BroadcastHashJoin Inner BuildLeft (834)
: : : : : :- BroadcastExchange (803)
: : : : : : +- Project (802)
: : : : : : +- Generate (801)
: : : : : : +- Project (800)
: : : : : : +- Filter (799)
: : : : : : +- Generate (798)
: : : : : : +- Exchange (797)
: : : : : : +- Project (796)
: : : : : : +- Filter (795)
: : : : : : +- Scan parquet (794)
: : : : : +- HashAggregate (833)
: : : : : +- Exchange (832)
: : : : : +- HashAggregate (831)
: : : : : +- Project (830)
: : : : : +- Generate (829)
: : : : : +- Project (828)
: : : : : +- Generate (827)
: : : : : +- Project (826)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (825)
: : : : : :- Project (819)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (818)
: : : : : : :- Project (813)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (812)
: : : : : : : :- Exchange (806)
: : : : : : : : +- Filter (805)
: : : : : : : : +- Scan parquet (804)
: : : : : : : +- BroadcastExchange (811)
: : : : : : : +- Project (810)
: : : : : : : +- Exchange (809)
: : : : : : : +- Project (808)
: : : : : : : +- Scan parquet (807)
: : : : : : +- BroadcastExchange (817)
: : : : : : +- Exchange (816)
: : : : : : +- Project (815)
: : : : : : +- Scan parquet (814)
: : : : : +- BroadcastExchange (824)
: : : : : +- Exchange (823)
: : : : : +- Project (822)
: : : : : +- Filter (821)
: : : : : +- Scan parquet (820)
: : : : +- Sort (873)
: : : : +- Project (872)
: : : : +- Generate (871)
: : : : +- Project (870)
: : : : +- Generate (869)
: : : : +- Project (868)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (867)
: : : : :- Project (861)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (860)
: : : : : :- Project (855)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (854)
: : : : : : :- Exchange (848)
: : : : : : : +- Filter (847)
: : : : : : : +- Scan parquet (846)
: : : : : : +- BroadcastExchange (853)
: : : : : : +- Project (852)
: : : : : : +- Exchange (851)
: : : : : : +- Project (850)
: : : : : : +- Scan parquet (849)
: : : : : +- BroadcastExchange (859)
: : : : : +- Exchange (858)
: : : : : +- Project (857)
: : : : : +- Scan parquet (856)
: : : : +- BroadcastExchange (866)
: : : : +- Exchange (865)
: : : : +- Project (864)
: : : : +- Filter (863)
: : : : +- Scan parquet (862)
: : : +- Sort (968)
: : : +- Exchange (967)
: : : +- HashAggregate (966)
: : : +- HashAggregate (965)
: : : +- Project (964)
: : : +- SortMergeJoin Inner (963)
: : : :- Sort (934)
: : : : +- Exchange (933)
: : : : +- Project (932)
: : : : +- Filter (931)
: : : : +- Generate (930)
: : : : +- Filter (929)
: : : : +- ObjectHashAggregate (928)
: : : : +- ObjectHashAggregate (927)
: : : : +- Generate (926)
: : : : +- BroadcastHashJoin Inner BuildLeft (925)
: : : : :- BroadcastExchange (882)
: : : : : +- Exchange (881)
: : : : : +- Project (880)
: : : : : +- Filter (879)
: : : : : +- Scan parquet (878)
: : : : +- Project (924)
: : : : +- BroadcastHashJoin Inner BuildLeft (923)
: : : : :- BroadcastExchange (892)
: : : : : +- Project (891)
: : : : : +- Generate (890)
: : : : : +- Project (889)
: : : : : +- Filter (888)
: : : : : +- Generate (887)
: : : : : +- Exchange (886)
: : : : : +- Project (885)
: : : : : +- Filter (884)
: : : : : +- Scan parquet (883)
: : : : +- HashAggregate (922)
: : : : +- Exchange (921)
: : : : +- HashAggregate (920)
: : : : +- Project (919)
: : : : +- Generate (918)
: : : : +- Project (917)
: : : : +- Generate (916)
: : : : +- Project (915)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (914)
: : : : :- Project (908)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (907)
: : : : : :- Project (902)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (901)
: : : : : : :- Exchange (895)
: : : : : : : +- Filter (894)
: : : : : : : +- Scan parquet (893)
: : : : : : +- BroadcastExchange (900)
: : : : : : +- Project (899)
: : : : : : +- Exchange (898)
: : : : : : +- Project (897)
: : : : : : +- Scan parquet (896)
: : : : : +- BroadcastExchange (906)
: : : : : +- Exchange (905)
: : : : : +- Project (904)
: : : : : +- Scan parquet (903)
: : : : +- BroadcastExchange (913)
: : : : +- Exchange (912)
: : : : +- Project (911)
: : : : +- Filter (910)
: : : : +- Scan parquet (909)
: : : +- Sort (962)
: : : +- Project (961)
: : : +- Generate (960)
: : : +- Project (959)
: : : +- Generate (958)
: : : +- Project (957)
: : : +- BroadcastHashJoin LeftOuter BuildRight (956)
: : : :- Project (950)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (949)
: : : : :- Project (944)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (943)
: : : : : :- Exchange (937)
: : : : : : +- Filter (936)
: : : : : : +- Scan parquet (935)
: : : : : +- BroadcastExchange (942)
: : : : : +- Project (941)
: : : : : +- Exchange (940)
: : : : : +- Project (939)
: : : : : +- Scan parquet (938)
: : : : +- BroadcastExchange (948)
: : : : +- Exchange (947)
: : : : +- Project (946)
: : : : +- Scan parquet (945)
: : : +- BroadcastExchange (955)
: : : +- Exchange (954)
: : : +- Project (953)
: : : +- Filter (952)
: : : +- Scan parquet (951)
: : +- BroadcastExchange (979)
: : +- Filter (978)
: : +- Scan parquet (977)
: +- Sort (1036)
: +- Project (1035)
: +- BroadcastHashJoin Inner BuildLeft (1034)
: :- BroadcastExchange (1003)
: : +- Project (1002)
: : +- Filter (1001)
: : +- Generate (1000)
: : +- Project (999)
: : +- Filter (998)
: : +- Generate (997)
: : +- Exchange (996)
: : +- Project (995)
: : +- Filter (994)
: : +- Scan parquet (993)
: +- HashAggregate (1033)
: +- Exchange (1032)
: +- HashAggregate (1031)
: +- Project (1030)
: +- Generate (1029)
: +- Project (1028)
: +- Generate (1027)
: +- Project (1026)
: +- BroadcastHashJoin LeftOuter BuildRight (1025)
: :- Project (1019)
: : +- BroadcastHashJoin LeftOuter BuildRight (1018)
: : :- Project (1013)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1012)
: : : :- Exchange (1006)
: : : : +- Filter (1005)
: : : : +- Scan parquet (1004)
: : : +- BroadcastExchange (1011)
: : : +- Project (1010)
: : : +- Exchange (1009)
: : : +- Project (1008)
: : : +- Scan parquet (1007)
: : +- BroadcastExchange (1017)
: : +- Exchange (1016)
: : +- Project (1015)
: : +- Scan parquet (1014)
: +- BroadcastExchange (1024)
: +- Exchange (1023)
: +- Project (1022)
: +- Filter (1021)
: +- Scan parquet (1020)
+- BroadcastExchange (1046)
+- Project (1045)
+- Filter (1044)
+- Generate (1043)
+- Exchange (1042)
+- Project (1041)
+- Filter (1040)
+- Scan parquet (1039)
: +- Filter (1519)
: +- ObjectHashAggregate (1518)
: +- Exchange (1517)
: +- ObjectHashAggregate (1516)
: +- Project (1515)
: +- BroadcastHashJoin Inner BuildRight (1514)
: :- Project (1505)
: : +- SortMergeJoin LeftOuter (1504)
: : :- Sort (1276)
: : : +- Exchange (1275)
: : : +- Project (1274)
: : : +- SortMergeJoin LeftOuter (1273)
: : : :- Sort (1086)
: : : : +- Project (1085)
: : : : +- Generate (1084)
: : : : +- Project (1083)
: : : : +- Generate (1082)
: : : : +- Project (1081)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1080)
: : : : :- Project (1074)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1073)
: : : : : :- Project (1068)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1067)
: : : : : : :- Exchange (1061)
: : : : : : : +- Filter (1060)
: : : : : : : +- Scan parquet (1059)
: : : : : : +- BroadcastExchange (1066)
: : : : : : +- Project (1065)
: : : : : : +- Exchange (1064)
: : : : : : +- Project (1063)
: : : : : : +- Scan parquet (1062)
: : : : : +- BroadcastExchange (1072)
: : : : : +- Exchange (1071)
: : : : : +- Project (1070)
: : : : : +- Scan parquet (1069)
: : : : +- BroadcastExchange (1079)
: : : : +- Exchange (1078)
: : : : +- Project (1077)
: : : : +- Filter (1076)
: : : : +- Scan parquet (1075)
: : : +- Sort (1272)
: : : +- HashAggregate (1271)
: : : +- Exchange (1270)
: : : +- HashAggregate (1269)
: : : +- Project (1268)
: : : +- SortMergeJoin Inner (1267)
: : : :- Sort (1175)
: : : : +- Exchange (1174)
: : : : +- Project (1173)
: : : : +- SortMergeJoin Inner (1172)
: : : : :- Sort (1143)
: : : : : +- Exchange (1142)
: : : : : +- Project (1141)
: : : : : +- Filter (1140)
: : : : : +- Generate (1139)
: : : : : +- Filter (1138)
: : : : : +- ObjectHashAggregate (1137)
: : : : : +- ObjectHashAggregate (1136)
: : : : : +- Generate (1135)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1134)
: : : : : :- BroadcastExchange (1091)
: : : : : : +- Exchange (1090)
: : : : : : +- Project (1089)
: : : : : : +- Filter (1088)
: : : : : : +- Scan parquet (1087)
: : : : : +- Project (1133)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1132)
: : : : : :- BroadcastExchange (1101)
: : : : : : +- Project (1100)
: : : : : : +- Generate (1099)
: : : : : : +- Project (1098)
: : : : : : +- Filter (1097)
: : : : : : +- Generate (1096)
: : : : : : +- Exchange (1095)
: : : : : : +- Project (1094)
: : : : : : +- Filter (1093)
: : : : : : +- Scan parquet (1092)
: : : : : +- HashAggregate (1131)
: : : : : +- Exchange (1130)
: : : : : +- HashAggregate (1129)
: : : : : +- Project (1128)
: : : : : +- Generate (1127)
: : : : : +- Project (1126)
: : : : : +- Generate (1125)
: : : : : +- Project (1124)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1123)
: : : : : :- Project (1117)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1116)
: : : : : : :- Project (1111)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1110)
: : : : : : : :- Exchange (1104)
: : : : : : : : +- Filter (1103)
: : : : : : : : +- Scan parquet (1102)
: : : : : : : +- BroadcastExchange (1109)
: : : : : : : +- Project (1108)
: : : : : : : +- Exchange (1107)
: : : : : : : +- Project (1106)
: : : : : : : +- Scan parquet (1105)
: : : : : : +- BroadcastExchange (1115)
: : : : : : +- Exchange (1114)
: : : : : : +- Project (1113)
: : : : : : +- Scan parquet (1112)
: : : : : +- BroadcastExchange (1122)
: : : : : +- Exchange (1121)
: : : : : +- Project (1120)
: : : : : +- Filter (1119)
: : : : : +- Scan parquet (1118)
: : : : +- Sort (1171)
: : : : +- Project (1170)
: : : : +- Generate (1169)
: : : : +- Project (1168)
: : : : +- Generate (1167)
: : : : +- Project (1166)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1165)
: : : : :- Project (1159)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1158)
: : : : : :- Project (1153)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1152)
: : : : : : :- Exchange (1146)
: : : : : : : +- Filter (1145)
: : : : : : : +- Scan parquet (1144)
: : : : : : +- BroadcastExchange (1151)
: : : : : : +- Project (1150)
: : : : : : +- Exchange (1149)
: : : : : : +- Project (1148)
: : : : : : +- Scan parquet (1147)
: : : : : +- BroadcastExchange (1157)
: : : : : +- Exchange (1156)
: : : : : +- Project (1155)
: : : : : +- Scan parquet (1154)
: : : : +- BroadcastExchange (1164)
: : : : +- Exchange (1163)
: : : : +- Project (1162)
: : : : +- Filter (1161)
: : : : +- Scan parquet (1160)
: : : +- Sort (1266)
: : : +- Exchange (1265)
: : : +- HashAggregate (1264)
: : : +- HashAggregate (1263)
: : : +- Project (1262)
: : : +- SortMergeJoin Inner (1261)
: : : :- Sort (1232)
: : : : +- Exchange (1231)
: : : : +- Project (1230)
: : : : +- Filter (1229)
: : : : +- Generate (1228)
: : : : +- Filter (1227)
: : : : +- ObjectHashAggregate (1226)
: : : : +- ObjectHashAggregate (1225)
: : : : +- Generate (1224)
: : : : +- BroadcastHashJoin Inner BuildLeft (1223)
: : : : :- BroadcastExchange (1180)
: : : : : +- Exchange (1179)
: : : : : +- Project (1178)
: : : : : +- Filter (1177)
: : : : : +- Scan parquet (1176)
: : : : +- Project (1222)
: : : : +- BroadcastHashJoin Inner BuildLeft (1221)
: : : : :- BroadcastExchange (1190)
: : : : : +- Project (1189)
: : : : : +- Generate (1188)
: : : : : +- Project (1187)
: : : : : +- Filter (1186)
: : : : : +- Generate (1185)
: : : : : +- Exchange (1184)
: : : : : +- Project (1183)
: : : : : +- Filter (1182)
: : : : : +- Scan parquet (1181)
: : : : +- HashAggregate (1220)
: : : : +- Exchange (1219)
: : : : +- HashAggregate (1218)
: : : : +- Project (1217)
: : : : +- Generate (1216)
: : : : +- Project (1215)
: : : : +- Generate (1214)
: : : : +- Project (1213)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1212)
: : : : :- Project (1206)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1205)
: : : : : :- Project (1200)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1199)
: : : : : : :- Exchange (1193)
: : : : : : : +- Filter (1192)
: : : : : : : +- Scan parquet (1191)
: : : : : : +- BroadcastExchange (1198)
: : : : : : +- Project (1197)
: : : : : : +- Exchange (1196)
: : : : : : +- Project (1195)
: : : : : : +- Scan parquet (1194)
: : : : : +- BroadcastExchange (1204)
: : : : : +- Exchange (1203)
: : : : : +- Project (1202)
: : : : : +- Scan parquet (1201)
: : : : +- BroadcastExchange (1211)
: : : : +- Exchange (1210)
: : : : +- Project (1209)
: : : : +- Filter (1208)
: : : : +- Scan parquet (1207)
: : : +- Sort (1260)
: : : +- Project (1259)
: : : +- Generate (1258)
: : : +- Project (1257)
: : : +- Generate (1256)
: : : +- Project (1255)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1254)
: : : :- Project (1248)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1247)
: : : : :- Project (1242)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1241)
: : : : : :- Exchange (1235)
: : : : : : +- Filter (1234)
: : : : : : +- Scan parquet (1233)
: : : : : +- BroadcastExchange (1240)
: : : : : +- Project (1239)
: : : : : +- Exchange (1238)
: : : : : +- Project (1237)
: : : : : +- Scan parquet (1236)
: : : : +- BroadcastExchange (1246)
: : : : +- Exchange (1245)
: : : : +- Project (1244)
: : : : +- Scan parquet (1243)
: : : +- BroadcastExchange (1253)
: : : +- Exchange (1252)
: : : +- Project (1251)
: : : +- Filter (1250)
: : : +- Scan parquet (1249)
: : +- Sort (1503)
: : +- Exchange (1502)
: : +- SerializeFromObject (1501)
: : +- MapElements (1500)
: : +- DeserializeToObject (1499)
: : +- ObjectHashAggregate (1498)
: : +- ObjectHashAggregate (1497)
: : +- Project (1496)
: : +- BroadcastHashJoin LeftOuter BuildRight (1495)
: : :- Project (1491)
: : : +- SortMergeJoin LeftOuter (1490)
: : : :- Sort (1303)
: : : : +- Project (1302)
: : : : +- Project (1301)
: : : : +- Generate (1300)
: : : : +- Generate (1299)
: : : : +- Project (1298)
: : : : +- Project (1297)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1296)
: : : : :- Project (1290)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1289)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (1284)
: : : : : : :- Exchange (1278)
: : : : : : : +- Scan parquet (1277)
: : : : : : +- BroadcastExchange (1283)
: : : : : : +- Project (1282)
: : : : : : +- Exchange (1281)
: : : : : : +- Project (1280)
: : : : : : +- Scan parquet (1279)
: : : : : +- BroadcastExchange (1288)
: : : : : +- Exchange (1287)
: : : : : +- Project (1286)
: : : : : +- Scan parquet (1285)
: : : : +- BroadcastExchange (1295)
: : : : +- Exchange (1294)
: : : : +- Project (1293)
: : : : +- Filter (1292)
: : : : +- Scan parquet (1291)
: : : +- Sort (1489)
: : : +- HashAggregate (1488)
: : : +- Exchange (1487)
: : : +- HashAggregate (1486)
: : : +- Project (1485)
: : : +- SortMergeJoin Inner (1484)
: : : :- Sort (1392)
: : : : +- Exchange (1391)
: : : : +- Project (1390)
: : : : +- SortMergeJoin Inner (1389)
: : : : :- Sort (1360)
: : : : : +- Exchange (1359)
: : : : : +- Project (1358)
: : : : : +- Filter (1357)
: : : : : +- Generate (1356)
: : : : : +- Filter (1355)
: : : : : +- ObjectHashAggregate (1354)
: : : : : +- ObjectHashAggregate (1353)
: : : : : +- Generate (1352)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1351)
: : : : : :- BroadcastExchange (1308)
: : : : : : +- Exchange (1307)
: : : : : : +- Project (1306)
: : : : : : +- Filter (1305)
: : : : : : +- Scan parquet (1304)
: : : : : +- Project (1350)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1349)
: : : : : :- BroadcastExchange (1318)
: : : : : : +- Project (1317)
: : : : : : +- Generate (1316)
: : : : : : +- Project (1315)
: : : : : : +- Filter (1314)
: : : : : : +- Generate (1313)
: : : : : : +- Exchange (1312)
: : : : : : +- Project (1311)
: : : : : : +- Filter (1310)
: : : : : : +- Scan parquet (1309)
: : : : : +- HashAggregate (1348)
: : : : : +- Exchange (1347)
: : : : : +- HashAggregate (1346)
: : : : : +- Project (1345)
: : : : : +- Generate (1344)
: : : : : +- Project (1343)
: : : : : +- Generate (1342)
: : : : : +- Project (1341)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1340)
: : : : : :- Project (1334)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1333)
: : : : : : :- Project (1328)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1327)
: : : : : : : :- Exchange (1321)
: : : : : : : : +- Filter (1320)
: : : : : : : : +- Scan parquet (1319)
: : : : : : : +- BroadcastExchange (1326)
: : : : : : : +- Project (1325)
: : : : : : : +- Exchange (1324)
: : : : : : : +- Project (1323)
: : : : : : : +- Scan parquet (1322)
: : : : : : +- BroadcastExchange (1332)
: : : : : : +- Exchange (1331)
: : : : : : +- Project (1330)
: : : : : : +- Scan parquet (1329)
: : : : : +- BroadcastExchange (1339)
: : : : : +- Exchange (1338)
: : : : : +- Project (1337)
: : : : : +- Filter (1336)
: : : : : +- Scan parquet (1335)
: : : : +- Sort (1388)
: : : : +- Project (1387)
: : : : +- Generate (1386)
: : : : +- Project (1385)
: : : : +- Generate (1384)
: : : : +- Project (1383)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1382)
: : : : :- Project (1376)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1375)
: : : : : :- Project (1370)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1369)
: : : : : : :- Exchange (1363)
: : : : : : : +- Filter (1362)
: : : : : : : +- Scan parquet (1361)
: : : : : : +- BroadcastExchange (1368)
: : : : : : +- Project (1367)
: : : : : : +- Exchange (1366)
: : : : : : +- Project (1365)
: : : : : : +- Scan parquet (1364)
: : : : : +- BroadcastExchange (1374)
: : : : : +- Exchange (1373)
: : : : : +- Project (1372)
: : : : : +- Scan parquet (1371)
: : : : +- BroadcastExchange (1381)
: : : : +- Exchange (1380)
: : : : +- Project (1379)
: : : : +- Filter (1378)
: : : : +- Scan parquet (1377)
: : : +- Sort (1483)
: : : +- Exchange (1482)
: : : +- HashAggregate (1481)
: : : +- HashAggregate (1480)
: : : +- Project (1479)
: : : +- SortMergeJoin Inner (1478)
: : : :- Sort (1449)
: : : : +- Exchange (1448)
: : : : +- Project (1447)
: : : : +- Filter (1446)
: : : : +- Generate (1445)
: : : : +- Filter (1444)
: : : : +- ObjectHashAggregate (1443)
: : : : +- ObjectHashAggregate (1442)
: : : : +- Generate (1441)
: : : : +- BroadcastHashJoin Inner BuildLeft (1440)
: : : : :- BroadcastExchange (1397)
: : : : : +- Exchange (1396)
: : : : : +- Project (1395)
: : : : : +- Filter (1394)
: : : : : +- Scan parquet (1393)
: : : : +- Project (1439)
: : : : +- BroadcastHashJoin Inner BuildLeft (1438)
: : : : :- BroadcastExchange (1407)
: : : : : +- Project (1406)
: : : : : +- Generate (1405)
: : : : : +- Project (1404)
: : : : : +- Filter (1403)
: : : : : +- Generate (1402)
: : : : : +- Exchange (1401)
: : : : : +- Project (1400)
: : : : : +- Filter (1399)
: : : : : +- Scan parquet (1398)
: : : : +- HashAggregate (1437)
: : : : +- Exchange (1436)
: : : : +- HashAggregate (1435)
: : : : +- Project (1434)
: : : : +- Generate (1433)
: : : : +- Project (1432)
: : : : +- Generate (1431)
: : : : +- Project (1430)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1429)
: : : : :- Project (1423)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1422)
: : : : : :- Project (1417)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1416)
: : : : : : :- Exchange (1410)
: : : : : : : +- Filter (1409)
: : : : : : : +- Scan parquet (1408)
: : : : : : +- BroadcastExchange (1415)
: : : : : : +- Project (1414)
: : : : : : +- Exchange (1413)
: : : : : : +- Project (1412)
: : : : : : +- Scan parquet (1411)
: : : : : +- BroadcastExchange (1421)
: : : : : +- Exchange (1420)
: : : : : +- Project (1419)
: : : : : +- Scan parquet (1418)
: : : : +- BroadcastExchange (1428)
: : : : +- Exchange (1427)
: : : : +- Project (1426)
: : : : +- Filter (1425)
: : : : +- Scan parquet (1424)
: : : +- Sort (1477)
: : : +- Project (1476)
: : : +- Generate (1475)
: : : +- Project (1474)
: : : +- Generate (1473)
: : : +- Project (1472)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1471)
: : : :- Project (1465)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1464)
: : : : :- Project (1459)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1458)
: : : : : :- Exchange (1452)
: : : : : : +- Filter (1451)
: : : : : : +- Scan parquet (1450)
: : : : : +- BroadcastExchange (1457)
: : : : : +- Project (1456)
: : : : : +- Exchange (1455)
: : : : : +- Project (1454)
: : : : : +- Scan parquet (1453)
: : : : +- BroadcastExchange (1463)
: : : : +- Exchange (1462)
: : : : +- Project (1461)
: : : : +- Scan parquet (1460)
: : : +- BroadcastExchange (1470)
: : : +- Exchange (1469)
: : : +- Project (1468)
: : : +- Filter (1467)
: : : +- Scan parquet (1466)
: : +- BroadcastExchange (1494)
: : +- Filter (1493)
: : +- Scan parquet (1492)
: +- BroadcastExchange (1513)
: +- Project (1512)
: +- Filter (1511)
: +- Generate (1510)
: +- Exchange (1509)
: +- Project (1508)
: +- Filter (1507)
: +- Scan parquet (1506)
+- Sort (2453)
+- Exchange (2452)
+- Filter (2451)
+- SerializeFromObject (2450)
+- MapElements (2449)
+- DeserializeToObject (2448)
+- Project (2447)
+- SortMergeJoin LeftOuter (2446)
:- Sort (1975)
: +- Exchange (1974)
: +- Project (1973)
: +- SortMergeJoin LeftOuter (1972)
: :- Sort (1744)
: : +- Exchange (1743)
: : +- Project (1742)
: : +- SortMergeJoin LeftOuter (1741)
: : :- Sort (1554)
: : : +- Project (1553)
: : : +- Project (1552)
: : : +- Generate (1551)
: : : +- Generate (1550)
: : : +- Project (1549)
: : : +- Project (1548)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1547)
: : : :- Project (1541)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1540)
: : : : :- BroadcastHashJoin LeftOuter BuildRight (1535)
: : : : : :- Exchange (1529)
: : : : : : +- Scan parquet (1528)
: : : : : +- BroadcastExchange (1534)
: : : : : +- Project (1533)
: : : : : +- Exchange (1532)
: : : : : +- Project (1531)
: : : : : +- Scan parquet (1530)
: : : : +- BroadcastExchange (1539)
: : : : +- Exchange (1538)
: : : : +- Project (1537)
: : : : +- Scan parquet (1536)
: : : +- BroadcastExchange (1546)
: : : +- Exchange (1545)
: : : +- Project (1544)
: : : +- Filter (1543)
: : : +- Scan parquet (1542)
: : +- Sort (1740)
: : +- HashAggregate (1739)
: : +- Exchange (1738)
: : +- HashAggregate (1737)
: : +- Project (1736)
: : +- SortMergeJoin Inner (1735)
: : :- Sort (1643)
: : : +- Exchange (1642)
: : : +- Project (1641)
: : : +- SortMergeJoin Inner (1640)
: : : :- Sort (1611)
: : : : +- Exchange (1610)
: : : : +- Project (1609)
: : : : +- Filter (1608)
: : : : +- Generate (1607)
: : : : +- Filter (1606)
: : : : +- ObjectHashAggregate (1605)
: : : : +- ObjectHashAggregate (1604)
: : : : +- Generate (1603)
: : : : +- BroadcastHashJoin Inner BuildLeft (1602)
: : : : :- BroadcastExchange (1559)
: : : : : +- Exchange (1558)
: : : : : +- Project (1557)
: : : : : +- Filter (1556)
: : : : : +- Scan parquet (1555)
: : : : +- Project (1601)
: : : : +- BroadcastHashJoin Inner BuildLeft (1600)
: : : : :- BroadcastExchange (1569)
: : : : : +- Project (1568)
: : : : : +- Generate (1567)
: : : : : +- Project (1566)
: : : : : +- Filter (1565)
: : : : : +- Generate (1564)
: : : : : +- Exchange (1563)
: : : : : +- Project (1562)
: : : : : +- Filter (1561)
: : : : : +- Scan parquet (1560)
: : : : +- HashAggregate (1599)
: : : : +- Exchange (1598)
: : : : +- HashAggregate (1597)
: : : : +- Project (1596)
: : : : +- Generate (1595)
: : : : +- Project (1594)
: : : : +- Generate (1593)
: : : : +- Project (1592)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1591)
: : : : :- Project (1585)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1584)
: : : : : :- Project (1579)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1578)
: : : : : : :- Exchange (1572)
: : : : : : : +- Filter (1571)
: : : : : : : +- Scan parquet (1570)
: : : : : : +- BroadcastExchange (1577)
: : : : : : +- Project (1576)
: : : : : : +- Exchange (1575)
: : : : : : +- Project (1574)
: : : : : : +- Scan parquet (1573)
: : : : : +- BroadcastExchange (1583)
: : : : : +- Exchange (1582)
: : : : : +- Project (1581)
: : : : : +- Scan parquet (1580)
: : : : +- BroadcastExchange (1590)
: : : : +- Exchange (1589)
: : : : +- Project (1588)
: : : : +- Filter (1587)
: : : : +- Scan parquet (1586)
: : : +- Sort (1639)
: : : +- Project (1638)
: : : +- Generate (1637)
: : : +- Project (1636)
: : : +- Generate (1635)
: : : +- Project (1634)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1633)
: : : :- Project (1627)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1626)
: : : : :- Project (1621)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1620)
: : : : : :- Exchange (1614)
: : : : : : +- Filter (1613)
: : : : : : +- Scan parquet (1612)
: : : : : +- BroadcastExchange (1619)
: : : : : +- Project (1618)
: : : : : +- Exchange (1617)
: : : : : +- Project (1616)
: : : : : +- Scan parquet (1615)
: : : : +- BroadcastExchange (1625)
: : : : +- Exchange (1624)
: : : : +- Project (1623)
: : : : +- Scan parquet (1622)
: : : +- BroadcastExchange (1632)
: : : +- Exchange (1631)
: : : +- Project (1630)
: : : +- Filter (1629)
: : : +- Scan parquet (1628)
: : +- Sort (1734)
: : +- Exchange (1733)
: : +- HashAggregate (1732)
: : +- HashAggregate (1731)
: : +- Project (1730)
: : +- SortMergeJoin Inner (1729)
: : :- Sort (1700)
: : : +- Exchange (1699)
: : : +- Project (1698)
: : : +- Filter (1697)
: : : +- Generate (1696)
: : : +- Filter (1695)
: : : +- ObjectHashAggregate (1694)
: : : +- ObjectHashAggregate (1693)
: : : +- Generate (1692)
: : : +- BroadcastHashJoin Inner BuildLeft (1691)
: : : :- BroadcastExchange (1648)
: : : : +- Exchange (1647)
: : : : +- Project (1646)
: : : : +- Filter (1645)
: : : : +- Scan parquet (1644)
: : : +- Project (1690)
: : : +- BroadcastHashJoin Inner BuildLeft (1689)
: : : :- BroadcastExchange (1658)
: : : : +- Project (1657)
: : : : +- Generate (1656)
: : : : +- Project (1655)
: : : : +- Filter (1654)
: : : : +- Generate (1653)
: : : : +- Exchange (1652)
: : : : +- Project (1651)
: : : : +- Filter (1650)
: : : : +- Scan parquet (1649)
: : : +- HashAggregate (1688)
: : : +- Exchange (1687)
: : : +- HashAggregate (1686)
: : : +- Project (1685)
: : : +- Generate (1684)
: : : +- Project (1683)
: : : +- Generate (1682)
: : : +- Project (1681)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1680)
: : : :- Project (1674)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1673)
: : : : :- Project (1668)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1667)
: : : : : :- Exchange (1661)
: : : : : : +- Filter (1660)
: : : : : : +- Scan parquet (1659)
: : : : : +- BroadcastExchange (1666)
: : : : : +- Project (1665)
: : : : : +- Exchange (1664)
: : : : : +- Project (1663)
: : : : : +- Scan parquet (1662)
: : : : +- BroadcastExchange (1672)
: : : : +- Exchange (1671)
: : : : +- Project (1670)
: : : : +- Scan parquet (1669)
: : : +- BroadcastExchange (1679)
: : : +- Exchange (1678)
: : : +- Project (1677)
: : : +- Filter (1676)
: : : +- Scan parquet (1675)
: : +- Sort (1728)
: : +- Project (1727)
: : +- Generate (1726)
: : +- Project (1725)
: : +- Generate (1724)
: : +- Project (1723)
: : +- BroadcastHashJoin LeftOuter BuildRight (1722)
: : :- Project (1716)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1715)
: : : :- Project (1710)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1709)
: : : : :- Exchange (1703)
: : : : : +- Filter (1702)
: : : : : +- Scan parquet (1701)
: : : : +- BroadcastExchange (1708)
: : : : +- Project (1707)
: : : : +- Exchange (1706)
: : : : +- Project (1705)
: : : : +- Scan parquet (1704)
: : : +- BroadcastExchange (1714)
: : : +- Exchange (1713)
: : : +- Project (1712)
: : : +- Scan parquet (1711)
: : +- BroadcastExchange (1721)
: : +- Exchange (1720)
: : +- Project (1719)
: : +- Filter (1718)
: : +- Scan parquet (1717)
: +- Sort (1971)
: +- Exchange (1970)
: +- SerializeFromObject (1969)
: +- MapElements (1968)
: +- DeserializeToObject (1967)
: +- ObjectHashAggregate (1966)
: +- ObjectHashAggregate (1965)
: +- Project (1964)
: +- BroadcastHashJoin LeftOuter BuildRight (1963)
: :- Project (1959)
: : +- SortMergeJoin LeftOuter (1958)
: : :- Sort (1771)
: : : +- Project (1770)
: : : +- Project (1769)
: : : +- Generate (1768)
: : : +- Generate (1767)
: : : +- Project (1766)
: : : +- Project (1765)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1764)
: : : :- Project (1758)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1757)
: : : : :- BroadcastHashJoin LeftOuter BuildRight (1752)
: : : : : :- Exchange (1746)
: : : : : : +- Scan parquet (1745)
: : : : : +- BroadcastExchange (1751)
: : : : : +- Project (1750)
: : : : : +- Exchange (1749)
: : : : : +- Project (1748)
: : : : : +- Scan parquet (1747)
: : : : +- BroadcastExchange (1756)
: : : : +- Exchange (1755)
: : : : +- Project (1754)
: : : : +- Scan parquet (1753)
: : : +- BroadcastExchange (1763)
: : : +- Exchange (1762)
: : : +- Project (1761)
: : : +- Filter (1760)
: : : +- Scan parquet (1759)
: : +- Sort (1957)
: : +- HashAggregate (1956)
: : +- Exchange (1955)
: : +- HashAggregate (1954)
: : +- Project (1953)
: : +- SortMergeJoin Inner (1952)
: : :- Sort (1860)
: : : +- Exchange (1859)
: : : +- Project (1858)
: : : +- SortMergeJoin Inner (1857)
: : : :- Sort (1828)
: : : : +- Exchange (1827)
: : : : +- Project (1826)
: : : : +- Filter (1825)
: : : : +- Generate (1824)
: : : : +- Filter (1823)
: : : : +- ObjectHashAggregate (1822)
: : : : +- ObjectHashAggregate (1821)
: : : : +- Generate (1820)
: : : : +- BroadcastHashJoin Inner BuildLeft (1819)
: : : : :- BroadcastExchange (1776)
: : : : : +- Exchange (1775)
: : : : : +- Project (1774)
: : : : : +- Filter (1773)
: : : : : +- Scan parquet (1772)
: : : : +- Project (1818)
: : : : +- BroadcastHashJoin Inner BuildLeft (1817)
: : : : :- BroadcastExchange (1786)
: : : : : +- Project (1785)
: : : : : +- Generate (1784)
: : : : : +- Project (1783)
: : : : : +- Filter (1782)
: : : : : +- Generate (1781)
: : : : : +- Exchange (1780)
: : : : : +- Project (1779)
: : : : : +- Filter (1778)
: : : : : +- Scan parquet (1777)
: : : : +- HashAggregate (1816)
: : : : +- Exchange (1815)
: : : : +- HashAggregate (1814)
: : : : +- Project (1813)
: : : : +- Generate (1812)
: : : : +- Project (1811)
: : : : +- Generate (1810)
: : : : +- Project (1809)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1808)
: : : : :- Project (1802)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1801)
: : : : : :- Project (1796)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1795)
: : : : : : :- Exchange (1789)
: : : : : : : +- Filter (1788)
: : : : : : : +- Scan parquet (1787)
: : : : : : +- BroadcastExchange (1794)
: : : : : : +- Project (1793)
: : : : : : +- Exchange (1792)
: : : : : : +- Project (1791)
: : : : : : +- Scan parquet (1790)
: : : : : +- BroadcastExchange (1800)
: : : : : +- Exchange (1799)
: : : : : +- Project (1798)
: : : : : +- Scan parquet (1797)
: : : : +- BroadcastExchange (1807)
: : : : +- Exchange (1806)
: : : : +- Project (1805)
: : : : +- Filter (1804)
: : : : +- Scan parquet (1803)
: : : +- Sort (1856)
: : : +- Project (1855)
: : : +- Generate (1854)
: : : +- Project (1853)
: : : +- Generate (1852)
: : : +- Project (1851)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1850)
: : : :- Project (1844)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1843)
: : : : :- Project (1838)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1837)
: : : : : :- Exchange (1831)
: : : : : : +- Filter (1830)
: : : : : : +- Scan parquet (1829)
: : : : : +- BroadcastExchange (1836)
: : : : : +- Project (1835)
: : : : : +- Exchange (1834)
: : : : : +- Project (1833)
: : : : : +- Scan parquet (1832)
: : : : +- BroadcastExchange (1842)
: : : : +- Exchange (1841)
: : : : +- Project (1840)
: : : : +- Scan parquet (1839)
: : : +- BroadcastExchange (1849)
: : : +- Exchange (1848)
: : : +- Project (1847)
: : : +- Filter (1846)
: : : +- Scan parquet (1845)
: : +- Sort (1951)
: : +- Exchange (1950)
: : +- HashAggregate (1949)
: : +- HashAggregate (1948)
: : +- Project (1947)
: : +- SortMergeJoin Inner (1946)
: : :- Sort (1917)
: : : +- Exchange (1916)
: : : +- Project (1915)
: : : +- Filter (1914)
: : : +- Generate (1913)
: : : +- Filter (1912)
: : : +- ObjectHashAggregate (1911)
: : : +- ObjectHashAggregate (1910)
: : : +- Generate (1909)
: : : +- BroadcastHashJoin Inner BuildLeft (1908)
: : : :- BroadcastExchange (1865)
: : : : +- Exchange (1864)
: : : : +- Project (1863)
: : : : +- Filter (1862)
: : : : +- Scan parquet (1861)
: : : +- Project (1907)
: : : +- BroadcastHashJoin Inner BuildLeft (1906)
: : : :- BroadcastExchange (1875)
: : : : +- Project (1874)
: : : : +- Generate (1873)
: : : : +- Project (1872)
: : : : +- Filter (1871)
: : : : +- Generate (1870)
: : : : +- Exchange (1869)
: : : : +- Project (1868)
: : : : +- Filter (1867)
: : : : +- Scan parquet (1866)
: : : +- HashAggregate (1905)
: : : +- Exchange (1904)
: : : +- HashAggregate (1903)
: : : +- Project (1902)
: : : +- Generate (1901)
: : : +- Project (1900)
: : : +- Generate (1899)
: : : +- Project (1898)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1897)
: : : :- Project (1891)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1890)
: : : : :- Project (1885)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1884)
: : : : : :- Exchange (1878)
: : : : : : +- Filter (1877)
: : : : : : +- Scan parquet (1876)
: : : : : +- BroadcastExchange (1883)
: : : : : +- Project (1882)
: : : : : +- Exchange (1881)
: : : : : +- Project (1880)
: : : : : +- Scan parquet (1879)
: : : : +- BroadcastExchange (1889)
: : : : +- Exchange (1888)
: : : : +- Project (1887)
: : : : +- Scan parquet (1886)
: : : +- BroadcastExchange (1896)
: : : +- Exchange (1895)
: : : +- Project (1894)
: : : +- Filter (1893)
: : : +- Scan parquet (1892)
: : +- Sort (1945)
: : +- Project (1944)
: : +- Generate (1943)
: : +- Project (1942)
: : +- Generate (1941)
: : +- Project (1940)
: : +- BroadcastHashJoin LeftOuter BuildRight (1939)
: : :- Project (1933)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1932)
: : : :- Project (1927)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1926)
: : : : :- Exchange (1920)
: : : : : +- Filter (1919)
: : : : : +- Scan parquet (1918)
: : : : +- BroadcastExchange (1925)
: : : : +- Project (1924)
: : : : +- Exchange (1923)
: : : : +- Project (1922)
: : : : +- Scan parquet (1921)
: : : +- BroadcastExchange (1931)
: : : +- Exchange (1930)
: : : +- Project (1929)
: : : +- Scan parquet (1928)
: : +- BroadcastExchange (1938)
: : +- Exchange (1937)
: : +- Project (1936)
: : +- Filter (1935)
: : +- Scan parquet (1934)
: +- BroadcastExchange (1962)
: +- Filter (1961)
: +- Scan parquet (1960)
+- Sort (2445)
+- Project (2444)
+- ObjectHashAggregate (2443)
+- Exchange (2442)
+- ObjectHashAggregate (2441)
+- Union (2440)
:- Filter (1978)
: +- InMemoryTableScan (1976)
: +- InMemoryRelation (1977)
: +- AdaptiveSparkPlan (1057)
+- == Final Plan ==
ResultQueryStage (732)
+- EmptyRelation (731)
+- Filter (unknown)
+- EmptyRelation (unknown)
+- == Initial Plan ==
Filter (1056)
+- ObjectHashAggregate (1055)
+- Exchange (1054)
+- ObjectHashAggregate (1053)
+- Project (1052)
+- Window (1051)
+- Sort (1050)
+- Exchange (1049)
+- Project (1048)
+- BroadcastHashJoin Inner BuildRight (1047)
:- Project (1038)
: +- SortMergeJoin Inner (1037)
: :- Sort (992)
: : +- Exchange (991)
: : +- Project (990)
: : +- SortMergeJoin LeftOuter (989)
: : :- Sort (761)
: : : +- Exchange (760)
: : : +- Project (759)
: : : +- Generate (758)
: : : +- Project (757)
: : : +- Generate (756)
: : : +- Project (755)
: : : +- BroadcastHashJoin LeftOuter BuildRight (754)
: : : :- Project (748)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (747)
: : : : :- Project (742)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (741)
: : : : : :- Exchange (735)
: : : : : : +- Filter (734)
: : : : : : +- Scan parquet (733)
: : : : : +- BroadcastExchange (740)
: : : : : +- Project (739)
: : : : : +- Exchange (738)
: : : : : +- Project (737)
: : : : : +- Scan parquet (736)
: : : : +- BroadcastExchange (746)
: : : : +- Exchange (745)
: : : : +- Project (744)
: : : : +- Scan parquet (743)
: : : +- BroadcastExchange (753)
: : : +- Exchange (752)
: : : +- Project (751)
: : : +- Filter (750)
: : : +- Scan parquet (749)
: : +- Sort (988)
: : +- Exchange (987)
: : +- SerializeFromObject (986)
: : +- MapElements (985)
: : +- DeserializeToObject (984)
: : +- ObjectHashAggregate (983)
: : +- ObjectHashAggregate (982)
: : +- Project (981)
: : +- BroadcastHashJoin LeftOuter BuildRight (980)
: : :- Project (976)
: : : +- SortMergeJoin LeftOuter (975)
: : : :- Sort (788)
: : : : +- Project (787)
: : : : +- Project (786)
: : : : +- Generate (785)
: : : : +- Generate (784)
: : : : +- Project (783)
: : : : +- Project (782)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (781)
: : : : :- Project (775)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (774)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (769)
: : : : : : :- Exchange (763)
: : : : : : : +- Scan parquet (762)
: : : : : : +- BroadcastExchange (768)
: : : : : : +- Project (767)
: : : : : : +- Exchange (766)
: : : : : : +- Project (765)
: : : : : : +- Scan parquet (764)
: : : : : +- BroadcastExchange (773)
: : : : : +- Exchange (772)
: : : : : +- Project (771)
: : : : : +- Scan parquet (770)
: : : : +- BroadcastExchange (780)
: : : : +- Exchange (779)
: : : : +- Project (778)
: : : : +- Filter (777)
: : : : +- Scan parquet (776)
: : : +- Sort (974)
: : : +- HashAggregate (973)
: : : +- Exchange (972)
: : : +- HashAggregate (971)
: : : +- Project (970)
: : : +- SortMergeJoin Inner (969)
: : : :- Sort (877)
: : : : +- Exchange (876)
: : : : +- Project (875)
: : : : +- SortMergeJoin Inner (874)
: : : : :- Sort (845)
: : : : : +- Exchange (844)
: : : : : +- Project (843)
: : : : : +- Filter (842)
: : : : : +- Generate (841)
: : : : : +- Filter (840)
: : : : : +- ObjectHashAggregate (839)
: : : : : +- ObjectHashAggregate (838)
: : : : : +- Generate (837)
: : : : : +- BroadcastHashJoin Inner BuildLeft (836)
: : : : : :- BroadcastExchange (793)
: : : : : : +- Exchange (792)
: : : : : : +- Project (791)
: : : : : : +- Filter (790)
: : : : : : +- Scan parquet (789)
: : : : : +- Project (835)
: : : : : +- BroadcastHashJoin Inner BuildLeft (834)
: : : : : :- BroadcastExchange (803)
: : : : : : +- Project (802)
: : : : : : +- Generate (801)
: : : : : : +- Project (800)
: : : : : : +- Filter (799)
: : : : : : +- Generate (798)
: : : : : : +- Exchange (797)
: : : : : : +- Project (796)
: : : : : : +- Filter (795)
: : : : : : +- Scan parquet (794)
: : : : : +- HashAggregate (833)
: : : : : +- Exchange (832)
: : : : : +- HashAggregate (831)
: : : : : +- Project (830)
: : : : : +- Generate (829)
: : : : : +- Project (828)
: : : : : +- Generate (827)
: : : : : +- Project (826)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (825)
: : : : : :- Project (819)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (818)
: : : : : : :- Project (813)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (812)
: : : : : : : :- Exchange (806)
: : : : : : : : +- Filter (805)
: : : : : : : : +- Scan parquet (804)
: : : : : : : +- BroadcastExchange (811)
: : : : : : : +- Project (810)
: : : : : : : +- Exchange (809)
: : : : : : : +- Project (808)
: : : : : : : +- Scan parquet (807)
: : : : : : +- BroadcastExchange (817)
: : : : : : +- Exchange (816)
: : : : : : +- Project (815)
: : : : : : +- Scan parquet (814)
: : : : : +- BroadcastExchange (824)
: : : : : +- Exchange (823)
: : : : : +- Project (822)
: : : : : +- Filter (821)
: : : : : +- Scan parquet (820)
: : : : +- Sort (873)
: : : : +- Project (872)
: : : : +- Generate (871)
: : : : +- Project (870)
: : : : +- Generate (869)
: : : : +- Project (868)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (867)
: : : : :- Project (861)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (860)
: : : : : :- Project (855)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (854)
: : : : : : :- Exchange (848)
: : : : : : : +- Filter (847)
: : : : : : : +- Scan parquet (846)
: : : : : : +- BroadcastExchange (853)
: : : : : : +- Project (852)
: : : : : : +- Exchange (851)
: : : : : : +- Project (850)
: : : : : : +- Scan parquet (849)
: : : : : +- BroadcastExchange (859)
: : : : : +- Exchange (858)
: : : : : +- Project (857)
: : : : : +- Scan parquet (856)
: : : : +- BroadcastExchange (866)
: : : : +- Exchange (865)
: : : : +- Project (864)
: : : : +- Filter (863)
: : : : +- Scan parquet (862)
: : : +- Sort (968)
: : : +- Exchange (967)
: : : +- HashAggregate (966)
: : : +- HashAggregate (965)
: : : +- Project (964)
: : : +- SortMergeJoin Inner (963)
: : : :- Sort (934)
: : : : +- Exchange (933)
: : : : +- Project (932)
: : : : +- Filter (931)
: : : : +- Generate (930)
: : : : +- Filter (929)
: : : : +- ObjectHashAggregate (928)
: : : : +- ObjectHashAggregate (927)
: : : : +- Generate (926)
: : : : +- BroadcastHashJoin Inner BuildLeft (925)
: : : : :- BroadcastExchange (882)
: : : : : +- Exchange (881)
: : : : : +- Project (880)
: : : : : +- Filter (879)
: : : : : +- Scan parquet (878)
: : : : +- Project (924)
: : : : +- BroadcastHashJoin Inner BuildLeft (923)
: : : : :- BroadcastExchange (892)
: : : : : +- Project (891)
: : : : : +- Generate (890)
: : : : : +- Project (889)
: : : : : +- Filter (888)
: : : : : +- Generate (887)
: : : : : +- Exchange (886)
: : : : : +- Project (885)
: : : : : +- Filter (884)
: : : : : +- Scan parquet (883)
: : : : +- HashAggregate (922)
: : : : +- Exchange (921)
: : : : +- HashAggregate (920)
: : : : +- Project (919)
: : : : +- Generate (918)
: : : : +- Project (917)
: : : : +- Generate (916)
: : : : +- Project (915)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (914)
: : : : :- Project (908)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (907)
: : : : : :- Project (902)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (901)
: : : : : : :- Exchange (895)
: : : : : : : +- Filter (894)
: : : : : : : +- Scan parquet (893)
: : : : : : +- BroadcastExchange (900)
: : : : : : +- Project (899)
: : : : : : +- Exchange (898)
: : : : : : +- Project (897)
: : : : : : +- Scan parquet (896)
: : : : : +- BroadcastExchange (906)
: : : : : +- Exchange (905)
: : : : : +- Project (904)
: : : : : +- Scan parquet (903)
: : : : +- BroadcastExchange (913)
: : : : +- Exchange (912)
: : : : +- Project (911)
: : : : +- Filter (910)
: : : : +- Scan parquet (909)
: : : +- Sort (962)
: : : +- Project (961)
: : : +- Generate (960)
: : : +- Project (959)
: : : +- Generate (958)
: : : +- Project (957)
: : : +- BroadcastHashJoin LeftOuter BuildRight (956)
: : : :- Project (950)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (949)
: : : : :- Project (944)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (943)
: : : : : :- Exchange (937)
: : : : : : +- Filter (936)
: : : : : : +- Scan parquet (935)
: : : : : +- BroadcastExchange (942)
: : : : : +- Project (941)
: : : : : +- Exchange (940)
: : : : : +- Project (939)
: : : : : +- Scan parquet (938)
: : : : +- BroadcastExchange (948)
: : : : +- Exchange (947)
: : : : +- Project (946)
: : : : +- Scan parquet (945)
: : : +- BroadcastExchange (955)
: : : +- Exchange (954)
: : : +- Project (953)
: : : +- Filter (952)
: : : +- Scan parquet (951)
: : +- BroadcastExchange (979)
: : +- Filter (978)
: : +- Scan parquet (977)
: +- Sort (1036)
: +- Project (1035)
: +- BroadcastHashJoin Inner BuildLeft (1034)
: :- BroadcastExchange (1003)
: : +- Project (1002)
: : +- Filter (1001)
: : +- Generate (1000)
: : +- Project (999)
: : +- Filter (998)
: : +- Generate (997)
: : +- Exchange (996)
: : +- Project (995)
: : +- Filter (994)
: : +- Scan parquet (993)
: +- HashAggregate (1033)
: +- Exchange (1032)
: +- HashAggregate (1031)
: +- Project (1030)
: +- Generate (1029)
: +- Project (1028)
: +- Generate (1027)
: +- Project (1026)
: +- BroadcastHashJoin LeftOuter BuildRight (1025)
: :- Project (1019)
: : +- BroadcastHashJoin LeftOuter BuildRight (1018)
: : :- Project (1013)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1012)
: : : :- Exchange (1006)
: : : : +- Filter (1005)
: : : : +- Scan parquet (1004)
: : : +- BroadcastExchange (1011)
: : : +- Project (1010)
: : : +- Exchange (1009)
: : : +- Project (1008)
: : : +- Scan parquet (1007)
: : +- BroadcastExchange (1017)
: : +- Exchange (1016)
: : +- Project (1015)
: : +- Scan parquet (1014)
: +- BroadcastExchange (1024)
: +- Exchange (1023)
: +- Project (1022)
: +- Filter (1021)
: +- Scan parquet (1020)
+- BroadcastExchange (1046)
+- Project (1045)
+- Filter (1044)
+- Generate (1043)
+- Exchange (1042)
+- Project (1041)
+- Filter (1040)
+- Scan parquet (1039)
+- Filter (2439)
+- ObjectHashAggregate (2438)
+- Exchange (2437)
+- ObjectHashAggregate (2436)
+- Project (2435)
+- BroadcastHashJoin Inner BuildRight (2434)
:- Project (2425)
: +- SortMergeJoin LeftOuter (2424)
: :- Sort (2196)
: : +- Exchange (2195)
: : +- Project (2194)
: : +- SortMergeJoin LeftOuter (2193)
: : :- Sort (2006)
: : : +- Project (2005)
: : : +- Generate (2004)
: : : +- Project (2003)
: : : +- Generate (2002)
: : : +- Project (2001)
: : : +- BroadcastHashJoin LeftOuter BuildRight (2000)
: : : :- Project (1994)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1993)
: : : : :- Project (1988)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1987)
: : : : : :- Exchange (1981)
: : : : : : +- Filter (1980)
: : : : : : +- Scan parquet (1979)
: : : : : +- BroadcastExchange (1986)
: : : : : +- Project (1985)
: : : : : +- Exchange (1984)
: : : : : +- Project (1983)
: : : : : +- Scan parquet (1982)
: : : : +- BroadcastExchange (1992)
: : : : +- Exchange (1991)
: : : : +- Project (1990)
: : : : +- Scan parquet (1989)
: : : +- BroadcastExchange (1999)
: : : +- Exchange (1998)
: : : +- Project (1997)
: : : +- Filter (1996)
: : : +- Scan parquet (1995)
: : +- Sort (2192)
: : +- HashAggregate (2191)
: : +- Exchange (2190)
: : +- HashAggregate (2189)
: : +- Project (2188)
: : +- SortMergeJoin Inner (2187)
: : :- Sort (2095)
: : : +- Exchange (2094)
: : : +- Project (2093)
: : : +- SortMergeJoin Inner (2092)
: : : :- Sort (2063)
: : : : +- Exchange (2062)
: : : : +- Project (2061)
: : : : +- Filter (2060)
: : : : +- Generate (2059)
: : : : +- Filter (2058)
: : : : +- ObjectHashAggregate (2057)
: : : : +- ObjectHashAggregate (2056)
: : : : +- Generate (2055)
: : : : +- BroadcastHashJoin Inner BuildLeft (2054)
: : : : :- BroadcastExchange (2011)
: : : : : +- Exchange (2010)
: : : : : +- Project (2009)
: : : : : +- Filter (2008)
: : : : : +- Scan parquet (2007)
: : : : +- Project (2053)
: : : : +- BroadcastHashJoin Inner BuildLeft (2052)
: : : : :- BroadcastExchange (2021)
: : : : : +- Project (2020)
: : : : : +- Generate (2019)
: : : : : +- Project (2018)
: : : : : +- Filter (2017)
: : : : : +- Generate (2016)
: : : : : +- Exchange (2015)
: : : : : +- Project (2014)
: : : : : +- Filter (2013)
: : : : : +- Scan parquet (2012)
: : : : +- HashAggregate (2051)
: : : : +- Exchange (2050)
: : : : +- HashAggregate (2049)
: : : : +- Project (2048)
: : : : +- Generate (2047)
: : : : +- Project (2046)
: : : : +- Generate (2045)
: : : : +- Project (2044)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2043)
: : : : :- Project (2037)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (2036)
: : : : : :- Project (2031)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (2030)
: : : : : : :- Exchange (2024)
: : : : : : : +- Filter (2023)
: : : : : : : +- Scan parquet (2022)
: : : : : : +- BroadcastExchange (2029)
: : : : : : +- Project (2028)
: : : : : : +- Exchange (2027)
: : : : : : +- Project (2026)
: : : : : : +- Scan parquet (2025)
: : : : : +- BroadcastExchange (2035)
: : : : : +- Exchange (2034)
: : : : : +- Project (2033)
: : : : : +- Scan parquet (2032)
: : : : +- BroadcastExchange (2042)
: : : : +- Exchange (2041)
: : : : +- Project (2040)
: : : : +- Filter (2039)
: : : : +- Scan parquet (2038)
: : : +- Sort (2091)
: : : +- Project (2090)
: : : +- Generate (2089)
: : : +- Project (2088)
: : : +- Generate (2087)
: : : +- Project (2086)
: : : +- BroadcastHashJoin LeftOuter BuildRight (2085)
: : : :- Project (2079)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2078)
: : : : :- Project (2073)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (2072)
: : : : : :- Exchange (2066)
: : : : : : +- Filter (2065)
: : : : : : +- Scan parquet (2064)
: : : : : +- BroadcastExchange (2071)
: : : : : +- Project (2070)
: : : : : +- Exchange (2069)
: : : : : +- Project (2068)
: : : : : +- Scan parquet (2067)
: : : : +- BroadcastExchange (2077)
: : : : +- Exchange (2076)
: : : : +- Project (2075)
: : : : +- Scan parquet (2074)
: : : +- BroadcastExchange (2084)
: : : +- Exchange (2083)
: : : +- Project (2082)
: : : +- Filter (2081)
: : : +- Scan parquet (2080)
: : +- Sort (2186)
: : +- Exchange (2185)
: : +- HashAggregate (2184)
: : +- HashAggregate (2183)
: : +- Project (2182)
: : +- SortMergeJoin Inner (2181)
: : :- Sort (2152)
: : : +- Exchange (2151)
: : : +- Project (2150)
: : : +- Filter (2149)
: : : +- Generate (2148)
: : : +- Filter (2147)
: : : +- ObjectHashAggregate (2146)
: : : +- ObjectHashAggregate (2145)
: : : +- Generate (2144)
: : : +- BroadcastHashJoin Inner BuildLeft (2143)
: : : :- BroadcastExchange (2100)
: : : : +- Exchange (2099)
: : : : +- Project (2098)
: : : : +- Filter (2097)
: : : : +- Scan parquet (2096)
: : : +- Project (2142)
: : : +- BroadcastHashJoin Inner BuildLeft (2141)
: : : :- BroadcastExchange (2110)
: : : : +- Project (2109)
: : : : +- Generate (2108)
: : : : +- Project (2107)
: : : : +- Filter (2106)
: : : : +- Generate (2105)
: : : : +- Exchange (2104)
: : : : +- Project (2103)
: : : : +- Filter (2102)
: : : : +- Scan parquet (2101)
: : : +- HashAggregate (2140)
: : : +- Exchange (2139)
: : : +- HashAggregate (2138)
: : : +- Project (2137)
: : : +- Generate (2136)
: : : +- Project (2135)
: : : +- Generate (2134)
: : : +- Project (2133)
: : : +- BroadcastHashJoin LeftOuter BuildRight (2132)
: : : :- Project (2126)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2125)
: : : : :- Project (2120)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (2119)
: : : : : :- Exchange (2113)
: : : : : : +- Filter (2112)
: : : : : : +- Scan parquet (2111)
: : : : : +- BroadcastExchange (2118)
: : : : : +- Project (2117)
: : : : : +- Exchange (2116)
: : : : : +- Project (2115)
: : : : : +- Scan parquet (2114)
: : : : +- BroadcastExchange (2124)
: : : : +- Exchange (2123)
: : : : +- Project (2122)
: : : : +- Scan parquet (2121)
: : : +- BroadcastExchange (2131)
: : : +- Exchange (2130)
: : : +- Project (2129)
: : : +- Filter (2128)
: : : +- Scan parquet (2127)
: : +- Sort (2180)
: : +- Project (2179)
: : +- Generate (2178)
: : +- Project (2177)
: : +- Generate (2176)
: : +- Project (2175)
: : +- BroadcastHashJoin LeftOuter BuildRight (2174)
: : :- Project (2168)
: : : +- BroadcastHashJoin LeftOuter BuildRight (2167)
: : : :- Project (2162)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2161)
: : : : :- Exchange (2155)
: : : : : +- Filter (2154)
: : : : : +- Scan parquet (2153)
: : : : +- BroadcastExchange (2160)
: : : : +- Project (2159)
: : : : +- Exchange (2158)
: : : : +- Project (2157)
: : : : +- Scan parquet (2156)
: : : +- BroadcastExchange (2166)
: : : +- Exchange (2165)
: : : +- Project (2164)
: : : +- Scan parquet (2163)
: : +- BroadcastExchange (2173)
: : +- Exchange (2172)
: : +- Project (2171)
: : +- Filter (2170)
: : +- Scan parquet (2169)
: +- Sort (2423)
: +- Exchange (2422)
: +- SerializeFromObject (2421)
: +- MapElements (2420)
: +- DeserializeToObject (2419)
: +- ObjectHashAggregate (2418)
: +- ObjectHashAggregate (2417)
: +- Project (2416)
: +- BroadcastHashJoin LeftOuter BuildRight (2415)
: :- Project (2411)
: : +- SortMergeJoin LeftOuter (2410)
: : :- Sort (2223)
: : : +- Project (2222)
: : : +- Project (2221)
: : : +- Generate (2220)
: : : +- Generate (2219)
: : : +- Project (2218)
: : : +- Project (2217)
: : : +- BroadcastHashJoin LeftOuter BuildRight (2216)
: : : :- Project (2210)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2209)
: : : : :- BroadcastHashJoin LeftOuter BuildRight (2204)
: : : : : :- Exchange (2198)
: : : : : : +- Scan parquet (2197)
: : : : : +- BroadcastExchange (2203)
: : : : : +- Project (2202)
: : : : : +- Exchange (2201)
: : : : : +- Project (2200)
: : : : : +- Scan parquet (2199)
: : : : +- BroadcastExchange (2208)
: : : : +- Exchange (2207)
: : : : +- Project (2206)
: : : : +- Scan parquet (2205)
: : : +- BroadcastExchange (2215)
: : : +- Exchange (2214)
: : : +- Project (2213)
: : : +- Filter (2212)
: : : +- Scan parquet (2211)
: : +- Sort (2409)
: : +- HashAggregate (2408)
: : +- Exchange (2407)
: : +- HashAggregate (2406)
: : +- Project (2405)
: : +- SortMergeJoin Inner (2404)
: : :- Sort (2312)
: : : +- Exchange (2311)
: : : +- Project (2310)
: : : +- SortMergeJoin Inner (2309)
: : : :- Sort (2280)
: : : : +- Exchange (2279)
: : : : +- Project (2278)
: : : : +- Filter (2277)
: : : : +- Generate (2276)
: : : : +- Filter (2275)
: : : : +- ObjectHashAggregate (2274)
: : : : +- ObjectHashAggregate (2273)
: : : : +- Generate (2272)
: : : : +- BroadcastHashJoin Inner BuildLeft (2271)
: : : : :- BroadcastExchange (2228)
: : : : : +- Exchange (2227)
: : : : : +- Project (2226)
: : : : : +- Filter (2225)
: : : : : +- Scan parquet (2224)
: : : : +- Project (2270)
: : : : +- BroadcastHashJoin Inner BuildLeft (2269)
: : : : :- BroadcastExchange (2238)
: : : : : +- Project (2237)
: : : : : +- Generate (2236)
: : : : : +- Project (2235)
: : : : : +- Filter (2234)
: : : : : +- Generate (2233)
: : : : : +- Exchange (2232)
: : : : : +- Project (2231)
: : : : : +- Filter (2230)
: : : : : +- Scan parquet (2229)
: : : : +- HashAggregate (2268)
: : : : +- Exchange (2267)
: : : : +- HashAggregate (2266)
: : : : +- Project (2265)
: : : : +- Generate (2264)
: : : : +- Project (2263)
: : : : +- Generate (2262)
: : : : +- Project (2261)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2260)
: : : : :- Project (2254)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (2253)
: : : : : :- Project (2248)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (2247)
: : : : : : :- Exchange (2241)
: : : : : : : +- Filter (2240)
: : : : : : : +- Scan parquet (2239)
: : : : : : +- BroadcastExchange (2246)
: : : : : : +- Project (2245)
: : : : : : +- Exchange (2244)
: : : : : : +- Project (2243)
: : : : : : +- Scan parquet (2242)
: : : : : +- BroadcastExchange (2252)
: : : : : +- Exchange (2251)
: : : : : +- Project (2250)
: : : : : +- Scan parquet (2249)
: : : : +- BroadcastExchange (2259)
: : : : +- Exchange (2258)
: : : : +- Project (2257)
: : : : +- Filter (2256)
: : : : +- Scan parquet (2255)
: : : +- Sort (2308)
: : : +- Project (2307)
: : : +- Generate (2306)
: : : +- Project (2305)
: : : +- Generate (2304)
: : : +- Project (2303)
: : : +- BroadcastHashJoin LeftOuter BuildRight (2302)
: : : :- Project (2296)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2295)
: : : : :- Project (2290)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (2289)
: : : : : :- Exchange (2283)
: : : : : : +- Filter (2282)
: : : : : : +- Scan parquet (2281)
: : : : : +- BroadcastExchange (2288)
: : : : : +- Project (2287)
: : : : : +- Exchange (2286)
: : : : : +- Project (2285)
: : : : : +- Scan parquet (2284)
: : : : +- BroadcastExchange (2294)
: : : : +- Exchange (2293)
: : : : +- Project (2292)
: : : : +- Scan parquet (2291)
: : : +- BroadcastExchange (2301)
: : : +- Exchange (2300)
: : : +- Project (2299)
: : : +- Filter (2298)
: : : +- Scan parquet (2297)
: : +- Sort (2403)
: : +- Exchange (2402)
: : +- HashAggregate (2401)
: : +- HashAggregate (2400)
: : +- Project (2399)
: : +- SortMergeJoin Inner (2398)
: : :- Sort (2369)
: : : +- Exchange (2368)
: : : +- Project (2367)
: : : +- Filter (2366)
: : : +- Generate (2365)
: : : +- Filter (2364)
: : : +- ObjectHashAggregate (2363)
: : : +- ObjectHashAggregate (2362)
: : : +- Generate (2361)
: : : +- BroadcastHashJoin Inner BuildLeft (2360)
: : : :- BroadcastExchange (2317)
: : : : +- Exchange (2316)
: : : : +- Project (2315)
: : : : +- Filter (2314)
: : : : +- Scan parquet (2313)
: : : +- Project (2359)
: : : +- BroadcastHashJoin Inner BuildLeft (2358)
: : : :- BroadcastExchange (2327)
: : : : +- Project (2326)
: : : : +- Generate (2325)
: : : : +- Project (2324)
: : : : +- Filter (2323)
: : : : +- Generate (2322)
: : : : +- Exchange (2321)
: : : : +- Project (2320)
: : : : +- Filter (2319)
: : : : +- Scan parquet (2318)
: : : +- HashAggregate (2357)
: : : +- Exchange (2356)
: : : +- HashAggregate (2355)
: : : +- Project (2354)
: : : +- Generate (2353)
: : : +- Project (2352)
: : : +- Generate (2351)
: : : +- Project (2350)
: : : +- BroadcastHashJoin LeftOuter BuildRight (2349)
: : : :- Project (2343)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2342)
: : : : :- Project (2337)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (2336)
: : : : : :- Exchange (2330)
: : : : : : +- Filter (2329)
: : : : : : +- Scan parquet (2328)
: : : : : +- BroadcastExchange (2335)
: : : : : +- Project (2334)
: : : : : +- Exchange (2333)
: : : : : +- Project (2332)
: : : : : +- Scan parquet (2331)
: : : : +- BroadcastExchange (2341)
: : : : +- Exchange (2340)
: : : : +- Project (2339)
: : : : +- Scan parquet (2338)
: : : +- BroadcastExchange (2348)
: : : +- Exchange (2347)
: : : +- Project (2346)
: : : +- Filter (2345)
: : : +- Scan parquet (2344)
: : +- Sort (2397)
: : +- Project (2396)
: : +- Generate (2395)
: : +- Project (2394)
: : +- Generate (2393)
: : +- Project (2392)
: : +- BroadcastHashJoin LeftOuter BuildRight (2391)
: : :- Project (2385)
: : : +- BroadcastHashJoin LeftOuter BuildRight (2384)
: : : :- Project (2379)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2378)
: : : : :- Exchange (2372)
: : : : : +- Filter (2371)
: : : : : +- Scan parquet (2370)
: : : : +- BroadcastExchange (2377)
: : : : +- Project (2376)
: : : : +- Exchange (2375)
: : : : +- Project (2374)
: : : : +- Scan parquet (2373)
: : : +- BroadcastExchange (2383)
: : : +- Exchange (2382)
: : : +- Project (2381)
: : : +- Scan parquet (2380)
: : +- BroadcastExchange (2390)
: : +- Exchange (2389)
: : +- Project (2388)
: : +- Filter (2387)
: : +- Scan parquet (2386)
: +- BroadcastExchange (2414)
: +- Filter (2413)
: +- Scan parquet (2412)
+- BroadcastExchange (2433)
+- Project (2432)
+- Filter (2431)
+- Generate (2430)
+- Exchange (2429)
+- Project (2428)
+- Filter (2427)
+- Scan parquet (2426)
(1) Scan parquet
Output [3]: [product#25911, plant#25912, orderDateTime#25913]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2) ColumnarToRow [codegen id : 1]
Input [3]: [product#25911, plant#25912, orderDateTime#25913]
(3) Exchange
Input [3]: [product#25911, plant#25912, orderDateTime#25913]
Arguments: hashpartitioning(product#25911, plant#25912, 10), REPARTITION_BY_NUM, [plan_id=123718]
(4) ShuffleQueryStage
Output [3]: [product#25911, plant#25912, orderDateTime#25913]
Arguments: 0
(5) Scan parquet
Output [4]: [plant#25918, product#25919, productionAspect#25921, systemId#25916]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(6) ColumnarToRow [codegen id : 2]
Input [4]: [plant#25918, product#25919, productionAspect#25921, systemId#25916]
(7) Project [codegen id : 2]
Output [4]: [plant#25918.internalRefUUID AS _extract_internalRefUUID#34036, product#25919.internalRefUUID AS _extract_internalRefUUID#34033, productionAspect#25921.productMovementPlants.unitOfIssue.code AS _extract_code#34034, productionAspect#25921.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34035]
Input [4]: [plant#25918, product#25919, productionAspect#25921, systemId#25916]
(8) Exchange
Input [4]: [_extract_internalRefUUID#34036, _extract_internalRefUUID#34033, _extract_code#34034, _extract_internalRefUUID#34035]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=123732]
(9) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#34036, _extract_internalRefUUID#34033, _extract_code#34034, _extract_internalRefUUID#34035]
Arguments: 1
(10) Project [codegen id : 199]
Output [4]: [_extract_code#34034, _extract_internalRefUUID#34035, _extract_internalRefUUID#34033, _extract_internalRefUUID#34036]
Input [4]: [_extract_internalRefUUID#34036, _extract_internalRefUUID#34033, _extract_code#34034, _extract_internalRefUUID#34035]
(11) BroadcastExchange
Input [4]: [_extract_code#34034, _extract_internalRefUUID#34035, _extract_internalRefUUID#34033, _extract_internalRefUUID#34036]
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=164151]
(12) BroadcastQueryStage
Output [4]: [_extract_code#34034, _extract_internalRefUUID#34035, _extract_internalRefUUID#34033, _extract_internalRefUUID#34036]
Arguments: 385
(13) BroadcastHashJoin [codegen id : 373]
Left keys [4]: [coalesce(product#25911, ), isnull(product#25911), coalesce(plant#25912, ), isnull(plant#25912)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34033, ), isnull(_extract_internalRefUUID#34033), coalesce(_extract_internalRefUUID#34036, ), isnull(_extract_internalRefUUID#34036)]
Join type: LeftOuter
Join condition: None
(14) Project [codegen id : 373]
Output [5]: [product#25911, plant#25912, orderDateTime#25913, _extract_code#34034, _extract_internalRefUUID#34035]
Input [7]: [product#25911, plant#25912, orderDateTime#25913, _extract_code#34034, _extract_internalRefUUID#34035, _extract_internalRefUUID#34033, _extract_internalRefUUID#34036]
(15) Scan parquet
Output [2]: [internalUUID#25929, systemId#25928]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(16) ColumnarToRow [codegen id : 3]
Input [2]: [internalUUID#25929, systemId#25928]
(17) Project [codegen id : 3]
Output [1]: [internalUUID#25929]
Input [2]: [internalUUID#25929, systemId#25928]
(18) Exchange
Input [1]: [internalUUID#25929]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=123751]
(19) ShuffleQueryStage
Output [1]: [internalUUID#25929]
Arguments: 2
(20) BroadcastExchange
Input [1]: [internalUUID#25929]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=123759]
(21) BroadcastQueryStage
Output [1]: [internalUUID#25929]
Arguments: 386
(22) BroadcastHashJoin [codegen id : 373]
Left keys [2]: [coalesce(plant#25912, ), isnull(plant#25912)]
Right keys [2]: [coalesce(internalUUID#25929, ), isnull(internalUUID#25929)]
Join type: LeftOuter
Join condition: None
(23) Project [codegen id : 373]
Output [5]: [product#25911, plant#25912, orderDateTime#25913, _extract_code#34034, _extract_internalRefUUID#34035]
Input [6]: [product#25911, plant#25912, orderDateTime#25913, _extract_code#34034, _extract_internalRefUUID#34035, internalUUID#25929]
(24) Scan parquet
Output [4]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951, systemId#25944]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(25) ColumnarToRow [codegen id : 4]
Input [4]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951, systemId#25944]
(26) Filter [codegen id : 4]
Input [4]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951, systemId#25944]
Condition : isnotnull(internalUUID#25945)
(27) Project [codegen id : 4]
Output [3]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951]
Input [4]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951, systemId#25944]
(28) Exchange
Input [3]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=123771]
(29) ShuffleQueryStage
Output [3]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951]
Arguments: 3
(30) BroadcastExchange
Input [3]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=123781]
(31) BroadcastQueryStage
Output [3]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951]
Arguments: 387
(32) BroadcastHashJoin [codegen id : 373]
Left keys [1]: [product#25911]
Right keys [1]: [internalUUID#25945]
Join type: LeftOuter
Join condition: None
(33) Project
Output [4]: [product#25911, plant#25912, orderDateTime#25913, filter(unitOfMeasureConversions#25951, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34034) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34035)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#25949.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#25949.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#25957]
Input [8]: [product#25911, plant#25912, orderDateTime#25913, _extract_code#34034, _extract_internalRefUUID#34035, internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951]
(34) Project [codegen id : 374]
Output [5]: [product#25911, plant#25912, orderDateTime#25913, filteredUnitOfMeasureConversions#25957.quantityDenominator AS _extract_quantityDenominator#33528, filteredUnitOfMeasureConversions#25957.quantityNumerator AS _extract_quantityNumerator#33529]
Input [4]: [product#25911, plant#25912, orderDateTime#25913, filteredUnitOfMeasureConversions#25957]
(35) Generate [codegen id : 374]
Input [5]: [product#25911, plant#25912, orderDateTime#25913, _extract_quantityDenominator#33528, _extract_quantityNumerator#33529]
Arguments: explode(_extract_quantityNumerator#33529), [product#25911, plant#25912, orderDateTime#25913, _extract_quantityDenominator#33528], true, [quantityNumerator#25965]
(36) Generate [codegen id : 374]
Input [5]: [product#25911, plant#25912, orderDateTime#25913, _extract_quantityDenominator#33528, quantityNumerator#25965]
Arguments: explode(_extract_quantityDenominator#33528), [product#25911, plant#25912, orderDateTime#25913, quantityNumerator#25965], true, [quantityDenominator#25968]
(37) Project [codegen id : 374]
Output [4]: [product#25911, plant#25912, orderDateTime#25913, (cast(quantityNumerator#25965 as double) / cast(quantityDenominator#25968 as double)) AS outboundUnit#25969]
Input [5]: [product#25911, plant#25912, orderDateTime#25913, quantityNumerator#25965, quantityDenominator#25968]
(38) Project [codegen id : 374]
Output [4]: [product#25911, plant#25912, orderDateTime#25913, CASE WHEN (isnull(outboundUnit#25969) OR (outboundUnit#25969 <= 0.0)) THEN 1.0 ELSE outboundUnit#25969 END AS outboundUnit#25970]
Input [4]: [product#25911, plant#25912, orderDateTime#25913, outboundUnit#25969]
(39) Scan parquet
Output [6]: [internalUUID#26008, product#26009, plant#26010, calculationDateTime#26011, stockQuantities#26012, systemId#26007]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(40) ColumnarToRow [codegen id : 5]
Input [6]: [internalUUID#26008, product#26009, plant#26010, calculationDateTime#26011, stockQuantities#26012, systemId#26007]
(41) Filter [codegen id : 5]
Input [6]: [internalUUID#26008, product#26009, plant#26010, calculationDateTime#26011, stockQuantities#26012, systemId#26007]
Condition : (isnotnull(plant#26010.internalRefUUID) AND isnotnull(product#26009.internalRefUUID))
(42) Project [codegen id : 5]
Output [6]: [systemId#26007, internalUUID#26008, product#26009, plant#26010, calculationDateTime#26011, stockQuantities#26012]
Input [6]: [internalUUID#26008, product#26009, plant#26010, calculationDateTime#26011, stockQuantities#26012, systemId#26007]
(43) Exchange
Input [6]: [systemId#26007, internalUUID#26008, product#26009, plant#26010, calculationDateTime#26011, stockQuantities#26012]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=123799]
(44) ShuffleQueryStage
Output [6]: [systemId#26007, internalUUID#26008, product#26009, plant#26010, calculationDateTime#26011, stockQuantities#26012]
Arguments: 4
(45) BroadcastExchange
Input [6]: [systemId#26007, internalUUID#26008, product#26009, plant#26010, calculationDateTime#26011, stockQuantities#26012]
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=123809]
(46) BroadcastQueryStage
Output [6]: [systemId#26007, internalUUID#26008, product#26009, plant#26010, calculationDateTime#26011, stockQuantities#26012]
Arguments: 388
(47) Scan parquet
Output [2]: [marketUnit#25971, distributionCenters#25977]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(48) ColumnarToRow [codegen id : 6]
Input [2]: [marketUnit#25971, distributionCenters#25977]
(49) Filter [codegen id : 6]
Input [2]: [marketUnit#25971, distributionCenters#25977]
Condition : (((marketUnit#25971 <=> DIP_1691) AND (size(distributionCenters#25977, true) > 0)) AND isnotnull(distributionCenters#25977))
(50) Project [codegen id : 6]
Output [1]: [distributionCenters#25977]
Input [2]: [marketUnit#25971, distributionCenters#25977]
(51) Exchange
Input [1]: [distributionCenters#25977]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=123819]
(52) ShuffleQueryStage
Output [1]: [distributionCenters#25977]
Arguments: 5
(53) Generate [codegen id : 200]
Input [1]: [distributionCenters#25977]
Arguments: explode(distributionCenters#25977), false, [distributionCenters#25995]
(54) Filter [codegen id : 200]
Input [1]: [distributionCenters#25995]
Condition : (((size(distributionCenters#25995.storageLocations, true) > 0) AND isnotnull(distributionCenters#25995.storageLocations)) AND isnotnull(distributionCenters#25995.internalRefUUID))
(55) Project [codegen id : 200]
Output [2]: [distributionCenters#25995.internalRefUUID AS _extract_internalRefUUID#33347, distributionCenters#25995.storageLocations AS _extract_storageLocations#33348]
Input [1]: [distributionCenters#25995]
(56) Generate [codegen id : 200]
Input [2]: [_extract_internalRefUUID#33347, _extract_storageLocations#33348]
Arguments: explode(_extract_storageLocations#33348), [_extract_internalRefUUID#33347], false, [storageLocations#26002]
(57) Project [codegen id : 200]
Output [3]: [_extract_internalRefUUID#33347 AS plantUuid#25997, storageLocations#26002.id AS storageLocId#26003, storageLocations#26002.internalRefUUID AS storageLocUuid#26004]
Input [2]: [_extract_internalRefUUID#33347, storageLocations#26002]
(58) BroadcastExchange
Input [3]: [plantUuid#25997, storageLocId#26003, storageLocUuid#26004]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=164180]
(59) BroadcastQueryStage
Output [3]: [plantUuid#25997, storageLocId#26003, storageLocUuid#26004]
Arguments: 389
(60) Scan parquet
Output [2]: [product#26267, plant#26268]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(61) ColumnarToRow [codegen id : 7]
Input [2]: [product#26267, plant#26268]
(62) Filter [codegen id : 7]
Input [2]: [product#26267, plant#26268]
Condition : isnotnull(plant#26268)
(63) Exchange
Input [2]: [product#26267, plant#26268]
Arguments: hashpartitioning(product#26267, plant#26268, 10), REPARTITION_BY_NUM, [plan_id=123842]
(64) ShuffleQueryStage
Output [2]: [product#26267, plant#26268]
Arguments: 6
(65) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#34038, _extract_internalRefUUID#34039, _extract_internalRefUUID#34040, _extract_internalRefUUID#34037]
(66) BroadcastQueryStage
Output [4]: [_extract_code#34038, _extract_internalRefUUID#34039, _extract_internalRefUUID#34040, _extract_internalRefUUID#34037]
Arguments: 391
(67) BroadcastHashJoin [codegen id : 255]
Left keys [4]: [coalesce(product#26267, ), isnull(product#26267), coalesce(plant#26268, ), isnull(plant#26268)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34040, ), isnull(_extract_internalRefUUID#34040), coalesce(_extract_internalRefUUID#34037, ), isnull(_extract_internalRefUUID#34037)]
Join type: LeftOuter
Join condition: None
(68) Project [codegen id : 255]
Output [4]: [product#26267, plant#26268, _extract_code#34038, _extract_internalRefUUID#34039]
Input [6]: [product#26267, plant#26268, _extract_code#34038, _extract_internalRefUUID#34039, _extract_internalRefUUID#34040, _extract_internalRefUUID#34037]
(69) ReusedExchange [Reuses operator id: 20]
Output [1]: [internalUUID#26281]
(70) BroadcastQueryStage
Output [1]: [internalUUID#26281]
Arguments: 392
(71) BroadcastHashJoin [codegen id : 255]
Left keys [2]: [coalesce(plant#26268, ), isnull(plant#26268)]
Right keys [2]: [coalesce(internalUUID#26281, ), isnull(internalUUID#26281)]
Join type: LeftOuter
Join condition: None
(72) Project [codegen id : 255]
Output [4]: [product#26267, plant#26268, _extract_code#34038, _extract_internalRefUUID#34039]
Input [5]: [product#26267, plant#26268, _extract_code#34038, _extract_internalRefUUID#34039, internalUUID#26281]
(73) ReusedExchange [Reuses operator id: 30]
Output [3]: [internalUUID#26295, baseUnitOfMeasure#26299, unitOfMeasureConversions#26301]
(74) BroadcastQueryStage
Output [3]: [internalUUID#26295, baseUnitOfMeasure#26299, unitOfMeasureConversions#26301]
Arguments: 393
(75) BroadcastHashJoin [codegen id : 255]
Left keys [1]: [product#26267]
Right keys [1]: [internalUUID#26295]
Join type: LeftOuter
Join condition: None
(76) Project
Output [2]: [plant#26268, filter(unitOfMeasureConversions#26301, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34038) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34039)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26299.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26299.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26306]
Input [7]: [product#26267, plant#26268, _extract_code#34038, _extract_internalRefUUID#34039, internalUUID#26295, baseUnitOfMeasure#26299, unitOfMeasureConversions#26301]
(77) Generate [codegen id : 256]
Input [2]: [plant#26268, filteredUnitOfMeasureConversions#26306]
Arguments: explode(filteredUnitOfMeasureConversions#26306.quantityNumerator), [plant#26268, filteredUnitOfMeasureConversions#26306], true, [quantityNumerator#26307]
(78) Project [codegen id : 256]
Output [2]: [plant#26268, filteredUnitOfMeasureConversions#26306.quantityDenominator AS _extract_quantityDenominator#33349]
Input [3]: [plant#26268, filteredUnitOfMeasureConversions#26306, quantityNumerator#26307]
(79) Generate [codegen id : 256]
Input [2]: [plant#26268, _extract_quantityDenominator#33349]
Arguments: explode(_extract_quantityDenominator#33349), [plant#26268], true, [quantityDenominator#26308]
(80) Project [codegen id : 256]
Output [1]: [plant#26268]
Input [2]: [plant#26268, quantityDenominator#26308]
(81) HashAggregate [codegen id : 256]
Input [1]: [plant#26268]
Keys [1]: [plant#26268]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26268]
(82) Exchange
Input [1]: [plant#26268]
Arguments: hashpartitioning(plant#26268, 10), ENSURE_REQUIREMENTS, [plan_id=176399]
(83) ShuffleQueryStage
Output [1]: [plant#26268]
Arguments: 590
(84) AQEShuffleRead
Input [1]: [plant#26268]
Arguments: coalesced
(85) HashAggregate
Input [1]: [plant#26268]
Keys [1]: [plant#26268]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26268]
(86) BroadcastHashJoin
Left keys [1]: [plantUuid#25997]
Right keys [1]: [plant#26268]
Join type: Inner
Join condition: None
(87) Project
Output [3]: [plantUuid#25997, storageLocId#26003, storageLocUuid#26004]
Input [4]: [plantUuid#25997, storageLocId#26003, storageLocUuid#26004, plant#26268]
(88) BroadcastHashJoin [codegen id : 289]
Left keys [2]: [coalesce(plant#26010.internalRefUUID, ), isnull(plant#26010.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#25997, ), isnull(plantUuid#25997)]
Join type: Inner
Join condition: None
(89) Generate
Input [9]: [systemId#26007, internalUUID#26008, product#26009, plant#26010, calculationDateTime#26011, stockQuantities#26012, plantUuid#25997, storageLocId#26003, storageLocUuid#26004]
Arguments: explode(filter(stockQuantities#26012, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#26004) AND (lambda x#26016.storageLocation.Id = storageLocId#26003)), lambda x#26016, false))), [systemId#26007, internalUUID#26008, product#26009, plant#26010, calculationDateTime#26011, plantUuid#25997], false, [stockQuantity#26017]
(90) ObjectHashAggregate
Input [7]: [systemId#26007, internalUUID#26008, product#26009, plant#26010, calculationDateTime#26011, plantUuid#25997, stockQuantity#26017]
Keys [5]: [plantUuid#25997, internalUUID#26008, plant#26010, product#26009, systemId#26007]
Functions [2]: [partial_first(calculationDateTime#26011, false), partial_collect_list(stockQuantity#26017, 0, 0)]
Aggregate Attributes [3]: [first#35083, valueSet#35084, buf#35085]
Results [8]: [plantUuid#25997, internalUUID#26008, plant#26010, product#26009, systemId#26007, first#35086, valueSet#35087, buf#35088]
(91) ObjectHashAggregate
Input [8]: [plantUuid#25997, internalUUID#26008, plant#26010, product#26009, systemId#26007, first#35086, valueSet#35087, buf#35088]
Keys [5]: [plantUuid#25997, internalUUID#26008, plant#26010, product#26009, systemId#26007]
Functions [2]: [first(calculationDateTime#26011, false), collect_list(stockQuantity#26017, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#26011)()#26031, collect_list(stockQuantity#26017, 0, 0)#26032]
Results [4]: [product#26009, plant#26010, first(calculationDateTime#26011)()#26031 AS calculationDateTime#26018, collect_list(stockQuantity#26017, 0, 0)#26032 AS stockQuantities#26019]
(92) Filter [codegen id : 290]
Input [4]: [product#26009, plant#26010, calculationDateTime#26018, stockQuantities#26019]
Condition : ((size(stockQuantities#26019, true) > 0) AND isnotnull(calculationDateTime#26018))
(93) Generate [codegen id : 290]
Input [4]: [product#26009, plant#26010, calculationDateTime#26018, stockQuantities#26019]
Arguments: explode(stockQuantities#26019), [product#26009, plant#26010, calculationDateTime#26018], false, [stockQuantity#26034]
(94) Filter [codegen id : 290]
Input [4]: [product#26009, plant#26010, calculationDateTime#26018, stockQuantity#26034]
Condition : (((isnotnull(stockQuantity#26034.specialStockIndicator.code) AND isnotnull(stockQuantity#26034.stockType.code)) AND (stockQuantity#26034.specialStockIndicator.code = )) AND (stockQuantity#26034.stockType.code = 01))
(95) Project [codegen id : 290]
Output [5]: [plant#26010.internalRefUUID AS plantUuid#26036, product#26009.internalRefUUID AS productUuid#26038, calculationDateTime#26018, stockQuantity#26034.storagelocation.id AS storageLocId#26039, stockQuantity#26034.quantity.measure AS quantity#26041]
Input [4]: [product#26009, plant#26010, calculationDateTime#26018, stockQuantity#26034]
(96) Exchange
Input [5]: [plantUuid#26036, productUuid#26038, calculationDateTime#26018, storageLocId#26039, quantity#26041]
Arguments: hashpartitioning(productUuid#26038, plantUuid#26036, 10), ENSURE_REQUIREMENTS, [plan_id=185449]
(97) ShuffleQueryStage
Output [5]: [plantUuid#26036, productUuid#26038, calculationDateTime#26018, storageLocId#26039, quantity#26041]
Arguments: 624
(98) AQEShuffleRead
Input [5]: [plantUuid#26036, productUuid#26038, calculationDateTime#26018, storageLocId#26039, quantity#26041]
Arguments: local
(99) BroadcastExchange
Input [5]: [plantUuid#26036, productUuid#26038, calculationDateTime#26018, storageLocId#26039, quantity#26041]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=192683]
(100) BroadcastQueryStage
Output [5]: [plantUuid#26036, productUuid#26038, calculationDateTime#26018, storageLocId#26039, quantity#26041]
Arguments: 673
(101) Scan parquet
Output [3]: [product#26053, plant#26054, orderDateTime#26055]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(102) ColumnarToRow [codegen id : 11]
Input [3]: [product#26053, plant#26054, orderDateTime#26055]
(103) Filter [codegen id : 11]
Input [3]: [product#26053, plant#26054, orderDateTime#26055]
Condition : ((isnotnull(orderDateTime#26055) AND isnotnull(plant#26054)) AND isnotnull(product#26053))
(104) Exchange
Input [3]: [product#26053, plant#26054, orderDateTime#26055]
Arguments: hashpartitioning(product#26053, plant#26054, 10), REPARTITION_BY_NUM, [plan_id=123942]
(105) ShuffleQueryStage
Output [3]: [product#26053, plant#26054, orderDateTime#26055]
Arguments: 13
(106) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#34042, _extract_internalRefUUID#34043, _extract_internalRefUUID#34044, _extract_internalRefUUID#34041]
(107) BroadcastQueryStage
Output [4]: [_extract_code#34042, _extract_internalRefUUID#34043, _extract_internalRefUUID#34044, _extract_internalRefUUID#34041]
Arguments: 395
(108) BroadcastHashJoin [codegen id : 341]
Left keys [4]: [coalesce(product#26053, ), isnull(product#26053), coalesce(plant#26054, ), isnull(plant#26054)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34044, ), isnull(_extract_internalRefUUID#34044), coalesce(_extract_internalRefUUID#34041, ), isnull(_extract_internalRefUUID#34041)]
Join type: LeftOuter
Join condition: None
(109) Project [codegen id : 341]
Output [5]: [product#26053, plant#26054, orderDateTime#26055, _extract_code#34042, _extract_internalRefUUID#34043]
Input [7]: [product#26053, plant#26054, orderDateTime#26055, _extract_code#34042, _extract_internalRefUUID#34043, _extract_internalRefUUID#34044, _extract_internalRefUUID#34041]
(110) ReusedExchange [Reuses operator id: 20]
Output [1]: [internalUUID#26067]
(111) BroadcastQueryStage
Output [1]: [internalUUID#26067]
Arguments: 396
(112) BroadcastHashJoin [codegen id : 341]
Left keys [2]: [coalesce(plant#26054, ), isnull(plant#26054)]
Right keys [2]: [coalesce(internalUUID#26067, ), isnull(internalUUID#26067)]
Join type: LeftOuter
Join condition: None
(113) Project [codegen id : 341]
Output [5]: [product#26053, plant#26054, orderDateTime#26055, _extract_code#34042, _extract_internalRefUUID#34043]
Input [6]: [product#26053, plant#26054, orderDateTime#26055, _extract_code#34042, _extract_internalRefUUID#34043, internalUUID#26067]
(114) ReusedExchange [Reuses operator id: 30]
Output [3]: [internalUUID#26081, baseUnitOfMeasure#26085, unitOfMeasureConversions#26087]
(115) BroadcastQueryStage
Output [3]: [internalUUID#26081, baseUnitOfMeasure#26085, unitOfMeasureConversions#26087]
Arguments: 397
(116) BroadcastHashJoin [codegen id : 341]
Left keys [1]: [product#26053]
Right keys [1]: [internalUUID#26081]
Join type: LeftOuter
Join condition: None
(117) Project
Output [4]: [product#26053, plant#26054, orderDateTime#26055, filter(unitOfMeasureConversions#26087, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34042) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34043)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26085.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26085.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26092]
Input [8]: [product#26053, plant#26054, orderDateTime#26055, _extract_code#34042, _extract_internalRefUUID#34043, internalUUID#26081, baseUnitOfMeasure#26085, unitOfMeasureConversions#26087]
(118) Generate
Input [4]: [product#26053, plant#26054, orderDateTime#26055, filteredUnitOfMeasureConversions#26092]
Arguments: explode(filteredUnitOfMeasureConversions#26092.quantityNumerator), [product#26053, plant#26054, orderDateTime#26055, filteredUnitOfMeasureConversions#26092], true, [quantityNumerator#26093]
(119) Project
Output [4]: [product#26053, plant#26054, orderDateTime#26055, filteredUnitOfMeasureConversions#26092.quantityDenominator AS _extract_quantityDenominator#33353]
Input [5]: [product#26053, plant#26054, orderDateTime#26055, filteredUnitOfMeasureConversions#26092, quantityNumerator#26093]
(120) Generate
Input [4]: [product#26053, plant#26054, orderDateTime#26055, _extract_quantityDenominator#33353]
Arguments: explode(_extract_quantityDenominator#33353), [product#26053, plant#26054, orderDateTime#26055], true, [quantityDenominator#26094]
(121) Project
Output [3]: [product#26053, plant#26054, orderDateTime#26055]
Input [4]: [product#26053, plant#26054, orderDateTime#26055, quantityDenominator#26094]
(122) BroadcastHashJoin [codegen id : 342]
Left keys [2]: [plantUuid#26036, productUuid#26038]
Right keys [2]: [plant#26054, product#26053]
Join type: Inner
Join condition: (calculationDateTime#26018 <= orderDateTime#26055)
(123) Project [codegen id : 342]
Output [5]: [plantUuid#26036 AS plant#26101, productUuid#26038 AS product#26102, storageLocId#26039, calculationDateTime#26018, quantity#26041]
Input [8]: [plantUuid#26036, productUuid#26038, calculationDateTime#26018, storageLocId#26039, quantity#26041, product#26053, plant#26054, orderDateTime#26055]
(124) Exchange
Input [5]: [plant#26101, product#26102, storageLocId#26039, calculationDateTime#26018, quantity#26041]
Arguments: hashpartitioning(coalesce(plant#26101, ), isnull(plant#26101), coalesce(product#26102, ), isnull(product#26102), coalesce(storageLocId#26039, ), isnull(storageLocId#26039), coalesce(calculationDateTime#26018, 1970-01-01 00:00:00), isnull(calculationDateTime#26018), 10), ENSURE_REQUIREMENTS, [plan_id=198379]
(125) ShuffleQueryStage
Output [5]: [plant#26101, product#26102, storageLocId#26039, calculationDateTime#26018, quantity#26041]
Arguments: 702
(126) AQEShuffleRead
Input [5]: [plant#26101, product#26102, storageLocId#26039, calculationDateTime#26018, quantity#26041]
Arguments: local
(127) ReusedExchange [Reuses operator id: 45]
Output [6]: [systemId#26110, internalUUID#26111, product#26112, plant#26113, calculationDateTime#26114, stockQuantities#26115]
(128) BroadcastQueryStage
Output [6]: [systemId#26110, internalUUID#26111, product#26112, plant#26113, calculationDateTime#26114, stockQuantities#26115]
Arguments: 398
(129) ReusedExchange [Reuses operator id: 58]
Output [3]: [plantUuid#26141, storageLocId#26142, storageLocUuid#26143]
(130) BroadcastQueryStage
Output [3]: [plantUuid#26141, storageLocId#26142, storageLocUuid#26143]
Arguments: 400
(131) ReusedExchange [Reuses operator id: 82]
Output [1]: [plant#26145]
(132) ShuffleQueryStage
Output [1]: [plant#26145]
Arguments: 592
(133) AQEShuffleRead
Input [1]: [plant#26145]
Arguments: coalesced
(134) HashAggregate
Input [1]: [plant#26145]
Keys [1]: [plant#26145]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26145]
(135) BroadcastHashJoin
Left keys [1]: [plantUuid#26141]
Right keys [1]: [plant#26145]
Join type: Inner
Join condition: None
(136) Project
Output [3]: [plantUuid#26141, storageLocId#26142, storageLocUuid#26143]
Input [4]: [plantUuid#26141, storageLocId#26142, storageLocUuid#26143, plant#26145]
(137) BroadcastHashJoin [codegen id : 291]
Left keys [2]: [coalesce(plant#26113.internalRefUUID, ), isnull(plant#26113.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#26141, ), isnull(plantUuid#26141)]
Join type: Inner
Join condition: None
(138) Generate
Input [9]: [systemId#26110, internalUUID#26111, product#26112, plant#26113, calculationDateTime#26114, stockQuantities#26115, plantUuid#26141, storageLocId#26142, storageLocUuid#26143]
Arguments: explode(filter(stockQuantities#26115, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#26143) AND (lambda x#26016.storageLocation.Id = storageLocId#26142)), lambda x#26016, false))), [systemId#26110, internalUUID#26111, product#26112, plant#26113, calculationDateTime#26114, plantUuid#26141], false, [stockQuantity#26188]
(139) ObjectHashAggregate
Input [7]: [systemId#26110, internalUUID#26111, product#26112, plant#26113, calculationDateTime#26114, plantUuid#26141, stockQuantity#26188]
Keys [5]: [plantUuid#26141, internalUUID#26111, plant#26113, product#26112, systemId#26110]
Functions [2]: [partial_first(calculationDateTime#26114, false), partial_collect_list(stockQuantity#26188, 0, 0)]
Aggregate Attributes [3]: [first#35091, valueSet#35092, buf#35093]
Results [8]: [plantUuid#26141, internalUUID#26111, plant#26113, product#26112, systemId#26110, first#35094, valueSet#35095, buf#35096]
(140) ObjectHashAggregate
Input [8]: [plantUuid#26141, internalUUID#26111, plant#26113, product#26112, systemId#26110, first#35094, valueSet#35095, buf#35096]
Keys [5]: [plantUuid#26141, internalUUID#26111, plant#26113, product#26112, systemId#26110]
Functions [2]: [first(calculationDateTime#26114, false), collect_list(stockQuantity#26188, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#26114)()#26031, collect_list(stockQuantity#26188, 0, 0)#26032]
Results [4]: [product#26112, plant#26113, first(calculationDateTime#26114)()#26031 AS calculationDateTime#26189, collect_list(stockQuantity#26188, 0, 0)#26032 AS stockQuantities#26190]
(141) Filter [codegen id : 292]
Input [4]: [product#26112, plant#26113, calculationDateTime#26189, stockQuantities#26190]
Condition : ((size(stockQuantities#26190, true) > 0) AND isnotnull(calculationDateTime#26189))
(142) Generate [codegen id : 292]
Input [4]: [product#26112, plant#26113, calculationDateTime#26189, stockQuantities#26190]
Arguments: explode(stockQuantities#26190), [product#26112, plant#26113, calculationDateTime#26189], false, [stockQuantity#26191]
(143) Filter [codegen id : 292]
Input [4]: [product#26112, plant#26113, calculationDateTime#26189, stockQuantity#26191]
Condition : (((isnotnull(stockQuantity#26191.specialStockIndicator.code) AND isnotnull(stockQuantity#26191.stockType.code)) AND (stockQuantity#26191.specialStockIndicator.code = )) AND (stockQuantity#26191.stockType.code = 01))
(144) Project [codegen id : 292]
Output [4]: [plant#26113.internalRefUUID AS plantUuid#26193, product#26112.internalRefUUID AS productUuid#26195, calculationDateTime#26189, stockQuantity#26191.storagelocation.id AS storageLocId#26196]
Input [4]: [product#26112, plant#26113, calculationDateTime#26189, stockQuantity#26191]
(145) Exchange
Input [4]: [plantUuid#26193, productUuid#26195, calculationDateTime#26189, storageLocId#26196]
Arguments: hashpartitioning(productUuid#26195, plantUuid#26193, 10), ENSURE_REQUIREMENTS, [plan_id=185517]
(146) ShuffleQueryStage
Output [4]: [plantUuid#26193, productUuid#26195, calculationDateTime#26189, storageLocId#26196]
Arguments: 625
(147) AQEShuffleRead
Input [4]: [plantUuid#26193, productUuid#26195, calculationDateTime#26189, storageLocId#26196]
Arguments: local
(148) BroadcastExchange
Input [4]: [plantUuid#26193, productUuid#26195, calculationDateTime#26189, storageLocId#26196]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=189729]
(149) BroadcastQueryStage
Output [4]: [plantUuid#26193, productUuid#26195, calculationDateTime#26189, storageLocId#26196]
Arguments: 654
(150) ReusedExchange [Reuses operator id: 104]
Output [3]: [product#26201, plant#26202, orderDateTime#26203]
(151) ShuffleQueryStage
Output [3]: [product#26201, plant#26202, orderDateTime#26203]
Arguments: 33
(152) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#34051, _extract_internalRefUUID#34052, _extract_internalRefUUID#34049, _extract_internalRefUUID#34050]
(153) BroadcastQueryStage
Output [4]: [_extract_code#34051, _extract_internalRefUUID#34052, _extract_internalRefUUID#34049, _extract_internalRefUUID#34050]
Arguments: 406
(154) BroadcastHashJoin [codegen id : 321]
Left keys [4]: [coalesce(product#26201, ), isnull(product#26201), coalesce(plant#26202, ), isnull(plant#26202)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34049, ), isnull(_extract_internalRefUUID#34049), coalesce(_extract_internalRefUUID#34050, ), isnull(_extract_internalRefUUID#34050)]
Join type: LeftOuter
Join condition: None
(155) Project [codegen id : 321]
Output [5]: [product#26201, plant#26202, orderDateTime#26203, _extract_code#34051, _extract_internalRefUUID#34052]
Input [7]: [product#26201, plant#26202, orderDateTime#26203, _extract_code#34051, _extract_internalRefUUID#34052, _extract_internalRefUUID#34049, _extract_internalRefUUID#34050]
(156) ReusedExchange [Reuses operator id: 20]
Output [1]: [internalUUID#26215]
(157) BroadcastQueryStage
Output [1]: [internalUUID#26215]
Arguments: 407
(158) BroadcastHashJoin [codegen id : 321]
Left keys [2]: [coalesce(plant#26202, ), isnull(plant#26202)]
Right keys [2]: [coalesce(internalUUID#26215, ), isnull(internalUUID#26215)]
Join type: LeftOuter
Join condition: None
(159) Project [codegen id : 321]
Output [5]: [product#26201, plant#26202, orderDateTime#26203, _extract_code#34051, _extract_internalRefUUID#34052]
Input [6]: [product#26201, plant#26202, orderDateTime#26203, _extract_code#34051, _extract_internalRefUUID#34052, internalUUID#26215]
(160) ReusedExchange [Reuses operator id: 30]
Output [3]: [internalUUID#26229, baseUnitOfMeasure#26233, unitOfMeasureConversions#26235]
(161) BroadcastQueryStage
Output [3]: [internalUUID#26229, baseUnitOfMeasure#26233, unitOfMeasureConversions#26235]
Arguments: 408
(162) BroadcastHashJoin [codegen id : 321]
Left keys [1]: [product#26201]
Right keys [1]: [internalUUID#26229]
Join type: LeftOuter
Join condition: None
(163) Project
Output [4]: [product#26201, plant#26202, orderDateTime#26203, filter(unitOfMeasureConversions#26235, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34051) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34052)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26233.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26233.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26240]
Input [8]: [product#26201, plant#26202, orderDateTime#26203, _extract_code#34051, _extract_internalRefUUID#34052, internalUUID#26229, baseUnitOfMeasure#26233, unitOfMeasureConversions#26235]
(164) Generate
Input [4]: [product#26201, plant#26202, orderDateTime#26203, filteredUnitOfMeasureConversions#26240]
Arguments: explode(filteredUnitOfMeasureConversions#26240.quantityNumerator), [product#26201, plant#26202, orderDateTime#26203, filteredUnitOfMeasureConversions#26240], true, [quantityNumerator#26241]
(165) Project
Output [4]: [product#26201, plant#26202, orderDateTime#26203, filteredUnitOfMeasureConversions#26240.quantityDenominator AS _extract_quantityDenominator#33363]
Input [5]: [product#26201, plant#26202, orderDateTime#26203, filteredUnitOfMeasureConversions#26240, quantityNumerator#26241]
(166) Generate
Input [4]: [product#26201, plant#26202, orderDateTime#26203, _extract_quantityDenominator#33363]
Arguments: explode(_extract_quantityDenominator#33363), [product#26201, plant#26202, orderDateTime#26203], true, [quantityDenominator#26242]
(167) Project
Output [3]: [product#26201, plant#26202, orderDateTime#26203]
Input [4]: [product#26201, plant#26202, orderDateTime#26203, quantityDenominator#26242]
(168) BroadcastHashJoin [codegen id : 322]
Left keys [2]: [plantUuid#26193, productUuid#26195]
Right keys [2]: [plant#26202, product#26201]
Join type: Inner
Join condition: (calculationDateTime#26189 <= orderDateTime#26203)
(169) Project [codegen id : 322]
Output [4]: [plantUuid#26193 AS plant#26245, productUuid#26195 AS product#26246, storageLocId#26196, calculationDateTime#26189]
Input [7]: [plantUuid#26193, productUuid#26195, calculationDateTime#26189, storageLocId#26196, product#26201, plant#26202, orderDateTime#26203]
(170) HashAggregate [codegen id : 322]
Input [4]: [plant#26245, product#26246, storageLocId#26196, calculationDateTime#26189]
Keys [3]: [plant#26245, product#26246, storageLocId#26196]
Functions [1]: [partial_max(calculationDateTime#26189)]
Aggregate Attributes [1]: [max#35089]
Results [4]: [plant#26245, product#26246, storageLocId#26196, max#35090]
(171) HashAggregate [codegen id : 322]
Input [4]: [plant#26245, product#26246, storageLocId#26196, max#35090]
Keys [3]: [plant#26245, product#26246, storageLocId#26196]
Functions [1]: [max(calculationDateTime#26189)]
Aggregate Attributes [1]: [max(calculationDateTime#26189)#26109]
Results [4]: [plant#26245, product#26246, storageLocId#26196, max(calculationDateTime#26189)#26109 AS max_calc_datetime#26103]
(172) Exchange
Input [4]: [plant#26245, product#26246, storageLocId#26196, max_calc_datetime#26103]
Arguments: hashpartitioning(coalesce(plant#26245, ), isnull(plant#26245), coalesce(product#26246, ), isnull(product#26246), coalesce(storageLocId#26196, ), isnull(storageLocId#26196), coalesce(max_calc_datetime#26103, 1970-01-01 00:00:00), isnull(max_calc_datetime#26103), 10), ENSURE_REQUIREMENTS, [plan_id=195527]
(173) ShuffleQueryStage
Output [4]: [plant#26245, product#26246, storageLocId#26196, max_calc_datetime#26103]
Arguments: 684
(174) AQEShuffleRead
Input [4]: [plant#26245, product#26246, storageLocId#26196, max_calc_datetime#26103]
Arguments: local
(175) BroadcastExchange
Input [4]: [plant#26245, product#26246, storageLocId#26196, max_calc_datetime#26103]
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=201797]
(176) BroadcastQueryStage
Output [4]: [plant#26245, product#26246, storageLocId#26196, max_calc_datetime#26103]
Arguments: 716
(177) BroadcastHashJoin [codegen id : 355]
Left keys [8]: [coalesce(plant#26101, ), isnull(plant#26101), coalesce(product#26102, ), isnull(product#26102), coalesce(storageLocId#26039, ), isnull(storageLocId#26039), coalesce(calculationDateTime#26018, 1970-01-01 00:00:00), isnull(calculationDateTime#26018)]
Right keys [8]: [coalesce(plant#26245, ), isnull(plant#26245), coalesce(product#26246, ), isnull(product#26246), coalesce(storageLocId#26196, ), isnull(storageLocId#26196), coalesce(max_calc_datetime#26103, 1970-01-01 00:00:00), isnull(max_calc_datetime#26103)]
Join type: Inner
Join condition: None
(178) Project [codegen id : 355]
Output [4]: [plant#26101, product#26102, calculationDateTime#26018, quantity#26041]
Input [9]: [plant#26101, product#26102, storageLocId#26039, calculationDateTime#26018, quantity#26041, plant#26245, product#26246, storageLocId#26196, max_calc_datetime#26103]
(179) HashAggregate [codegen id : 355]
Input [4]: [plant#26101, product#26102, calculationDateTime#26018, quantity#26041]
Keys [2]: [product#26102, plant#26101]
Functions [2]: [partial_min(calculationDateTime#26018), partial_sum(quantity#26041)]
Aggregate Attributes [2]: [min#35079, sum#35080]
Results [4]: [product#26102, plant#26101, min#35081, sum#35082]
(180) Exchange
Input [4]: [product#26102, plant#26101, min#35081, sum#35082]
Arguments: hashpartitioning(product#26102, plant#26101, 10), ENSURE_REQUIREMENTS, [plan_id=204712]
(181) ShuffleQueryStage
Output [4]: [product#26102, plant#26101, min#35081, sum#35082]
Arguments: 730
(182) AQEShuffleRead
Input [4]: [product#26102, plant#26101, min#35081, sum#35082]
Arguments: coalesced
(183) HashAggregate [codegen id : 363]
Input [4]: [product#26102, plant#26101, min#35081, sum#35082]
Keys [2]: [product#26102, plant#26101]
Functions [2]: [min(calculationDateTime#26018), sum(quantity#26041)]
Aggregate Attributes [2]: [min(calculationDateTime#26018)#26265, sum(quantity#26041)#26264]
Results [4]: [product#26102, plant#26101, min(calculationDateTime#26018)#26265 AS minCalculationDateTime#26258, round(sum(quantity#26041)#26264, 0) AS roundedQuantitySum#26266]
(184) BroadcastExchange
Input [4]: [product#26102, plant#26101, minCalculationDateTime#26258, roundedQuantitySum#26266]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=207315]
(185) BroadcastQueryStage
Output [4]: [product#26102, plant#26101, minCalculationDateTime#26258, roundedQuantitySum#26266]
Arguments: 744
(186) BroadcastHashJoin [codegen id : 374]
Left keys [2]: [plant#25912, product#25911]
Right keys [2]: [plant#26101, product#26102]
Join type: LeftOuter
Join condition: None
(187) Project [codegen id : 374]
Output [5]: [product#25911, plant#25912, outboundUnit#25970, CASE WHEN isnotnull(minCalculationDateTime#26258) THEN minCalculationDateTime#26258 ELSE orderDateTime#25913 END AS stockDatetime#26315, CASE WHEN isnotnull(roundedQuantitySum#26266) THEN array(roundedQuantitySum#26266) ELSE [0.0] END AS stockBatchQuantities#26316]
Input [8]: [product#25911, plant#25912, orderDateTime#25913, outboundUnit#25970, product#26102, plant#26101, minCalculationDateTime#26258, roundedQuantitySum#26266]
(188) Exchange
Input [5]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316]
Arguments: hashpartitioning(coalesce(plant#25912, ), isnull(plant#25912), coalesce(product#25911, ), isnull(product#25911), 10), ENSURE_REQUIREMENTS, [plan_id=209606]
(189) ShuffleQueryStage
Output [5]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316]
Arguments: 758
(190) AQEShuffleRead
Input [5]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316]
Arguments: local
(191) ReusedExchange [Reuses operator id: 3]
Output [3]: [product#26392, plant#26393, orderDateTime#26394]
(192) ShuffleQueryStage
Output [3]: [product#26392, plant#26393, orderDateTime#26394]
Arguments: 41
(193) Scan parquet
Output [8]: [internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403, systemId#26396]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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,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>>>
(194) ColumnarToRow [codegen id : 26]
Input [8]: [internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403, systemId#26396]
(195) Project [codegen id : 26]
Output [8]: [systemId#26396, internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403]
Input [8]: [internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403, systemId#26396]
(196) Exchange
Input [8]: [systemId#26396, internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=124301]
(197) ShuffleQueryStage
Output [8]: [systemId#26396, internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403]
Arguments: 42
(198) Project [codegen id : 206]
Output [1]: [struct(systemId, systemId#26396, internalUUID, internalUUID#26397, plant, plant#26398, product, product#26399, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#26400, productionAspect, productionAspect#26401, salesPlant, salesPlant#26402, listing, listing#26403) AS productPlant#26404]
Input [8]: [systemId#26396, internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403]
(199) BroadcastExchange
Input [1]: [productPlant#26404]
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,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,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,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,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=164380]
(200) BroadcastQueryStage
Output [1]: [productPlant#26404]
Arguments: 409
(201) BroadcastHashJoin [codegen id : 375]
Left keys [4]: [coalesce(product#26392, ), isnull(product#26392), coalesce(plant#26393, ), isnull(plant#26393)]
Right keys [4]: [coalesce(productPlant#26404.product.internalRefUUID, ), isnull(productPlant#26404.product.internalRefUUID), coalesce(productPlant#26404.plant.internalRefUUID, ), isnull(productPlant#26404.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(202) Scan parquet
Output [3]: [internalUUID#26406, address#26412, systemId#26405]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(203) ColumnarToRow [codegen id : 27]
Input [3]: [internalUUID#26406, address#26412, systemId#26405]
(204) Project [codegen id : 27]
Output [2]: [internalUUID#26406, address#26412.timeZone.code AS timezonecode#26417]
Input [3]: [internalUUID#26406, address#26412, systemId#26405]
(205) Exchange
Input [2]: [internalUUID#26406, timezonecode#26417]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=124319]
(206) ShuffleQueryStage
Output [2]: [internalUUID#26406, timezonecode#26417]
Arguments: 43
(207) BroadcastExchange
Input [2]: [internalUUID#26406, timezonecode#26417]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=124327]
(208) BroadcastQueryStage
Output [2]: [internalUUID#26406, timezonecode#26417]
Arguments: 410
(209) BroadcastHashJoin [codegen id : 375]
Left keys [2]: [coalesce(plant#26393, ), isnull(plant#26393)]
Right keys [2]: [coalesce(internalUUID#26406, ), isnull(internalUUID#26406)]
Join type: LeftOuter
Join condition: None
(210) Project [codegen id : 375]
Output [5]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, CASE WHEN isnotnull(timezonecode#26417) THEN timezonecode#26417 ELSE UTC END AS timezonecode#26418]
Input [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, internalUUID#26406, timezonecode#26417]
(211) ReusedExchange [Reuses operator id: 30]
Output [3]: [internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426]
(212) BroadcastQueryStage
Output [3]: [internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426]
Arguments: 411
(213) BroadcastHashJoin [codegen id : 375]
Left keys [1]: [product#26392]
Right keys [1]: [internalUUID#26420]
Join type: LeftOuter
Join condition: None
(214) Project
Output [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, filter(unitOfMeasureConversions#26426, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#26404.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#26404.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26424.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26424.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26431]
Input [8]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426]
(215) Project [codegen id : 376]
Output [7]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, filteredUnitOfMeasureConversions#26431.quantityDenominator AS _extract_quantityDenominator#33560, filteredUnitOfMeasureConversions#26431.quantityNumerator AS _extract_quantityNumerator#33561]
Input [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, filteredUnitOfMeasureConversions#26431]
(216) Generate [codegen id : 376]
Input [7]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, _extract_quantityDenominator#33560, _extract_quantityNumerator#33561]
Arguments: explode(_extract_quantityNumerator#33561), [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, _extract_quantityDenominator#33560], true, [quantityNumerator#26432]
(217) Generate [codegen id : 376]
Input [7]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, _extract_quantityDenominator#33560, quantityNumerator#26432]
Arguments: explode(_extract_quantityDenominator#33560), [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, quantityNumerator#26432], true, [quantityDenominator#26433]
(218) Project [codegen id : 376]
Output [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, (cast(quantityNumerator#26432 as double) / cast(quantityDenominator#26433 as double)) AS outboundUnit#26434]
Input [7]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, quantityNumerator#26432, quantityDenominator#26433]
(219) Project [codegen id : 376]
Output [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, CASE WHEN (isnull(outboundUnit#26434) OR (outboundUnit#26434 <= 0.0)) THEN 1.0 ELSE outboundUnit#26434 END AS outboundUnit#26435]
Input [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26434]
(220) ReusedExchange [Reuses operator id: 184]
Output [4]: [product#26572, plant#26571, minCalculationDateTime#26712, roundedQuantitySum#26713]
(221) BroadcastQueryStage
Output [4]: [product#26572, plant#26571, minCalculationDateTime#26712, roundedQuantitySum#26713]
Arguments: 746
(222) BroadcastHashJoin [codegen id : 376]
Left keys [2]: [plant#26393, product#26392]
Right keys [2]: [plant#26571, product#26572]
Join type: LeftOuter
Join condition: None
(223) Project [codegen id : 376]
Output [8]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, CASE WHEN isnotnull(minCalculationDateTime#26712) THEN minCalculationDateTime#26712 ELSE orderDateTime#26394 END AS stockDatetime#26714, CASE WHEN isnotnull(roundedQuantitySum#26713) THEN array(roundedQuantitySum#26713) ELSE [0.0] END AS stockBatchQuantities#26715]
Input [10]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, product#26572, plant#26571, minCalculationDateTime#26712, roundedQuantitySum#26713]
(224) Scan parquet
Output [9]: [product#26318, plant#26319, demandChannel#26320, demandStream#26321, considerVariance#26322, demandTimeBuckets#26323, demandPointInTimeStart#26324, demandPointInTimeEnd#26325, demandPointInTime#26326]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000005/0_1_10000000005]
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>>>
(225) ColumnarToRow [codegen id : 49]
Input [9]: [product#26318, plant#26319, demandChannel#26320, demandStream#26321, considerVariance#26322, demandTimeBuckets#26323, demandPointInTimeStart#26324, demandPointInTimeEnd#26325, demandPointInTime#26326]
(226) Filter [codegen id : 49]
Input [9]: [product#26318, plant#26319, demandChannel#26320, demandStream#26321, considerVariance#26322, demandTimeBuckets#26323, demandPointInTimeStart#26324, demandPointInTimeEnd#26325, demandPointInTime#26326]
Condition : (isnotnull(product#26318) AND isnotnull(plant#26319))
(227) BroadcastExchange
Input [9]: [product#26318, plant#26319, demandChannel#26320, demandStream#26321, considerVariance#26322, demandTimeBuckets#26323, demandPointInTimeStart#26324, demandPointInTimeEnd#26325, demandPointInTime#26326]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=124863]
(228) BroadcastQueryStage
Output [9]: [product#26318, plant#26319, demandChannel#26320, demandStream#26321, considerVariance#26322, demandTimeBuckets#26323, demandPointInTimeStart#26324, demandPointInTimeEnd#26325, demandPointInTime#26326]
Arguments: 86
(229) BroadcastHashJoin [codegen id : 376]
Left keys [2]: [product#26392, plant#26393]
Right keys [2]: [product#26318, plant#26319]
Join type: LeftOuter
Join condition: None
(230) Project [codegen id : 376]
Output [9]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, CASE WHEN isnotnull(product#26318) THEN struct(demandChannel, demandChannel#26320, demandStream, demandStream#26321, considerVariance, considerVariance#26322, demandTimeBuckets, demandTimeBuckets#26323, demandPointInTimeStart, demandPointInTimeStart#26324, demandPointInTimeEnd, demandPointInTimeEnd#26325, demandPointInTime, demandPointInTime#26326) END AS rawDemands#26338]
Input [17]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, product#26318, plant#26319, demandChannel#26320, demandStream#26321, considerVariance#26322, demandTimeBuckets#26323, demandPointInTimeStart#26324, demandPointInTimeEnd#26325, demandPointInTime#26326]
(231) ObjectHashAggregate
Input [9]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, rawDemands#26338]
Keys [9]: [product#26392, plant#26393, orderDateTime#26394, knownfloatingpointnormalized(if (isnull(productPlant#26404)) null else named_struct(systemId, productPlant#26404.systemId, internalUUID, productPlant#26404.internalUUID, plant, productPlant#26404.plant, product, productPlant#26404.product, blockedForReplenishmentStartingFrom, productPlant#26404.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#26404.productionAspect)) null else named_struct(productMovementPlants, productPlant#26404.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#26404.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#26404.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#26404.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#26404.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#26404.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#26404.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#26404.salesPlant, listing, productPlant#26404.listing)) AS productPlant#26404, timezonecode#26418, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#26435)) AS outboundUnit#26435, stockDatetime#26714, knownfloatingpointnormalized(transform(stockBatchQuantities#26715, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#38359)), lambda arg#38359, false))) AS stockBatchQuantities#26715, [7226582400000000] AS [7226582400000000]#38358]
Functions [1]: [partial_collect_list(rawDemands#26338, 0, 0)]
Aggregate Attributes [1]: [buf#29069]
Results [10]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, [7226582400000000]#38358, buf#29070]
(232) ObjectHashAggregate
Input [10]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, [7226582400000000]#38358, buf#29070]
Keys [9]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, [7226582400000000]#38358]
Functions [1]: [collect_list(rawDemands#26338, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#26338, 0, 0)#26357]
Results [10]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#26716, collect_list(rawDemands#26338, 0, 0)#26357 AS rawDemands#26339]
(233) DeserializeToObject [codegen id : 377]
Input [10]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, stockBatchShelfLifeEndDatetimes#26716, rawDemands#26339]
Arguments: createexternalrow(invoke(product#26392.toString()), invoke(plant#26393.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#26394)), if (isnull(productPlant#26404)) null else createexternalrow(invoke(productPlant#26404.systemId.toString()), invoke(productPlant#26404.internalUUID.toString()), if (isnull(productPlant#26404.plant)) null else createexternalrow(invoke(productPlant#26404.plant.internalRefUUID.toString()), invoke(productPlant#26404.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#26404.product)) null else createexternalrow(invoke(productPlant#26404.product.internalRefUUID.toString()), invoke(productPlant#26404.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#26404.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#26404.productionAspect)) null else createexternalrow(if (isnull(productPlant#26404.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#26404.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#26404.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#26404.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#26404.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#26404.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#26404.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(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(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#26404.salesPlant)) null else createexternalrow(if (isnull(productPlant#26404.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#26404.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#26404.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#26404.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(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#26418.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#26435)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#26714)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#26715, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#26716, 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#26339, 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(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#26378: org.apache.spark.sql.Row
(234) MapElements [codegen id : 377]
Input [1]: [obj#26378]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@5081ce9e, obj#26383: org.apache.spark.sql.Row
(235) SerializeFromObject [codegen id : 377]
Input [1]: [obj#26383]
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#26388, 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#26389, 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#26390, 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#26391]
(236) Exchange
Input [4]: [product#26388, plant#26389, dayBucketDemands#26390, pointInTimeDemands#26391]
Arguments: hashpartitioning(coalesce(plant#26389, ), isnull(plant#26389), coalesce(product#26388, ), isnull(product#26388), 10), ENSURE_REQUIREMENTS, [plan_id=209675]
(237) ShuffleQueryStage
Output [4]: [product#26388, plant#26389, dayBucketDemands#26390, pointInTimeDemands#26391]
Arguments: 759
(238) AQEShuffleRead
Input [4]: [product#26388, plant#26389, dayBucketDemands#26390, pointInTimeDemands#26391]
Arguments: local
(239) BroadcastExchange
Input [4]: [product#26388, plant#26389, dayBucketDemands#26390, pointInTimeDemands#26391]
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=211992]
(240) BroadcastQueryStage
Output [4]: [product#26388, plant#26389, dayBucketDemands#26390, pointInTimeDemands#26391]
Arguments: 772
(241) BroadcastHashJoin [codegen id : 391]
Left keys [4]: [coalesce(plant#25912, ), isnull(plant#25912), coalesce(product#25911, ), isnull(product#25911)]
Right keys [4]: [coalesce(plant#26389, ), isnull(plant#26389), coalesce(product#26388, ), isnull(product#26388)]
Join type: LeftOuter
Join condition: None
(242) Project [codegen id : 391]
Output [7]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, dayBucketDemands#26390, pointInTimeDemands#26391]
Input [9]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, product#26388, plant#26389, dayBucketDemands#26390, pointInTimeDemands#26391]
(243) Exchange
Input [7]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, dayBucketDemands#26390, pointInTimeDemands#26391]
Arguments: hashpartitioning(product#25911, plant#25912, 10), ENSURE_REQUIREMENTS, [plan_id=212204]
(244) ShuffleQueryStage
Output [7]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, dayBucketDemands#26390, pointInTimeDemands#26391]
Arguments: 775
(245) AQEShuffleRead
Input [7]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, dayBucketDemands#26390, pointInTimeDemands#26391]
Arguments: coalesced
(246) Project [codegen id : 397]
Output [12]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, dayBucketDemands#26390, pointInTimeDemands#26391, cast(null as string) AS product#26759, cast(null as string) AS plant#26758, cast(null as array<double>) AS _extract_openQtyInBaseUnit#33525, cast(null as array<timestamp>) AS _extract_availabilityDatetime#33526, cast(null as array<timestamp>) AS _extract_shelfLifeEndDatetime#33527]
Input [7]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, dayBucketDemands#26390, pointInTimeDemands#26391]
(247) Project [codegen id : 397]
Output [10]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, dayBucketDemands#26390, pointInTimeDemands#26391, coalesce(_extract_openQtyInBaseUnit#33525, []) AS openGoodsMovementQuantities#30587, coalesce(_extract_availabilityDatetime#33526, []) AS openGoodsMovementAvailabilityDatetimes#30588, coalesce(_extract_shelfLifeEndDatetime#33527, []) AS openGoodsMovementShelfLifeEndDatetimes#30589]
Input [12]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, dayBucketDemands#26390, pointInTimeDemands#26391, product#26759, plant#26758, _extract_openQtyInBaseUnit#33525, _extract_availabilityDatetime#33526, _extract_shelfLifeEndDatetime#33527]
(248) ReusedExchange [Reuses operator id: 3]
Output [3]: [product#30889, plant#30890, orderDateTime#30891]
(249) ShuffleQueryStage
Output [3]: [product#30889, plant#30890, orderDateTime#30891]
Arguments: 187
(250) ReusedExchange [Reuses operator id: 199]
Output [1]: [productPlant#30901]
(251) BroadcastQueryStage
Output [1]: [productPlant#30901]
Arguments: 487
(252) BroadcastHashJoin [codegen id : 381]
Left keys [4]: [coalesce(product#30889, ), isnull(product#30889), coalesce(plant#30890, ), isnull(plant#30890)]
Right keys [4]: [coalesce(productPlant#30901.product.internalRefUUID, ), isnull(productPlant#30901.product.internalRefUUID), coalesce(productPlant#30901.plant.internalRefUUID, ), isnull(productPlant#30901.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(253) ReusedExchange [Reuses operator id: 207]
Output [2]: [internalUUID#30903, timezonecode#30914]
(254) BroadcastQueryStage
Output [2]: [internalUUID#30903, timezonecode#30914]
Arguments: 488
(255) BroadcastHashJoin [codegen id : 381]
Left keys [2]: [coalesce(plant#30890, ), isnull(plant#30890)]
Right keys [2]: [coalesce(internalUUID#30903, ), isnull(internalUUID#30903)]
Join type: LeftOuter
Join condition: None
(256) Project [codegen id : 381]
Output [5]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, CASE WHEN isnotnull(timezonecode#30914) THEN timezonecode#30914 ELSE UTC END AS timezonecode#30915]
Input [6]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, internalUUID#30903, timezonecode#30914]
(257) ReusedExchange [Reuses operator id: 30]
Output [3]: [internalUUID#30917, baseUnitOfMeasure#30921, unitOfMeasureConversions#30923]
(258) BroadcastQueryStage
Output [3]: [internalUUID#30917, baseUnitOfMeasure#30921, unitOfMeasureConversions#30923]
Arguments: 489
(259) BroadcastHashJoin [codegen id : 381]
Left keys [1]: [product#30889]
Right keys [1]: [internalUUID#30917]
Join type: LeftOuter
Join condition: None
(260) Project
Output [6]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, filter(unitOfMeasureConversions#30923, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#30901.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#30901.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#30921.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#30921.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#30928]
Input [8]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, internalUUID#30917, baseUnitOfMeasure#30921, unitOfMeasureConversions#30923]
(261) Project [codegen id : 382]
Output [7]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, filteredUnitOfMeasureConversions#30928.quantityDenominator AS _extract_quantityDenominator#33645, filteredUnitOfMeasureConversions#30928.quantityNumerator AS _extract_quantityNumerator#33646]
Input [6]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, filteredUnitOfMeasureConversions#30928]
(262) Generate [codegen id : 382]
Input [7]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, _extract_quantityDenominator#33645, _extract_quantityNumerator#33646]
Arguments: explode(_extract_quantityNumerator#33646), [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, _extract_quantityDenominator#33645], true, [quantityNumerator#30929]
(263) Generate [codegen id : 382]
Input [7]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, _extract_quantityDenominator#33645, quantityNumerator#30929]
Arguments: explode(_extract_quantityDenominator#33645), [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, quantityNumerator#30929], true, [quantityDenominator#30930]
(264) Project [codegen id : 382]
Output [6]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, (cast(quantityNumerator#30929 as double) / cast(quantityDenominator#30930 as double)) AS outboundUnit#30931]
Input [7]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, quantityNumerator#30929, quantityDenominator#30930]
(265) Project [codegen id : 382]
Output [6]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, CASE WHEN (isnull(outboundUnit#30931) OR (outboundUnit#30931 <= 0.0)) THEN 1.0 ELSE outboundUnit#30931 END AS outboundUnit#30932]
Input [6]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30931]
(266) ReusedExchange [Reuses operator id: 184]
Output [4]: [product#31069, plant#31068, minCalculationDateTime#31209, roundedQuantitySum#31210]
(267) BroadcastQueryStage
Output [4]: [product#31069, plant#31068, minCalculationDateTime#31209, roundedQuantitySum#31210]
Arguments: 750
(268) BroadcastHashJoin [codegen id : 382]
Left keys [2]: [plant#30890, product#30889]
Right keys [2]: [plant#31068, product#31069]
Join type: LeftOuter
Join condition: None
(269) Project [codegen id : 382]
Output [8]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, CASE WHEN isnotnull(minCalculationDateTime#31209) THEN minCalculationDateTime#31209 ELSE orderDateTime#30891 END AS stockDatetime#31211, CASE WHEN isnotnull(roundedQuantitySum#31210) THEN array(roundedQuantitySum#31210) ELSE [0.0] END AS stockBatchQuantities#31212]
Input [10]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, product#31069, plant#31068, minCalculationDateTime#31209, roundedQuantitySum#31210]
(270) Exchange
Input [8]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212]
Arguments: hashpartitioning(coalesce(plant#30890, ), isnull(plant#30890), coalesce(product#30889, ), isnull(product#30889), 10), ENSURE_REQUIREMENTS, [plan_id=210081]
(271) ShuffleQueryStage
Output [8]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212]
Arguments: 761
(272) AQEShuffleRead
Input [8]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212]
Arguments: local
(273) ReusedExchange [Reuses operator id: 239]
Output [4]: [product#31550, plant#31551, dayBucketDemands#31552, pointInTimeDemands#31553]
(274) BroadcastQueryStage
Output [4]: [product#31550, plant#31551, dayBucketDemands#31552, pointInTimeDemands#31553]
Arguments: 774
(275) BroadcastHashJoin [codegen id : 392]
Left keys [4]: [coalesce(plant#30890, ), isnull(plant#30890), coalesce(product#30889, ), isnull(product#30889)]
Right keys [4]: [coalesce(plant#31551, ), isnull(plant#31551), coalesce(product#31550, ), isnull(product#31550)]
Join type: LeftOuter
Join condition: None
(276) Project [codegen id : 392]
Output [10]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, dayBucketDemands#31552, pointInTimeDemands#31553]
Input [12]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, product#31550, plant#31551, dayBucketDemands#31552, pointInTimeDemands#31553]
(277) Exchange
Input [10]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, dayBucketDemands#31552, pointInTimeDemands#31553]
Arguments: hashpartitioning(product#30889, plant#30890, 10), ENSURE_REQUIREMENTS, [plan_id=212253]
(278) ShuffleQueryStage
Output [10]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, dayBucketDemands#31552, pointInTimeDemands#31553]
Arguments: 776
(279) AQEShuffleRead
Input [10]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, dayBucketDemands#31552, pointInTimeDemands#31553]
Arguments: coalesced
(280) Project [codegen id : 395]
Output [15]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, dayBucketDemands#31552, pointInTimeDemands#31553, cast(null as string) AS product#32304, cast(null as string) AS plant#32303, cast(null as array<double>) AS _extract_openQtyInBaseUnit#33642, cast(null as array<timestamp>) AS _extract_availabilityDatetime#33643, cast(null as array<timestamp>) AS _extract_shelfLifeEndDatetime#33644]
Input [10]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, dayBucketDemands#31552, pointInTimeDemands#31553]
(281) Project
Output [16]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#31213, dayBucketDemands#31552, pointInTimeDemands#31553, coalesce(_extract_openQtyInBaseUnit#33642, []) AS openGoodsMovementQuantities#33004, coalesce(_extract_availabilityDatetime#33643, []) AS openGoodsMovementAvailabilityDatetimes#33005, coalesce(_extract_shelfLifeEndDatetime#33644, []) AS openGoodsMovementShelfLifeEndDatetimes#33006, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#33007, array_sort(filter(CASE WHEN isnotnull(productPlant#30901.listing) THEN productPlant#30901.listing ELSE [] END, lambdafunction(lambda listing#30833.isListed, lambda listing#30833, false)), lambdafunction(if ((isnull(lambda left#30835) AND isnull(lambda right#30836))) 0 else if (isnull(lambda left#30835)) 1 else if (isnull(lambda right#30836)) -1 else if ((lambda left#30835 < lambda right#30836)) -1 else if ((lambda left#30835 > lambda right#30836)) 1 else 0, lambda left#30835, lambda right#30836, false), false) AS listing#30834]
Input [15]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, dayBucketDemands#31552, pointInTimeDemands#31553, product#32304, plant#32303, _extract_openQtyInBaseUnit#33642, _extract_availabilityDatetime#33643, _extract_shelfLifeEndDatetime#33644]
(282) DeserializeToObject [codegen id : 396]
Input [16]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, stockBatchShelfLifeEndDatetimes#31213, dayBucketDemands#31552, pointInTimeDemands#31553, openGoodsMovementQuantities#33004, openGoodsMovementAvailabilityDatetimes#33005, openGoodsMovementShelfLifeEndDatetimes#33006, configuration#33007, listing#30834]
Arguments: createexternalrow(invoke(product#30889.toString()), invoke(plant#30890.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#30891)), if (isnull(productPlant#30901)) null else createexternalrow(invoke(productPlant#30901.systemId.toString()), invoke(productPlant#30901.internalUUID.toString()), if (isnull(productPlant#30901.plant)) null else createexternalrow(invoke(productPlant#30901.plant.internalRefUUID.toString()), invoke(productPlant#30901.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#30901.product)) null else createexternalrow(invoke(productPlant#30901.product.internalRefUUID.toString()), invoke(productPlant#30901.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#30901.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#30901.productionAspect)) null else createexternalrow(if (isnull(productPlant#30901.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#30901.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#30901.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#30901.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#30901.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#30901.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#30901.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#30901.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#30901.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#30901.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#30901.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#30901.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#30901.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#30901.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#30901.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#30901.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#30901.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#30901.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#30901.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#30901.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#30901.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(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(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#30901.salesPlant)) null else createexternalrow(if (isnull(productPlant#30901.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#30901.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#30901.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, -21), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#30901.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(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#30915.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#30932)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#31211)), mapobjects(lambdavariable(MapObject, DoubleType, true, -22), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -22))), stockBatchQuantities#31212, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -23), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -23))), stockBatchShelfLifeEndDatetimes#31213, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, 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, -24), createexternalrow(invoke(lambdavariable(MapObject, 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, -24).demandChannel.toString()), invoke(lambdavariable(MapObject, 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, -24).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, 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, -24).considerVariance)), mapobjects(lambdavariable(MapObject, DoubleType, false, -25), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, false, -25))), lambdavariable(MapObject, 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, -24).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -26), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -26))), lambdavariable(MapObject, 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, -24).demandVariances, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -27), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -27))), lambdavariable(MapObject, 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, -24).anchorDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StringType, false, -28), invoke(lambdavariable(MapObject, StringType, false, -28).toString()), lambdavariable(MapObject, 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, -24).anchorWeekdays, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, IntegerType, false, -29), static_invoke(java.lang.Integer.valueOf(lambdavariable(MapObject, IntegerType, false, -29))), lambdavariable(MapObject, 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, -24).anchorIndices, Some(class scala.collection.mutable.ArraySeq)), 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)), dayBucketDemands#31552, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, 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, -30), createexternalrow(invoke(lambdavariable(MapObject, 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, -30).demandChannel.toString()), invoke(lambdavariable(MapObject, 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, -30).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, 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, -30).considerVariance)), mapobjects(lambdavariable(MapObject, TimestampType, false, -31), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -31))), lambdavariable(MapObject, 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, -30).demandDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, false, -32), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, false, -32))), lambdavariable(MapObject, 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, -30).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -33), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -33))), lambdavariable(MapObject, 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, -30).demandVariances, 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(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, -30).horizonStartDatetime)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, 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, -30).horizonEndDatetime)), 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)), pointInTimeDemands#31553, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -34), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -34))), openGoodsMovementQuantities#33004, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, -35), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, true, -35))), openGoodsMovementAvailabilityDatetimes#33005, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -36), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -36))), openGoodsMovementShelfLifeEndDatetimes#33006, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37), createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37).configurationValidityDatetime)), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37).configurationName.toString()), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37).configurationValue.toString()), StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false)), configuration#33007, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), listing#30834, 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(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), ... 7 more fields), obj#30869: org.apache.spark.sql.Row
(283) MapElements [codegen id : 396]
Input [1]: [obj#30869]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.ListingSnapshotEnhancementImpl$$Lambda/0x0000000801f6de40@134cd86f, obj#30876: org.apache.spark.sql.Row
(284) SerializeFromObject [codegen id : 396]
Input [1]: [obj#30876]
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#30883, 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#30884, mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -17), static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -17), StringType, ObjectType(class java.lang.String)))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 2, timeDependentSettingsName), ArrayType(StringType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsName#30885, mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -18), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -18), TimestampType, ObjectType(class java.sql.Timestamp)))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 3, timeDependentSettingsStartDatetime), ArrayType(TimestampType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsStartDatetime#30886, mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -19), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -19), TimestampType, ObjectType(class java.sql.Timestamp)))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 4, timeDependentSettingsEndDatetime), ArrayType(TimestampType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsEndDatetime#30887, if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, timeDependentSettingsValue), ArrayType(DoubleType,true), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, timeDependentSettingsValue), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -20), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -20), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, timeDependentSettingsValue), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsValue#30888]
(285) Filter [codegen id : 396]
Input [6]: [product#30883, plant#30884, timeDependentSettingsName#30885, timeDependentSettingsStartDatetime#30886, timeDependentSettingsEndDatetime#30887, timeDependentSettingsValue#30888]
Condition : (isnotnull(product#30883) AND isnotnull(plant#30884))
(286) BroadcastExchange
Input [6]: [product#30883, plant#30884, timeDependentSettingsName#30885, timeDependentSettingsStartDatetime#30886, timeDependentSettingsEndDatetime#30887, timeDependentSettingsValue#30888]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=212590]
(287) BroadcastQueryStage
Output [6]: [product#30883, plant#30884, timeDependentSettingsName#30885, timeDependentSettingsStartDatetime#30886, timeDependentSettingsEndDatetime#30887, timeDependentSettingsValue#30888]
Arguments: 779
(288) BroadcastHashJoin [codegen id : 397]
Left keys [2]: [product#25911, plant#25912]
Right keys [2]: [product#30883, plant#30884]
Join type: LeftOuter
Join condition: None
(289) Project [codegen id : 397]
Output [16]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#26317, dayBucketDemands#26390, pointInTimeDemands#26391, openGoodsMovementQuantities#30587, openGoodsMovementAvailabilityDatetimes#30588, openGoodsMovementShelfLifeEndDatetimes#30589, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#30690, CASE WHEN isnotnull(timeDependentSettingsName#30885) THEN timeDependentSettingsName#30885 ELSE [] END AS timeDependentSettingsName#33162, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#30886) THEN timeDependentSettingsStartDatetime#30886 ELSE [] END AS timeDependentSettingsStartDatetime#33163, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#30887) THEN timeDependentSettingsEndDatetime#30887 ELSE [] END AS timeDependentSettingsEndDatetime#33164, CASE WHEN isnotnull(timeDependentSettingsValue#30888) THEN timeDependentSettingsValue#30888 ELSE [] END AS timeDependentSettingsValue#33165]
Input [16]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, dayBucketDemands#26390, pointInTimeDemands#26391, openGoodsMovementQuantities#30587, openGoodsMovementAvailabilityDatetimes#30588, openGoodsMovementShelfLifeEndDatetimes#30589, product#30883, plant#30884, timeDependentSettingsName#30885, timeDependentSettingsStartDatetime#30886, timeDependentSettingsEndDatetime#30887, timeDependentSettingsValue#30888]
(290) ResultQueryStage
Output [16]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, stockBatchShelfLifeEndDatetimes#26317, dayBucketDemands#26390, pointInTimeDemands#26391, openGoodsMovementQuantities#30587, openGoodsMovementAvailabilityDatetimes#30588, openGoodsMovementShelfLifeEndDatetimes#30589, configuration#30690, timeDependentSettingsName#33162, timeDependentSettingsStartDatetime#33163, timeDependentSettingsEndDatetime#33164, timeDependentSettingsValue#33165]
Arguments: 781
(291) Exchange
Input [3]: [product#25911, plant#25912, orderDateTime#25913]
Arguments: hashpartitioning(product#25911, plant#25912, 10), REPARTITION_BY_NUM, [plan_id=119354]
(292) Project
Output [4]: [plant#25918.internalRefUUID AS _extract_internalRefUUID#34036, product#25919.internalRefUUID AS _extract_internalRefUUID#34033, productionAspect#25921.productMovementPlants.unitOfIssue.code AS _extract_code#34034, productionAspect#25921.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34035]
Input [4]: [plant#25918, product#25919, productionAspect#25921, systemId#25916]
(293) Exchange
Input [4]: [_extract_internalRefUUID#34036, _extract_internalRefUUID#34033, _extract_code#34034, _extract_internalRefUUID#34035]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119357]
(294) Project
Output [4]: [_extract_code#34034, _extract_internalRefUUID#34035, _extract_internalRefUUID#34033, _extract_internalRefUUID#34036]
Input [4]: [_extract_internalRefUUID#34036, _extract_internalRefUUID#34033, _extract_code#34034, _extract_internalRefUUID#34035]
(295) BroadcastExchange
Input [4]: [_extract_code#34034, _extract_internalRefUUID#34035, _extract_internalRefUUID#34033, _extract_internalRefUUID#34036]
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=121659]
(296) BroadcastHashJoin
Left keys [4]: [coalesce(product#25911, ), isnull(product#25911), coalesce(plant#25912, ), isnull(plant#25912)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34033, ), isnull(_extract_internalRefUUID#34033), coalesce(_extract_internalRefUUID#34036, ), isnull(_extract_internalRefUUID#34036)]
Join type: LeftOuter
Join condition: None
(297) Project
Output [5]: [product#25911, plant#25912, orderDateTime#25913, _extract_code#34034, _extract_internalRefUUID#34035]
Input [7]: [product#25911, plant#25912, orderDateTime#25913, _extract_code#34034, _extract_internalRefUUID#34035, _extract_internalRefUUID#34033, _extract_internalRefUUID#34036]
(298) Project
Output [1]: [internalUUID#25929]
Input [2]: [internalUUID#25929, systemId#25928]
(299) Exchange
Input [1]: [internalUUID#25929]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119363]
(300) BroadcastExchange
Input [1]: [internalUUID#25929]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=121663]
(301) BroadcastHashJoin
Left keys [2]: [coalesce(plant#25912, ), isnull(plant#25912)]
Right keys [2]: [coalesce(internalUUID#25929, ), isnull(internalUUID#25929)]
Join type: LeftOuter
Join condition: None
(302) Project
Output [5]: [product#25911, plant#25912, orderDateTime#25913, _extract_code#34034, _extract_internalRefUUID#34035]
Input [6]: [product#25911, plant#25912, orderDateTime#25913, _extract_code#34034, _extract_internalRefUUID#34035, internalUUID#25929]
(303) Filter
Input [4]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951, systemId#25944]
Condition : isnotnull(internalUUID#25945)
(304) Project
Output [3]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951]
Input [4]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951, systemId#25944]
(305) Exchange
Input [3]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119369]
(306) BroadcastExchange
Input [3]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=121667]
(307) BroadcastHashJoin
Left keys [1]: [product#25911]
Right keys [1]: [internalUUID#25945]
Join type: LeftOuter
Join condition: None
(308) Project
Output [4]: [product#25911, plant#25912, orderDateTime#25913, filter(unitOfMeasureConversions#25951, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34034) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34035)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#25949.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#25949.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#25957]
Input [8]: [product#25911, plant#25912, orderDateTime#25913, _extract_code#34034, _extract_internalRefUUID#34035, internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951]
(309) Project
Output [5]: [product#25911, plant#25912, orderDateTime#25913, filteredUnitOfMeasureConversions#25957.quantityDenominator AS _extract_quantityDenominator#33528, filteredUnitOfMeasureConversions#25957.quantityNumerator AS _extract_quantityNumerator#33529]
Input [4]: [product#25911, plant#25912, orderDateTime#25913, filteredUnitOfMeasureConversions#25957]
(310) Generate
Input [5]: [product#25911, plant#25912, orderDateTime#25913, _extract_quantityDenominator#33528, _extract_quantityNumerator#33529]
Arguments: explode(_extract_quantityNumerator#33529), [product#25911, plant#25912, orderDateTime#25913, _extract_quantityDenominator#33528], true, [quantityNumerator#25965]
(311) Generate
Input [5]: [product#25911, plant#25912, orderDateTime#25913, _extract_quantityDenominator#33528, quantityNumerator#25965]
Arguments: explode(_extract_quantityDenominator#33528), [product#25911, plant#25912, orderDateTime#25913, quantityNumerator#25965], true, [quantityDenominator#25968]
(312) Project
Output [4]: [product#25911, plant#25912, orderDateTime#25913, (cast(quantityNumerator#25965 as double) / cast(quantityDenominator#25968 as double)) AS outboundUnit#25969]
Input [5]: [product#25911, plant#25912, orderDateTime#25913, quantityNumerator#25965, quantityDenominator#25968]
(313) Project
Output [4]: [product#25911, plant#25912, orderDateTime#25913, CASE WHEN (isnull(outboundUnit#25969) OR (outboundUnit#25969 <= 0.0)) THEN 1.0 ELSE outboundUnit#25969 END AS outboundUnit#25970]
Input [4]: [product#25911, plant#25912, orderDateTime#25913, outboundUnit#25969]
(314) Sort
Input [4]: [product#25911, plant#25912, orderDateTime#25913, outboundUnit#25970]
Arguments: [product#25911 ASC NULLS FIRST, plant#25912 ASC NULLS FIRST], false, 0
(315) Filter
Input [6]: [internalUUID#26008, product#26009, plant#26010, calculationDateTime#26011, stockQuantities#26012, systemId#26007]
Condition : (isnotnull(plant#26010.internalRefUUID) AND isnotnull(product#26009.internalRefUUID))
(316) Project
Output [6]: [systemId#26007, internalUUID#26008, product#26009, plant#26010, calculationDateTime#26011, stockQuantities#26012]
Input [6]: [internalUUID#26008, product#26009, plant#26010, calculationDateTime#26011, stockQuantities#26012, systemId#26007]
(317) Exchange
Input [6]: [systemId#26007, internalUUID#26008, product#26009, plant#26010, calculationDateTime#26011, stockQuantities#26012]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119380]
(318) BroadcastExchange
Input [6]: [systemId#26007, internalUUID#26008, product#26009, plant#26010, calculationDateTime#26011, stockQuantities#26012]
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=121699]
(319) Filter
Input [2]: [marketUnit#25971, distributionCenters#25977]
Condition : (((marketUnit#25971 <=> DIP_1691) AND (size(distributionCenters#25977, true) > 0)) AND isnotnull(distributionCenters#25977))
(320) Project
Output [1]: [distributionCenters#25977]
Input [2]: [marketUnit#25971, distributionCenters#25977]
(321) Exchange
Input [1]: [distributionCenters#25977]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119384]
(322) Generate
Input [1]: [distributionCenters#25977]
Arguments: explode(distributionCenters#25977), false, [distributionCenters#25995]
(323) Filter
Input [1]: [distributionCenters#25995]
Condition : (((size(distributionCenters#25995.storageLocations, true) > 0) AND isnotnull(distributionCenters#25995.storageLocations)) AND isnotnull(distributionCenters#25995.internalRefUUID))
(324) Project
Output [2]: [distributionCenters#25995.internalRefUUID AS _extract_internalRefUUID#33347, distributionCenters#25995.storageLocations AS _extract_storageLocations#33348]
Input [1]: [distributionCenters#25995]
(325) Generate
Input [2]: [_extract_internalRefUUID#33347, _extract_storageLocations#33348]
Arguments: explode(_extract_storageLocations#33348), [_extract_internalRefUUID#33347], false, [storageLocations#26002]
(326) Project
Output [3]: [_extract_internalRefUUID#33347 AS plantUuid#25997, storageLocations#26002.id AS storageLocId#26003, storageLocations#26002.internalRefUUID AS storageLocUuid#26004]
Input [2]: [_extract_internalRefUUID#33347, storageLocations#26002]
(327) BroadcastExchange
Input [3]: [plantUuid#25997, storageLocId#26003, storageLocUuid#26004]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=121695]
(328) Filter
Input [2]: [product#26267, plant#26268]
Condition : isnotnull(plant#26268)
(329) Exchange
Input [2]: [product#26267, plant#26268]
Arguments: hashpartitioning(product#26267, plant#26268, 10), REPARTITION_BY_NUM, [plan_id=120933]
(330) Scan parquet
Output [4]: [plant#26273, product#26274, productionAspect#26276, systemId#26271]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(331) Project
Output [4]: [plant#26273.internalRefUUID AS _extract_internalRefUUID#34037, product#26274.internalRefUUID AS _extract_internalRefUUID#34040, productionAspect#26276.productMovementPlants.unitOfIssue.code AS _extract_code#34038, productionAspect#26276.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34039]
Input [4]: [plant#26273, product#26274, productionAspect#26276, systemId#26271]
(332) Exchange
Input [4]: [_extract_internalRefUUID#34037, _extract_internalRefUUID#34040, _extract_code#34038, _extract_internalRefUUID#34039]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119396]
(333) Project
Output [4]: [_extract_code#34038, _extract_internalRefUUID#34039, _extract_internalRefUUID#34040, _extract_internalRefUUID#34037]
Input [4]: [_extract_internalRefUUID#34037, _extract_internalRefUUID#34040, _extract_code#34038, _extract_internalRefUUID#34039]
(334) BroadcastExchange
Input [4]: [_extract_code#34038, _extract_internalRefUUID#34039, _extract_internalRefUUID#34040, _extract_internalRefUUID#34037]
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=121675]
(335) BroadcastHashJoin
Left keys [4]: [coalesce(product#26267, ), isnull(product#26267), coalesce(plant#26268, ), isnull(plant#26268)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34040, ), isnull(_extract_internalRefUUID#34040), coalesce(_extract_internalRefUUID#34037, ), isnull(_extract_internalRefUUID#34037)]
Join type: LeftOuter
Join condition: None
(336) Project
Output [4]: [product#26267, plant#26268, _extract_code#34038, _extract_internalRefUUID#34039]
Input [6]: [product#26267, plant#26268, _extract_code#34038, _extract_internalRefUUID#34039, _extract_internalRefUUID#34040, _extract_internalRefUUID#34037]
(337) Scan parquet
Output [2]: [internalUUID#26281, systemId#26280]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(338) Project
Output [1]: [internalUUID#26281]
Input [2]: [internalUUID#26281, systemId#26280]
(339) Exchange
Input [1]: [internalUUID#26281]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119402]
(340) BroadcastExchange
Input [1]: [internalUUID#26281]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=121679]
(341) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26268, ), isnull(plant#26268)]
Right keys [2]: [coalesce(internalUUID#26281, ), isnull(internalUUID#26281)]
Join type: LeftOuter
Join condition: None
(342) Project
Output [4]: [product#26267, plant#26268, _extract_code#34038, _extract_internalRefUUID#34039]
Input [5]: [product#26267, plant#26268, _extract_code#34038, _extract_internalRefUUID#34039, internalUUID#26281]
(343) Scan parquet
Output [4]: [internalUUID#26295, baseUnitOfMeasure#26299, unitOfMeasureConversions#26301, systemId#26294]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(344) Filter
Input [4]: [internalUUID#26295, baseUnitOfMeasure#26299, unitOfMeasureConversions#26301, systemId#26294]
Condition : isnotnull(internalUUID#26295)
(345) Project
Output [3]: [internalUUID#26295, baseUnitOfMeasure#26299, unitOfMeasureConversions#26301]
Input [4]: [internalUUID#26295, baseUnitOfMeasure#26299, unitOfMeasureConversions#26301, systemId#26294]
(346) Exchange
Input [3]: [internalUUID#26295, baseUnitOfMeasure#26299, unitOfMeasureConversions#26301]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119408]
(347) BroadcastExchange
Input [3]: [internalUUID#26295, baseUnitOfMeasure#26299, unitOfMeasureConversions#26301]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=121683]
(348) BroadcastHashJoin
Left keys [1]: [product#26267]
Right keys [1]: [internalUUID#26295]
Join type: LeftOuter
Join condition: None
(349) Project
Output [2]: [plant#26268, filter(unitOfMeasureConversions#26301, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34038) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34039)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26299.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26299.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26306]
Input [7]: [product#26267, plant#26268, _extract_code#34038, _extract_internalRefUUID#34039, internalUUID#26295, baseUnitOfMeasure#26299, unitOfMeasureConversions#26301]
(350) Generate
Input [2]: [plant#26268, filteredUnitOfMeasureConversions#26306]
Arguments: explode(filteredUnitOfMeasureConversions#26306.quantityNumerator), [plant#26268, filteredUnitOfMeasureConversions#26306], true, [quantityNumerator#26307]
(351) Project
Output [2]: [plant#26268, filteredUnitOfMeasureConversions#26306.quantityDenominator AS _extract_quantityDenominator#33349]
Input [3]: [plant#26268, filteredUnitOfMeasureConversions#26306, quantityNumerator#26307]
(352) Generate
Input [2]: [plant#26268, _extract_quantityDenominator#33349]
Arguments: explode(_extract_quantityDenominator#33349), [plant#26268], true, [quantityDenominator#26308]
(353) Project
Output [1]: [plant#26268]
Input [2]: [plant#26268, quantityDenominator#26308]
(354) HashAggregate
Input [1]: [plant#26268]
Keys [1]: [plant#26268]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26268]
(355) Exchange
Input [1]: [plant#26268]
Arguments: hashpartitioning(plant#26268, 10), ENSURE_REQUIREMENTS, [plan_id=121692]
(356) HashAggregate
Input [1]: [plant#26268]
Keys [1]: [plant#26268]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26268]
(357) BroadcastHashJoin
Left keys [1]: [plantUuid#25997]
Right keys [1]: [plant#26268]
Join type: Inner
Join condition: None
(358) Project
Output [3]: [plantUuid#25997, storageLocId#26003, storageLocUuid#26004]
Input [4]: [plantUuid#25997, storageLocId#26003, storageLocUuid#26004, plant#26268]
(359) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26010.internalRefUUID, ), isnull(plant#26010.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#25997, ), isnull(plantUuid#25997)]
Join type: Inner
Join condition: None
(360) Generate
Input [9]: [systemId#26007, internalUUID#26008, product#26009, plant#26010, calculationDateTime#26011, stockQuantities#26012, plantUuid#25997, storageLocId#26003, storageLocUuid#26004]
Arguments: explode(filter(stockQuantities#26012, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#26004) AND (lambda x#26016.storageLocation.Id = storageLocId#26003)), lambda x#26016, false))), [systemId#26007, internalUUID#26008, product#26009, plant#26010, calculationDateTime#26011, plantUuid#25997], false, [stockQuantity#26017]
(361) ObjectHashAggregate
Input [7]: [systemId#26007, internalUUID#26008, product#26009, plant#26010, calculationDateTime#26011, plantUuid#25997, stockQuantity#26017]
Keys [5]: [plantUuid#25997, internalUUID#26008, plant#26010, product#26009, systemId#26007]
Functions [2]: [partial_first(calculationDateTime#26011, false), partial_collect_list(stockQuantity#26017, 0, 0)]
Aggregate Attributes [3]: [first#35083, valueSet#35084, buf#35085]
Results [8]: [plantUuid#25997, internalUUID#26008, plant#26010, product#26009, systemId#26007, first#35086, valueSet#35087, buf#35088]
(362) ObjectHashAggregate
Input [8]: [plantUuid#25997, internalUUID#26008, plant#26010, product#26009, systemId#26007, first#35086, valueSet#35087, buf#35088]
Keys [5]: [plantUuid#25997, internalUUID#26008, plant#26010, product#26009, systemId#26007]
Functions [2]: [first(calculationDateTime#26011, false), collect_list(stockQuantity#26017, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#26011)()#26031, collect_list(stockQuantity#26017, 0, 0)#26032]
Results [4]: [product#26009, plant#26010, first(calculationDateTime#26011)()#26031 AS calculationDateTime#26018, collect_list(stockQuantity#26017, 0, 0)#26032 AS stockQuantities#26019]
(363) Filter
Input [4]: [product#26009, plant#26010, calculationDateTime#26018, stockQuantities#26019]
Condition : ((size(stockQuantities#26019, true) > 0) AND isnotnull(calculationDateTime#26018))
(364) Generate
Input [4]: [product#26009, plant#26010, calculationDateTime#26018, stockQuantities#26019]
Arguments: explode(stockQuantities#26019), [product#26009, plant#26010, calculationDateTime#26018], false, [stockQuantity#26034]
(365) Filter
Input [4]: [product#26009, plant#26010, calculationDateTime#26018, stockQuantity#26034]
Condition : (((isnotnull(stockQuantity#26034.specialStockIndicator.code) AND isnotnull(stockQuantity#26034.stockType.code)) AND (stockQuantity#26034.specialStockIndicator.code = )) AND (stockQuantity#26034.stockType.code = 01))
(366) Project
Output [5]: [plant#26010.internalRefUUID AS plantUuid#26036, product#26009.internalRefUUID AS productUuid#26038, calculationDateTime#26018, stockQuantity#26034.storagelocation.id AS storageLocId#26039, stockQuantity#26034.quantity.measure AS quantity#26041]
Input [4]: [product#26009, plant#26010, calculationDateTime#26018, stockQuantity#26034]
(367) Exchange
Input [5]: [plantUuid#26036, productUuid#26038, calculationDateTime#26018, storageLocId#26039, quantity#26041]
Arguments: hashpartitioning(productUuid#26038, plantUuid#26036, 10), ENSURE_REQUIREMENTS, [plan_id=121725]
(368) Sort
Input [5]: [plantUuid#26036, productUuid#26038, calculationDateTime#26018, storageLocId#26039, quantity#26041]
Arguments: [productUuid#26038 ASC NULLS FIRST, plantUuid#26036 ASC NULLS FIRST], false, 0
(369) Filter
Input [3]: [product#26053, plant#26054, orderDateTime#26055]
Condition : ((isnotnull(orderDateTime#26055) AND isnotnull(plant#26054)) AND isnotnull(product#26053))
(370) Exchange
Input [3]: [product#26053, plant#26054, orderDateTime#26055]
Arguments: hashpartitioning(product#26053, plant#26054, 10), REPARTITION_BY_NUM, [plan_id=120956]
(371) Scan parquet
Output [4]: [plant#26059, product#26060, productionAspect#26062, systemId#26057]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(372) Project
Output [4]: [plant#26059.internalRefUUID AS _extract_internalRefUUID#34041, product#26060.internalRefUUID AS _extract_internalRefUUID#34044, productionAspect#26062.productMovementPlants.unitOfIssue.code AS _extract_code#34042, productionAspect#26062.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34043]
Input [4]: [plant#26059, product#26060, productionAspect#26062, systemId#26057]
(373) Exchange
Input [4]: [_extract_internalRefUUID#34041, _extract_internalRefUUID#34044, _extract_code#34042, _extract_internalRefUUID#34043]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119433]
(374) Project
Output [4]: [_extract_code#34042, _extract_internalRefUUID#34043, _extract_internalRefUUID#34044, _extract_internalRefUUID#34041]
Input [4]: [_extract_internalRefUUID#34041, _extract_internalRefUUID#34044, _extract_code#34042, _extract_internalRefUUID#34043]
(375) BroadcastExchange
Input [4]: [_extract_code#34042, _extract_internalRefUUID#34043, _extract_internalRefUUID#34044, _extract_internalRefUUID#34041]
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=121708]
(376) BroadcastHashJoin
Left keys [4]: [coalesce(product#26053, ), isnull(product#26053), coalesce(plant#26054, ), isnull(plant#26054)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34044, ), isnull(_extract_internalRefUUID#34044), coalesce(_extract_internalRefUUID#34041, ), isnull(_extract_internalRefUUID#34041)]
Join type: LeftOuter
Join condition: None
(377) Project
Output [5]: [product#26053, plant#26054, orderDateTime#26055, _extract_code#34042, _extract_internalRefUUID#34043]
Input [7]: [product#26053, plant#26054, orderDateTime#26055, _extract_code#34042, _extract_internalRefUUID#34043, _extract_internalRefUUID#34044, _extract_internalRefUUID#34041]
(378) Scan parquet
Output [2]: [internalUUID#26067, systemId#26066]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(379) Project
Output [1]: [internalUUID#26067]
Input [2]: [internalUUID#26067, systemId#26066]
(380) Exchange
Input [1]: [internalUUID#26067]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119439]
(381) BroadcastExchange
Input [1]: [internalUUID#26067]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=121712]
(382) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26054, ), isnull(plant#26054)]
Right keys [2]: [coalesce(internalUUID#26067, ), isnull(internalUUID#26067)]
Join type: LeftOuter
Join condition: None
(383) Project
Output [5]: [product#26053, plant#26054, orderDateTime#26055, _extract_code#34042, _extract_internalRefUUID#34043]
Input [6]: [product#26053, plant#26054, orderDateTime#26055, _extract_code#34042, _extract_internalRefUUID#34043, internalUUID#26067]
(384) Scan parquet
Output [4]: [internalUUID#26081, baseUnitOfMeasure#26085, unitOfMeasureConversions#26087, systemId#26080]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(385) Filter
Input [4]: [internalUUID#26081, baseUnitOfMeasure#26085, unitOfMeasureConversions#26087, systemId#26080]
Condition : isnotnull(internalUUID#26081)
(386) Project
Output [3]: [internalUUID#26081, baseUnitOfMeasure#26085, unitOfMeasureConversions#26087]
Input [4]: [internalUUID#26081, baseUnitOfMeasure#26085, unitOfMeasureConversions#26087, systemId#26080]
(387) Exchange
Input [3]: [internalUUID#26081, baseUnitOfMeasure#26085, unitOfMeasureConversions#26087]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119445]
(388) BroadcastExchange
Input [3]: [internalUUID#26081, baseUnitOfMeasure#26085, unitOfMeasureConversions#26087]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=121716]
(389) BroadcastHashJoin
Left keys [1]: [product#26053]
Right keys [1]: [internalUUID#26081]
Join type: LeftOuter
Join condition: None
(390) Project
Output [4]: [product#26053, plant#26054, orderDateTime#26055, filter(unitOfMeasureConversions#26087, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34042) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34043)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26085.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26085.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26092]
Input [8]: [product#26053, plant#26054, orderDateTime#26055, _extract_code#34042, _extract_internalRefUUID#34043, internalUUID#26081, baseUnitOfMeasure#26085, unitOfMeasureConversions#26087]
(391) Generate
Input [4]: [product#26053, plant#26054, orderDateTime#26055, filteredUnitOfMeasureConversions#26092]
Arguments: explode(filteredUnitOfMeasureConversions#26092.quantityNumerator), [product#26053, plant#26054, orderDateTime#26055, filteredUnitOfMeasureConversions#26092], true, [quantityNumerator#26093]
(392) Project
Output [4]: [product#26053, plant#26054, orderDateTime#26055, filteredUnitOfMeasureConversions#26092.quantityDenominator AS _extract_quantityDenominator#33353]
Input [5]: [product#26053, plant#26054, orderDateTime#26055, filteredUnitOfMeasureConversions#26092, quantityNumerator#26093]
(393) Generate
Input [4]: [product#26053, plant#26054, orderDateTime#26055, _extract_quantityDenominator#33353]
Arguments: explode(_extract_quantityDenominator#33353), [product#26053, plant#26054, orderDateTime#26055], true, [quantityDenominator#26094]
(394) Project
Output [3]: [product#26053, plant#26054, orderDateTime#26055]
Input [4]: [product#26053, plant#26054, orderDateTime#26055, quantityDenominator#26094]
(395) Sort
Input [3]: [product#26053, plant#26054, orderDateTime#26055]
Arguments: [product#26053 ASC NULLS FIRST, plant#26054 ASC NULLS FIRST], false, 0
(396) SortMergeJoin
Left keys [2]: [productUuid#26038, plantUuid#26036]
Right keys [2]: [product#26053, plant#26054]
Join type: Inner
Join condition: (calculationDateTime#26018 <= orderDateTime#26055)
(397) Project
Output [5]: [plantUuid#26036 AS plant#26101, productUuid#26038 AS product#26102, storageLocId#26039, calculationDateTime#26018, quantity#26041]
Input [8]: [plantUuid#26036, productUuid#26038, calculationDateTime#26018, storageLocId#26039, quantity#26041, product#26053, plant#26054, orderDateTime#26055]
(398) Exchange
Input [5]: [plant#26101, product#26102, storageLocId#26039, calculationDateTime#26018, quantity#26041]
Arguments: hashpartitioning(coalesce(plant#26101, ), isnull(plant#26101), coalesce(product#26102, ), isnull(product#26102), coalesce(storageLocId#26039, ), isnull(storageLocId#26039), coalesce(calculationDateTime#26018, 1970-01-01 00:00:00), isnull(calculationDateTime#26018), 10), ENSURE_REQUIREMENTS, [plan_id=121789]
(399) Sort
Input [5]: [plant#26101, product#26102, storageLocId#26039, calculationDateTime#26018, quantity#26041]
Arguments: [coalesce(plant#26101, ) ASC NULLS FIRST, isnull(plant#26101) ASC NULLS FIRST, coalesce(product#26102, ) ASC NULLS FIRST, isnull(product#26102) ASC NULLS FIRST, coalesce(storageLocId#26039, ) ASC NULLS FIRST, isnull(storageLocId#26039) ASC NULLS FIRST, coalesce(calculationDateTime#26018, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#26018) ASC NULLS FIRST], false, 0
(400) Scan parquet
Output [6]: [internalUUID#26111, product#26112, plant#26113, calculationDateTime#26114, stockQuantities#26115, systemId#26110]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(401) Filter
Input [6]: [internalUUID#26111, product#26112, plant#26113, calculationDateTime#26114, stockQuantities#26115, systemId#26110]
Condition : (isnotnull(plant#26113.internalRefUUID) AND isnotnull(product#26112.internalRefUUID))
(402) Project
Output [6]: [systemId#26110, internalUUID#26111, product#26112, plant#26113, calculationDateTime#26114, stockQuantities#26115]
Input [6]: [internalUUID#26111, product#26112, plant#26113, calculationDateTime#26114, stockQuantities#26115, systemId#26110]
(403) Exchange
Input [6]: [systemId#26110, internalUUID#26111, product#26112, plant#26113, calculationDateTime#26114, stockQuantities#26115]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119457]
(404) BroadcastExchange
Input [6]: [systemId#26110, internalUUID#26111, product#26112, plant#26113, calculationDateTime#26114, stockQuantities#26115]
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=121754]
(405) Scan parquet
Output [2]: [marketUnit#26116, distributionCenters#26122]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(406) Filter
Input [2]: [marketUnit#26116, distributionCenters#26122]
Condition : (((marketUnit#26116 <=> DIP_1691) AND (size(distributionCenters#26122, true) > 0)) AND isnotnull(distributionCenters#26122))
(407) Project
Output [1]: [distributionCenters#26122]
Input [2]: [marketUnit#26116, distributionCenters#26122]
(408) Exchange
Input [1]: [distributionCenters#26122]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119461]
(409) Generate
Input [1]: [distributionCenters#26122]
Arguments: explode(distributionCenters#26122), false, [distributionCenters#26138]
(410) Filter
Input [1]: [distributionCenters#26138]
Condition : (((size(distributionCenters#26138.storageLocations, true) > 0) AND isnotnull(distributionCenters#26138.storageLocations)) AND isnotnull(distributionCenters#26138.internalRefUUID))
(411) Project
Output [2]: [distributionCenters#26138.internalRefUUID AS _extract_internalRefUUID#33357, distributionCenters#26138.storageLocations AS _extract_storageLocations#33358]
Input [1]: [distributionCenters#26138]
(412) Generate
Input [2]: [_extract_internalRefUUID#33357, _extract_storageLocations#33358]
Arguments: explode(_extract_storageLocations#33358), [_extract_internalRefUUID#33357], false, [storageLocations#26139]
(413) Project
Output [3]: [_extract_internalRefUUID#33357 AS plantUuid#26141, storageLocations#26139.id AS storageLocId#26142, storageLocations#26139.internalRefUUID AS storageLocUuid#26143]
Input [2]: [_extract_internalRefUUID#33357, storageLocations#26139]
(414) BroadcastExchange
Input [3]: [plantUuid#26141, storageLocId#26142, storageLocUuid#26143]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=121750]
(415) Scan parquet
Output [2]: [product#26144, plant#26145]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(416) Filter
Input [2]: [product#26144, plant#26145]
Condition : isnotnull(plant#26145)
(417) Exchange
Input [2]: [product#26144, plant#26145]
Arguments: hashpartitioning(product#26144, plant#26145, 10), REPARTITION_BY_NUM, [plan_id=120969]
(418) Scan parquet
Output [4]: [plant#26150, product#26151, productionAspect#26153, systemId#26148]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(419) Project
Output [4]: [plant#26150.internalRefUUID AS _extract_internalRefUUID#34047, product#26151.internalRefUUID AS _extract_internalRefUUID#34048, productionAspect#26153.productMovementPlants.unitOfIssue.code AS _extract_code#34045, productionAspect#26153.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34046]
Input [4]: [plant#26150, product#26151, productionAspect#26153, systemId#26148]
(420) Exchange
Input [4]: [_extract_internalRefUUID#34047, _extract_internalRefUUID#34048, _extract_code#34045, _extract_internalRefUUID#34046]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119473]
(421) Project
Output [4]: [_extract_code#34045, _extract_internalRefUUID#34046, _extract_internalRefUUID#34048, _extract_internalRefUUID#34047]
Input [4]: [_extract_internalRefUUID#34047, _extract_internalRefUUID#34048, _extract_code#34045, _extract_internalRefUUID#34046]
(422) BroadcastExchange
Input [4]: [_extract_code#34045, _extract_internalRefUUID#34046, _extract_internalRefUUID#34048, _extract_internalRefUUID#34047]
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=121730]
(423) BroadcastHashJoin
Left keys [4]: [coalesce(product#26144, ), isnull(product#26144), coalesce(plant#26145, ), isnull(plant#26145)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34048, ), isnull(_extract_internalRefUUID#34048), coalesce(_extract_internalRefUUID#34047, ), isnull(_extract_internalRefUUID#34047)]
Join type: LeftOuter
Join condition: None
(424) Project
Output [4]: [product#26144, plant#26145, _extract_code#34045, _extract_internalRefUUID#34046]
Input [6]: [product#26144, plant#26145, _extract_code#34045, _extract_internalRefUUID#34046, _extract_internalRefUUID#34048, _extract_internalRefUUID#34047]
(425) Scan parquet
Output [2]: [internalUUID#26158, systemId#26157]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(426) Project
Output [1]: [internalUUID#26158]
Input [2]: [internalUUID#26158, systemId#26157]
(427) Exchange
Input [1]: [internalUUID#26158]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119479]
(428) BroadcastExchange
Input [1]: [internalUUID#26158]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=121734]
(429) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26145, ), isnull(plant#26145)]
Right keys [2]: [coalesce(internalUUID#26158, ), isnull(internalUUID#26158)]
Join type: LeftOuter
Join condition: None
(430) Project
Output [4]: [product#26144, plant#26145, _extract_code#34045, _extract_internalRefUUID#34046]
Input [5]: [product#26144, plant#26145, _extract_code#34045, _extract_internalRefUUID#34046, internalUUID#26158]
(431) Scan parquet
Output [4]: [internalUUID#26172, baseUnitOfMeasure#26176, unitOfMeasureConversions#26178, systemId#26171]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(432) Filter
Input [4]: [internalUUID#26172, baseUnitOfMeasure#26176, unitOfMeasureConversions#26178, systemId#26171]
Condition : isnotnull(internalUUID#26172)
(433) Project
Output [3]: [internalUUID#26172, baseUnitOfMeasure#26176, unitOfMeasureConversions#26178]
Input [4]: [internalUUID#26172, baseUnitOfMeasure#26176, unitOfMeasureConversions#26178, systemId#26171]
(434) Exchange
Input [3]: [internalUUID#26172, baseUnitOfMeasure#26176, unitOfMeasureConversions#26178]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119485]
(435) BroadcastExchange
Input [3]: [internalUUID#26172, baseUnitOfMeasure#26176, unitOfMeasureConversions#26178]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=121738]
(436) BroadcastHashJoin
Left keys [1]: [product#26144]
Right keys [1]: [internalUUID#26172]
Join type: LeftOuter
Join condition: None
(437) Project
Output [2]: [plant#26145, filter(unitOfMeasureConversions#26178, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34045) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34046)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26176.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26176.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26183]
Input [7]: [product#26144, plant#26145, _extract_code#34045, _extract_internalRefUUID#34046, internalUUID#26172, baseUnitOfMeasure#26176, unitOfMeasureConversions#26178]
(438) Generate
Input [2]: [plant#26145, filteredUnitOfMeasureConversions#26183]
Arguments: explode(filteredUnitOfMeasureConversions#26183.quantityNumerator), [plant#26145, filteredUnitOfMeasureConversions#26183], true, [quantityNumerator#26184]
(439) Project
Output [2]: [plant#26145, filteredUnitOfMeasureConversions#26183.quantityDenominator AS _extract_quantityDenominator#33359]
Input [3]: [plant#26145, filteredUnitOfMeasureConversions#26183, quantityNumerator#26184]
(440) Generate
Input [2]: [plant#26145, _extract_quantityDenominator#33359]
Arguments: explode(_extract_quantityDenominator#33359), [plant#26145], true, [quantityDenominator#26185]
(441) Project
Output [1]: [plant#26145]
Input [2]: [plant#26145, quantityDenominator#26185]
(442) HashAggregate
Input [1]: [plant#26145]
Keys [1]: [plant#26145]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26145]
(443) Exchange
Input [1]: [plant#26145]
Arguments: hashpartitioning(plant#26145, 10), ENSURE_REQUIREMENTS, [plan_id=121747]
(444) HashAggregate
Input [1]: [plant#26145]
Keys [1]: [plant#26145]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26145]
(445) BroadcastHashJoin
Left keys [1]: [plantUuid#26141]
Right keys [1]: [plant#26145]
Join type: Inner
Join condition: None
(446) Project
Output [3]: [plantUuid#26141, storageLocId#26142, storageLocUuid#26143]
Input [4]: [plantUuid#26141, storageLocId#26142, storageLocUuid#26143, plant#26145]
(447) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26113.internalRefUUID, ), isnull(plant#26113.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#26141, ), isnull(plantUuid#26141)]
Join type: Inner
Join condition: None
(448) Generate
Input [9]: [systemId#26110, internalUUID#26111, product#26112, plant#26113, calculationDateTime#26114, stockQuantities#26115, plantUuid#26141, storageLocId#26142, storageLocUuid#26143]
Arguments: explode(filter(stockQuantities#26115, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#26143) AND (lambda x#26016.storageLocation.Id = storageLocId#26142)), lambda x#26016, false))), [systemId#26110, internalUUID#26111, product#26112, plant#26113, calculationDateTime#26114, plantUuid#26141], false, [stockQuantity#26188]
(449) ObjectHashAggregate
Input [7]: [systemId#26110, internalUUID#26111, product#26112, plant#26113, calculationDateTime#26114, plantUuid#26141, stockQuantity#26188]
Keys [5]: [plantUuid#26141, internalUUID#26111, plant#26113, product#26112, systemId#26110]
Functions [2]: [partial_first(calculationDateTime#26114, false), partial_collect_list(stockQuantity#26188, 0, 0)]
Aggregate Attributes [3]: [first#35091, valueSet#35092, buf#35093]
Results [8]: [plantUuid#26141, internalUUID#26111, plant#26113, product#26112, systemId#26110, first#35094, valueSet#35095, buf#35096]
(450) ObjectHashAggregate
Input [8]: [plantUuid#26141, internalUUID#26111, plant#26113, product#26112, systemId#26110, first#35094, valueSet#35095, buf#35096]
Keys [5]: [plantUuid#26141, internalUUID#26111, plant#26113, product#26112, systemId#26110]
Functions [2]: [first(calculationDateTime#26114, false), collect_list(stockQuantity#26188, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#26114)()#26031, collect_list(stockQuantity#26188, 0, 0)#26032]
Results [4]: [product#26112, plant#26113, first(calculationDateTime#26114)()#26031 AS calculationDateTime#26189, collect_list(stockQuantity#26188, 0, 0)#26032 AS stockQuantities#26190]
(451) Filter
Input [4]: [product#26112, plant#26113, calculationDateTime#26189, stockQuantities#26190]
Condition : ((size(stockQuantities#26190, true) > 0) AND isnotnull(calculationDateTime#26189))
(452) Generate
Input [4]: [product#26112, plant#26113, calculationDateTime#26189, stockQuantities#26190]
Arguments: explode(stockQuantities#26190), [product#26112, plant#26113, calculationDateTime#26189], false, [stockQuantity#26191]
(453) Filter
Input [4]: [product#26112, plant#26113, calculationDateTime#26189, stockQuantity#26191]
Condition : (((isnotnull(stockQuantity#26191.specialStockIndicator.code) AND isnotnull(stockQuantity#26191.stockType.code)) AND (stockQuantity#26191.specialStockIndicator.code = )) AND (stockQuantity#26191.stockType.code = 01))
(454) Project
Output [4]: [plant#26113.internalRefUUID AS plantUuid#26193, product#26112.internalRefUUID AS productUuid#26195, calculationDateTime#26189, stockQuantity#26191.storagelocation.id AS storageLocId#26196]
Input [4]: [product#26112, plant#26113, calculationDateTime#26189, stockQuantity#26191]
(455) Exchange
Input [4]: [plantUuid#26193, productUuid#26195, calculationDateTime#26189, storageLocId#26196]
Arguments: hashpartitioning(productUuid#26195, plantUuid#26193, 10), ENSURE_REQUIREMENTS, [plan_id=121780]
(456) Sort
Input [4]: [plantUuid#26193, productUuid#26195, calculationDateTime#26189, storageLocId#26196]
Arguments: [productUuid#26195 ASC NULLS FIRST, plantUuid#26193 ASC NULLS FIRST], false, 0
(457) Scan parquet
Output [3]: [product#26201, plant#26202, orderDateTime#26203]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(458) Filter
Input [3]: [product#26201, plant#26202, orderDateTime#26203]
Condition : ((isnotnull(orderDateTime#26203) AND isnotnull(plant#26202)) AND isnotnull(product#26201))
(459) Exchange
Input [3]: [product#26201, plant#26202, orderDateTime#26203]
Arguments: hashpartitioning(product#26201, plant#26202, 10), REPARTITION_BY_NUM, [plan_id=120992]
(460) Scan parquet
Output [4]: [plant#26207, product#26208, productionAspect#26210, systemId#26205]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(461) Project
Output [4]: [plant#26207.internalRefUUID AS _extract_internalRefUUID#34050, product#26208.internalRefUUID AS _extract_internalRefUUID#34049, productionAspect#26210.productMovementPlants.unitOfIssue.code AS _extract_code#34051, productionAspect#26210.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34052]
Input [4]: [plant#26207, product#26208, productionAspect#26210, systemId#26205]
(462) Exchange
Input [4]: [_extract_internalRefUUID#34050, _extract_internalRefUUID#34049, _extract_code#34051, _extract_internalRefUUID#34052]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119510]
(463) Project
Output [4]: [_extract_code#34051, _extract_internalRefUUID#34052, _extract_internalRefUUID#34049, _extract_internalRefUUID#34050]
Input [4]: [_extract_internalRefUUID#34050, _extract_internalRefUUID#34049, _extract_code#34051, _extract_internalRefUUID#34052]
(464) BroadcastExchange
Input [4]: [_extract_code#34051, _extract_internalRefUUID#34052, _extract_internalRefUUID#34049, _extract_internalRefUUID#34050]
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=121763]
(465) BroadcastHashJoin
Left keys [4]: [coalesce(product#26201, ), isnull(product#26201), coalesce(plant#26202, ), isnull(plant#26202)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34049, ), isnull(_extract_internalRefUUID#34049), coalesce(_extract_internalRefUUID#34050, ), isnull(_extract_internalRefUUID#34050)]
Join type: LeftOuter
Join condition: None
(466) Project
Output [5]: [product#26201, plant#26202, orderDateTime#26203, _extract_code#34051, _extract_internalRefUUID#34052]
Input [7]: [product#26201, plant#26202, orderDateTime#26203, _extract_code#34051, _extract_internalRefUUID#34052, _extract_internalRefUUID#34049, _extract_internalRefUUID#34050]
(467) Scan parquet
Output [2]: [internalUUID#26215, systemId#26214]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(468) Project
Output [1]: [internalUUID#26215]
Input [2]: [internalUUID#26215, systemId#26214]
(469) Exchange
Input [1]: [internalUUID#26215]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119516]
(470) BroadcastExchange
Input [1]: [internalUUID#26215]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=121767]
(471) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26202, ), isnull(plant#26202)]
Right keys [2]: [coalesce(internalUUID#26215, ), isnull(internalUUID#26215)]
Join type: LeftOuter
Join condition: None
(472) Project
Output [5]: [product#26201, plant#26202, orderDateTime#26203, _extract_code#34051, _extract_internalRefUUID#34052]
Input [6]: [product#26201, plant#26202, orderDateTime#26203, _extract_code#34051, _extract_internalRefUUID#34052, internalUUID#26215]
(473) Scan parquet
Output [4]: [internalUUID#26229, baseUnitOfMeasure#26233, unitOfMeasureConversions#26235, systemId#26228]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(474) Filter
Input [4]: [internalUUID#26229, baseUnitOfMeasure#26233, unitOfMeasureConversions#26235, systemId#26228]
Condition : isnotnull(internalUUID#26229)
(475) Project
Output [3]: [internalUUID#26229, baseUnitOfMeasure#26233, unitOfMeasureConversions#26235]
Input [4]: [internalUUID#26229, baseUnitOfMeasure#26233, unitOfMeasureConversions#26235, systemId#26228]
(476) Exchange
Input [3]: [internalUUID#26229, baseUnitOfMeasure#26233, unitOfMeasureConversions#26235]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119522]
(477) BroadcastExchange
Input [3]: [internalUUID#26229, baseUnitOfMeasure#26233, unitOfMeasureConversions#26235]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=121771]
(478) BroadcastHashJoin
Left keys [1]: [product#26201]
Right keys [1]: [internalUUID#26229]
Join type: LeftOuter
Join condition: None
(479) Project
Output [4]: [product#26201, plant#26202, orderDateTime#26203, filter(unitOfMeasureConversions#26235, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34051) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34052)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26233.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26233.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26240]
Input [8]: [product#26201, plant#26202, orderDateTime#26203, _extract_code#34051, _extract_internalRefUUID#34052, internalUUID#26229, baseUnitOfMeasure#26233, unitOfMeasureConversions#26235]
(480) Generate
Input [4]: [product#26201, plant#26202, orderDateTime#26203, filteredUnitOfMeasureConversions#26240]
Arguments: explode(filteredUnitOfMeasureConversions#26240.quantityNumerator), [product#26201, plant#26202, orderDateTime#26203, filteredUnitOfMeasureConversions#26240], true, [quantityNumerator#26241]
(481) Project
Output [4]: [product#26201, plant#26202, orderDateTime#26203, filteredUnitOfMeasureConversions#26240.quantityDenominator AS _extract_quantityDenominator#33363]
Input [5]: [product#26201, plant#26202, orderDateTime#26203, filteredUnitOfMeasureConversions#26240, quantityNumerator#26241]
(482) Generate
Input [4]: [product#26201, plant#26202, orderDateTime#26203, _extract_quantityDenominator#33363]
Arguments: explode(_extract_quantityDenominator#33363), [product#26201, plant#26202, orderDateTime#26203], true, [quantityDenominator#26242]
(483) Project
Output [3]: [product#26201, plant#26202, orderDateTime#26203]
Input [4]: [product#26201, plant#26202, orderDateTime#26203, quantityDenominator#26242]
(484) Sort
Input [3]: [product#26201, plant#26202, orderDateTime#26203]
Arguments: [product#26201 ASC NULLS FIRST, plant#26202 ASC NULLS FIRST], false, 0
(485) SortMergeJoin
Left keys [2]: [productUuid#26195, plantUuid#26193]
Right keys [2]: [product#26201, plant#26202]
Join type: Inner
Join condition: (calculationDateTime#26189 <= orderDateTime#26203)
(486) Project
Output [4]: [plantUuid#26193 AS plant#26245, productUuid#26195 AS product#26246, storageLocId#26196, calculationDateTime#26189]
Input [7]: [plantUuid#26193, productUuid#26195, calculationDateTime#26189, storageLocId#26196, product#26201, plant#26202, orderDateTime#26203]
(487) HashAggregate
Input [4]: [plant#26245, product#26246, storageLocId#26196, calculationDateTime#26189]
Keys [3]: [plant#26245, product#26246, storageLocId#26196]
Functions [1]: [partial_max(calculationDateTime#26189)]
Aggregate Attributes [1]: [max#35089]
Results [4]: [plant#26245, product#26246, storageLocId#26196, max#35090]
(488) HashAggregate
Input [4]: [plant#26245, product#26246, storageLocId#26196, max#35090]
Keys [3]: [plant#26245, product#26246, storageLocId#26196]
Functions [1]: [max(calculationDateTime#26189)]
Aggregate Attributes [1]: [max(calculationDateTime#26189)#26109]
Results [4]: [plant#26245, product#26246, storageLocId#26196, max(calculationDateTime#26189)#26109 AS max_calc_datetime#26103]
(489) Exchange
Input [4]: [plant#26245, product#26246, storageLocId#26196, max_calc_datetime#26103]
Arguments: hashpartitioning(coalesce(plant#26245, ), isnull(plant#26245), coalesce(product#26246, ), isnull(product#26246), coalesce(storageLocId#26196, ), isnull(storageLocId#26196), coalesce(max_calc_datetime#26103, 1970-01-01 00:00:00), isnull(max_calc_datetime#26103), 10), ENSURE_REQUIREMENTS, [plan_id=121790]
(490) Sort
Input [4]: [plant#26245, product#26246, storageLocId#26196, max_calc_datetime#26103]
Arguments: [coalesce(plant#26245, ) ASC NULLS FIRST, isnull(plant#26245) ASC NULLS FIRST, coalesce(product#26246, ) ASC NULLS FIRST, isnull(product#26246) ASC NULLS FIRST, coalesce(storageLocId#26196, ) ASC NULLS FIRST, isnull(storageLocId#26196) ASC NULLS FIRST, coalesce(max_calc_datetime#26103, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#26103) ASC NULLS FIRST], false, 0
(491) SortMergeJoin
Left keys [8]: [coalesce(plant#26101, ), isnull(plant#26101), coalesce(product#26102, ), isnull(product#26102), coalesce(storageLocId#26039, ), isnull(storageLocId#26039), coalesce(calculationDateTime#26018, 1970-01-01 00:00:00), isnull(calculationDateTime#26018)]
Right keys [8]: [coalesce(plant#26245, ), isnull(plant#26245), coalesce(product#26246, ), isnull(product#26246), coalesce(storageLocId#26196, ), isnull(storageLocId#26196), coalesce(max_calc_datetime#26103, 1970-01-01 00:00:00), isnull(max_calc_datetime#26103)]
Join type: Inner
Join condition: None
(492) Project
Output [4]: [plant#26101, product#26102, calculationDateTime#26018, quantity#26041]
Input [9]: [plant#26101, product#26102, storageLocId#26039, calculationDateTime#26018, quantity#26041, plant#26245, product#26246, storageLocId#26196, max_calc_datetime#26103]
(493) HashAggregate
Input [4]: [plant#26101, product#26102, calculationDateTime#26018, quantity#26041]
Keys [2]: [product#26102, plant#26101]
Functions [2]: [partial_min(calculationDateTime#26018), partial_sum(quantity#26041)]
Aggregate Attributes [2]: [min#35079, sum#35080]
Results [4]: [product#26102, plant#26101, min#35081, sum#35082]
(494) Exchange
Input [4]: [product#26102, plant#26101, min#35081, sum#35082]
Arguments: hashpartitioning(product#26102, plant#26101, 10), ENSURE_REQUIREMENTS, [plan_id=121797]
(495) HashAggregate
Input [4]: [product#26102, plant#26101, min#35081, sum#35082]
Keys [2]: [product#26102, plant#26101]
Functions [2]: [min(calculationDateTime#26018), sum(quantity#26041)]
Aggregate Attributes [2]: [min(calculationDateTime#26018)#26265, sum(quantity#26041)#26264]
Results [4]: [product#26102, plant#26101, min(calculationDateTime#26018)#26265 AS minCalculationDateTime#26258, round(sum(quantity#26041)#26264, 0) AS roundedQuantitySum#26266]
(496) Sort
Input [4]: [product#26102, plant#26101, minCalculationDateTime#26258, roundedQuantitySum#26266]
Arguments: [product#26102 ASC NULLS FIRST, plant#26101 ASC NULLS FIRST], false, 0
(497) SortMergeJoin
Left keys [2]: [product#25911, plant#25912]
Right keys [2]: [product#26102, plant#26101]
Join type: LeftOuter
Join condition: None
(498) Project
Output [5]: [product#25911, plant#25912, outboundUnit#25970, CASE WHEN isnotnull(minCalculationDateTime#26258) THEN minCalculationDateTime#26258 ELSE orderDateTime#25913 END AS stockDatetime#26315, CASE WHEN isnotnull(roundedQuantitySum#26266) THEN array(roundedQuantitySum#26266) ELSE [0.0] END AS stockBatchQuantities#26316]
Input [8]: [product#25911, plant#25912, orderDateTime#25913, outboundUnit#25970, product#26102, plant#26101, minCalculationDateTime#26258, roundedQuantitySum#26266]
(499) Exchange
Input [5]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316]
Arguments: hashpartitioning(coalesce(plant#25912, ), isnull(plant#25912), coalesce(product#25911, ), isnull(product#25911), 10), ENSURE_REQUIREMENTS, [plan_id=121961]
(500) Sort
Input [5]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316]
Arguments: [coalesce(plant#25912, ) ASC NULLS FIRST, isnull(plant#25912) ASC NULLS FIRST, coalesce(product#25911, ) ASC NULLS FIRST, isnull(product#25911) ASC NULLS FIRST], false, 0
(501) Scan parquet
Output [3]: [product#26392, plant#26393, orderDateTime#26394]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(502) Exchange
Input [3]: [product#26392, plant#26393, orderDateTime#26394]
Arguments: hashpartitioning(product#26392, plant#26393, 10), REPARTITION_BY_NUM, [plan_id=119540]
(503) Project
Output [8]: [systemId#26396, internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403]
Input [8]: [internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403, systemId#26396]
(504) Exchange
Input [8]: [systemId#26396, internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119543]
(505) Project
Output [1]: [struct(systemId, systemId#26396, internalUUID, internalUUID#26397, plant, plant#26398, product, product#26399, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#26400, productionAspect, productionAspect#26401, salesPlant, salesPlant#26402, listing, listing#26403) AS productPlant#26404]
Input [8]: [systemId#26396, internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403]
(506) BroadcastExchange
Input [1]: [productPlant#26404]
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,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,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,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,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=121805]
(507) BroadcastHashJoin
Left keys [4]: [coalesce(product#26392, ), isnull(product#26392), coalesce(plant#26393, ), isnull(plant#26393)]
Right keys [4]: [coalesce(productPlant#26404.product.internalRefUUID, ), isnull(productPlant#26404.product.internalRefUUID), coalesce(productPlant#26404.plant.internalRefUUID, ), isnull(productPlant#26404.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(508) Project
Output [2]: [internalUUID#26406, address#26412.timeZone.code AS timezonecode#26417]
Input [3]: [internalUUID#26406, address#26412, systemId#26405]
(509) Exchange
Input [2]: [internalUUID#26406, timezonecode#26417]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119548]
(510) BroadcastExchange
Input [2]: [internalUUID#26406, timezonecode#26417]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=121808]
(511) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26393, ), isnull(plant#26393)]
Right keys [2]: [coalesce(internalUUID#26406, ), isnull(internalUUID#26406)]
Join type: LeftOuter
Join condition: None
(512) Project
Output [5]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, CASE WHEN isnotnull(timezonecode#26417) THEN timezonecode#26417 ELSE UTC END AS timezonecode#26418]
Input [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, internalUUID#26406, timezonecode#26417]
(513) Scan parquet
Output [4]: [internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426, systemId#26419]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(514) Filter
Input [4]: [internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426, systemId#26419]
Condition : isnotnull(internalUUID#26420)
(515) Project
Output [3]: [internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426]
Input [4]: [internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426, systemId#26419]
(516) Exchange
Input [3]: [internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119554]
(517) BroadcastExchange
Input [3]: [internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=121812]
(518) BroadcastHashJoin
Left keys [1]: [product#26392]
Right keys [1]: [internalUUID#26420]
Join type: LeftOuter
Join condition: None
(519) Project
Output [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, filter(unitOfMeasureConversions#26426, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#26404.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#26404.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26424.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26424.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26431]
Input [8]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426]
(520) Project
Output [7]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, filteredUnitOfMeasureConversions#26431.quantityDenominator AS _extract_quantityDenominator#33560, filteredUnitOfMeasureConversions#26431.quantityNumerator AS _extract_quantityNumerator#33561]
Input [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, filteredUnitOfMeasureConversions#26431]
(521) Generate
Input [7]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, _extract_quantityDenominator#33560, _extract_quantityNumerator#33561]
Arguments: explode(_extract_quantityNumerator#33561), [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, _extract_quantityDenominator#33560], true, [quantityNumerator#26432]
(522) Generate
Input [7]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, _extract_quantityDenominator#33560, quantityNumerator#26432]
Arguments: explode(_extract_quantityDenominator#33560), [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, quantityNumerator#26432], true, [quantityDenominator#26433]
(523) Project
Output [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, (cast(quantityNumerator#26432 as double) / cast(quantityDenominator#26433 as double)) AS outboundUnit#26434]
Input [7]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, quantityNumerator#26432, quantityDenominator#26433]
(524) Project
Output [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, CASE WHEN (isnull(outboundUnit#26434) OR (outboundUnit#26434 <= 0.0)) THEN 1.0 ELSE outboundUnit#26434 END AS outboundUnit#26435]
Input [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26434]
(525) Sort
Input [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435]
Arguments: [product#26392 ASC NULLS FIRST, plant#26393 ASC NULLS FIRST], false, 0
(526) Scan parquet
Output [6]: [internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441, systemId#26436]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(527) Filter
Input [6]: [internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441, systemId#26436]
Condition : (isnotnull(plant#26439.internalRefUUID) AND isnotnull(product#26438.internalRefUUID))
(528) Project
Output [6]: [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441]
Input [6]: [internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441, systemId#26436]
(529) Exchange
Input [6]: [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119565]
(530) BroadcastExchange
Input [6]: [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441]
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=121844]
(531) Scan parquet
Output [2]: [marketUnit#26442, distributionCenters#26448]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(532) Filter
Input [2]: [marketUnit#26442, distributionCenters#26448]
Condition : (((marketUnit#26442 <=> DIP_1691) AND (size(distributionCenters#26448, true) > 0)) AND isnotnull(distributionCenters#26448))
(533) Project
Output [1]: [distributionCenters#26448]
Input [2]: [marketUnit#26442, distributionCenters#26448]
(534) Exchange
Input [1]: [distributionCenters#26448]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119569]
(535) Generate
Input [1]: [distributionCenters#26448]
Arguments: explode(distributionCenters#26448), false, [distributionCenters#26464]
(536) Filter
Input [1]: [distributionCenters#26464]
Condition : (((size(distributionCenters#26464.storageLocations, true) > 0) AND isnotnull(distributionCenters#26464.storageLocations)) AND isnotnull(distributionCenters#26464.internalRefUUID))
(537) Project
Output [2]: [distributionCenters#26464.internalRefUUID AS _extract_internalRefUUID#33369, distributionCenters#26464.storageLocations AS _extract_storageLocations#33370]
Input [1]: [distributionCenters#26464]
(538) Generate
Input [2]: [_extract_internalRefUUID#33369, _extract_storageLocations#33370]
Arguments: explode(_extract_storageLocations#33370), [_extract_internalRefUUID#33369], false, [storageLocations#26465]
(539) Project
Output [3]: [_extract_internalRefUUID#33369 AS plantUuid#26467, storageLocations#26465.id AS storageLocId#26468, storageLocations#26465.internalRefUUID AS storageLocUuid#26469]
Input [2]: [_extract_internalRefUUID#33369, storageLocations#26465]
(540) BroadcastExchange
Input [3]: [plantUuid#26467, storageLocId#26468, storageLocUuid#26469]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=121840]
(541) Scan parquet
Output [2]: [product#26470, plant#26471]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(542) Filter
Input [2]: [product#26470, plant#26471]
Condition : isnotnull(plant#26471)
(543) Exchange
Input [2]: [product#26470, plant#26471]
Arguments: hashpartitioning(product#26470, plant#26471, 10), REPARTITION_BY_NUM, [plan_id=121013]
(544) Scan parquet
Output [4]: [plant#26476, product#26477, productionAspect#26479, systemId#26474]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(545) Project
Output [4]: [plant#26476.internalRefUUID AS _extract_internalRefUUID#34055, product#26477.internalRefUUID AS _extract_internalRefUUID#34056, productionAspect#26479.productMovementPlants.unitOfIssue.code AS _extract_code#34053, productionAspect#26479.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34054]
Input [4]: [plant#26476, product#26477, productionAspect#26479, systemId#26474]
(546) Exchange
Input [4]: [_extract_internalRefUUID#34055, _extract_internalRefUUID#34056, _extract_code#34053, _extract_internalRefUUID#34054]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119581]
(547) Project
Output [4]: [_extract_code#34053, _extract_internalRefUUID#34054, _extract_internalRefUUID#34056, _extract_internalRefUUID#34055]
Input [4]: [_extract_internalRefUUID#34055, _extract_internalRefUUID#34056, _extract_code#34053, _extract_internalRefUUID#34054]
(548) BroadcastExchange
Input [4]: [_extract_code#34053, _extract_internalRefUUID#34054, _extract_internalRefUUID#34056, _extract_internalRefUUID#34055]
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=121820]
(549) BroadcastHashJoin
Left keys [4]: [coalesce(product#26470, ), isnull(product#26470), coalesce(plant#26471, ), isnull(plant#26471)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34056, ), isnull(_extract_internalRefUUID#34056), coalesce(_extract_internalRefUUID#34055, ), isnull(_extract_internalRefUUID#34055)]
Join type: LeftOuter
Join condition: None
(550) Project
Output [4]: [product#26470, plant#26471, _extract_code#34053, _extract_internalRefUUID#34054]
Input [6]: [product#26470, plant#26471, _extract_code#34053, _extract_internalRefUUID#34054, _extract_internalRefUUID#34056, _extract_internalRefUUID#34055]
(551) Scan parquet
Output [2]: [internalUUID#26484, systemId#26483]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(552) Project
Output [1]: [internalUUID#26484]
Input [2]: [internalUUID#26484, systemId#26483]
(553) Exchange
Input [1]: [internalUUID#26484]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119587]
(554) BroadcastExchange
Input [1]: [internalUUID#26484]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=121824]
(555) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26471, ), isnull(plant#26471)]
Right keys [2]: [coalesce(internalUUID#26484, ), isnull(internalUUID#26484)]
Join type: LeftOuter
Join condition: None
(556) Project
Output [4]: [product#26470, plant#26471, _extract_code#34053, _extract_internalRefUUID#34054]
Input [5]: [product#26470, plant#26471, _extract_code#34053, _extract_internalRefUUID#34054, internalUUID#26484]
(557) Scan parquet
Output [4]: [internalUUID#26498, baseUnitOfMeasure#26502, unitOfMeasureConversions#26504, systemId#26497]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(558) Filter
Input [4]: [internalUUID#26498, baseUnitOfMeasure#26502, unitOfMeasureConversions#26504, systemId#26497]
Condition : isnotnull(internalUUID#26498)
(559) Project
Output [3]: [internalUUID#26498, baseUnitOfMeasure#26502, unitOfMeasureConversions#26504]
Input [4]: [internalUUID#26498, baseUnitOfMeasure#26502, unitOfMeasureConversions#26504, systemId#26497]
(560) Exchange
Input [3]: [internalUUID#26498, baseUnitOfMeasure#26502, unitOfMeasureConversions#26504]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119593]
(561) BroadcastExchange
Input [3]: [internalUUID#26498, baseUnitOfMeasure#26502, unitOfMeasureConversions#26504]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=121828]
(562) BroadcastHashJoin
Left keys [1]: [product#26470]
Right keys [1]: [internalUUID#26498]
Join type: LeftOuter
Join condition: None
(563) Project
Output [2]: [plant#26471, filter(unitOfMeasureConversions#26504, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34053) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34054)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26502.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26502.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26509]
Input [7]: [product#26470, plant#26471, _extract_code#34053, _extract_internalRefUUID#34054, internalUUID#26498, baseUnitOfMeasure#26502, unitOfMeasureConversions#26504]
(564) Generate
Input [2]: [plant#26471, filteredUnitOfMeasureConversions#26509]
Arguments: explode(filteredUnitOfMeasureConversions#26509.quantityNumerator), [plant#26471, filteredUnitOfMeasureConversions#26509], true, [quantityNumerator#26510]
(565) Project
Output [2]: [plant#26471, filteredUnitOfMeasureConversions#26509.quantityDenominator AS _extract_quantityDenominator#33371]
Input [3]: [plant#26471, filteredUnitOfMeasureConversions#26509, quantityNumerator#26510]
(566) Generate
Input [2]: [plant#26471, _extract_quantityDenominator#33371]
Arguments: explode(_extract_quantityDenominator#33371), [plant#26471], true, [quantityDenominator#26511]
(567) Project
Output [1]: [plant#26471]
Input [2]: [plant#26471, quantityDenominator#26511]
(568) HashAggregate
Input [1]: [plant#26471]
Keys [1]: [plant#26471]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26471]
(569) Exchange
Input [1]: [plant#26471]
Arguments: hashpartitioning(plant#26471, 10), ENSURE_REQUIREMENTS, [plan_id=121837]
(570) HashAggregate
Input [1]: [plant#26471]
Keys [1]: [plant#26471]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26471]
(571) BroadcastHashJoin
Left keys [1]: [plantUuid#26467]
Right keys [1]: [plant#26471]
Join type: Inner
Join condition: None
(572) Project
Output [3]: [plantUuid#26467, storageLocId#26468, storageLocUuid#26469]
Input [4]: [plantUuid#26467, storageLocId#26468, storageLocUuid#26469, plant#26471]
(573) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26439.internalRefUUID, ), isnull(plant#26439.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#26467, ), isnull(plantUuid#26467)]
Join type: Inner
Join condition: None
(574) Generate
Input [9]: [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441, plantUuid#26467, storageLocId#26468, storageLocUuid#26469]
Arguments: explode(filter(stockQuantities#26441, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#26469) AND (lambda x#26016.storageLocation.Id = storageLocId#26468)), lambda x#26016, false))), [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, plantUuid#26467], false, [stockQuantity#26514]
(575) ObjectHashAggregate
Input [7]: [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, plantUuid#26467, stockQuantity#26514]
Keys [5]: [plantUuid#26467, internalUUID#26437, plant#26439, product#26438, systemId#26436]
Functions [2]: [partial_first(calculationDateTime#26440, false), partial_collect_list(stockQuantity#26514, 0, 0)]
Aggregate Attributes [3]: [first#29075, valueSet#29076, buf#29077]
Results [8]: [plantUuid#26467, internalUUID#26437, plant#26439, product#26438, systemId#26436, first#29078, valueSet#29079, buf#29080]
(576) ObjectHashAggregate
Input [8]: [plantUuid#26467, internalUUID#26437, plant#26439, product#26438, systemId#26436, first#29078, valueSet#29079, buf#29080]
Keys [5]: [plantUuid#26467, internalUUID#26437, plant#26439, product#26438, systemId#26436]
Functions [2]: [first(calculationDateTime#26440, false), collect_list(stockQuantity#26514, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#26440)()#26031, collect_list(stockQuantity#26514, 0, 0)#26032]
Results [4]: [product#26438, plant#26439, first(calculationDateTime#26440)()#26031 AS calculationDateTime#26515, collect_list(stockQuantity#26514, 0, 0)#26032 AS stockQuantities#26516]
(577) Filter
Input [4]: [product#26438, plant#26439, calculationDateTime#26515, stockQuantities#26516]
Condition : ((size(stockQuantities#26516, true) > 0) AND isnotnull(calculationDateTime#26515))
(578) Generate
Input [4]: [product#26438, plant#26439, calculationDateTime#26515, stockQuantities#26516]
Arguments: explode(stockQuantities#26516), [product#26438, plant#26439, calculationDateTime#26515], false, [stockQuantity#26517]
(579) Filter
Input [4]: [product#26438, plant#26439, calculationDateTime#26515, stockQuantity#26517]
Condition : (((isnotnull(stockQuantity#26517.specialStockIndicator.code) AND isnotnull(stockQuantity#26517.stockType.code)) AND (stockQuantity#26517.specialStockIndicator.code = )) AND (stockQuantity#26517.stockType.code = 01))
(580) Project
Output [5]: [plant#26439.internalRefUUID AS plantUuid#26519, product#26438.internalRefUUID AS productUuid#26521, calculationDateTime#26515, stockQuantity#26517.storagelocation.id AS storageLocId#26522, stockQuantity#26517.quantity.measure AS quantity#26524]
Input [4]: [product#26438, plant#26439, calculationDateTime#26515, stockQuantity#26517]
(581) Exchange
Input [5]: [plantUuid#26519, productUuid#26521, calculationDateTime#26515, storageLocId#26522, quantity#26524]
Arguments: hashpartitioning(productUuid#26521, plantUuid#26519, 10), ENSURE_REQUIREMENTS, [plan_id=121870]
(582) Sort
Input [5]: [plantUuid#26519, productUuid#26521, calculationDateTime#26515, storageLocId#26522, quantity#26524]
Arguments: [productUuid#26521 ASC NULLS FIRST, plantUuid#26519 ASC NULLS FIRST], false, 0
(583) Scan parquet
Output [3]: [product#26527, plant#26528, orderDateTime#26529]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(584) Filter
Input [3]: [product#26527, plant#26528, orderDateTime#26529]
Condition : ((isnotnull(orderDateTime#26529) AND isnotnull(plant#26528)) AND isnotnull(product#26527))
(585) Exchange
Input [3]: [product#26527, plant#26528, orderDateTime#26529]
Arguments: hashpartitioning(product#26527, plant#26528, 10), REPARTITION_BY_NUM, [plan_id=121036]
(586) Scan parquet
Output [4]: [plant#26533, product#26534, productionAspect#26536, systemId#26531]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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#26533.internalRefUUID AS _extract_internalRefUUID#34057, product#26534.internalRefUUID AS _extract_internalRefUUID#34058, productionAspect#26536.productMovementPlants.unitOfIssue.code AS _extract_code#34059, productionAspect#26536.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34060]
Input [4]: [plant#26533, product#26534, productionAspect#26536, systemId#26531]
(588) Exchange
Input [4]: [_extract_internalRefUUID#34057, _extract_internalRefUUID#34058, _extract_code#34059, _extract_internalRefUUID#34060]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119618]
(589) Project
Output [4]: [_extract_code#34059, _extract_internalRefUUID#34060, _extract_internalRefUUID#34058, _extract_internalRefUUID#34057]
Input [4]: [_extract_internalRefUUID#34057, _extract_internalRefUUID#34058, _extract_code#34059, _extract_internalRefUUID#34060]
(590) BroadcastExchange
Input [4]: [_extract_code#34059, _extract_internalRefUUID#34060, _extract_internalRefUUID#34058, _extract_internalRefUUID#34057]
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=121853]
(591) BroadcastHashJoin
Left keys [4]: [coalesce(product#26527, ), isnull(product#26527), coalesce(plant#26528, ), isnull(plant#26528)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34058, ), isnull(_extract_internalRefUUID#34058), coalesce(_extract_internalRefUUID#34057, ), isnull(_extract_internalRefUUID#34057)]
Join type: LeftOuter
Join condition: None
(592) Project
Output [5]: [product#26527, plant#26528, orderDateTime#26529, _extract_code#34059, _extract_internalRefUUID#34060]
Input [7]: [product#26527, plant#26528, orderDateTime#26529, _extract_code#34059, _extract_internalRefUUID#34060, _extract_internalRefUUID#34058, _extract_internalRefUUID#34057]
(593) Scan parquet
Output [2]: [internalUUID#26541, systemId#26540]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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#26541]
Input [2]: [internalUUID#26541, systemId#26540]
(595) Exchange
Input [1]: [internalUUID#26541]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119624]
(596) BroadcastExchange
Input [1]: [internalUUID#26541]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=121857]
(597) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26528, ), isnull(plant#26528)]
Right keys [2]: [coalesce(internalUUID#26541, ), isnull(internalUUID#26541)]
Join type: LeftOuter
Join condition: None
(598) Project
Output [5]: [product#26527, plant#26528, orderDateTime#26529, _extract_code#34059, _extract_internalRefUUID#34060]
Input [6]: [product#26527, plant#26528, orderDateTime#26529, _extract_code#34059, _extract_internalRefUUID#34060, internalUUID#26541]
(599) Scan parquet
Output [4]: [internalUUID#26555, baseUnitOfMeasure#26559, unitOfMeasureConversions#26561, systemId#26554]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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#26555, baseUnitOfMeasure#26559, unitOfMeasureConversions#26561, systemId#26554]
Condition : isnotnull(internalUUID#26555)
(601) Project
Output [3]: [internalUUID#26555, baseUnitOfMeasure#26559, unitOfMeasureConversions#26561]
Input [4]: [internalUUID#26555, baseUnitOfMeasure#26559, unitOfMeasureConversions#26561, systemId#26554]
(602) Exchange
Input [3]: [internalUUID#26555, baseUnitOfMeasure#26559, unitOfMeasureConversions#26561]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119630]
(603) BroadcastExchange
Input [3]: [internalUUID#26555, baseUnitOfMeasure#26559, unitOfMeasureConversions#26561]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=121861]
(604) BroadcastHashJoin
Left keys [1]: [product#26527]
Right keys [1]: [internalUUID#26555]
Join type: LeftOuter
Join condition: None
(605) Project
Output [4]: [product#26527, plant#26528, orderDateTime#26529, filter(unitOfMeasureConversions#26561, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34059) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34060)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26559.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26559.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26566]
Input [8]: [product#26527, plant#26528, orderDateTime#26529, _extract_code#34059, _extract_internalRefUUID#34060, internalUUID#26555, baseUnitOfMeasure#26559, unitOfMeasureConversions#26561]
(606) Generate
Input [4]: [product#26527, plant#26528, orderDateTime#26529, filteredUnitOfMeasureConversions#26566]
Arguments: explode(filteredUnitOfMeasureConversions#26566.quantityNumerator), [product#26527, plant#26528, orderDateTime#26529, filteredUnitOfMeasureConversions#26566], true, [quantityNumerator#26567]
(607) Project
Output [4]: [product#26527, plant#26528, orderDateTime#26529, filteredUnitOfMeasureConversions#26566.quantityDenominator AS _extract_quantityDenominator#33375]
Input [5]: [product#26527, plant#26528, orderDateTime#26529, filteredUnitOfMeasureConversions#26566, quantityNumerator#26567]
(608) Generate
Input [4]: [product#26527, plant#26528, orderDateTime#26529, _extract_quantityDenominator#33375]
Arguments: explode(_extract_quantityDenominator#33375), [product#26527, plant#26528, orderDateTime#26529], true, [quantityDenominator#26568]
(609) Project
Output [3]: [product#26527, plant#26528, orderDateTime#26529]
Input [4]: [product#26527, plant#26528, orderDateTime#26529, quantityDenominator#26568]
(610) Sort
Input [3]: [product#26527, plant#26528, orderDateTime#26529]
Arguments: [product#26527 ASC NULLS FIRST, plant#26528 ASC NULLS FIRST], false, 0
(611) SortMergeJoin
Left keys [2]: [productUuid#26521, plantUuid#26519]
Right keys [2]: [product#26527, plant#26528]
Join type: Inner
Join condition: (calculationDateTime#26515 <= orderDateTime#26529)
(612) Project
Output [5]: [plantUuid#26519 AS plant#26571, productUuid#26521 AS product#26572, storageLocId#26522, calculationDateTime#26515, quantity#26524]
Input [8]: [plantUuid#26519, productUuid#26521, calculationDateTime#26515, storageLocId#26522, quantity#26524, product#26527, plant#26528, orderDateTime#26529]
(613) Exchange
Input [5]: [plant#26571, product#26572, storageLocId#26522, calculationDateTime#26515, quantity#26524]
Arguments: hashpartitioning(coalesce(plant#26571, ), isnull(plant#26571), coalesce(product#26572, ), isnull(product#26572), coalesce(storageLocId#26522, ), isnull(storageLocId#26522), coalesce(calculationDateTime#26515, 1970-01-01 00:00:00), isnull(calculationDateTime#26515), 10), ENSURE_REQUIREMENTS, [plan_id=121934]
(614) Sort
Input [5]: [plant#26571, product#26572, storageLocId#26522, calculationDateTime#26515, quantity#26524]
Arguments: [coalesce(plant#26571, ) ASC NULLS FIRST, isnull(plant#26571) ASC NULLS FIRST, coalesce(product#26572, ) ASC NULLS FIRST, isnull(product#26572) ASC NULLS FIRST, coalesce(storageLocId#26522, ) ASC NULLS FIRST, isnull(storageLocId#26522) ASC NULLS FIRST, coalesce(calculationDateTime#26515, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#26515) ASC NULLS FIRST], false, 0
(615) Scan parquet
Output [6]: [internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578, systemId#26573]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(616) Filter
Input [6]: [internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578, systemId#26573]
Condition : (isnotnull(plant#26576.internalRefUUID) AND isnotnull(product#26575.internalRefUUID))
(617) Project
Output [6]: [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578]
Input [6]: [internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578, systemId#26573]
(618) Exchange
Input [6]: [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119642]
(619) BroadcastExchange
Input [6]: [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578]
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=121899]
(620) Scan parquet
Output [2]: [marketUnit#26579, distributionCenters#26585]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(621) Filter
Input [2]: [marketUnit#26579, distributionCenters#26585]
Condition : (((marketUnit#26579 <=> DIP_1691) AND (size(distributionCenters#26585, true) > 0)) AND isnotnull(distributionCenters#26585))
(622) Project
Output [1]: [distributionCenters#26585]
Input [2]: [marketUnit#26579, distributionCenters#26585]
(623) Exchange
Input [1]: [distributionCenters#26585]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119646]
(624) Generate
Input [1]: [distributionCenters#26585]
Arguments: explode(distributionCenters#26585), false, [distributionCenters#26601]
(625) Filter
Input [1]: [distributionCenters#26601]
Condition : (((size(distributionCenters#26601.storageLocations, true) > 0) AND isnotnull(distributionCenters#26601.storageLocations)) AND isnotnull(distributionCenters#26601.internalRefUUID))
(626) Project
Output [2]: [distributionCenters#26601.internalRefUUID AS _extract_internalRefUUID#33379, distributionCenters#26601.storageLocations AS _extract_storageLocations#33380]
Input [1]: [distributionCenters#26601]
(627) Generate
Input [2]: [_extract_internalRefUUID#33379, _extract_storageLocations#33380]
Arguments: explode(_extract_storageLocations#33380), [_extract_internalRefUUID#33379], false, [storageLocations#26602]
(628) Project
Output [3]: [_extract_internalRefUUID#33379 AS plantUuid#26604, storageLocations#26602.id AS storageLocId#26605, storageLocations#26602.internalRefUUID AS storageLocUuid#26606]
Input [2]: [_extract_internalRefUUID#33379, storageLocations#26602]
(629) BroadcastExchange
Input [3]: [plantUuid#26604, storageLocId#26605, storageLocUuid#26606]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=121895]
(630) Scan parquet
Output [2]: [product#26607, plant#26608]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(631) Filter
Input [2]: [product#26607, plant#26608]
Condition : isnotnull(plant#26608)
(632) Exchange
Input [2]: [product#26607, plant#26608]
Arguments: hashpartitioning(product#26607, plant#26608, 10), REPARTITION_BY_NUM, [plan_id=121049]
(633) Scan parquet
Output [4]: [plant#26613, product#26614, productionAspect#26616, systemId#26611]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(634) Project
Output [4]: [plant#26613.internalRefUUID AS _extract_internalRefUUID#34061, product#26614.internalRefUUID AS _extract_internalRefUUID#34062, productionAspect#26616.productMovementPlants.unitOfIssue.code AS _extract_code#34063, productionAspect#26616.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34064]
Input [4]: [plant#26613, product#26614, productionAspect#26616, systemId#26611]
(635) Exchange
Input [4]: [_extract_internalRefUUID#34061, _extract_internalRefUUID#34062, _extract_code#34063, _extract_internalRefUUID#34064]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119658]
(636) Project
Output [4]: [_extract_code#34063, _extract_internalRefUUID#34064, _extract_internalRefUUID#34062, _extract_internalRefUUID#34061]
Input [4]: [_extract_internalRefUUID#34061, _extract_internalRefUUID#34062, _extract_code#34063, _extract_internalRefUUID#34064]
(637) BroadcastExchange
Input [4]: [_extract_code#34063, _extract_internalRefUUID#34064, _extract_internalRefUUID#34062, _extract_internalRefUUID#34061]
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=121875]
(638) BroadcastHashJoin
Left keys [4]: [coalesce(product#26607, ), isnull(product#26607), coalesce(plant#26608, ), isnull(plant#26608)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34062, ), isnull(_extract_internalRefUUID#34062), coalesce(_extract_internalRefUUID#34061, ), isnull(_extract_internalRefUUID#34061)]
Join type: LeftOuter
Join condition: None
(639) Project
Output [4]: [product#26607, plant#26608, _extract_code#34063, _extract_internalRefUUID#34064]
Input [6]: [product#26607, plant#26608, _extract_code#34063, _extract_internalRefUUID#34064, _extract_internalRefUUID#34062, _extract_internalRefUUID#34061]
(640) Scan parquet
Output [2]: [internalUUID#26621, systemId#26620]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(641) Project
Output [1]: [internalUUID#26621]
Input [2]: [internalUUID#26621, systemId#26620]
(642) Exchange
Input [1]: [internalUUID#26621]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119664]
(643) BroadcastExchange
Input [1]: [internalUUID#26621]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=121879]
(644) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26608, ), isnull(plant#26608)]
Right keys [2]: [coalesce(internalUUID#26621, ), isnull(internalUUID#26621)]
Join type: LeftOuter
Join condition: None
(645) Project
Output [4]: [product#26607, plant#26608, _extract_code#34063, _extract_internalRefUUID#34064]
Input [5]: [product#26607, plant#26608, _extract_code#34063, _extract_internalRefUUID#34064, internalUUID#26621]
(646) Scan parquet
Output [4]: [internalUUID#26635, baseUnitOfMeasure#26639, unitOfMeasureConversions#26641, systemId#26634]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(647) Filter
Input [4]: [internalUUID#26635, baseUnitOfMeasure#26639, unitOfMeasureConversions#26641, systemId#26634]
Condition : isnotnull(internalUUID#26635)
(648) Project
Output [3]: [internalUUID#26635, baseUnitOfMeasure#26639, unitOfMeasureConversions#26641]
Input [4]: [internalUUID#26635, baseUnitOfMeasure#26639, unitOfMeasureConversions#26641, systemId#26634]
(649) Exchange
Input [3]: [internalUUID#26635, baseUnitOfMeasure#26639, unitOfMeasureConversions#26641]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119670]
(650) BroadcastExchange
Input [3]: [internalUUID#26635, baseUnitOfMeasure#26639, unitOfMeasureConversions#26641]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=121883]
(651) BroadcastHashJoin
Left keys [1]: [product#26607]
Right keys [1]: [internalUUID#26635]
Join type: LeftOuter
Join condition: None
(652) Project
Output [2]: [plant#26608, filter(unitOfMeasureConversions#26641, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34063) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34064)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26639.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26639.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26646]
Input [7]: [product#26607, plant#26608, _extract_code#34063, _extract_internalRefUUID#34064, internalUUID#26635, baseUnitOfMeasure#26639, unitOfMeasureConversions#26641]
(653) Generate
Input [2]: [plant#26608, filteredUnitOfMeasureConversions#26646]
Arguments: explode(filteredUnitOfMeasureConversions#26646.quantityNumerator), [plant#26608, filteredUnitOfMeasureConversions#26646], true, [quantityNumerator#26647]
(654) Project
Output [2]: [plant#26608, filteredUnitOfMeasureConversions#26646.quantityDenominator AS _extract_quantityDenominator#33381]
Input [3]: [plant#26608, filteredUnitOfMeasureConversions#26646, quantityNumerator#26647]
(655) Generate
Input [2]: [plant#26608, _extract_quantityDenominator#33381]
Arguments: explode(_extract_quantityDenominator#33381), [plant#26608], true, [quantityDenominator#26648]
(656) Project
Output [1]: [plant#26608]
Input [2]: [plant#26608, quantityDenominator#26648]
(657) HashAggregate
Input [1]: [plant#26608]
Keys [1]: [plant#26608]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26608]
(658) Exchange
Input [1]: [plant#26608]
Arguments: hashpartitioning(plant#26608, 10), ENSURE_REQUIREMENTS, [plan_id=121892]
(659) HashAggregate
Input [1]: [plant#26608]
Keys [1]: [plant#26608]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26608]
(660) BroadcastHashJoin
Left keys [1]: [plantUuid#26604]
Right keys [1]: [plant#26608]
Join type: Inner
Join condition: None
(661) Project
Output [3]: [plantUuid#26604, storageLocId#26605, storageLocUuid#26606]
Input [4]: [plantUuid#26604, storageLocId#26605, storageLocUuid#26606, plant#26608]
(662) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26576.internalRefUUID, ), isnull(plant#26576.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#26604, ), isnull(plantUuid#26604)]
Join type: Inner
Join condition: None
(663) Generate
Input [9]: [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578, plantUuid#26604, storageLocId#26605, storageLocUuid#26606]
Arguments: explode(filter(stockQuantities#26578, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#26606) AND (lambda x#26016.storageLocation.Id = storageLocId#26605)), lambda x#26016, false))), [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, plantUuid#26604], false, [stockQuantity#26651]
(664) ObjectHashAggregate
Input [7]: [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, plantUuid#26604, stockQuantity#26651]
Keys [5]: [plantUuid#26604, internalUUID#26574, plant#26576, product#26575, systemId#26573]
Functions [2]: [partial_first(calculationDateTime#26577, false), partial_collect_list(stockQuantity#26651, 0, 0)]
Aggregate Attributes [3]: [first#29083, valueSet#29084, buf#29085]
Results [8]: [plantUuid#26604, internalUUID#26574, plant#26576, product#26575, systemId#26573, first#29086, valueSet#29087, buf#29088]
(665) ObjectHashAggregate
Input [8]: [plantUuid#26604, internalUUID#26574, plant#26576, product#26575, systemId#26573, first#29086, valueSet#29087, buf#29088]
Keys [5]: [plantUuid#26604, internalUUID#26574, plant#26576, product#26575, systemId#26573]
Functions [2]: [first(calculationDateTime#26577, false), collect_list(stockQuantity#26651, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#26577)()#26031, collect_list(stockQuantity#26651, 0, 0)#26032]
Results [4]: [product#26575, plant#26576, first(calculationDateTime#26577)()#26031 AS calculationDateTime#26652, collect_list(stockQuantity#26651, 0, 0)#26032 AS stockQuantities#26653]
(666) Filter
Input [4]: [product#26575, plant#26576, calculationDateTime#26652, stockQuantities#26653]
Condition : ((size(stockQuantities#26653, true) > 0) AND isnotnull(calculationDateTime#26652))
(667) Generate
Input [4]: [product#26575, plant#26576, calculationDateTime#26652, stockQuantities#26653]
Arguments: explode(stockQuantities#26653), [product#26575, plant#26576, calculationDateTime#26652], false, [stockQuantity#26654]
(668) Filter
Input [4]: [product#26575, plant#26576, calculationDateTime#26652, stockQuantity#26654]
Condition : (((isnotnull(stockQuantity#26654.specialStockIndicator.code) AND isnotnull(stockQuantity#26654.stockType.code)) AND (stockQuantity#26654.specialStockIndicator.code = )) AND (stockQuantity#26654.stockType.code = 01))
(669) Project
Output [4]: [plant#26576.internalRefUUID AS plantUuid#26656, product#26575.internalRefUUID AS productUuid#26658, calculationDateTime#26652, stockQuantity#26654.storagelocation.id AS storageLocId#26659]
Input [4]: [product#26575, plant#26576, calculationDateTime#26652, stockQuantity#26654]
(670) Exchange
Input [4]: [plantUuid#26656, productUuid#26658, calculationDateTime#26652, storageLocId#26659]
Arguments: hashpartitioning(productUuid#26658, plantUuid#26656, 10), ENSURE_REQUIREMENTS, [plan_id=121925]
(671) Sort
Input [4]: [plantUuid#26656, productUuid#26658, calculationDateTime#26652, storageLocId#26659]
Arguments: [productUuid#26658 ASC NULLS FIRST, plantUuid#26656 ASC NULLS FIRST], false, 0
(672) Scan parquet
Output [3]: [product#26664, plant#26665, orderDateTime#26666]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(673) Filter
Input [3]: [product#26664, plant#26665, orderDateTime#26666]
Condition : ((isnotnull(orderDateTime#26666) AND isnotnull(plant#26665)) AND isnotnull(product#26664))
(674) Exchange
Input [3]: [product#26664, plant#26665, orderDateTime#26666]
Arguments: hashpartitioning(product#26664, plant#26665, 10), REPARTITION_BY_NUM, [plan_id=121072]
(675) Scan parquet
Output [4]: [plant#26670, product#26671, productionAspect#26673, systemId#26668]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(676) Project
Output [4]: [plant#26670.internalRefUUID AS _extract_internalRefUUID#34067, product#26671.internalRefUUID AS _extract_internalRefUUID#34068, productionAspect#26673.productMovementPlants.unitOfIssue.code AS _extract_code#34065, productionAspect#26673.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34066]
Input [4]: [plant#26670, product#26671, productionAspect#26673, systemId#26668]
(677) Exchange
Input [4]: [_extract_internalRefUUID#34067, _extract_internalRefUUID#34068, _extract_code#34065, _extract_internalRefUUID#34066]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119695]
(678) Project
Output [4]: [_extract_code#34065, _extract_internalRefUUID#34066, _extract_internalRefUUID#34068, _extract_internalRefUUID#34067]
Input [4]: [_extract_internalRefUUID#34067, _extract_internalRefUUID#34068, _extract_code#34065, _extract_internalRefUUID#34066]
(679) BroadcastExchange
Input [4]: [_extract_code#34065, _extract_internalRefUUID#34066, _extract_internalRefUUID#34068, _extract_internalRefUUID#34067]
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=121908]
(680) BroadcastHashJoin
Left keys [4]: [coalesce(product#26664, ), isnull(product#26664), coalesce(plant#26665, ), isnull(plant#26665)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34068, ), isnull(_extract_internalRefUUID#34068), coalesce(_extract_internalRefUUID#34067, ), isnull(_extract_internalRefUUID#34067)]
Join type: LeftOuter
Join condition: None
(681) Project
Output [5]: [product#26664, plant#26665, orderDateTime#26666, _extract_code#34065, _extract_internalRefUUID#34066]
Input [7]: [product#26664, plant#26665, orderDateTime#26666, _extract_code#34065, _extract_internalRefUUID#34066, _extract_internalRefUUID#34068, _extract_internalRefUUID#34067]
(682) Scan parquet
Output [2]: [internalUUID#26678, systemId#26677]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(683) Project
Output [1]: [internalUUID#26678]
Input [2]: [internalUUID#26678, systemId#26677]
(684) Exchange
Input [1]: [internalUUID#26678]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119701]
(685) BroadcastExchange
Input [1]: [internalUUID#26678]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=121912]
(686) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26665, ), isnull(plant#26665)]
Right keys [2]: [coalesce(internalUUID#26678, ), isnull(internalUUID#26678)]
Join type: LeftOuter
Join condition: None
(687) Project
Output [5]: [product#26664, plant#26665, orderDateTime#26666, _extract_code#34065, _extract_internalRefUUID#34066]
Input [6]: [product#26664, plant#26665, orderDateTime#26666, _extract_code#34065, _extract_internalRefUUID#34066, internalUUID#26678]
(688) Scan parquet
Output [4]: [internalUUID#26692, baseUnitOfMeasure#26696, unitOfMeasureConversions#26698, systemId#26691]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(689) Filter
Input [4]: [internalUUID#26692, baseUnitOfMeasure#26696, unitOfMeasureConversions#26698, systemId#26691]
Condition : isnotnull(internalUUID#26692)
(690) Project
Output [3]: [internalUUID#26692, baseUnitOfMeasure#26696, unitOfMeasureConversions#26698]
Input [4]: [internalUUID#26692, baseUnitOfMeasure#26696, unitOfMeasureConversions#26698, systemId#26691]
(691) Exchange
Input [3]: [internalUUID#26692, baseUnitOfMeasure#26696, unitOfMeasureConversions#26698]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119707]
(692) BroadcastExchange
Input [3]: [internalUUID#26692, baseUnitOfMeasure#26696, unitOfMeasureConversions#26698]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=121916]
(693) BroadcastHashJoin
Left keys [1]: [product#26664]
Right keys [1]: [internalUUID#26692]
Join type: LeftOuter
Join condition: None
(694) Project
Output [4]: [product#26664, plant#26665, orderDateTime#26666, filter(unitOfMeasureConversions#26698, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34065) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34066)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26696.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26696.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26703]
Input [8]: [product#26664, plant#26665, orderDateTime#26666, _extract_code#34065, _extract_internalRefUUID#34066, internalUUID#26692, baseUnitOfMeasure#26696, unitOfMeasureConversions#26698]
(695) Generate
Input [4]: [product#26664, plant#26665, orderDateTime#26666, filteredUnitOfMeasureConversions#26703]
Arguments: explode(filteredUnitOfMeasureConversions#26703.quantityNumerator), [product#26664, plant#26665, orderDateTime#26666, filteredUnitOfMeasureConversions#26703], true, [quantityNumerator#26704]
(696) Project
Output [4]: [product#26664, plant#26665, orderDateTime#26666, filteredUnitOfMeasureConversions#26703.quantityDenominator AS _extract_quantityDenominator#33385]
Input [5]: [product#26664, plant#26665, orderDateTime#26666, filteredUnitOfMeasureConversions#26703, quantityNumerator#26704]
(697) Generate
Input [4]: [product#26664, plant#26665, orderDateTime#26666, _extract_quantityDenominator#33385]
Arguments: explode(_extract_quantityDenominator#33385), [product#26664, plant#26665, orderDateTime#26666], true, [quantityDenominator#26705]
(698) Project
Output [3]: [product#26664, plant#26665, orderDateTime#26666]
Input [4]: [product#26664, plant#26665, orderDateTime#26666, quantityDenominator#26705]
(699) Sort
Input [3]: [product#26664, plant#26665, orderDateTime#26666]
Arguments: [product#26664 ASC NULLS FIRST, plant#26665 ASC NULLS FIRST], false, 0
(700) SortMergeJoin
Left keys [2]: [productUuid#26658, plantUuid#26656]
Right keys [2]: [product#26664, plant#26665]
Join type: Inner
Join condition: (calculationDateTime#26652 <= orderDateTime#26666)
(701) Project
Output [4]: [plantUuid#26656 AS plant#26708, productUuid#26658 AS product#26709, storageLocId#26659, calculationDateTime#26652]
Input [7]: [plantUuid#26656, productUuid#26658, calculationDateTime#26652, storageLocId#26659, product#26664, plant#26665, orderDateTime#26666]
(702) HashAggregate
Input [4]: [plant#26708, product#26709, storageLocId#26659, calculationDateTime#26652]
Keys [3]: [plant#26708, product#26709, storageLocId#26659]
Functions [1]: [partial_max(calculationDateTime#26652)]
Aggregate Attributes [1]: [max#29081]
Results [4]: [plant#26708, product#26709, storageLocId#26659, max#29082]
(703) HashAggregate
Input [4]: [plant#26708, product#26709, storageLocId#26659, max#29082]
Keys [3]: [plant#26708, product#26709, storageLocId#26659]
Functions [1]: [max(calculationDateTime#26652)]
Aggregate Attributes [1]: [max(calculationDateTime#26652)#26109]
Results [4]: [plant#26708, product#26709, storageLocId#26659, max(calculationDateTime#26652)#26109 AS max_calc_datetime#26710]
(704) Exchange
Input [4]: [plant#26708, product#26709, storageLocId#26659, max_calc_datetime#26710]
Arguments: hashpartitioning(coalesce(plant#26708, ), isnull(plant#26708), coalesce(product#26709, ), isnull(product#26709), coalesce(storageLocId#26659, ), isnull(storageLocId#26659), coalesce(max_calc_datetime#26710, 1970-01-01 00:00:00), isnull(max_calc_datetime#26710), 10), ENSURE_REQUIREMENTS, [plan_id=121935]
(705) Sort
Input [4]: [plant#26708, product#26709, storageLocId#26659, max_calc_datetime#26710]
Arguments: [coalesce(plant#26708, ) ASC NULLS FIRST, isnull(plant#26708) ASC NULLS FIRST, coalesce(product#26709, ) ASC NULLS FIRST, isnull(product#26709) ASC NULLS FIRST, coalesce(storageLocId#26659, ) ASC NULLS FIRST, isnull(storageLocId#26659) ASC NULLS FIRST, coalesce(max_calc_datetime#26710, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#26710) ASC NULLS FIRST], false, 0
(706) SortMergeJoin
Left keys [8]: [coalesce(plant#26571, ), isnull(plant#26571), coalesce(product#26572, ), isnull(product#26572), coalesce(storageLocId#26522, ), isnull(storageLocId#26522), coalesce(calculationDateTime#26515, 1970-01-01 00:00:00), isnull(calculationDateTime#26515)]
Right keys [8]: [coalesce(plant#26708, ), isnull(plant#26708), coalesce(product#26709, ), isnull(product#26709), coalesce(storageLocId#26659, ), isnull(storageLocId#26659), coalesce(max_calc_datetime#26710, 1970-01-01 00:00:00), isnull(max_calc_datetime#26710)]
Join type: Inner
Join condition: None
(707) Project
Output [4]: [plant#26571, product#26572, calculationDateTime#26515, quantity#26524]
Input [9]: [plant#26571, product#26572, storageLocId#26522, calculationDateTime#26515, quantity#26524, plant#26708, product#26709, storageLocId#26659, max_calc_datetime#26710]
(708) HashAggregate
Input [4]: [plant#26571, product#26572, calculationDateTime#26515, quantity#26524]
Keys [2]: [product#26572, plant#26571]
Functions [2]: [partial_min(calculationDateTime#26515), partial_sum(quantity#26524)]
Aggregate Attributes [2]: [min#29071, sum#29072]
Results [4]: [product#26572, plant#26571, min#29073, sum#29074]
(709) Exchange
Input [4]: [product#26572, plant#26571, min#29073, sum#29074]
Arguments: hashpartitioning(product#26572, plant#26571, 10), ENSURE_REQUIREMENTS, [plan_id=121942]
(710) HashAggregate
Input [4]: [product#26572, plant#26571, min#29073, sum#29074]
Keys [2]: [product#26572, plant#26571]
Functions [2]: [min(calculationDateTime#26515), sum(quantity#26524)]
Aggregate Attributes [2]: [min(calculationDateTime#26515)#26265, sum(quantity#26524)#26264]
Results [4]: [product#26572, plant#26571, min(calculationDateTime#26515)#26265 AS minCalculationDateTime#26712, round(sum(quantity#26524)#26264, 0) AS roundedQuantitySum#26713]
(711) Sort
Input [4]: [product#26572, plant#26571, minCalculationDateTime#26712, roundedQuantitySum#26713]
Arguments: [product#26572 ASC NULLS FIRST, plant#26571 ASC NULLS FIRST], false, 0
(712) SortMergeJoin
Left keys [2]: [product#26392, plant#26393]
Right keys [2]: [product#26572, plant#26571]
Join type: LeftOuter
Join condition: None
(713) Project
Output [8]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, CASE WHEN isnotnull(minCalculationDateTime#26712) THEN minCalculationDateTime#26712 ELSE orderDateTime#26394 END AS stockDatetime#26714, CASE WHEN isnotnull(roundedQuantitySum#26713) THEN array(roundedQuantitySum#26713) ELSE [0.0] END AS stockBatchQuantities#26715]
Input [10]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, product#26572, plant#26571, minCalculationDateTime#26712, roundedQuantitySum#26713]
(714) Filter
Input [9]: [product#26318, plant#26319, demandChannel#26320, demandStream#26321, considerVariance#26322, demandTimeBuckets#26323, demandPointInTimeStart#26324, demandPointInTimeEnd#26325, demandPointInTime#26326]
Condition : (isnotnull(product#26318) AND isnotnull(plant#26319))
(715) BroadcastExchange
Input [9]: [product#26318, plant#26319, demandChannel#26320, demandStream#26321, considerVariance#26322, demandTimeBuckets#26323, demandPointInTimeStart#26324, demandPointInTimeEnd#26325, demandPointInTime#26326]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=121951]
(716) BroadcastHashJoin
Left keys [2]: [product#26392, plant#26393]
Right keys [2]: [product#26318, plant#26319]
Join type: LeftOuter
Join condition: None
(717) Project
Output [9]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, CASE WHEN isnotnull(product#26318) THEN struct(demandChannel, demandChannel#26320, demandStream, demandStream#26321, considerVariance, considerVariance#26322, demandTimeBuckets, demandTimeBuckets#26323, demandPointInTimeStart, demandPointInTimeStart#26324, demandPointInTimeEnd, demandPointInTimeEnd#26325, demandPointInTime, demandPointInTime#26326) END AS rawDemands#26338]
Input [17]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, product#26318, plant#26319, demandChannel#26320, demandStream#26321, considerVariance#26322, demandTimeBuckets#26323, demandPointInTimeStart#26324, demandPointInTimeEnd#26325, demandPointInTime#26326]
(718) ObjectHashAggregate
Input [9]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, rawDemands#26338]
Keys [9]: [product#26392, plant#26393, orderDateTime#26394, knownfloatingpointnormalized(if (isnull(productPlant#26404)) null else named_struct(systemId, productPlant#26404.systemId, internalUUID, productPlant#26404.internalUUID, plant, productPlant#26404.plant, product, productPlant#26404.product, blockedForReplenishmentStartingFrom, productPlant#26404.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#26404.productionAspect)) null else named_struct(productMovementPlants, productPlant#26404.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#26404.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#26404.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#26404.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#26404.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#26404.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#26404.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#26404.salesPlant, listing, productPlant#26404.listing)) AS productPlant#26404, timezonecode#26418, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#26435)) AS outboundUnit#26435, stockDatetime#26714, knownfloatingpointnormalized(transform(stockBatchQuantities#26715, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#35098)), lambda arg#35098, false))) AS stockBatchQuantities#26715, [7226582400000000] AS [7226582400000000]#35097]
Functions [1]: [partial_collect_list(rawDemands#26338, 0, 0)]
Aggregate Attributes [1]: [buf#29069]
Results [10]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, [7226582400000000]#35097, buf#29070]
(719) ObjectHashAggregate
Input [10]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, [7226582400000000]#35097, buf#29070]
Keys [9]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, [7226582400000000]#35097]
Functions [1]: [collect_list(rawDemands#26338, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#26338, 0, 0)#26357]
Results [10]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#26716, collect_list(rawDemands#26338, 0, 0)#26357 AS rawDemands#26339]
(720) DeserializeToObject
Input [10]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, stockBatchShelfLifeEndDatetimes#26716, rawDemands#26339]
Arguments: createexternalrow(invoke(product#26392.toString()), invoke(plant#26393.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#26394)), if (isnull(productPlant#26404)) null else createexternalrow(invoke(productPlant#26404.systemId.toString()), invoke(productPlant#26404.internalUUID.toString()), if (isnull(productPlant#26404.plant)) null else createexternalrow(invoke(productPlant#26404.plant.internalRefUUID.toString()), invoke(productPlant#26404.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#26404.product)) null else createexternalrow(invoke(productPlant#26404.product.internalRefUUID.toString()), invoke(productPlant#26404.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#26404.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#26404.productionAspect)) null else createexternalrow(if (isnull(productPlant#26404.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#26404.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#26404.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#26404.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#26404.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#26404.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#26404.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(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(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#26404.salesPlant)) null else createexternalrow(if (isnull(productPlant#26404.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#26404.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#26404.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#26404.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(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#26418.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#26435)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#26714)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#26715, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#26716, 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#26339, 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(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#26378: org.apache.spark.sql.Row
(721) MapElements
Input [1]: [obj#26378]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@5081ce9e, obj#26383: org.apache.spark.sql.Row
(722) SerializeFromObject
Input [1]: [obj#26383]
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#26388, 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#26389, 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#26390, 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#26391]
(723) Exchange
Input [4]: [product#26388, plant#26389, dayBucketDemands#26390, pointInTimeDemands#26391]
Arguments: hashpartitioning(coalesce(plant#26389, ), isnull(plant#26389), coalesce(product#26388, ), isnull(product#26388), 10), ENSURE_REQUIREMENTS, [plan_id=121962]
(724) Sort
Input [4]: [product#26388, plant#26389, dayBucketDemands#26390, pointInTimeDemands#26391]
Arguments: [coalesce(plant#26389, ) ASC NULLS FIRST, isnull(plant#26389) ASC NULLS FIRST, coalesce(product#26388, ) ASC NULLS FIRST, isnull(product#26388) ASC NULLS FIRST], false, 0
(725) SortMergeJoin
Left keys [4]: [coalesce(plant#25912, ), isnull(plant#25912), coalesce(product#25911, ), isnull(product#25911)]
Right keys [4]: [coalesce(plant#26389, ), isnull(plant#26389), coalesce(product#26388, ), isnull(product#26388)]
Join type: LeftOuter
Join condition: None
(726) Project
Output [7]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, dayBucketDemands#26390, pointInTimeDemands#26391]
Input [9]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, product#26388, plant#26389, dayBucketDemands#26390, pointInTimeDemands#26391]
(727) Exchange
Input [7]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, dayBucketDemands#26390, pointInTimeDemands#26391]
Arguments: hashpartitioning(product#25911, plant#25912, 10), ENSURE_REQUIREMENTS, [plan_id=122291]
(728) Sort
Input [7]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, dayBucketDemands#26390, pointInTimeDemands#26391]
Arguments: [product#25911 ASC NULLS FIRST, plant#25912 ASC NULLS FIRST], false, 0
(729) InMemoryTableScan
Output [3]: [product#26759, plant#26758, openGoodsMovements#27136]
Arguments: [product#26759, plant#26758, openGoodsMovements#27136], [isnotnull(product#26759), isnotnull(plant#26758)]
(730) InMemoryRelation
Arguments: [product#26759, plant#26758, openGoodsMovements#27136], StorageLevel(disk, memory, 2 replicas)
(731) EmptyRelation
Output [3]: [product#26759, plant#26758, openGoodsMovements#27136]
Arguments: [plan_id=159334]
(732) ResultQueryStage
Output [3]: [product#26759, plant#26758, openGoodsMovements#27136]
Arguments: 110
(733) Scan parquet
Output [2]: [product#25911, plant#25912]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string>
(734) Filter
Input [2]: [product#25911, plant#25912]
Condition : (isnotnull(plant#25912) AND isnotnull(product#25911))
(735) Exchange
Input [2]: [product#25911, plant#25912]
Arguments: hashpartitioning(product#25911, plant#25912, 10), REPARTITION_BY_NUM, [plan_id=114667]
(736) Scan parquet
Output [4]: [plant#25918, product#25919, productionAspect#25921, systemId#25916]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(737) Project
Output [4]: [plant#25918.internalRefUUID AS _extract_internalRefUUID#27294, product#25919.internalRefUUID AS _extract_internalRefUUID#27291, productionAspect#25921.productMovementPlants.unitOfIssue.code AS _extract_code#27292, productionAspect#25921.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#27293]
Input [4]: [plant#25918, product#25919, productionAspect#25921, systemId#25916]
(738) Exchange
Input [4]: [_extract_internalRefUUID#27294, _extract_internalRefUUID#27291, _extract_code#27292, _extract_internalRefUUID#27293]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114395]
(739) Project
Output [4]: [_extract_code#27292, _extract_internalRefUUID#27293, _extract_internalRefUUID#27291, _extract_internalRefUUID#27294]
Input [4]: [_extract_internalRefUUID#27294, _extract_internalRefUUID#27291, _extract_code#27292, _extract_internalRefUUID#27293]
(740) BroadcastExchange
Input [4]: [_extract_code#27292, _extract_internalRefUUID#27293, _extract_internalRefUUID#27291, _extract_internalRefUUID#27294]
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=114791]
(741) BroadcastHashJoin
Left keys [4]: [coalesce(product#25911, ), isnull(product#25911), coalesce(plant#25912, ), isnull(plant#25912)]
Right keys [4]: [coalesce(_extract_internalRefUUID#27291, ), isnull(_extract_internalRefUUID#27291), coalesce(_extract_internalRefUUID#27294, ), isnull(_extract_internalRefUUID#27294)]
Join type: LeftOuter
Join condition: None
(742) Project
Output [4]: [product#25911, plant#25912, _extract_code#27292, _extract_internalRefUUID#27293]
Input [6]: [product#25911, plant#25912, _extract_code#27292, _extract_internalRefUUID#27293, _extract_internalRefUUID#27291, _extract_internalRefUUID#27294]
(743) Scan parquet
Output [2]: [internalUUID#25929, systemId#25928]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(744) Project
Output [1]: [internalUUID#25929]
Input [2]: [internalUUID#25929, systemId#25928]
(745) Exchange
Input [1]: [internalUUID#25929]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114401]
(746) BroadcastExchange
Input [1]: [internalUUID#25929]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=114795]
(747) BroadcastHashJoin
Left keys [2]: [coalesce(plant#25912, ), isnull(plant#25912)]
Right keys [2]: [coalesce(internalUUID#25929, ), isnull(internalUUID#25929)]
Join type: LeftOuter
Join condition: None
(748) Project
Output [4]: [product#25911, plant#25912, _extract_code#27292, _extract_internalRefUUID#27293]
Input [5]: [product#25911, plant#25912, _extract_code#27292, _extract_internalRefUUID#27293, internalUUID#25929]
(749) Scan parquet
Output [4]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951, systemId#25944]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(750) Filter
Input [4]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951, systemId#25944]
Condition : isnotnull(internalUUID#25945)
(751) Project
Output [3]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951]
Input [4]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951, systemId#25944]
(752) Exchange
Input [3]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114407]
(753) BroadcastExchange
Input [3]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=114799]
(754) BroadcastHashJoin
Left keys [1]: [product#25911]
Right keys [1]: [internalUUID#25945]
Join type: LeftOuter
Join condition: None
(755) Project
Output [3]: [product#25911, plant#25912, filter(unitOfMeasureConversions#25951, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#27292) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#27293)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#25949.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#25949.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#25957]
Input [7]: [product#25911, plant#25912, _extract_code#27292, _extract_internalRefUUID#27293, internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951]
(756) Generate
Input [3]: [product#25911, plant#25912, filteredUnitOfMeasureConversions#25957]
Arguments: explode(filteredUnitOfMeasureConversions#25957.quantityNumerator), [product#25911, plant#25912, filteredUnitOfMeasureConversions#25957], true, [quantityNumerator#25965]
(757) Project
Output [3]: [product#25911, plant#25912, filteredUnitOfMeasureConversions#25957.quantityDenominator AS _extract_quantityDenominator#27153]
Input [4]: [product#25911, plant#25912, filteredUnitOfMeasureConversions#25957, quantityNumerator#25965]
(758) Generate
Input [3]: [product#25911, plant#25912, _extract_quantityDenominator#27153]
Arguments: explode(_extract_quantityDenominator#27153), [product#25911, plant#25912], true, [quantityDenominator#25968]
(759) Project
Output [2]: [product#25911, plant#25912]
Input [3]: [product#25911, plant#25912, quantityDenominator#25968]
(760) Exchange
Input [2]: [product#25911, plant#25912]
Arguments: hashpartitioning(coalesce(plant#25912, ), isnull(plant#25912), coalesce(product#25911, ), isnull(product#25911), 10), ENSURE_REQUIREMENTS, [plan_id=114962]
(761) Sort
Input [2]: [product#25911, plant#25912]
Arguments: [coalesce(plant#25912, ) ASC NULLS FIRST, isnull(plant#25912) ASC NULLS FIRST, coalesce(product#25911, ) ASC NULLS FIRST, isnull(product#25911) ASC NULLS FIRST], false, 0
(762) Scan parquet
Output [3]: [product#26392, plant#26393, orderDateTime#26394]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(763) Exchange
Input [3]: [product#26392, plant#26393, orderDateTime#26394]
Arguments: hashpartitioning(product#26392, plant#26393, 10), REPARTITION_BY_NUM, [plan_id=114415]
(764) Scan parquet
Output [8]: [internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403, systemId#26396]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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,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>>>
(765) Project
Output [8]: [systemId#26396, internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403]
Input [8]: [internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403, systemId#26396]
(766) Exchange
Input [8]: [systemId#26396, internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114418]
(767) Project
Output [1]: [struct(systemId, systemId#26396, internalUUID, internalUUID#26397, plant, plant#26398, product, product#26399, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#26400, productionAspect, productionAspect#26401, salesPlant, salesPlant#26402, listing, listing#26403) AS productPlant#26404]
Input [8]: [systemId#26396, internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403]
(768) BroadcastExchange
Input [1]: [productPlant#26404]
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,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,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,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,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=114806]
(769) BroadcastHashJoin
Left keys [4]: [coalesce(product#26392, ), isnull(product#26392), coalesce(plant#26393, ), isnull(plant#26393)]
Right keys [4]: [coalesce(productPlant#26404.product.internalRefUUID, ), isnull(productPlant#26404.product.internalRefUUID), coalesce(productPlant#26404.plant.internalRefUUID, ), isnull(productPlant#26404.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(770) Scan parquet
Output [3]: [internalUUID#26406, address#26412, systemId#26405]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(771) Project
Output [2]: [internalUUID#26406, address#26412.timeZone.code AS timezonecode#26417]
Input [3]: [internalUUID#26406, address#26412, systemId#26405]
(772) Exchange
Input [2]: [internalUUID#26406, timezonecode#26417]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114423]
(773) BroadcastExchange
Input [2]: [internalUUID#26406, timezonecode#26417]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=114809]
(774) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26393, ), isnull(plant#26393)]
Right keys [2]: [coalesce(internalUUID#26406, ), isnull(internalUUID#26406)]
Join type: LeftOuter
Join condition: None
(775) Project
Output [5]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, CASE WHEN isnotnull(timezonecode#26417) THEN timezonecode#26417 ELSE UTC END AS timezonecode#26418]
Input [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, internalUUID#26406, timezonecode#26417]
(776) Scan parquet
Output [4]: [internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426, systemId#26419]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(777) Filter
Input [4]: [internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426, systemId#26419]
Condition : isnotnull(internalUUID#26420)
(778) Project
Output [3]: [internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426]
Input [4]: [internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426, systemId#26419]
(779) Exchange
Input [3]: [internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114429]
(780) BroadcastExchange
Input [3]: [internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=114813]
(781) BroadcastHashJoin
Left keys [1]: [product#26392]
Right keys [1]: [internalUUID#26420]
Join type: LeftOuter
Join condition: None
(782) Project
Output [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, filter(unitOfMeasureConversions#26426, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#26404.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#26404.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26424.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26424.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26431]
Input [8]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426]
(783) Project
Output [7]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, filteredUnitOfMeasureConversions#26431.quantityDenominator AS _extract_quantityDenominator#27211, filteredUnitOfMeasureConversions#26431.quantityNumerator AS _extract_quantityNumerator#27212]
Input [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, filteredUnitOfMeasureConversions#26431]
(784) Generate
Input [7]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, _extract_quantityDenominator#27211, _extract_quantityNumerator#27212]
Arguments: explode(_extract_quantityNumerator#27212), [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, _extract_quantityDenominator#27211], true, [quantityNumerator#26432]
(785) Generate
Input [7]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, _extract_quantityDenominator#27211, quantityNumerator#26432]
Arguments: explode(_extract_quantityDenominator#27211), [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, quantityNumerator#26432], true, [quantityDenominator#26433]
(786) Project
Output [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, (cast(quantityNumerator#26432 as double) / cast(quantityDenominator#26433 as double)) AS outboundUnit#26434]
Input [7]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, quantityNumerator#26432, quantityDenominator#26433]
(787) Project
Output [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, CASE WHEN (isnull(outboundUnit#26434) OR (outboundUnit#26434 <= 0.0)) THEN 1.0 ELSE outboundUnit#26434 END AS outboundUnit#26435]
Input [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26434]
(788) Sort
Input [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435]
Arguments: [product#26392 ASC NULLS FIRST, plant#26393 ASC NULLS FIRST], false, 0
(789) Scan parquet
Output [6]: [internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441, systemId#26436]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(790) Filter
Input [6]: [internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441, systemId#26436]
Condition : (isnotnull(plant#26439.internalRefUUID) AND isnotnull(product#26438.internalRefUUID))
(791) Project
Output [6]: [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441]
Input [6]: [internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441, systemId#26436]
(792) Exchange
Input [6]: [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114440]
(793) BroadcastExchange
Input [6]: [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441]
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=114845]
(794) Scan parquet
Output [2]: [marketUnit#26442, distributionCenters#26448]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(795) Filter
Input [2]: [marketUnit#26442, distributionCenters#26448]
Condition : (((marketUnit#26442 <=> DIP_1691) AND (size(distributionCenters#26448, true) > 0)) AND isnotnull(distributionCenters#26448))
(796) Project
Output [1]: [distributionCenters#26448]
Input [2]: [marketUnit#26442, distributionCenters#26448]
(797) Exchange
Input [1]: [distributionCenters#26448]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114444]
(798) Generate
Input [1]: [distributionCenters#26448]
Arguments: explode(distributionCenters#26448), false, [distributionCenters#26464]
(799) Filter
Input [1]: [distributionCenters#26464]
Condition : (((size(distributionCenters#26464.storageLocations, true) > 0) AND isnotnull(distributionCenters#26464.storageLocations)) AND isnotnull(distributionCenters#26464.internalRefUUID))
(800) Project
Output [2]: [distributionCenters#26464.internalRefUUID AS _extract_internalRefUUID#27179, distributionCenters#26464.storageLocations AS _extract_storageLocations#27180]
Input [1]: [distributionCenters#26464]
(801) Generate
Input [2]: [_extract_internalRefUUID#27179, _extract_storageLocations#27180]
Arguments: explode(_extract_storageLocations#27180), [_extract_internalRefUUID#27179], false, [storageLocations#26465]
(802) Project
Output [3]: [_extract_internalRefUUID#27179 AS plantUuid#26467, storageLocations#26465.id AS storageLocId#26468, storageLocations#26465.internalRefUUID AS storageLocUuid#26469]
Input [2]: [_extract_internalRefUUID#27179, storageLocations#26465]
(803) BroadcastExchange
Input [3]: [plantUuid#26467, storageLocId#26468, storageLocUuid#26469]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=114841]
(804) Scan parquet
Output [2]: [product#26470, plant#26471]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(805) Filter
Input [2]: [product#26470, plant#26471]
Condition : isnotnull(plant#26471)
(806) Exchange
Input [2]: [product#26470, plant#26471]
Arguments: hashpartitioning(product#26470, plant#26471, 10), REPARTITION_BY_NUM, [plan_id=114678]
(807) Scan parquet
Output [4]: [plant#26476, product#26477, productionAspect#26479, systemId#26474]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(808) Project
Output [4]: [plant#26476.internalRefUUID AS _extract_internalRefUUID#27297, product#26477.internalRefUUID AS _extract_internalRefUUID#27298, productionAspect#26479.productMovementPlants.unitOfIssue.code AS _extract_code#27295, productionAspect#26479.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#27296]
Input [4]: [plant#26476, product#26477, productionAspect#26479, systemId#26474]
(809) Exchange
Input [4]: [_extract_internalRefUUID#27297, _extract_internalRefUUID#27298, _extract_code#27295, _extract_internalRefUUID#27296]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114456]
(810) Project
Output [4]: [_extract_code#27295, _extract_internalRefUUID#27296, _extract_internalRefUUID#27298, _extract_internalRefUUID#27297]
Input [4]: [_extract_internalRefUUID#27297, _extract_internalRefUUID#27298, _extract_code#27295, _extract_internalRefUUID#27296]
(811) BroadcastExchange
Input [4]: [_extract_code#27295, _extract_internalRefUUID#27296, _extract_internalRefUUID#27298, _extract_internalRefUUID#27297]
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=114821]
(812) BroadcastHashJoin
Left keys [4]: [coalesce(product#26470, ), isnull(product#26470), coalesce(plant#26471, ), isnull(plant#26471)]
Right keys [4]: [coalesce(_extract_internalRefUUID#27298, ), isnull(_extract_internalRefUUID#27298), coalesce(_extract_internalRefUUID#27297, ), isnull(_extract_internalRefUUID#27297)]
Join type: LeftOuter
Join condition: None
(813) Project
Output [4]: [product#26470, plant#26471, _extract_code#27295, _extract_internalRefUUID#27296]
Input [6]: [product#26470, plant#26471, _extract_code#27295, _extract_internalRefUUID#27296, _extract_internalRefUUID#27298, _extract_internalRefUUID#27297]
(814) Scan parquet
Output [2]: [internalUUID#26484, systemId#26483]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(815) Project
Output [1]: [internalUUID#26484]
Input [2]: [internalUUID#26484, systemId#26483]
(816) Exchange
Input [1]: [internalUUID#26484]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114462]
(817) BroadcastExchange
Input [1]: [internalUUID#26484]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=114825]
(818) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26471, ), isnull(plant#26471)]
Right keys [2]: [coalesce(internalUUID#26484, ), isnull(internalUUID#26484)]
Join type: LeftOuter
Join condition: None
(819) Project
Output [4]: [product#26470, plant#26471, _extract_code#27295, _extract_internalRefUUID#27296]
Input [5]: [product#26470, plant#26471, _extract_code#27295, _extract_internalRefUUID#27296, internalUUID#26484]
(820) Scan parquet
Output [4]: [internalUUID#26498, baseUnitOfMeasure#26502, unitOfMeasureConversions#26504, systemId#26497]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(821) Filter
Input [4]: [internalUUID#26498, baseUnitOfMeasure#26502, unitOfMeasureConversions#26504, systemId#26497]
Condition : isnotnull(internalUUID#26498)
(822) Project
Output [3]: [internalUUID#26498, baseUnitOfMeasure#26502, unitOfMeasureConversions#26504]
Input [4]: [internalUUID#26498, baseUnitOfMeasure#26502, unitOfMeasureConversions#26504, systemId#26497]
(823) Exchange
Input [3]: [internalUUID#26498, baseUnitOfMeasure#26502, unitOfMeasureConversions#26504]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114468]
(824) BroadcastExchange
Input [3]: [internalUUID#26498, baseUnitOfMeasure#26502, unitOfMeasureConversions#26504]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=114829]
(825) BroadcastHashJoin
Left keys [1]: [product#26470]
Right keys [1]: [internalUUID#26498]
Join type: LeftOuter
Join condition: None
(826) Project
Output [2]: [plant#26471, filter(unitOfMeasureConversions#26504, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#27295) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#27296)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26502.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26502.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26509]
Input [7]: [product#26470, plant#26471, _extract_code#27295, _extract_internalRefUUID#27296, internalUUID#26498, baseUnitOfMeasure#26502, unitOfMeasureConversions#26504]
(827) Generate
Input [2]: [plant#26471, filteredUnitOfMeasureConversions#26509]
Arguments: explode(filteredUnitOfMeasureConversions#26509.quantityNumerator), [plant#26471, filteredUnitOfMeasureConversions#26509], true, [quantityNumerator#26510]
(828) Project
Output [2]: [plant#26471, filteredUnitOfMeasureConversions#26509.quantityDenominator AS _extract_quantityDenominator#27181]
Input [3]: [plant#26471, filteredUnitOfMeasureConversions#26509, quantityNumerator#26510]
(829) Generate
Input [2]: [plant#26471, _extract_quantityDenominator#27181]
Arguments: explode(_extract_quantityDenominator#27181), [plant#26471], true, [quantityDenominator#26511]
(830) Project
Output [1]: [plant#26471]
Input [2]: [plant#26471, quantityDenominator#26511]
(831) HashAggregate
Input [1]: [plant#26471]
Keys [1]: [plant#26471]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26471]
(832) Exchange
Input [1]: [plant#26471]
Arguments: hashpartitioning(plant#26471, 10), ENSURE_REQUIREMENTS, [plan_id=114838]
(833) HashAggregate
Input [1]: [plant#26471]
Keys [1]: [plant#26471]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26471]
(834) BroadcastHashJoin
Left keys [1]: [plantUuid#26467]
Right keys [1]: [plant#26471]
Join type: Inner
Join condition: None
(835) Project
Output [3]: [plantUuid#26467, storageLocId#26468, storageLocUuid#26469]
Input [4]: [plantUuid#26467, storageLocId#26468, storageLocUuid#26469, plant#26471]
(836) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26439.internalRefUUID, ), isnull(plant#26439.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#26467, ), isnull(plantUuid#26467)]
Join type: Inner
Join condition: None
(837) Generate
Input [9]: [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441, plantUuid#26467, storageLocId#26468, storageLocUuid#26469]
Arguments: explode(filter(stockQuantities#26441, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#26469) AND (lambda x#26016.storageLocation.Id = storageLocId#26468)), lambda x#26016, false))), [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, plantUuid#26467], false, [stockQuantity#26514]
(838) ObjectHashAggregate
Input [7]: [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, plantUuid#26467, stockQuantity#26514]
Keys [5]: [plantUuid#26467, internalUUID#26437, plant#26439, product#26438, systemId#26436]
Functions [2]: [partial_first(calculationDateTime#26440, false), partial_collect_list(stockQuantity#26514, 0, 0)]
Aggregate Attributes [3]: [first#29075, valueSet#29076, buf#29077]
Results [8]: [plantUuid#26467, internalUUID#26437, plant#26439, product#26438, systemId#26436, first#29078, valueSet#29079, buf#29080]
(839) ObjectHashAggregate
Input [8]: [plantUuid#26467, internalUUID#26437, plant#26439, product#26438, systemId#26436, first#29078, valueSet#29079, buf#29080]
Keys [5]: [plantUuid#26467, internalUUID#26437, plant#26439, product#26438, systemId#26436]
Functions [2]: [first(calculationDateTime#26440, false), collect_list(stockQuantity#26514, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#26440)()#26031, collect_list(stockQuantity#26514, 0, 0)#26032]
Results [4]: [product#26438, plant#26439, first(calculationDateTime#26440)()#26031 AS calculationDateTime#26515, collect_list(stockQuantity#26514, 0, 0)#26032 AS stockQuantities#26516]
(840) Filter
Input [4]: [product#26438, plant#26439, calculationDateTime#26515, stockQuantities#26516]
Condition : ((size(stockQuantities#26516, true) > 0) AND isnotnull(calculationDateTime#26515))
(841) Generate
Input [4]: [product#26438, plant#26439, calculationDateTime#26515, stockQuantities#26516]
Arguments: explode(stockQuantities#26516), [product#26438, plant#26439, calculationDateTime#26515], false, [stockQuantity#26517]
(842) Filter
Input [4]: [product#26438, plant#26439, calculationDateTime#26515, stockQuantity#26517]
Condition : (((isnotnull(stockQuantity#26517.specialStockIndicator.code) AND isnotnull(stockQuantity#26517.stockType.code)) AND (stockQuantity#26517.specialStockIndicator.code = )) AND (stockQuantity#26517.stockType.code = 01))
(843) Project
Output [5]: [plant#26439.internalRefUUID AS plantUuid#26519, product#26438.internalRefUUID AS productUuid#26521, calculationDateTime#26515, stockQuantity#26517.storagelocation.id AS storageLocId#26522, stockQuantity#26517.quantity.measure AS quantity#26524]
Input [4]: [product#26438, plant#26439, calculationDateTime#26515, stockQuantity#26517]
(844) Exchange
Input [5]: [plantUuid#26519, productUuid#26521, calculationDateTime#26515, storageLocId#26522, quantity#26524]
Arguments: hashpartitioning(productUuid#26521, plantUuid#26519, 10), ENSURE_REQUIREMENTS, [plan_id=114871]
(845) Sort
Input [5]: [plantUuid#26519, productUuid#26521, calculationDateTime#26515, storageLocId#26522, quantity#26524]
Arguments: [productUuid#26521 ASC NULLS FIRST, plantUuid#26519 ASC NULLS FIRST], false, 0
(846) Scan parquet
Output [3]: [product#26527, plant#26528, orderDateTime#26529]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(847) Filter
Input [3]: [product#26527, plant#26528, orderDateTime#26529]
Condition : ((isnotnull(orderDateTime#26529) AND isnotnull(plant#26528)) AND isnotnull(product#26527))
(848) Exchange
Input [3]: [product#26527, plant#26528, orderDateTime#26529]
Arguments: hashpartitioning(product#26527, plant#26528, 10), REPARTITION_BY_NUM, [plan_id=114701]
(849) Scan parquet
Output [4]: [plant#26533, product#26534, productionAspect#26536, systemId#26531]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(850) Project
Output [4]: [plant#26533.internalRefUUID AS _extract_internalRefUUID#27299, product#26534.internalRefUUID AS _extract_internalRefUUID#27300, productionAspect#26536.productMovementPlants.unitOfIssue.code AS _extract_code#27301, productionAspect#26536.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#27302]
Input [4]: [plant#26533, product#26534, productionAspect#26536, systemId#26531]
(851) Exchange
Input [4]: [_extract_internalRefUUID#27299, _extract_internalRefUUID#27300, _extract_code#27301, _extract_internalRefUUID#27302]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114493]
(852) Project
Output [4]: [_extract_code#27301, _extract_internalRefUUID#27302, _extract_internalRefUUID#27300, _extract_internalRefUUID#27299]
Input [4]: [_extract_internalRefUUID#27299, _extract_internalRefUUID#27300, _extract_code#27301, _extract_internalRefUUID#27302]
(853) BroadcastExchange
Input [4]: [_extract_code#27301, _extract_internalRefUUID#27302, _extract_internalRefUUID#27300, _extract_internalRefUUID#27299]
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=114854]
(854) BroadcastHashJoin
Left keys [4]: [coalesce(product#26527, ), isnull(product#26527), coalesce(plant#26528, ), isnull(plant#26528)]
Right keys [4]: [coalesce(_extract_internalRefUUID#27300, ), isnull(_extract_internalRefUUID#27300), coalesce(_extract_internalRefUUID#27299, ), isnull(_extract_internalRefUUID#27299)]
Join type: LeftOuter
Join condition: None
(855) Project
Output [5]: [product#26527, plant#26528, orderDateTime#26529, _extract_code#27301, _extract_internalRefUUID#27302]
Input [7]: [product#26527, plant#26528, orderDateTime#26529, _extract_code#27301, _extract_internalRefUUID#27302, _extract_internalRefUUID#27300, _extract_internalRefUUID#27299]
(856) Scan parquet
Output [2]: [internalUUID#26541, systemId#26540]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(857) Project
Output [1]: [internalUUID#26541]
Input [2]: [internalUUID#26541, systemId#26540]
(858) Exchange
Input [1]: [internalUUID#26541]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114499]
(859) BroadcastExchange
Input [1]: [internalUUID#26541]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=114858]
(860) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26528, ), isnull(plant#26528)]
Right keys [2]: [coalesce(internalUUID#26541, ), isnull(internalUUID#26541)]
Join type: LeftOuter
Join condition: None
(861) Project
Output [5]: [product#26527, plant#26528, orderDateTime#26529, _extract_code#27301, _extract_internalRefUUID#27302]
Input [6]: [product#26527, plant#26528, orderDateTime#26529, _extract_code#27301, _extract_internalRefUUID#27302, internalUUID#26541]
(862) Scan parquet
Output [4]: [internalUUID#26555, baseUnitOfMeasure#26559, unitOfMeasureConversions#26561, systemId#26554]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(863) Filter
Input [4]: [internalUUID#26555, baseUnitOfMeasure#26559, unitOfMeasureConversions#26561, systemId#26554]
Condition : isnotnull(internalUUID#26555)
(864) Project
Output [3]: [internalUUID#26555, baseUnitOfMeasure#26559, unitOfMeasureConversions#26561]
Input [4]: [internalUUID#26555, baseUnitOfMeasure#26559, unitOfMeasureConversions#26561, systemId#26554]
(865) Exchange
Input [3]: [internalUUID#26555, baseUnitOfMeasure#26559, unitOfMeasureConversions#26561]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114505]
(866) BroadcastExchange
Input [3]: [internalUUID#26555, baseUnitOfMeasure#26559, unitOfMeasureConversions#26561]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=114862]
(867) BroadcastHashJoin
Left keys [1]: [product#26527]
Right keys [1]: [internalUUID#26555]
Join type: LeftOuter
Join condition: None
(868) Project
Output [4]: [product#26527, plant#26528, orderDateTime#26529, filter(unitOfMeasureConversions#26561, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#27301) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#27302)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26559.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26559.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26566]
Input [8]: [product#26527, plant#26528, orderDateTime#26529, _extract_code#27301, _extract_internalRefUUID#27302, internalUUID#26555, baseUnitOfMeasure#26559, unitOfMeasureConversions#26561]
(869) Generate
Input [4]: [product#26527, plant#26528, orderDateTime#26529, filteredUnitOfMeasureConversions#26566]
Arguments: explode(filteredUnitOfMeasureConversions#26566.quantityNumerator), [product#26527, plant#26528, orderDateTime#26529, filteredUnitOfMeasureConversions#26566], true, [quantityNumerator#26567]
(870) Project
Output [4]: [product#26527, plant#26528, orderDateTime#26529, filteredUnitOfMeasureConversions#26566.quantityDenominator AS _extract_quantityDenominator#27185]
Input [5]: [product#26527, plant#26528, orderDateTime#26529, filteredUnitOfMeasureConversions#26566, quantityNumerator#26567]
(871) Generate
Input [4]: [product#26527, plant#26528, orderDateTime#26529, _extract_quantityDenominator#27185]
Arguments: explode(_extract_quantityDenominator#27185), [product#26527, plant#26528, orderDateTime#26529], true, [quantityDenominator#26568]
(872) Project
Output [3]: [product#26527, plant#26528, orderDateTime#26529]
Input [4]: [product#26527, plant#26528, orderDateTime#26529, quantityDenominator#26568]
(873) Sort
Input [3]: [product#26527, plant#26528, orderDateTime#26529]
Arguments: [product#26527 ASC NULLS FIRST, plant#26528 ASC NULLS FIRST], false, 0
(874) SortMergeJoin
Left keys [2]: [productUuid#26521, plantUuid#26519]
Right keys [2]: [product#26527, plant#26528]
Join type: Inner
Join condition: (calculationDateTime#26515 <= orderDateTime#26529)
(875) Project
Output [5]: [plantUuid#26519 AS plant#26571, productUuid#26521 AS product#26572, storageLocId#26522, calculationDateTime#26515, quantity#26524]
Input [8]: [plantUuid#26519, productUuid#26521, calculationDateTime#26515, storageLocId#26522, quantity#26524, product#26527, plant#26528, orderDateTime#26529]
(876) Exchange
Input [5]: [plant#26571, product#26572, storageLocId#26522, calculationDateTime#26515, quantity#26524]
Arguments: hashpartitioning(coalesce(plant#26571, ), isnull(plant#26571), coalesce(product#26572, ), isnull(product#26572), coalesce(storageLocId#26522, ), isnull(storageLocId#26522), coalesce(calculationDateTime#26515, 1970-01-01 00:00:00), isnull(calculationDateTime#26515), 10), ENSURE_REQUIREMENTS, [plan_id=114935]
(877) Sort
Input [5]: [plant#26571, product#26572, storageLocId#26522, calculationDateTime#26515, quantity#26524]
Arguments: [coalesce(plant#26571, ) ASC NULLS FIRST, isnull(plant#26571) ASC NULLS FIRST, coalesce(product#26572, ) ASC NULLS FIRST, isnull(product#26572) ASC NULLS FIRST, coalesce(storageLocId#26522, ) ASC NULLS FIRST, isnull(storageLocId#26522) ASC NULLS FIRST, coalesce(calculationDateTime#26515, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#26515) ASC NULLS FIRST], false, 0
(878) Scan parquet
Output [6]: [internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578, systemId#26573]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(879) Filter
Input [6]: [internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578, systemId#26573]
Condition : (isnotnull(plant#26576.internalRefUUID) AND isnotnull(product#26575.internalRefUUID))
(880) Project
Output [6]: [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578]
Input [6]: [internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578, systemId#26573]
(881) Exchange
Input [6]: [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114517]
(882) BroadcastExchange
Input [6]: [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578]
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=114900]
(883) Scan parquet
Output [2]: [marketUnit#26579, distributionCenters#26585]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(884) Filter
Input [2]: [marketUnit#26579, distributionCenters#26585]
Condition : (((marketUnit#26579 <=> DIP_1691) AND (size(distributionCenters#26585, true) > 0)) AND isnotnull(distributionCenters#26585))
(885) Project
Output [1]: [distributionCenters#26585]
Input [2]: [marketUnit#26579, distributionCenters#26585]
(886) Exchange
Input [1]: [distributionCenters#26585]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114521]
(887) Generate
Input [1]: [distributionCenters#26585]
Arguments: explode(distributionCenters#26585), false, [distributionCenters#26601]
(888) Filter
Input [1]: [distributionCenters#26601]
Condition : (((size(distributionCenters#26601.storageLocations, true) > 0) AND isnotnull(distributionCenters#26601.storageLocations)) AND isnotnull(distributionCenters#26601.internalRefUUID))
(889) Project
Output [2]: [distributionCenters#26601.internalRefUUID AS _extract_internalRefUUID#27189, distributionCenters#26601.storageLocations AS _extract_storageLocations#27190]
Input [1]: [distributionCenters#26601]
(890) Generate
Input [2]: [_extract_internalRefUUID#27189, _extract_storageLocations#27190]
Arguments: explode(_extract_storageLocations#27190), [_extract_internalRefUUID#27189], false, [storageLocations#26602]
(891) Project
Output [3]: [_extract_internalRefUUID#27189 AS plantUuid#26604, storageLocations#26602.id AS storageLocId#26605, storageLocations#26602.internalRefUUID AS storageLocUuid#26606]
Input [2]: [_extract_internalRefUUID#27189, storageLocations#26602]
(892) BroadcastExchange
Input [3]: [plantUuid#26604, storageLocId#26605, storageLocUuid#26606]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=114896]
(893) Scan parquet
Output [2]: [product#26607, plant#26608]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(894) Filter
Input [2]: [product#26607, plant#26608]
Condition : isnotnull(plant#26608)
(895) Exchange
Input [2]: [product#26607, plant#26608]
Arguments: hashpartitioning(product#26607, plant#26608, 10), REPARTITION_BY_NUM, [plan_id=114714]
(896) Scan parquet
Output [4]: [plant#26613, product#26614, productionAspect#26616, systemId#26611]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(897) Project
Output [4]: [plant#26613.internalRefUUID AS _extract_internalRefUUID#27303, product#26614.internalRefUUID AS _extract_internalRefUUID#27304, productionAspect#26616.productMovementPlants.unitOfIssue.code AS _extract_code#27305, productionAspect#26616.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#27306]
Input [4]: [plant#26613, product#26614, productionAspect#26616, systemId#26611]
(898) Exchange
Input [4]: [_extract_internalRefUUID#27303, _extract_internalRefUUID#27304, _extract_code#27305, _extract_internalRefUUID#27306]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114533]
(899) Project
Output [4]: [_extract_code#27305, _extract_internalRefUUID#27306, _extract_internalRefUUID#27304, _extract_internalRefUUID#27303]
Input [4]: [_extract_internalRefUUID#27303, _extract_internalRefUUID#27304, _extract_code#27305, _extract_internalRefUUID#27306]
(900) BroadcastExchange
Input [4]: [_extract_code#27305, _extract_internalRefUUID#27306, _extract_internalRefUUID#27304, _extract_internalRefUUID#27303]
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=114876]
(901) BroadcastHashJoin
Left keys [4]: [coalesce(product#26607, ), isnull(product#26607), coalesce(plant#26608, ), isnull(plant#26608)]
Right keys [4]: [coalesce(_extract_internalRefUUID#27304, ), isnull(_extract_internalRefUUID#27304), coalesce(_extract_internalRefUUID#27303, ), isnull(_extract_internalRefUUID#27303)]
Join type: LeftOuter
Join condition: None
(902) Project
Output [4]: [product#26607, plant#26608, _extract_code#27305, _extract_internalRefUUID#27306]
Input [6]: [product#26607, plant#26608, _extract_code#27305, _extract_internalRefUUID#27306, _extract_internalRefUUID#27304, _extract_internalRefUUID#27303]
(903) Scan parquet
Output [2]: [internalUUID#26621, systemId#26620]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(904) Project
Output [1]: [internalUUID#26621]
Input [2]: [internalUUID#26621, systemId#26620]
(905) Exchange
Input [1]: [internalUUID#26621]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114539]
(906) BroadcastExchange
Input [1]: [internalUUID#26621]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=114880]
(907) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26608, ), isnull(plant#26608)]
Right keys [2]: [coalesce(internalUUID#26621, ), isnull(internalUUID#26621)]
Join type: LeftOuter
Join condition: None
(908) Project
Output [4]: [product#26607, plant#26608, _extract_code#27305, _extract_internalRefUUID#27306]
Input [5]: [product#26607, plant#26608, _extract_code#27305, _extract_internalRefUUID#27306, internalUUID#26621]
(909) Scan parquet
Output [4]: [internalUUID#26635, baseUnitOfMeasure#26639, unitOfMeasureConversions#26641, systemId#26634]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(910) Filter
Input [4]: [internalUUID#26635, baseUnitOfMeasure#26639, unitOfMeasureConversions#26641, systemId#26634]
Condition : isnotnull(internalUUID#26635)
(911) Project
Output [3]: [internalUUID#26635, baseUnitOfMeasure#26639, unitOfMeasureConversions#26641]
Input [4]: [internalUUID#26635, baseUnitOfMeasure#26639, unitOfMeasureConversions#26641, systemId#26634]
(912) Exchange
Input [3]: [internalUUID#26635, baseUnitOfMeasure#26639, unitOfMeasureConversions#26641]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114545]
(913) BroadcastExchange
Input [3]: [internalUUID#26635, baseUnitOfMeasure#26639, unitOfMeasureConversions#26641]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=114884]
(914) BroadcastHashJoin
Left keys [1]: [product#26607]
Right keys [1]: [internalUUID#26635]
Join type: LeftOuter
Join condition: None
(915) Project
Output [2]: [plant#26608, filter(unitOfMeasureConversions#26641, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#27305) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#27306)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26639.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26639.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26646]
Input [7]: [product#26607, plant#26608, _extract_code#27305, _extract_internalRefUUID#27306, internalUUID#26635, baseUnitOfMeasure#26639, unitOfMeasureConversions#26641]
(916) Generate
Input [2]: [plant#26608, filteredUnitOfMeasureConversions#26646]
Arguments: explode(filteredUnitOfMeasureConversions#26646.quantityNumerator), [plant#26608, filteredUnitOfMeasureConversions#26646], true, [quantityNumerator#26647]
(917) Project
Output [2]: [plant#26608, filteredUnitOfMeasureConversions#26646.quantityDenominator AS _extract_quantityDenominator#27191]
Input [3]: [plant#26608, filteredUnitOfMeasureConversions#26646, quantityNumerator#26647]
(918) Generate
Input [2]: [plant#26608, _extract_quantityDenominator#27191]
Arguments: explode(_extract_quantityDenominator#27191), [plant#26608], true, [quantityDenominator#26648]
(919) Project
Output [1]: [plant#26608]
Input [2]: [plant#26608, quantityDenominator#26648]
(920) HashAggregate
Input [1]: [plant#26608]
Keys [1]: [plant#26608]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26608]
(921) Exchange
Input [1]: [plant#26608]
Arguments: hashpartitioning(plant#26608, 10), ENSURE_REQUIREMENTS, [plan_id=114893]
(922) HashAggregate
Input [1]: [plant#26608]
Keys [1]: [plant#26608]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26608]
(923) BroadcastHashJoin
Left keys [1]: [plantUuid#26604]
Right keys [1]: [plant#26608]
Join type: Inner
Join condition: None
(924) Project
Output [3]: [plantUuid#26604, storageLocId#26605, storageLocUuid#26606]
Input [4]: [plantUuid#26604, storageLocId#26605, storageLocUuid#26606, plant#26608]
(925) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26576.internalRefUUID, ), isnull(plant#26576.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#26604, ), isnull(plantUuid#26604)]
Join type: Inner
Join condition: None
(926) Generate
Input [9]: [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578, plantUuid#26604, storageLocId#26605, storageLocUuid#26606]
Arguments: explode(filter(stockQuantities#26578, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#26606) AND (lambda x#26016.storageLocation.Id = storageLocId#26605)), lambda x#26016, false))), [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, plantUuid#26604], false, [stockQuantity#26651]
(927) ObjectHashAggregate
Input [7]: [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, plantUuid#26604, stockQuantity#26651]
Keys [5]: [plantUuid#26604, internalUUID#26574, plant#26576, product#26575, systemId#26573]
Functions [2]: [partial_first(calculationDateTime#26577, false), partial_collect_list(stockQuantity#26651, 0, 0)]
Aggregate Attributes [3]: [first#29083, valueSet#29084, buf#29085]
Results [8]: [plantUuid#26604, internalUUID#26574, plant#26576, product#26575, systemId#26573, first#29086, valueSet#29087, buf#29088]
(928) ObjectHashAggregate
Input [8]: [plantUuid#26604, internalUUID#26574, plant#26576, product#26575, systemId#26573, first#29086, valueSet#29087, buf#29088]
Keys [5]: [plantUuid#26604, internalUUID#26574, plant#26576, product#26575, systemId#26573]
Functions [2]: [first(calculationDateTime#26577, false), collect_list(stockQuantity#26651, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#26577)()#26031, collect_list(stockQuantity#26651, 0, 0)#26032]
Results [4]: [product#26575, plant#26576, first(calculationDateTime#26577)()#26031 AS calculationDateTime#26652, collect_list(stockQuantity#26651, 0, 0)#26032 AS stockQuantities#26653]
(929) Filter
Input [4]: [product#26575, plant#26576, calculationDateTime#26652, stockQuantities#26653]
Condition : ((size(stockQuantities#26653, true) > 0) AND isnotnull(calculationDateTime#26652))
(930) Generate
Input [4]: [product#26575, plant#26576, calculationDateTime#26652, stockQuantities#26653]
Arguments: explode(stockQuantities#26653), [product#26575, plant#26576, calculationDateTime#26652], false, [stockQuantity#26654]
(931) Filter
Input [4]: [product#26575, plant#26576, calculationDateTime#26652, stockQuantity#26654]
Condition : (((isnotnull(stockQuantity#26654.specialStockIndicator.code) AND isnotnull(stockQuantity#26654.stockType.code)) AND (stockQuantity#26654.specialStockIndicator.code = )) AND (stockQuantity#26654.stockType.code = 01))
(932) Project
Output [4]: [plant#26576.internalRefUUID AS plantUuid#26656, product#26575.internalRefUUID AS productUuid#26658, calculationDateTime#26652, stockQuantity#26654.storagelocation.id AS storageLocId#26659]
Input [4]: [product#26575, plant#26576, calculationDateTime#26652, stockQuantity#26654]
(933) Exchange
Input [4]: [plantUuid#26656, productUuid#26658, calculationDateTime#26652, storageLocId#26659]
Arguments: hashpartitioning(productUuid#26658, plantUuid#26656, 10), ENSURE_REQUIREMENTS, [plan_id=114926]
(934) Sort
Input [4]: [plantUuid#26656, productUuid#26658, calculationDateTime#26652, storageLocId#26659]
Arguments: [productUuid#26658 ASC NULLS FIRST, plantUuid#26656 ASC NULLS FIRST], false, 0
(935) Scan parquet
Output [3]: [product#26664, plant#26665, orderDateTime#26666]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(936) Filter
Input [3]: [product#26664, plant#26665, orderDateTime#26666]
Condition : ((isnotnull(orderDateTime#26666) AND isnotnull(plant#26665)) AND isnotnull(product#26664))
(937) Exchange
Input [3]: [product#26664, plant#26665, orderDateTime#26666]
Arguments: hashpartitioning(product#26664, plant#26665, 10), REPARTITION_BY_NUM, [plan_id=114737]
(938) Scan parquet
Output [4]: [plant#26670, product#26671, productionAspect#26673, systemId#26668]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(939) Project
Output [4]: [plant#26670.internalRefUUID AS _extract_internalRefUUID#27309, product#26671.internalRefUUID AS _extract_internalRefUUID#27310, productionAspect#26673.productMovementPlants.unitOfIssue.code AS _extract_code#27307, productionAspect#26673.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#27308]
Input [4]: [plant#26670, product#26671, productionAspect#26673, systemId#26668]
(940) Exchange
Input [4]: [_extract_internalRefUUID#27309, _extract_internalRefUUID#27310, _extract_code#27307, _extract_internalRefUUID#27308]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114570]
(941) Project
Output [4]: [_extract_code#27307, _extract_internalRefUUID#27308, _extract_internalRefUUID#27310, _extract_internalRefUUID#27309]
Input [4]: [_extract_internalRefUUID#27309, _extract_internalRefUUID#27310, _extract_code#27307, _extract_internalRefUUID#27308]
(942) BroadcastExchange
Input [4]: [_extract_code#27307, _extract_internalRefUUID#27308, _extract_internalRefUUID#27310, _extract_internalRefUUID#27309]
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=114909]
(943) BroadcastHashJoin
Left keys [4]: [coalesce(product#26664, ), isnull(product#26664), coalesce(plant#26665, ), isnull(plant#26665)]
Right keys [4]: [coalesce(_extract_internalRefUUID#27310, ), isnull(_extract_internalRefUUID#27310), coalesce(_extract_internalRefUUID#27309, ), isnull(_extract_internalRefUUID#27309)]
Join type: LeftOuter
Join condition: None
(944) Project
Output [5]: [product#26664, plant#26665, orderDateTime#26666, _extract_code#27307, _extract_internalRefUUID#27308]
Input [7]: [product#26664, plant#26665, orderDateTime#26666, _extract_code#27307, _extract_internalRefUUID#27308, _extract_internalRefUUID#27310, _extract_internalRefUUID#27309]
(945) Scan parquet
Output [2]: [internalUUID#26678, systemId#26677]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(946) Project
Output [1]: [internalUUID#26678]
Input [2]: [internalUUID#26678, systemId#26677]
(947) Exchange
Input [1]: [internalUUID#26678]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114576]
(948) BroadcastExchange
Input [1]: [internalUUID#26678]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=114913]
(949) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26665, ), isnull(plant#26665)]
Right keys [2]: [coalesce(internalUUID#26678, ), isnull(internalUUID#26678)]
Join type: LeftOuter
Join condition: None
(950) Project
Output [5]: [product#26664, plant#26665, orderDateTime#26666, _extract_code#27307, _extract_internalRefUUID#27308]
Input [6]: [product#26664, plant#26665, orderDateTime#26666, _extract_code#27307, _extract_internalRefUUID#27308, internalUUID#26678]
(951) Scan parquet
Output [4]: [internalUUID#26692, baseUnitOfMeasure#26696, unitOfMeasureConversions#26698, systemId#26691]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(952) Filter
Input [4]: [internalUUID#26692, baseUnitOfMeasure#26696, unitOfMeasureConversions#26698, systemId#26691]
Condition : isnotnull(internalUUID#26692)
(953) Project
Output [3]: [internalUUID#26692, baseUnitOfMeasure#26696, unitOfMeasureConversions#26698]
Input [4]: [internalUUID#26692, baseUnitOfMeasure#26696, unitOfMeasureConversions#26698, systemId#26691]
(954) Exchange
Input [3]: [internalUUID#26692, baseUnitOfMeasure#26696, unitOfMeasureConversions#26698]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114582]
(955) BroadcastExchange
Input [3]: [internalUUID#26692, baseUnitOfMeasure#26696, unitOfMeasureConversions#26698]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=114917]
(956) BroadcastHashJoin
Left keys [1]: [product#26664]
Right keys [1]: [internalUUID#26692]
Join type: LeftOuter
Join condition: None
(957) Project
Output [4]: [product#26664, plant#26665, orderDateTime#26666, filter(unitOfMeasureConversions#26698, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#27307) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#27308)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26696.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26696.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26703]
Input [8]: [product#26664, plant#26665, orderDateTime#26666, _extract_code#27307, _extract_internalRefUUID#27308, internalUUID#26692, baseUnitOfMeasure#26696, unitOfMeasureConversions#26698]
(958) Generate
Input [4]: [product#26664, plant#26665, orderDateTime#26666, filteredUnitOfMeasureConversions#26703]
Arguments: explode(filteredUnitOfMeasureConversions#26703.quantityNumerator), [product#26664, plant#26665, orderDateTime#26666, filteredUnitOfMeasureConversions#26703], true, [quantityNumerator#26704]
(959) Project
Output [4]: [product#26664, plant#26665, orderDateTime#26666, filteredUnitOfMeasureConversions#26703.quantityDenominator AS _extract_quantityDenominator#27195]
Input [5]: [product#26664, plant#26665, orderDateTime#26666, filteredUnitOfMeasureConversions#26703, quantityNumerator#26704]
(960) Generate
Input [4]: [product#26664, plant#26665, orderDateTime#26666, _extract_quantityDenominator#27195]
Arguments: explode(_extract_quantityDenominator#27195), [product#26664, plant#26665, orderDateTime#26666], true, [quantityDenominator#26705]
(961) Project
Output [3]: [product#26664, plant#26665, orderDateTime#26666]
Input [4]: [product#26664, plant#26665, orderDateTime#26666, quantityDenominator#26705]
(962) Sort
Input [3]: [product#26664, plant#26665, orderDateTime#26666]
Arguments: [product#26664 ASC NULLS FIRST, plant#26665 ASC NULLS FIRST], false, 0
(963) SortMergeJoin
Left keys [2]: [productUuid#26658, plantUuid#26656]
Right keys [2]: [product#26664, plant#26665]
Join type: Inner
Join condition: (calculationDateTime#26652 <= orderDateTime#26666)
(964) Project
Output [4]: [plantUuid#26656 AS plant#26708, productUuid#26658 AS product#26709, storageLocId#26659, calculationDateTime#26652]
Input [7]: [plantUuid#26656, productUuid#26658, calculationDateTime#26652, storageLocId#26659, product#26664, plant#26665, orderDateTime#26666]
(965) HashAggregate
Input [4]: [plant#26708, product#26709, storageLocId#26659, calculationDateTime#26652]
Keys [3]: [plant#26708, product#26709, storageLocId#26659]
Functions [1]: [partial_max(calculationDateTime#26652)]
Aggregate Attributes [1]: [max#29081]
Results [4]: [plant#26708, product#26709, storageLocId#26659, max#29082]
(966) HashAggregate
Input [4]: [plant#26708, product#26709, storageLocId#26659, max#29082]
Keys [3]: [plant#26708, product#26709, storageLocId#26659]
Functions [1]: [max(calculationDateTime#26652)]
Aggregate Attributes [1]: [max(calculationDateTime#26652)#26109]
Results [4]: [plant#26708, product#26709, storageLocId#26659, max(calculationDateTime#26652)#26109 AS max_calc_datetime#26710]
(967) Exchange
Input [4]: [plant#26708, product#26709, storageLocId#26659, max_calc_datetime#26710]
Arguments: hashpartitioning(coalesce(plant#26708, ), isnull(plant#26708), coalesce(product#26709, ), isnull(product#26709), coalesce(storageLocId#26659, ), isnull(storageLocId#26659), coalesce(max_calc_datetime#26710, 1970-01-01 00:00:00), isnull(max_calc_datetime#26710), 10), ENSURE_REQUIREMENTS, [plan_id=114936]
(968) Sort
Input [4]: [plant#26708, product#26709, storageLocId#26659, max_calc_datetime#26710]
Arguments: [coalesce(plant#26708, ) ASC NULLS FIRST, isnull(plant#26708) ASC NULLS FIRST, coalesce(product#26709, ) ASC NULLS FIRST, isnull(product#26709) ASC NULLS FIRST, coalesce(storageLocId#26659, ) ASC NULLS FIRST, isnull(storageLocId#26659) ASC NULLS FIRST, coalesce(max_calc_datetime#26710, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#26710) ASC NULLS FIRST], false, 0
(969) SortMergeJoin
Left keys [8]: [coalesce(plant#26571, ), isnull(plant#26571), coalesce(product#26572, ), isnull(product#26572), coalesce(storageLocId#26522, ), isnull(storageLocId#26522), coalesce(calculationDateTime#26515, 1970-01-01 00:00:00), isnull(calculationDateTime#26515)]
Right keys [8]: [coalesce(plant#26708, ), isnull(plant#26708), coalesce(product#26709, ), isnull(product#26709), coalesce(storageLocId#26659, ), isnull(storageLocId#26659), coalesce(max_calc_datetime#26710, 1970-01-01 00:00:00), isnull(max_calc_datetime#26710)]
Join type: Inner
Join condition: None
(970) Project
Output [4]: [plant#26571, product#26572, calculationDateTime#26515, quantity#26524]
Input [9]: [plant#26571, product#26572, storageLocId#26522, calculationDateTime#26515, quantity#26524, plant#26708, product#26709, storageLocId#26659, max_calc_datetime#26710]
(971) HashAggregate
Input [4]: [plant#26571, product#26572, calculationDateTime#26515, quantity#26524]
Keys [2]: [product#26572, plant#26571]
Functions [2]: [partial_min(calculationDateTime#26515), partial_sum(quantity#26524)]
Aggregate Attributes [2]: [min#29071, sum#29072]
Results [4]: [product#26572, plant#26571, min#29073, sum#29074]
(972) Exchange
Input [4]: [product#26572, plant#26571, min#29073, sum#29074]
Arguments: hashpartitioning(product#26572, plant#26571, 10), ENSURE_REQUIREMENTS, [plan_id=114943]
(973) HashAggregate
Input [4]: [product#26572, plant#26571, min#29073, sum#29074]
Keys [2]: [product#26572, plant#26571]
Functions [2]: [min(calculationDateTime#26515), sum(quantity#26524)]
Aggregate Attributes [2]: [min(calculationDateTime#26515)#26265, sum(quantity#26524)#26264]
Results [4]: [product#26572, plant#26571, min(calculationDateTime#26515)#26265 AS minCalculationDateTime#26712, round(sum(quantity#26524)#26264, 0) AS roundedQuantitySum#26713]
(974) Sort
Input [4]: [product#26572, plant#26571, minCalculationDateTime#26712, roundedQuantitySum#26713]
Arguments: [product#26572 ASC NULLS FIRST, plant#26571 ASC NULLS FIRST], false, 0
(975) SortMergeJoin
Left keys [2]: [product#26392, plant#26393]
Right keys [2]: [product#26572, plant#26571]
Join type: LeftOuter
Join condition: None
(976) Project
Output [8]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, CASE WHEN isnotnull(minCalculationDateTime#26712) THEN minCalculationDateTime#26712 ELSE orderDateTime#26394 END AS stockDatetime#26714, CASE WHEN isnotnull(roundedQuantitySum#26713) THEN array(roundedQuantitySum#26713) ELSE [0.0] END AS stockBatchQuantities#26715]
Input [10]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, product#26572, plant#26571, minCalculationDateTime#26712, roundedQuantitySum#26713]
(977) Scan parquet
Output [9]: [product#26318, plant#26319, demandChannel#26320, demandStream#26321, considerVariance#26322, demandTimeBuckets#26323, demandPointInTimeStart#26324, demandPointInTimeEnd#26325, demandPointInTime#26326]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000005/0_1_10000000005]
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>>>
(978) Filter
Input [9]: [product#26318, plant#26319, demandChannel#26320, demandStream#26321, considerVariance#26322, demandTimeBuckets#26323, demandPointInTimeStart#26324, demandPointInTimeEnd#26325, demandPointInTime#26326]
Condition : (isnotnull(product#26318) AND isnotnull(plant#26319))
(979) BroadcastExchange
Input [9]: [product#26318, plant#26319, demandChannel#26320, demandStream#26321, considerVariance#26322, demandTimeBuckets#26323, demandPointInTimeStart#26324, demandPointInTimeEnd#26325, demandPointInTime#26326]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=114952]
(980) BroadcastHashJoin
Left keys [2]: [product#26392, plant#26393]
Right keys [2]: [product#26318, plant#26319]
Join type: LeftOuter
Join condition: None
(981) Project
Output [9]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, CASE WHEN isnotnull(product#26318) THEN struct(demandChannel, demandChannel#26320, demandStream, demandStream#26321, considerVariance, considerVariance#26322, demandTimeBuckets, demandTimeBuckets#26323, demandPointInTimeStart, demandPointInTimeStart#26324, demandPointInTimeEnd, demandPointInTimeEnd#26325, demandPointInTime, demandPointInTime#26326) END AS rawDemands#26338]
Input [17]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, product#26318, plant#26319, demandChannel#26320, demandStream#26321, considerVariance#26322, demandTimeBuckets#26323, demandPointInTimeStart#26324, demandPointInTimeEnd#26325, demandPointInTime#26326]
(982) ObjectHashAggregate
Input [9]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, rawDemands#26338]
Keys [9]: [product#26392, plant#26393, orderDateTime#26394, knownfloatingpointnormalized(if (isnull(productPlant#26404)) null else named_struct(systemId, productPlant#26404.systemId, internalUUID, productPlant#26404.internalUUID, plant, productPlant#26404.plant, product, productPlant#26404.product, blockedForReplenishmentStartingFrom, productPlant#26404.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#26404.productionAspect)) null else named_struct(productMovementPlants, productPlant#26404.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#26404.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#26404.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#26404.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#26404.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#26404.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#26404.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#26404.salesPlant, listing, productPlant#26404.listing)) AS productPlant#26404, timezonecode#26418, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#26435)) AS outboundUnit#26435, stockDatetime#26714, knownfloatingpointnormalized(transform(stockBatchQuantities#26715, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#29068)), lambda arg#29068, false))) AS stockBatchQuantities#26715, [7226582400000000] AS [7226582400000000]#29067]
Functions [1]: [partial_collect_list(rawDemands#26338, 0, 0)]
Aggregate Attributes [1]: [buf#29069]
Results [10]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, [7226582400000000]#29067, buf#29070]
(983) ObjectHashAggregate
Input [10]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, [7226582400000000]#29067, buf#29070]
Keys [9]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, [7226582400000000]#29067]
Functions [1]: [collect_list(rawDemands#26338, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#26338, 0, 0)#26357]
Results [10]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#26716, collect_list(rawDemands#26338, 0, 0)#26357 AS rawDemands#26339]
(984) DeserializeToObject
Input [10]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, stockBatchShelfLifeEndDatetimes#26716, rawDemands#26339]
Arguments: createexternalrow(invoke(product#26392.toString()), invoke(plant#26393.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#26394)), if (isnull(productPlant#26404)) null else createexternalrow(invoke(productPlant#26404.systemId.toString()), invoke(productPlant#26404.internalUUID.toString()), if (isnull(productPlant#26404.plant)) null else createexternalrow(invoke(productPlant#26404.plant.internalRefUUID.toString()), invoke(productPlant#26404.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#26404.product)) null else createexternalrow(invoke(productPlant#26404.product.internalRefUUID.toString()), invoke(productPlant#26404.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#26404.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#26404.productionAspect)) null else createexternalrow(if (isnull(productPlant#26404.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#26404.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#26404.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#26404.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#26404.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#26404.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#26404.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(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(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#26404.salesPlant)) null else createexternalrow(if (isnull(productPlant#26404.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#26404.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#26404.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#26404.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(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#26418.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#26435)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#26714)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#26715, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#26716, 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#26339, 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(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#26378: org.apache.spark.sql.Row
(985) MapElements
Input [1]: [obj#26378]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@5081ce9e, obj#26383: org.apache.spark.sql.Row
(986) SerializeFromObject
Input [1]: [obj#26383]
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#26388, 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#26389]
(987) Exchange
Input [2]: [product#26388, plant#26389]
Arguments: hashpartitioning(coalesce(plant#26389, ), isnull(plant#26389), coalesce(product#26388, ), isnull(product#26388), 10), ENSURE_REQUIREMENTS, [plan_id=114963]
(988) Sort
Input [2]: [product#26388, plant#26389]
Arguments: [coalesce(plant#26389, ) ASC NULLS FIRST, isnull(plant#26389) ASC NULLS FIRST, coalesce(product#26388, ) ASC NULLS FIRST, isnull(product#26388) ASC NULLS FIRST], false, 0
(989) SortMergeJoin
Left keys [4]: [coalesce(plant#25912, ), isnull(plant#25912), coalesce(product#25911, ), isnull(product#25911)]
Right keys [4]: [coalesce(plant#26389, ), isnull(plant#26389), coalesce(product#26388, ), isnull(product#26388)]
Join type: LeftOuter
Join condition: None
(990) Project
Output [2]: [product#25911, plant#25912]
Input [4]: [product#25911, plant#25912, product#26388, plant#26389]
(991) Exchange
Input [2]: [product#25911, plant#25912]
Arguments: hashpartitioning(plant#25912, 10), ENSURE_REQUIREMENTS, [plan_id=114993]
(992) Sort
Input [2]: [product#25911, plant#25912]
Arguments: [plant#25912 ASC NULLS FIRST], false, 0
(993) Scan parquet
Output [2]: [marketUnit#26777, distributionCenters#26783]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(994) Filter
Input [2]: [marketUnit#26777, distributionCenters#26783]
Condition : (((marketUnit#26777 <=> DIP_1691) AND (size(distributionCenters#26783, true) > 0)) AND isnotnull(distributionCenters#26783))
(995) Project
Output [1]: [distributionCenters#26783]
Input [2]: [marketUnit#26777, distributionCenters#26783]
(996) Exchange
Input [1]: [distributionCenters#26783]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114614]
(997) Generate
Input [1]: [distributionCenters#26783]
Arguments: explode(distributionCenters#26783), false, [distributionCenters#26799]
(998) Filter
Input [1]: [distributionCenters#26799]
Condition : (((size(distributionCenters#26799.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#26799.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#26799.internalRefUUID))
(999) Project
Output [2]: [distributionCenters#26799.internalRefUUID AS _extract_internalRefUUID#27199, distributionCenters#26799.storageLocations.internalRefUUID AS _extract_internalRefUUID#27312]
Input [1]: [distributionCenters#26799]
(1000) Generate
Input [2]: [_extract_internalRefUUID#27199, _extract_internalRefUUID#27312]
Arguments: explode(_extract_internalRefUUID#27312), [_extract_internalRefUUID#27199], false, [storageLocations#26800]
(1001) Filter
Input [2]: [_extract_internalRefUUID#27199, storageLocations#26800]
Condition : isnotnull(storageLocations#26800)
(1002) Project
Output [2]: [_extract_internalRefUUID#27199 AS plantUuid#26802, storageLocations#26800 AS storageLocUuid#26804]
Input [2]: [_extract_internalRefUUID#27199, storageLocations#26800]
(1003) BroadcastExchange
Input [2]: [plantUuid#26802, storageLocUuid#26804]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=114988]
(1004) Scan parquet
Output [2]: [product#26805, plant#26806]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1005) Filter
Input [2]: [product#26805, plant#26806]
Condition : isnotnull(plant#26806)
(1006) Exchange
Input [2]: [product#26805, plant#26806]
Arguments: hashpartitioning(product#26805, plant#26806, 10), REPARTITION_BY_NUM, [plan_id=114767]
(1007) Scan parquet
Output [4]: [plant#26811, product#26812, productionAspect#26814, systemId#26809]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(1008) Project
Output [4]: [plant#26811.internalRefUUID AS _extract_internalRefUUID#27313, product#26812.internalRefUUID AS _extract_internalRefUUID#27316, productionAspect#26814.productMovementPlants.unitOfIssue.code AS _extract_code#27314, productionAspect#26814.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#27315]
Input [4]: [plant#26811, product#26812, productionAspect#26814, systemId#26809]
(1009) Exchange
Input [4]: [_extract_internalRefUUID#27313, _extract_internalRefUUID#27316, _extract_code#27314, _extract_internalRefUUID#27315]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114627]
(1010) Project
Output [4]: [_extract_code#27314, _extract_internalRefUUID#27315, _extract_internalRefUUID#27316, _extract_internalRefUUID#27313]
Input [4]: [_extract_internalRefUUID#27313, _extract_internalRefUUID#27316, _extract_code#27314, _extract_internalRefUUID#27315]
(1011) BroadcastExchange
Input [4]: [_extract_code#27314, _extract_internalRefUUID#27315, _extract_internalRefUUID#27316, _extract_internalRefUUID#27313]
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=114968]
(1012) BroadcastHashJoin
Left keys [4]: [coalesce(product#26805, ), isnull(product#26805), coalesce(plant#26806, ), isnull(plant#26806)]
Right keys [4]: [coalesce(_extract_internalRefUUID#27316, ), isnull(_extract_internalRefUUID#27316), coalesce(_extract_internalRefUUID#27313, ), isnull(_extract_internalRefUUID#27313)]
Join type: LeftOuter
Join condition: None
(1013) Project
Output [4]: [product#26805, plant#26806, _extract_code#27314, _extract_internalRefUUID#27315]
Input [6]: [product#26805, plant#26806, _extract_code#27314, _extract_internalRefUUID#27315, _extract_internalRefUUID#27316, _extract_internalRefUUID#27313]
(1014) Scan parquet
Output [2]: [internalUUID#26819, systemId#26818]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1015) Project
Output [1]: [internalUUID#26819]
Input [2]: [internalUUID#26819, systemId#26818]
(1016) Exchange
Input [1]: [internalUUID#26819]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114633]
(1017) BroadcastExchange
Input [1]: [internalUUID#26819]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=114972]
(1018) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26806, ), isnull(plant#26806)]
Right keys [2]: [coalesce(internalUUID#26819, ), isnull(internalUUID#26819)]
Join type: LeftOuter
Join condition: None
(1019) Project
Output [4]: [product#26805, plant#26806, _extract_code#27314, _extract_internalRefUUID#27315]
Input [5]: [product#26805, plant#26806, _extract_code#27314, _extract_internalRefUUID#27315, internalUUID#26819]
(1020) Scan parquet
Output [4]: [internalUUID#26833, baseUnitOfMeasure#26837, unitOfMeasureConversions#26839, systemId#26832]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1021) Filter
Input [4]: [internalUUID#26833, baseUnitOfMeasure#26837, unitOfMeasureConversions#26839, systemId#26832]
Condition : isnotnull(internalUUID#26833)
(1022) Project
Output [3]: [internalUUID#26833, baseUnitOfMeasure#26837, unitOfMeasureConversions#26839]
Input [4]: [internalUUID#26833, baseUnitOfMeasure#26837, unitOfMeasureConversions#26839, systemId#26832]
(1023) Exchange
Input [3]: [internalUUID#26833, baseUnitOfMeasure#26837, unitOfMeasureConversions#26839]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114639]
(1024) BroadcastExchange
Input [3]: [internalUUID#26833, baseUnitOfMeasure#26837, unitOfMeasureConversions#26839]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=114976]
(1025) BroadcastHashJoin
Left keys [1]: [product#26805]
Right keys [1]: [internalUUID#26833]
Join type: LeftOuter
Join condition: None
(1026) Project
Output [2]: [plant#26806, filter(unitOfMeasureConversions#26839, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#27314) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#27315)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26837.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26837.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26844]
Input [7]: [product#26805, plant#26806, _extract_code#27314, _extract_internalRefUUID#27315, internalUUID#26833, baseUnitOfMeasure#26837, unitOfMeasureConversions#26839]
(1027) Generate
Input [2]: [plant#26806, filteredUnitOfMeasureConversions#26844]
Arguments: explode(filteredUnitOfMeasureConversions#26844.quantityNumerator), [plant#26806, filteredUnitOfMeasureConversions#26844], true, [quantityNumerator#26845]
(1028) Project
Output [2]: [plant#26806, filteredUnitOfMeasureConversions#26844.quantityDenominator AS _extract_quantityDenominator#27201]
Input [3]: [plant#26806, filteredUnitOfMeasureConversions#26844, quantityNumerator#26845]
(1029) Generate
Input [2]: [plant#26806, _extract_quantityDenominator#27201]
Arguments: explode(_extract_quantityDenominator#27201), [plant#26806], true, [quantityDenominator#26846]
(1030) Project
Output [1]: [plant#26806]
Input [2]: [plant#26806, quantityDenominator#26846]
(1031) HashAggregate
Input [1]: [plant#26806]
Keys [1]: [plant#26806]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26806]
(1032) Exchange
Input [1]: [plant#26806]
Arguments: hashpartitioning(plant#26806, 10), ENSURE_REQUIREMENTS, [plan_id=114985]
(1033) HashAggregate
Input [1]: [plant#26806]
Keys [1]: [plant#26806]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26806]
(1034) BroadcastHashJoin
Left keys [1]: [plantUuid#26802]
Right keys [1]: [plant#26806]
Join type: Inner
Join condition: None
(1035) Project
Output [2]: [plantUuid#26802 AS plant#26776, storageLocUuid#26804]
Input [3]: [plantUuid#26802, storageLocUuid#26804, plant#26806]
(1036) Sort
Input [2]: [plant#26776, storageLocUuid#26804]
Arguments: [plant#26776 ASC NULLS FIRST], false, 0
(1037) SortMergeJoin
Left keys [1]: [plant#25912]
Right keys [1]: [plant#26776]
Join type: Inner
Join condition: None
(1038) Project
Output [3]: [plant#25912, product#25911, storageLocUuid#26804]
Input [4]: [product#25911, plant#25912, plant#26776, storageLocUuid#26804]
(1039) Scan parquet
Output [5]: [internalUUID#26742, id#26743, isMarkedForDeletion#26748, items#26749, systemId#26741]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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,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>>>>>
(1040) Filter
Input [5]: [internalUUID#26742, id#26743, isMarkedForDeletion#26748, items#26749, systemId#26741]
Condition : (((isnotnull(isMarkedForDeletion#26748) AND NOT isMarkedForDeletion#26748) AND (size(items#26749, true) > 0)) AND isnotnull(items#26749))
(1041) Project
Output [3]: [internalUUID#26742, id#26743, items#26749]
Input [5]: [internalUUID#26742, id#26743, isMarkedForDeletion#26748, items#26749, systemId#26741]
(1042) Exchange
Input [3]: [internalUUID#26742, id#26743, items#26749]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114655]
(1043) Generate
Input [3]: [internalUUID#26742, id#26743, items#26749]
Arguments: explode(items#26749), [internalUUID#26742, id#26743], false, [item#26753]
(1044) Filter
Input [3]: [internalUUID#26742, id#26743, item#26753]
Condition : ((((isnotnull(item#26753.deletionIndicator) AND isnotnull(item#26753.completeIndicator)) AND isnotnull(item#26753.returnIndicator)) AND ((NOT item#26753.deletionIndicator AND NOT item#26753.completeIndicator) AND NOT item#26753.returnIndicator)) AND ((isnotnull(item#26753.product.internalRefUUID) AND isnotnull(item#26753.plant.internalRefUUID)) AND isnotnull(item#26753.storageLocation.internalRefUUID)))
(1045) Project
Output [11]: [id#26743, internalUUID#26742, item#26753.plant.internalRefUUID AS plant#26758, item#26753.product.internalRefUUID AS product#26759, item#26753.storageLocation.internalRefUUID AS storageLocUuid#26760, item#26753.quantityUnit.code AS quantityUom#26761, item#26753.quantityUnit.internalRefUUID AS quantityUomUuid#26762, item#26753.quantityNumerator AS quantityNumerator#26763, item#26753.quantityDenominator AS quantityDenominator#26764, item#26753.scheduleLines AS scheduleLines#26765, item#26753.confirmations AS confirmations#26766]
Input [3]: [internalUUID#26742, id#26743, item#26753]
(1046) BroadcastExchange
Input [11]: [id#26743, internalUUID#26742, plant#26758, product#26759, storageLocUuid#26760, quantityUom#26761, quantityUomUuid#26762, quantityNumerator#26763, quantityDenominator#26764, scheduleLines#26765, confirmations#26766]
Arguments: HashedRelationBroadcastMode(List(input[3, string, true], input[2, string, true], input[4, string, true]),false), [plan_id=114999]
(1047) BroadcastHashJoin
Left keys [3]: [product#25911, plant#25912, storageLocUuid#26804]
Right keys [3]: [product#26759, plant#26758, storageLocUuid#26760]
Join type: Inner
Join condition: None
(1048) Project
Output [11]: [id#26743, internalUUID#26742, plant#26758, product#26759, quantityUom#26761, quantityUomUuid#26762, quantityNumerator#26763, quantityDenominator#26764, scheduleLines#26765, confirmations#26766, size(filter(confirmations#26766, lambdafunction(((NOT lambda x_12#27127.deletionIndicator AND lambda x_12#27127.isRelevantForConfirmation) AND isnotnull(lambda x_12#27127.confirmedDeliveryAt)), lambda x_12#27127, false)), false) AS _w0#27134]
Input [14]: [plant#25912, product#25911, storageLocUuid#26804, id#26743, internalUUID#26742, plant#26758, product#26759, storageLocUuid#26760, quantityUom#26761, quantityUomUuid#26762, quantityNumerator#26763, quantityDenominator#26764, scheduleLines#26765, confirmations#26766]
(1049) Exchange
Input [11]: [id#26743, internalUUID#26742, plant#26758, product#26759, quantityUom#26761, quantityUomUuid#26762, quantityNumerator#26763, quantityDenominator#26764, scheduleLines#26765, confirmations#26766, _w0#27134]
Arguments: hashpartitioning(internalUUID#26742, 10), ENSURE_REQUIREMENTS, [plan_id=115003]
(1050) Sort
Input [11]: [id#26743, internalUUID#26742, plant#26758, product#26759, quantityUom#26761, quantityUomUuid#26762, quantityNumerator#26763, quantityDenominator#26764, scheduleLines#26765, confirmations#26766, _w0#27134]
Arguments: [internalUUID#26742 ASC NULLS FIRST], false, 0
(1051) Window
Input [11]: [id#26743, internalUUID#26742, plant#26758, product#26759, quantityUom#26761, quantityUomUuid#26762, quantityNumerator#26763, quantityDenominator#26764, scheduleLines#26765, confirmations#26766, _w0#27134]
Arguments: [sum(_w0#27134) windowspecdefinition(internalUUID#26742, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#27135L], [internalUUID#26742]
(1052) Project
Output [3]: [plant#26758, product#26759, filter(transform(CASE WHEN (_we0#27135L > 0) THEN transform(filter(confirmations#26766, lambdafunction(((NOT lambda x_12#27128.deletionIndicator AND lambda x_12#27128.isRelevantForConfirmation) AND isnotnull(lambda x_12#27128.confirmedDeliveryAt)), lambda x_12#27128, false)), lambdafunction(struct(openQty, greatest((lambda x_13#27131.confirmedQuantity - coalesce(lambda x_13#27131.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_13#27131.confirmedDeliveryAt), lambda x_13#27131, false)) ELSE transform(scheduleLines#26765, lambdafunction(struct(openQty, greatest((lambda x_11#27129.quantity - coalesce(lambda x_11#27129.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_11#27129.deliveryAt), lambda x_11#27129, false)) END, lambdafunction(struct(documentId, id#26743, documentUuid, internalUUID#26742, openQty, lambda x_14#27132.openQty, openQtyInBaseUnit, ((lambda x_14#27132.openQty * quantityNumerator#26763) / quantityDenominator#26764), qtyUom, quantityUom#26761, qtyUomUuid, quantityUomUuid#26762, availabilityDatetime, lambda x_14#27132.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_14#27132, false)), lambdafunction(NOT (lambda x_15#27133.openQty = 0.0), lambda x_15#27133, false)) AS openGoodsMovements#27126]
Input [12]: [id#26743, internalUUID#26742, plant#26758, product#26759, quantityUom#26761, quantityUomUuid#26762, quantityNumerator#26763, quantityDenominator#26764, scheduleLines#26765, confirmations#26766, _w0#27134, _we0#27135L]
(1053) ObjectHashAggregate
Input [3]: [plant#26758, product#26759, openGoodsMovements#27126]
Keys [2]: [product#26759, plant#26758]
Functions [1]: [partial_collect_list(openGoodsMovements#27126, 0, 0)]
Aggregate Attributes [1]: [buf#29065]
Results [3]: [product#26759, plant#26758, buf#29066]
(1054) Exchange
Input [3]: [product#26759, plant#26758, buf#29066]
Arguments: hashpartitioning(product#26759, plant#26758, 10), ENSURE_REQUIREMENTS, [plan_id=115009]
(1055) ObjectHashAggregate
Input [3]: [product#26759, plant#26758, buf#29066]
Keys [2]: [product#26759, plant#26758]
Functions [1]: [collect_list(openGoodsMovements#27126, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#27126, 0, 0)#27152]
Results [3]: [product#26759, plant#26758, flatten(collect_list(openGoodsMovements#27126, 0, 0)#27152) AS openGoodsMovements#27136]
(1056) Filter
Input [3]: [product#26759, plant#26758, openGoodsMovements#27136]
Condition : (size(openGoodsMovements#27136, false) > 0)
(1057) AdaptiveSparkPlan
Output [3]: [product#26759, plant#26758, openGoodsMovements#27136]
Arguments: isFinalPlan=true
(1058) Filter
Input [3]: [product#26759, plant#26758, openGoodsMovements#27136]
Condition : (isnotnull(product#26759) AND isnotnull(plant#26758))
(1059) Scan parquet
Output [3]: [product#29133, plant#29134, orderDateTime#29135]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1060) Filter
Input [3]: [product#29133, plant#29134, orderDateTime#29135]
Condition : isnotnull(plant#29134)
(1061) Exchange
Input [3]: [product#29133, plant#29134, orderDateTime#29135]
Arguments: hashpartitioning(product#29133, plant#29134, 10), REPARTITION_BY_NUM, [plan_id=121102]
(1062) Scan parquet
Output [4]: [plant#29139, product#29140, productionAspect#29142, systemId#29137]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(1063) Project
Output [4]: [plant#29139.internalRefUUID AS _extract_internalRefUUID#34069, product#29140.internalRefUUID AS _extract_internalRefUUID#34072, productionAspect#29142.productMovementPlants.unitOfIssue.code AS _extract_code#34070, productionAspect#29142.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34071]
Input [4]: [plant#29139, product#29140, productionAspect#29142, systemId#29137]
(1064) Exchange
Input [4]: [_extract_internalRefUUID#34069, _extract_internalRefUUID#34072, _extract_code#34070, _extract_internalRefUUID#34071]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119744]
(1065) Project
Output [4]: [_extract_code#34070, _extract_internalRefUUID#34071, _extract_internalRefUUID#34072, _extract_internalRefUUID#34069]
Input [4]: [_extract_internalRefUUID#34069, _extract_internalRefUUID#34072, _extract_code#34070, _extract_internalRefUUID#34071]
(1066) BroadcastExchange
Input [4]: [_extract_code#34070, _extract_internalRefUUID#34071, _extract_internalRefUUID#34072, _extract_internalRefUUID#34069]
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=121967]
(1067) BroadcastHashJoin
Left keys [4]: [coalesce(product#29133, ), isnull(product#29133), coalesce(plant#29134, ), isnull(plant#29134)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34072, ), isnull(_extract_internalRefUUID#34072), coalesce(_extract_internalRefUUID#34069, ), isnull(_extract_internalRefUUID#34069)]
Join type: LeftOuter
Join condition: None
(1068) Project
Output [5]: [product#29133, plant#29134, orderDateTime#29135, _extract_code#34070, _extract_internalRefUUID#34071]
Input [7]: [product#29133, plant#29134, orderDateTime#29135, _extract_code#34070, _extract_internalRefUUID#34071, _extract_internalRefUUID#34072, _extract_internalRefUUID#34069]
(1069) Scan parquet
Output [2]: [internalUUID#29147, systemId#29146]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1070) Project
Output [1]: [internalUUID#29147]
Input [2]: [internalUUID#29147, systemId#29146]
(1071) Exchange
Input [1]: [internalUUID#29147]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119750]
(1072) BroadcastExchange
Input [1]: [internalUUID#29147]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=121971]
(1073) BroadcastHashJoin
Left keys [2]: [coalesce(plant#29134, ), isnull(plant#29134)]
Right keys [2]: [coalesce(internalUUID#29147, ), isnull(internalUUID#29147)]
Join type: LeftOuter
Join condition: None
(1074) Project
Output [5]: [product#29133, plant#29134, orderDateTime#29135, _extract_code#34070, _extract_internalRefUUID#34071]
Input [6]: [product#29133, plant#29134, orderDateTime#29135, _extract_code#34070, _extract_internalRefUUID#34071, internalUUID#29147]
(1075) Scan parquet
Output [4]: [internalUUID#29161, baseUnitOfMeasure#29165, unitOfMeasureConversions#29167, systemId#29160]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1076) Filter
Input [4]: [internalUUID#29161, baseUnitOfMeasure#29165, unitOfMeasureConversions#29167, systemId#29160]
Condition : isnotnull(internalUUID#29161)
(1077) Project
Output [3]: [internalUUID#29161, baseUnitOfMeasure#29165, unitOfMeasureConversions#29167]
Input [4]: [internalUUID#29161, baseUnitOfMeasure#29165, unitOfMeasureConversions#29167, systemId#29160]
(1078) Exchange
Input [3]: [internalUUID#29161, baseUnitOfMeasure#29165, unitOfMeasureConversions#29167]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119756]
(1079) BroadcastExchange
Input [3]: [internalUUID#29161, baseUnitOfMeasure#29165, unitOfMeasureConversions#29167]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=121975]
(1080) BroadcastHashJoin
Left keys [1]: [product#29133]
Right keys [1]: [internalUUID#29161]
Join type: LeftOuter
Join condition: None
(1081) Project
Output [4]: [product#29133, plant#29134, orderDateTime#29135, filter(unitOfMeasureConversions#29167, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34070) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34071)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#29165.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#29165.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#29172]
Input [8]: [product#29133, plant#29134, orderDateTime#29135, _extract_code#34070, _extract_internalRefUUID#34071, internalUUID#29161, baseUnitOfMeasure#29165, unitOfMeasureConversions#29167]
(1082) Generate
Input [4]: [product#29133, plant#29134, orderDateTime#29135, filteredUnitOfMeasureConversions#29172]
Arguments: explode(filteredUnitOfMeasureConversions#29172.quantityNumerator), [product#29133, plant#29134, orderDateTime#29135, filteredUnitOfMeasureConversions#29172], true, [quantityNumerator#29173]
(1083) Project
Output [4]: [product#29133, plant#29134, orderDateTime#29135, filteredUnitOfMeasureConversions#29172.quantityDenominator AS _extract_quantityDenominator#33389]
Input [5]: [product#29133, plant#29134, orderDateTime#29135, filteredUnitOfMeasureConversions#29172, quantityNumerator#29173]
(1084) Generate
Input [4]: [product#29133, plant#29134, orderDateTime#29135, _extract_quantityDenominator#33389]
Arguments: explode(_extract_quantityDenominator#33389), [product#29133, plant#29134, orderDateTime#29135], true, [quantityDenominator#29174]
(1085) Project
Output [3]: [product#29133, plant#29134, orderDateTime#29135]
Input [4]: [product#29133, plant#29134, orderDateTime#29135, quantityDenominator#29174]
(1086) Sort
Input [3]: [product#29133, plant#29134, orderDateTime#29135]
Arguments: [product#29133 ASC NULLS FIRST, plant#29134 ASC NULLS FIRST], false, 0
(1087) Scan parquet
Output [6]: [internalUUID#29178, product#29179, plant#29180, calculationDateTime#29181, stockQuantities#29182, systemId#29177]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(1088) Filter
Input [6]: [internalUUID#29178, product#29179, plant#29180, calculationDateTime#29181, stockQuantities#29182, systemId#29177]
Condition : (isnotnull(plant#29180.internalRefUUID) AND isnotnull(product#29179.internalRefUUID))
(1089) Project
Output [6]: [systemId#29177, internalUUID#29178, product#29179, plant#29180, calculationDateTime#29181, stockQuantities#29182]
Input [6]: [internalUUID#29178, product#29179, plant#29180, calculationDateTime#29181, stockQuantities#29182, systemId#29177]
(1090) Exchange
Input [6]: [systemId#29177, internalUUID#29178, product#29179, plant#29180, calculationDateTime#29181, stockQuantities#29182]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119766]
(1091) BroadcastExchange
Input [6]: [systemId#29177, internalUUID#29178, product#29179, plant#29180, calculationDateTime#29181, stockQuantities#29182]
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=122006]
(1092) Scan parquet
Output [2]: [marketUnit#29183, distributionCenters#29189]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1093) Filter
Input [2]: [marketUnit#29183, distributionCenters#29189]
Condition : (((marketUnit#29183 <=> DIP_1691) AND (size(distributionCenters#29189, true) > 0)) AND isnotnull(distributionCenters#29189))
(1094) Project
Output [1]: [distributionCenters#29189]
Input [2]: [marketUnit#29183, distributionCenters#29189]
(1095) Exchange
Input [1]: [distributionCenters#29189]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119770]
(1096) Generate
Input [1]: [distributionCenters#29189]
Arguments: explode(distributionCenters#29189), false, [distributionCenters#29205]
(1097) Filter
Input [1]: [distributionCenters#29205]
Condition : (((size(distributionCenters#29205.storageLocations, true) > 0) AND isnotnull(distributionCenters#29205.storageLocations)) AND isnotnull(distributionCenters#29205.internalRefUUID))
(1098) Project
Output [2]: [distributionCenters#29205.internalRefUUID AS _extract_internalRefUUID#33393, distributionCenters#29205.storageLocations AS _extract_storageLocations#33394]
Input [1]: [distributionCenters#29205]
(1099) Generate
Input [2]: [_extract_internalRefUUID#33393, _extract_storageLocations#33394]
Arguments: explode(_extract_storageLocations#33394), [_extract_internalRefUUID#33393], false, [storageLocations#29206]
(1100) Project
Output [3]: [_extract_internalRefUUID#33393 AS plantUuid#29208, storageLocations#29206.id AS storageLocId#29209, storageLocations#29206.internalRefUUID AS storageLocUuid#29210]
Input [2]: [_extract_internalRefUUID#33393, storageLocations#29206]
(1101) BroadcastExchange
Input [3]: [plantUuid#29208, storageLocId#29209, storageLocUuid#29210]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122002]
(1102) Scan parquet
Output [2]: [product#29211, plant#29212]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1103) Filter
Input [2]: [product#29211, plant#29212]
Condition : isnotnull(plant#29212)
(1104) Exchange
Input [2]: [product#29211, plant#29212]
Arguments: hashpartitioning(product#29211, plant#29212, 10), REPARTITION_BY_NUM, [plan_id=121113]
(1105) Scan parquet
Output [4]: [plant#29217, product#29218, productionAspect#29220, systemId#29215]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(1106) Project
Output [4]: [plant#29217.internalRefUUID AS _extract_internalRefUUID#34076, product#29218.internalRefUUID AS _extract_internalRefUUID#34075, productionAspect#29220.productMovementPlants.unitOfIssue.code AS _extract_code#34073, productionAspect#29220.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34074]
Input [4]: [plant#29217, product#29218, productionAspect#29220, systemId#29215]
(1107) Exchange
Input [4]: [_extract_internalRefUUID#34076, _extract_internalRefUUID#34075, _extract_code#34073, _extract_internalRefUUID#34074]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119782]
(1108) Project
Output [4]: [_extract_code#34073, _extract_internalRefUUID#34074, _extract_internalRefUUID#34075, _extract_internalRefUUID#34076]
Input [4]: [_extract_internalRefUUID#34076, _extract_internalRefUUID#34075, _extract_code#34073, _extract_internalRefUUID#34074]
(1109) BroadcastExchange
Input [4]: [_extract_code#34073, _extract_internalRefUUID#34074, _extract_internalRefUUID#34075, _extract_internalRefUUID#34076]
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=121982]
(1110) BroadcastHashJoin
Left keys [4]: [coalesce(product#29211, ), isnull(product#29211), coalesce(plant#29212, ), isnull(plant#29212)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34075, ), isnull(_extract_internalRefUUID#34075), coalesce(_extract_internalRefUUID#34076, ), isnull(_extract_internalRefUUID#34076)]
Join type: LeftOuter
Join condition: None
(1111) Project
Output [4]: [product#29211, plant#29212, _extract_code#34073, _extract_internalRefUUID#34074]
Input [6]: [product#29211, plant#29212, _extract_code#34073, _extract_internalRefUUID#34074, _extract_internalRefUUID#34075, _extract_internalRefUUID#34076]
(1112) Scan parquet
Output [2]: [internalUUID#29225, systemId#29224]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1113) Project
Output [1]: [internalUUID#29225]
Input [2]: [internalUUID#29225, systemId#29224]
(1114) Exchange
Input [1]: [internalUUID#29225]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119788]
(1115) BroadcastExchange
Input [1]: [internalUUID#29225]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=121986]
(1116) BroadcastHashJoin
Left keys [2]: [coalesce(plant#29212, ), isnull(plant#29212)]
Right keys [2]: [coalesce(internalUUID#29225, ), isnull(internalUUID#29225)]
Join type: LeftOuter
Join condition: None
(1117) Project
Output [4]: [product#29211, plant#29212, _extract_code#34073, _extract_internalRefUUID#34074]
Input [5]: [product#29211, plant#29212, _extract_code#34073, _extract_internalRefUUID#34074, internalUUID#29225]
(1118) Scan parquet
Output [4]: [internalUUID#29239, baseUnitOfMeasure#29243, unitOfMeasureConversions#29245, systemId#29238]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1119) Filter
Input [4]: [internalUUID#29239, baseUnitOfMeasure#29243, unitOfMeasureConversions#29245, systemId#29238]
Condition : isnotnull(internalUUID#29239)
(1120) Project
Output [3]: [internalUUID#29239, baseUnitOfMeasure#29243, unitOfMeasureConversions#29245]
Input [4]: [internalUUID#29239, baseUnitOfMeasure#29243, unitOfMeasureConversions#29245, systemId#29238]
(1121) Exchange
Input [3]: [internalUUID#29239, baseUnitOfMeasure#29243, unitOfMeasureConversions#29245]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119794]
(1122) BroadcastExchange
Input [3]: [internalUUID#29239, baseUnitOfMeasure#29243, unitOfMeasureConversions#29245]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=121990]
(1123) BroadcastHashJoin
Left keys [1]: [product#29211]
Right keys [1]: [internalUUID#29239]
Join type: LeftOuter
Join condition: None
(1124) Project
Output [2]: [plant#29212, filter(unitOfMeasureConversions#29245, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34073) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34074)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#29243.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#29243.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#29250]
Input [7]: [product#29211, plant#29212, _extract_code#34073, _extract_internalRefUUID#34074, internalUUID#29239, baseUnitOfMeasure#29243, unitOfMeasureConversions#29245]
(1125) Generate
Input [2]: [plant#29212, filteredUnitOfMeasureConversions#29250]
Arguments: explode(filteredUnitOfMeasureConversions#29250.quantityNumerator), [plant#29212, filteredUnitOfMeasureConversions#29250], true, [quantityNumerator#29251]
(1126) Project
Output [2]: [plant#29212, filteredUnitOfMeasureConversions#29250.quantityDenominator AS _extract_quantityDenominator#33395]
Input [3]: [plant#29212, filteredUnitOfMeasureConversions#29250, quantityNumerator#29251]
(1127) Generate
Input [2]: [plant#29212, _extract_quantityDenominator#33395]
Arguments: explode(_extract_quantityDenominator#33395), [plant#29212], true, [quantityDenominator#29252]
(1128) Project
Output [1]: [plant#29212]
Input [2]: [plant#29212, quantityDenominator#29252]
(1129) HashAggregate
Input [1]: [plant#29212]
Keys [1]: [plant#29212]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#29212]
(1130) Exchange
Input [1]: [plant#29212]
Arguments: hashpartitioning(plant#29212, 10), ENSURE_REQUIREMENTS, [plan_id=121999]
(1131) HashAggregate
Input [1]: [plant#29212]
Keys [1]: [plant#29212]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#29212]
(1132) BroadcastHashJoin
Left keys [1]: [plantUuid#29208]
Right keys [1]: [plant#29212]
Join type: Inner
Join condition: None
(1133) Project
Output [3]: [plantUuid#29208, storageLocId#29209, storageLocUuid#29210]
Input [4]: [plantUuid#29208, storageLocId#29209, storageLocUuid#29210, plant#29212]
(1134) BroadcastHashJoin
Left keys [2]: [coalesce(plant#29180.internalRefUUID, ), isnull(plant#29180.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#29208, ), isnull(plantUuid#29208)]
Join type: Inner
Join condition: None
(1135) Generate
Input [9]: [systemId#29177, internalUUID#29178, product#29179, plant#29180, calculationDateTime#29181, stockQuantities#29182, plantUuid#29208, storageLocId#29209, storageLocUuid#29210]
Arguments: explode(filter(stockQuantities#29182, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#29210) AND (lambda x#26016.storageLocation.Id = storageLocId#29209)), lambda x#26016, false))), [systemId#29177, internalUUID#29178, product#29179, plant#29180, calculationDateTime#29181, plantUuid#29208], false, [stockQuantity#29255]
(1136) ObjectHashAggregate
Input [7]: [systemId#29177, internalUUID#29178, product#29179, plant#29180, calculationDateTime#29181, plantUuid#29208, stockQuantity#29255]
Keys [5]: [plantUuid#29208, internalUUID#29178, plant#29180, product#29179, systemId#29177]
Functions [2]: [partial_first(calculationDateTime#29181, false), partial_collect_list(stockQuantity#29255, 0, 0)]
Aggregate Attributes [3]: [first#35105, valueSet#35106, buf#35107]
Results [8]: [plantUuid#29208, internalUUID#29178, plant#29180, product#29179, systemId#29177, first#35108, valueSet#35109, buf#35110]
(1137) ObjectHashAggregate
Input [8]: [plantUuid#29208, internalUUID#29178, plant#29180, product#29179, systemId#29177, first#35108, valueSet#35109, buf#35110]
Keys [5]: [plantUuid#29208, internalUUID#29178, plant#29180, product#29179, systemId#29177]
Functions [2]: [first(calculationDateTime#29181, false), collect_list(stockQuantity#29255, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#29181)()#26031, collect_list(stockQuantity#29255, 0, 0)#26032]
Results [4]: [product#29179, plant#29180, first(calculationDateTime#29181)()#26031 AS calculationDateTime#29256, collect_list(stockQuantity#29255, 0, 0)#26032 AS stockQuantities#29257]
(1138) Filter
Input [4]: [product#29179, plant#29180, calculationDateTime#29256, stockQuantities#29257]
Condition : ((size(stockQuantities#29257, true) > 0) AND isnotnull(calculationDateTime#29256))
(1139) Generate
Input [4]: [product#29179, plant#29180, calculationDateTime#29256, stockQuantities#29257]
Arguments: explode(stockQuantities#29257), [product#29179, plant#29180, calculationDateTime#29256], false, [stockQuantity#29258]
(1140) Filter
Input [4]: [product#29179, plant#29180, calculationDateTime#29256, stockQuantity#29258]
Condition : (((isnotnull(stockQuantity#29258.specialStockIndicator.code) AND isnotnull(stockQuantity#29258.stockType.code)) AND (stockQuantity#29258.specialStockIndicator.code = )) AND (stockQuantity#29258.stockType.code = 01))
(1141) Project
Output [4]: [plant#29180.internalRefUUID AS plantUuid#29260, product#29179.internalRefUUID AS productUuid#29262, calculationDateTime#29256, stockQuantity#29258.storagelocation.id AS storageLocId#29263]
Input [4]: [product#29179, plant#29180, calculationDateTime#29256, stockQuantity#29258]
(1142) Exchange
Input [4]: [plantUuid#29260, productUuid#29262, calculationDateTime#29256, storageLocId#29263]
Arguments: hashpartitioning(productUuid#29262, plantUuid#29260, 10), ENSURE_REQUIREMENTS, [plan_id=122032]
(1143) Sort
Input [4]: [plantUuid#29260, productUuid#29262, calculationDateTime#29256, storageLocId#29263]
Arguments: [productUuid#29262 ASC NULLS FIRST, plantUuid#29260 ASC NULLS FIRST], false, 0
(1144) Scan parquet
Output [3]: [product#29268, plant#29269, orderDateTime#29270]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1145) Filter
Input [3]: [product#29268, plant#29269, orderDateTime#29270]
Condition : ((isnotnull(orderDateTime#29270) AND isnotnull(plant#29269)) AND isnotnull(product#29268))
(1146) Exchange
Input [3]: [product#29268, plant#29269, orderDateTime#29270]
Arguments: hashpartitioning(product#29268, plant#29269, 10), REPARTITION_BY_NUM, [plan_id=121136]
(1147) Scan parquet
Output [4]: [plant#29274, product#29275, productionAspect#29277, systemId#29272]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(1148) Project
Output [4]: [plant#29274.internalRefUUID AS _extract_internalRefUUID#34077, product#29275.internalRefUUID AS _extract_internalRefUUID#34078, productionAspect#29277.productMovementPlants.unitOfIssue.code AS _extract_code#34079, productionAspect#29277.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34080]
Input [4]: [plant#29274, product#29275, productionAspect#29277, systemId#29272]
(1149) Exchange
Input [4]: [_extract_internalRefUUID#34077, _extract_internalRefUUID#34078, _extract_code#34079, _extract_internalRefUUID#34080]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119819]
(1150) Project
Output [4]: [_extract_code#34079, _extract_internalRefUUID#34080, _extract_internalRefUUID#34078, _extract_internalRefUUID#34077]
Input [4]: [_extract_internalRefUUID#34077, _extract_internalRefUUID#34078, _extract_code#34079, _extract_internalRefUUID#34080]
(1151) BroadcastExchange
Input [4]: [_extract_code#34079, _extract_internalRefUUID#34080, _extract_internalRefUUID#34078, _extract_internalRefUUID#34077]
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=122015]
(1152) BroadcastHashJoin
Left keys [4]: [coalesce(product#29268, ), isnull(product#29268), coalesce(plant#29269, ), isnull(plant#29269)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34078, ), isnull(_extract_internalRefUUID#34078), coalesce(_extract_internalRefUUID#34077, ), isnull(_extract_internalRefUUID#34077)]
Join type: LeftOuter
Join condition: None
(1153) Project
Output [5]: [product#29268, plant#29269, orderDateTime#29270, _extract_code#34079, _extract_internalRefUUID#34080]
Input [7]: [product#29268, plant#29269, orderDateTime#29270, _extract_code#34079, _extract_internalRefUUID#34080, _extract_internalRefUUID#34078, _extract_internalRefUUID#34077]
(1154) Scan parquet
Output [2]: [internalUUID#29282, systemId#29281]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1155) Project
Output [1]: [internalUUID#29282]
Input [2]: [internalUUID#29282, systemId#29281]
(1156) Exchange
Input [1]: [internalUUID#29282]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119825]
(1157) BroadcastExchange
Input [1]: [internalUUID#29282]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122019]
(1158) BroadcastHashJoin
Left keys [2]: [coalesce(plant#29269, ), isnull(plant#29269)]
Right keys [2]: [coalesce(internalUUID#29282, ), isnull(internalUUID#29282)]
Join type: LeftOuter
Join condition: None
(1159) Project
Output [5]: [product#29268, plant#29269, orderDateTime#29270, _extract_code#34079, _extract_internalRefUUID#34080]
Input [6]: [product#29268, plant#29269, orderDateTime#29270, _extract_code#34079, _extract_internalRefUUID#34080, internalUUID#29282]
(1160) Scan parquet
Output [4]: [internalUUID#29296, baseUnitOfMeasure#29300, unitOfMeasureConversions#29302, systemId#29295]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1161) Filter
Input [4]: [internalUUID#29296, baseUnitOfMeasure#29300, unitOfMeasureConversions#29302, systemId#29295]
Condition : isnotnull(internalUUID#29296)
(1162) Project
Output [3]: [internalUUID#29296, baseUnitOfMeasure#29300, unitOfMeasureConversions#29302]
Input [4]: [internalUUID#29296, baseUnitOfMeasure#29300, unitOfMeasureConversions#29302, systemId#29295]
(1163) Exchange
Input [3]: [internalUUID#29296, baseUnitOfMeasure#29300, unitOfMeasureConversions#29302]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119831]
(1164) BroadcastExchange
Input [3]: [internalUUID#29296, baseUnitOfMeasure#29300, unitOfMeasureConversions#29302]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122023]
(1165) BroadcastHashJoin
Left keys [1]: [product#29268]
Right keys [1]: [internalUUID#29296]
Join type: LeftOuter
Join condition: None
(1166) Project
Output [4]: [product#29268, plant#29269, orderDateTime#29270, filter(unitOfMeasureConversions#29302, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34079) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34080)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#29300.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#29300.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#29307]
Input [8]: [product#29268, plant#29269, orderDateTime#29270, _extract_code#34079, _extract_internalRefUUID#34080, internalUUID#29296, baseUnitOfMeasure#29300, unitOfMeasureConversions#29302]
(1167) Generate
Input [4]: [product#29268, plant#29269, orderDateTime#29270, filteredUnitOfMeasureConversions#29307]
Arguments: explode(filteredUnitOfMeasureConversions#29307.quantityNumerator), [product#29268, plant#29269, orderDateTime#29270, filteredUnitOfMeasureConversions#29307], true, [quantityNumerator#29308]
(1168) Project
Output [4]: [product#29268, plant#29269, orderDateTime#29270, filteredUnitOfMeasureConversions#29307.quantityDenominator AS _extract_quantityDenominator#33399]
Input [5]: [product#29268, plant#29269, orderDateTime#29270, filteredUnitOfMeasureConversions#29307, quantityNumerator#29308]
(1169) Generate
Input [4]: [product#29268, plant#29269, orderDateTime#29270, _extract_quantityDenominator#33399]
Arguments: explode(_extract_quantityDenominator#33399), [product#29268, plant#29269, orderDateTime#29270], true, [quantityDenominator#29309]
(1170) Project
Output [3]: [product#29268, plant#29269, orderDateTime#29270]
Input [4]: [product#29268, plant#29269, orderDateTime#29270, quantityDenominator#29309]
(1171) Sort
Input [3]: [product#29268, plant#29269, orderDateTime#29270]
Arguments: [product#29268 ASC NULLS FIRST, plant#29269 ASC NULLS FIRST], false, 0
(1172) SortMergeJoin
Left keys [2]: [productUuid#29262, plantUuid#29260]
Right keys [2]: [product#29268, plant#29269]
Join type: Inner
Join condition: (calculationDateTime#29256 <= orderDateTime#29270)
(1173) Project
Output [4]: [plantUuid#29260 AS plant#29312, productUuid#29262 AS product#29313, storageLocId#29263, calculationDateTime#29256]
Input [7]: [plantUuid#29260, productUuid#29262, calculationDateTime#29256, storageLocId#29263, product#29268, plant#29269, orderDateTime#29270]
(1174) Exchange
Input [4]: [plant#29312, product#29313, storageLocId#29263, calculationDateTime#29256]
Arguments: hashpartitioning(coalesce(plant#29312, ), isnull(plant#29312), coalesce(product#29313, ), isnull(product#29313), coalesce(storageLocId#29263, ), isnull(storageLocId#29263), coalesce(calculationDateTime#29256, 1970-01-01 00:00:00), isnull(calculationDateTime#29256), 10), ENSURE_REQUIREMENTS, [plan_id=122096]
(1175) Sort
Input [4]: [plant#29312, product#29313, storageLocId#29263, calculationDateTime#29256]
Arguments: [coalesce(plant#29312, ) ASC NULLS FIRST, isnull(plant#29312) ASC NULLS FIRST, coalesce(product#29313, ) ASC NULLS FIRST, isnull(product#29313) ASC NULLS FIRST, coalesce(storageLocId#29263, ) ASC NULLS FIRST, isnull(storageLocId#29263) ASC NULLS FIRST, coalesce(calculationDateTime#29256, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#29256) ASC NULLS FIRST], false, 0
(1176) Scan parquet
Output [6]: [internalUUID#29315, product#29316, plant#29317, calculationDateTime#29318, stockQuantities#29319, systemId#29314]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(1177) Filter
Input [6]: [internalUUID#29315, product#29316, plant#29317, calculationDateTime#29318, stockQuantities#29319, systemId#29314]
Condition : (isnotnull(plant#29317.internalRefUUID) AND isnotnull(product#29316.internalRefUUID))
(1178) Project
Output [6]: [systemId#29314, internalUUID#29315, product#29316, plant#29317, calculationDateTime#29318, stockQuantities#29319]
Input [6]: [internalUUID#29315, product#29316, plant#29317, calculationDateTime#29318, stockQuantities#29319, systemId#29314]
(1179) Exchange
Input [6]: [systemId#29314, internalUUID#29315, product#29316, plant#29317, calculationDateTime#29318, stockQuantities#29319]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119843]
(1180) BroadcastExchange
Input [6]: [systemId#29314, internalUUID#29315, product#29316, plant#29317, calculationDateTime#29318, stockQuantities#29319]
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=122061]
(1181) Scan parquet
Output [2]: [marketUnit#29320, distributionCenters#29326]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1182) Filter
Input [2]: [marketUnit#29320, distributionCenters#29326]
Condition : (((marketUnit#29320 <=> DIP_1691) AND (size(distributionCenters#29326, true) > 0)) AND isnotnull(distributionCenters#29326))
(1183) Project
Output [1]: [distributionCenters#29326]
Input [2]: [marketUnit#29320, distributionCenters#29326]
(1184) Exchange
Input [1]: [distributionCenters#29326]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119847]
(1185) Generate
Input [1]: [distributionCenters#29326]
Arguments: explode(distributionCenters#29326), false, [distributionCenters#29342]
(1186) Filter
Input [1]: [distributionCenters#29342]
Condition : (((size(distributionCenters#29342.storageLocations, true) > 0) AND isnotnull(distributionCenters#29342.storageLocations)) AND isnotnull(distributionCenters#29342.internalRefUUID))
(1187) Project
Output [2]: [distributionCenters#29342.internalRefUUID AS _extract_internalRefUUID#33403, distributionCenters#29342.storageLocations AS _extract_storageLocations#33404]
Input [1]: [distributionCenters#29342]
(1188) Generate
Input [2]: [_extract_internalRefUUID#33403, _extract_storageLocations#33404]
Arguments: explode(_extract_storageLocations#33404), [_extract_internalRefUUID#33403], false, [storageLocations#29343]
(1189) Project
Output [3]: [_extract_internalRefUUID#33403 AS plantUuid#29345, storageLocations#29343.id AS storageLocId#29346, storageLocations#29343.internalRefUUID AS storageLocUuid#29347]
Input [2]: [_extract_internalRefUUID#33403, storageLocations#29343]
(1190) BroadcastExchange
Input [3]: [plantUuid#29345, storageLocId#29346, storageLocUuid#29347]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122057]
(1191) Scan parquet
Output [2]: [product#29348, plant#29349]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1192) Filter
Input [2]: [product#29348, plant#29349]
Condition : isnotnull(plant#29349)
(1193) Exchange
Input [2]: [product#29348, plant#29349]
Arguments: hashpartitioning(product#29348, plant#29349, 10), REPARTITION_BY_NUM, [plan_id=121149]
(1194) Scan parquet
Output [4]: [plant#29354, product#29355, productionAspect#29357, systemId#29352]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(1195) Project
Output [4]: [plant#29354.internalRefUUID AS _extract_internalRefUUID#34081, product#29355.internalRefUUID AS _extract_internalRefUUID#34082, productionAspect#29357.productMovementPlants.unitOfIssue.code AS _extract_code#34083, productionAspect#29357.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34084]
Input [4]: [plant#29354, product#29355, productionAspect#29357, systemId#29352]
(1196) Exchange
Input [4]: [_extract_internalRefUUID#34081, _extract_internalRefUUID#34082, _extract_code#34083, _extract_internalRefUUID#34084]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119859]
(1197) Project
Output [4]: [_extract_code#34083, _extract_internalRefUUID#34084, _extract_internalRefUUID#34082, _extract_internalRefUUID#34081]
Input [4]: [_extract_internalRefUUID#34081, _extract_internalRefUUID#34082, _extract_code#34083, _extract_internalRefUUID#34084]
(1198) BroadcastExchange
Input [4]: [_extract_code#34083, _extract_internalRefUUID#34084, _extract_internalRefUUID#34082, _extract_internalRefUUID#34081]
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=122037]
(1199) BroadcastHashJoin
Left keys [4]: [coalesce(product#29348, ), isnull(product#29348), coalesce(plant#29349, ), isnull(plant#29349)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34082, ), isnull(_extract_internalRefUUID#34082), coalesce(_extract_internalRefUUID#34081, ), isnull(_extract_internalRefUUID#34081)]
Join type: LeftOuter
Join condition: None
(1200) Project
Output [4]: [product#29348, plant#29349, _extract_code#34083, _extract_internalRefUUID#34084]
Input [6]: [product#29348, plant#29349, _extract_code#34083, _extract_internalRefUUID#34084, _extract_internalRefUUID#34082, _extract_internalRefUUID#34081]
(1201) Scan parquet
Output [2]: [internalUUID#29362, systemId#29361]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1202) Project
Output [1]: [internalUUID#29362]
Input [2]: [internalUUID#29362, systemId#29361]
(1203) Exchange
Input [1]: [internalUUID#29362]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119865]
(1204) BroadcastExchange
Input [1]: [internalUUID#29362]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122041]
(1205) BroadcastHashJoin
Left keys [2]: [coalesce(plant#29349, ), isnull(plant#29349)]
Right keys [2]: [coalesce(internalUUID#29362, ), isnull(internalUUID#29362)]
Join type: LeftOuter
Join condition: None
(1206) Project
Output [4]: [product#29348, plant#29349, _extract_code#34083, _extract_internalRefUUID#34084]
Input [5]: [product#29348, plant#29349, _extract_code#34083, _extract_internalRefUUID#34084, internalUUID#29362]
(1207) Scan parquet
Output [4]: [internalUUID#29376, baseUnitOfMeasure#29380, unitOfMeasureConversions#29382, systemId#29375]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1208) Filter
Input [4]: [internalUUID#29376, baseUnitOfMeasure#29380, unitOfMeasureConversions#29382, systemId#29375]
Condition : isnotnull(internalUUID#29376)
(1209) Project
Output [3]: [internalUUID#29376, baseUnitOfMeasure#29380, unitOfMeasureConversions#29382]
Input [4]: [internalUUID#29376, baseUnitOfMeasure#29380, unitOfMeasureConversions#29382, systemId#29375]
(1210) Exchange
Input [3]: [internalUUID#29376, baseUnitOfMeasure#29380, unitOfMeasureConversions#29382]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119871]
(1211) BroadcastExchange
Input [3]: [internalUUID#29376, baseUnitOfMeasure#29380, unitOfMeasureConversions#29382]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122045]
(1212) BroadcastHashJoin
Left keys [1]: [product#29348]
Right keys [1]: [internalUUID#29376]
Join type: LeftOuter
Join condition: None
(1213) Project
Output [2]: [plant#29349, filter(unitOfMeasureConversions#29382, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34083) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34084)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#29380.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#29380.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#29387]
Input [7]: [product#29348, plant#29349, _extract_code#34083, _extract_internalRefUUID#34084, internalUUID#29376, baseUnitOfMeasure#29380, unitOfMeasureConversions#29382]
(1214) Generate
Input [2]: [plant#29349, filteredUnitOfMeasureConversions#29387]
Arguments: explode(filteredUnitOfMeasureConversions#29387.quantityNumerator), [plant#29349, filteredUnitOfMeasureConversions#29387], true, [quantityNumerator#29388]
(1215) Project
Output [2]: [plant#29349, filteredUnitOfMeasureConversions#29387.quantityDenominator AS _extract_quantityDenominator#33405]
Input [3]: [plant#29349, filteredUnitOfMeasureConversions#29387, quantityNumerator#29388]
(1216) Generate
Input [2]: [plant#29349, _extract_quantityDenominator#33405]
Arguments: explode(_extract_quantityDenominator#33405), [plant#29349], true, [quantityDenominator#29389]
(1217) Project
Output [1]: [plant#29349]
Input [2]: [plant#29349, quantityDenominator#29389]
(1218) HashAggregate
Input [1]: [plant#29349]
Keys [1]: [plant#29349]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#29349]
(1219) Exchange
Input [1]: [plant#29349]
Arguments: hashpartitioning(plant#29349, 10), ENSURE_REQUIREMENTS, [plan_id=122054]
(1220) HashAggregate
Input [1]: [plant#29349]
Keys [1]: [plant#29349]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#29349]
(1221) BroadcastHashJoin
Left keys [1]: [plantUuid#29345]
Right keys [1]: [plant#29349]
Join type: Inner
Join condition: None
(1222) Project
Output [3]: [plantUuid#29345, storageLocId#29346, storageLocUuid#29347]
Input [4]: [plantUuid#29345, storageLocId#29346, storageLocUuid#29347, plant#29349]
(1223) BroadcastHashJoin
Left keys [2]: [coalesce(plant#29317.internalRefUUID, ), isnull(plant#29317.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#29345, ), isnull(plantUuid#29345)]
Join type: Inner
Join condition: None
(1224) Generate
Input [9]: [systemId#29314, internalUUID#29315, product#29316, plant#29317, calculationDateTime#29318, stockQuantities#29319, plantUuid#29345, storageLocId#29346, storageLocUuid#29347]
Arguments: explode(filter(stockQuantities#29319, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#29347) AND (lambda x#26016.storageLocation.Id = storageLocId#29346)), lambda x#26016, false))), [systemId#29314, internalUUID#29315, product#29316, plant#29317, calculationDateTime#29318, plantUuid#29345], false, [stockQuantity#29392]
(1225) ObjectHashAggregate
Input [7]: [systemId#29314, internalUUID#29315, product#29316, plant#29317, calculationDateTime#29318, plantUuid#29345, stockQuantity#29392]
Keys [5]: [plantUuid#29345, internalUUID#29315, plant#29317, product#29316, systemId#29314]
Functions [2]: [partial_first(calculationDateTime#29318, false), partial_collect_list(stockQuantity#29392, 0, 0)]
Aggregate Attributes [3]: [first#35113, valueSet#35114, buf#35115]
Results [8]: [plantUuid#29345, internalUUID#29315, plant#29317, product#29316, systemId#29314, first#35116, valueSet#35117, buf#35118]
(1226) ObjectHashAggregate
Input [8]: [plantUuid#29345, internalUUID#29315, plant#29317, product#29316, systemId#29314, first#35116, valueSet#35117, buf#35118]
Keys [5]: [plantUuid#29345, internalUUID#29315, plant#29317, product#29316, systemId#29314]
Functions [2]: [first(calculationDateTime#29318, false), collect_list(stockQuantity#29392, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#29318)()#26031, collect_list(stockQuantity#29392, 0, 0)#26032]
Results [4]: [product#29316, plant#29317, first(calculationDateTime#29318)()#26031 AS calculationDateTime#29393, collect_list(stockQuantity#29392, 0, 0)#26032 AS stockQuantities#29394]
(1227) Filter
Input [4]: [product#29316, plant#29317, calculationDateTime#29393, stockQuantities#29394]
Condition : ((size(stockQuantities#29394, true) > 0) AND isnotnull(calculationDateTime#29393))
(1228) Generate
Input [4]: [product#29316, plant#29317, calculationDateTime#29393, stockQuantities#29394]
Arguments: explode(stockQuantities#29394), [product#29316, plant#29317, calculationDateTime#29393], false, [stockQuantity#29395]
(1229) Filter
Input [4]: [product#29316, plant#29317, calculationDateTime#29393, stockQuantity#29395]
Condition : (((isnotnull(stockQuantity#29395.specialStockIndicator.code) AND isnotnull(stockQuantity#29395.stockType.code)) AND (stockQuantity#29395.specialStockIndicator.code = )) AND (stockQuantity#29395.stockType.code = 01))
(1230) Project
Output [4]: [plant#29317.internalRefUUID AS plantUuid#29397, product#29316.internalRefUUID AS productUuid#29399, calculationDateTime#29393, stockQuantity#29395.storagelocation.id AS storageLocId#29400]
Input [4]: [product#29316, plant#29317, calculationDateTime#29393, stockQuantity#29395]
(1231) Exchange
Input [4]: [plantUuid#29397, productUuid#29399, calculationDateTime#29393, storageLocId#29400]
Arguments: hashpartitioning(productUuid#29399, plantUuid#29397, 10), ENSURE_REQUIREMENTS, [plan_id=122087]
(1232) Sort
Input [4]: [plantUuid#29397, productUuid#29399, calculationDateTime#29393, storageLocId#29400]
Arguments: [productUuid#29399 ASC NULLS FIRST, plantUuid#29397 ASC NULLS FIRST], false, 0
(1233) Scan parquet
Output [3]: [product#29405, plant#29406, orderDateTime#29407]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1234) Filter
Input [3]: [product#29405, plant#29406, orderDateTime#29407]
Condition : ((isnotnull(orderDateTime#29407) AND isnotnull(plant#29406)) AND isnotnull(product#29405))
(1235) Exchange
Input [3]: [product#29405, plant#29406, orderDateTime#29407]
Arguments: hashpartitioning(product#29405, plant#29406, 10), REPARTITION_BY_NUM, [plan_id=121172]
(1236) Scan parquet
Output [4]: [plant#29411, product#29412, productionAspect#29414, systemId#29409]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(1237) Project
Output [4]: [plant#29411.internalRefUUID AS _extract_internalRefUUID#34087, product#29412.internalRefUUID AS _extract_internalRefUUID#34088, productionAspect#29414.productMovementPlants.unitOfIssue.code AS _extract_code#34085, productionAspect#29414.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34086]
Input [4]: [plant#29411, product#29412, productionAspect#29414, systemId#29409]
(1238) Exchange
Input [4]: [_extract_internalRefUUID#34087, _extract_internalRefUUID#34088, _extract_code#34085, _extract_internalRefUUID#34086]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119896]
(1239) Project
Output [4]: [_extract_code#34085, _extract_internalRefUUID#34086, _extract_internalRefUUID#34088, _extract_internalRefUUID#34087]
Input [4]: [_extract_internalRefUUID#34087, _extract_internalRefUUID#34088, _extract_code#34085, _extract_internalRefUUID#34086]
(1240) BroadcastExchange
Input [4]: [_extract_code#34085, _extract_internalRefUUID#34086, _extract_internalRefUUID#34088, _extract_internalRefUUID#34087]
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=122070]
(1241) BroadcastHashJoin
Left keys [4]: [coalesce(product#29405, ), isnull(product#29405), coalesce(plant#29406, ), isnull(plant#29406)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34088, ), isnull(_extract_internalRefUUID#34088), coalesce(_extract_internalRefUUID#34087, ), isnull(_extract_internalRefUUID#34087)]
Join type: LeftOuter
Join condition: None
(1242) Project
Output [5]: [product#29405, plant#29406, orderDateTime#29407, _extract_code#34085, _extract_internalRefUUID#34086]
Input [7]: [product#29405, plant#29406, orderDateTime#29407, _extract_code#34085, _extract_internalRefUUID#34086, _extract_internalRefUUID#34088, _extract_internalRefUUID#34087]
(1243) Scan parquet
Output [2]: [internalUUID#29419, systemId#29418]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1244) Project
Output [1]: [internalUUID#29419]
Input [2]: [internalUUID#29419, systemId#29418]
(1245) Exchange
Input [1]: [internalUUID#29419]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119902]
(1246) BroadcastExchange
Input [1]: [internalUUID#29419]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122074]
(1247) BroadcastHashJoin
Left keys [2]: [coalesce(plant#29406, ), isnull(plant#29406)]
Right keys [2]: [coalesce(internalUUID#29419, ), isnull(internalUUID#29419)]
Join type: LeftOuter
Join condition: None
(1248) Project
Output [5]: [product#29405, plant#29406, orderDateTime#29407, _extract_code#34085, _extract_internalRefUUID#34086]
Input [6]: [product#29405, plant#29406, orderDateTime#29407, _extract_code#34085, _extract_internalRefUUID#34086, internalUUID#29419]
(1249) Scan parquet
Output [4]: [internalUUID#29433, baseUnitOfMeasure#29437, unitOfMeasureConversions#29439, systemId#29432]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1250) Filter
Input [4]: [internalUUID#29433, baseUnitOfMeasure#29437, unitOfMeasureConversions#29439, systemId#29432]
Condition : isnotnull(internalUUID#29433)
(1251) Project
Output [3]: [internalUUID#29433, baseUnitOfMeasure#29437, unitOfMeasureConversions#29439]
Input [4]: [internalUUID#29433, baseUnitOfMeasure#29437, unitOfMeasureConversions#29439, systemId#29432]
(1252) Exchange
Input [3]: [internalUUID#29433, baseUnitOfMeasure#29437, unitOfMeasureConversions#29439]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119908]
(1253) BroadcastExchange
Input [3]: [internalUUID#29433, baseUnitOfMeasure#29437, unitOfMeasureConversions#29439]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122078]
(1254) BroadcastHashJoin
Left keys [1]: [product#29405]
Right keys [1]: [internalUUID#29433]
Join type: LeftOuter
Join condition: None
(1255) Project
Output [4]: [product#29405, plant#29406, orderDateTime#29407, filter(unitOfMeasureConversions#29439, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34085) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34086)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#29437.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#29437.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#29444]
Input [8]: [product#29405, plant#29406, orderDateTime#29407, _extract_code#34085, _extract_internalRefUUID#34086, internalUUID#29433, baseUnitOfMeasure#29437, unitOfMeasureConversions#29439]
(1256) Generate
Input [4]: [product#29405, plant#29406, orderDateTime#29407, filteredUnitOfMeasureConversions#29444]
Arguments: explode(filteredUnitOfMeasureConversions#29444.quantityNumerator), [product#29405, plant#29406, orderDateTime#29407, filteredUnitOfMeasureConversions#29444], true, [quantityNumerator#29445]
(1257) Project
Output [4]: [product#29405, plant#29406, orderDateTime#29407, filteredUnitOfMeasureConversions#29444.quantityDenominator AS _extract_quantityDenominator#33409]
Input [5]: [product#29405, plant#29406, orderDateTime#29407, filteredUnitOfMeasureConversions#29444, quantityNumerator#29445]
(1258) Generate
Input [4]: [product#29405, plant#29406, orderDateTime#29407, _extract_quantityDenominator#33409]
Arguments: explode(_extract_quantityDenominator#33409), [product#29405, plant#29406, orderDateTime#29407], true, [quantityDenominator#29446]
(1259) Project
Output [3]: [product#29405, plant#29406, orderDateTime#29407]
Input [4]: [product#29405, plant#29406, orderDateTime#29407, quantityDenominator#29446]
(1260) Sort
Input [3]: [product#29405, plant#29406, orderDateTime#29407]
Arguments: [product#29405 ASC NULLS FIRST, plant#29406 ASC NULLS FIRST], false, 0
(1261) SortMergeJoin
Left keys [2]: [productUuid#29399, plantUuid#29397]
Right keys [2]: [product#29405, plant#29406]
Join type: Inner
Join condition: (calculationDateTime#29393 <= orderDateTime#29407)
(1262) Project
Output [4]: [plantUuid#29397 AS plant#29449, productUuid#29399 AS product#29450, storageLocId#29400, calculationDateTime#29393]
Input [7]: [plantUuid#29397, productUuid#29399, calculationDateTime#29393, storageLocId#29400, product#29405, plant#29406, orderDateTime#29407]
(1263) HashAggregate
Input [4]: [plant#29449, product#29450, storageLocId#29400, calculationDateTime#29393]
Keys [3]: [plant#29449, product#29450, storageLocId#29400]
Functions [1]: [partial_max(calculationDateTime#29393)]
Aggregate Attributes [1]: [max#35111]
Results [4]: [plant#29449, product#29450, storageLocId#29400, max#35112]
(1264) HashAggregate
Input [4]: [plant#29449, product#29450, storageLocId#29400, max#35112]
Keys [3]: [plant#29449, product#29450, storageLocId#29400]
Functions [1]: [max(calculationDateTime#29393)]
Aggregate Attributes [1]: [max(calculationDateTime#29393)#26109]
Results [4]: [plant#29449, product#29450, storageLocId#29400, max(calculationDateTime#29393)#26109 AS max_calc_datetime#29451]
(1265) Exchange
Input [4]: [plant#29449, product#29450, storageLocId#29400, max_calc_datetime#29451]
Arguments: hashpartitioning(coalesce(plant#29449, ), isnull(plant#29449), coalesce(product#29450, ), isnull(product#29450), coalesce(storageLocId#29400, ), isnull(storageLocId#29400), coalesce(max_calc_datetime#29451, 1970-01-01 00:00:00), isnull(max_calc_datetime#29451), 10), ENSURE_REQUIREMENTS, [plan_id=122097]
(1266) Sort
Input [4]: [plant#29449, product#29450, storageLocId#29400, max_calc_datetime#29451]
Arguments: [coalesce(plant#29449, ) ASC NULLS FIRST, isnull(plant#29449) ASC NULLS FIRST, coalesce(product#29450, ) ASC NULLS FIRST, isnull(product#29450) ASC NULLS FIRST, coalesce(storageLocId#29400, ) ASC NULLS FIRST, isnull(storageLocId#29400) ASC NULLS FIRST, coalesce(max_calc_datetime#29451, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#29451) ASC NULLS FIRST], false, 0
(1267) SortMergeJoin
Left keys [8]: [coalesce(plant#29312, ), isnull(plant#29312), coalesce(product#29313, ), isnull(product#29313), coalesce(storageLocId#29263, ), isnull(storageLocId#29263), coalesce(calculationDateTime#29256, 1970-01-01 00:00:00), isnull(calculationDateTime#29256)]
Right keys [8]: [coalesce(plant#29449, ), isnull(plant#29449), coalesce(product#29450, ), isnull(product#29450), coalesce(storageLocId#29400, ), isnull(storageLocId#29400), coalesce(max_calc_datetime#29451, 1970-01-01 00:00:00), isnull(max_calc_datetime#29451)]
Join type: Inner
Join condition: None
(1268) Project
Output [3]: [plant#29312, product#29313, calculationDateTime#29256]
Input [8]: [plant#29312, product#29313, storageLocId#29263, calculationDateTime#29256, plant#29449, product#29450, storageLocId#29400, max_calc_datetime#29451]
(1269) HashAggregate
Input [3]: [plant#29312, product#29313, calculationDateTime#29256]
Keys [2]: [product#29313, plant#29312]
Functions [1]: [partial_min(calculationDateTime#29256)]
Aggregate Attributes [1]: [min#35103]
Results [3]: [product#29313, plant#29312, min#35104]
(1270) Exchange
Input [3]: [product#29313, plant#29312, min#35104]
Arguments: hashpartitioning(product#29313, plant#29312, 10), ENSURE_REQUIREMENTS, [plan_id=122104]
(1271) HashAggregate
Input [3]: [product#29313, plant#29312, min#35104]
Keys [2]: [product#29313, plant#29312]
Functions [1]: [min(calculationDateTime#29256)]
Aggregate Attributes [1]: [min(calculationDateTime#29256)#26265]
Results [3]: [product#29313, plant#29312, min(calculationDateTime#29256)#26265 AS minCalculationDateTime#29453]
(1272) Sort
Input [3]: [product#29313, plant#29312, minCalculationDateTime#29453]
Arguments: [product#29313 ASC NULLS FIRST, plant#29312 ASC NULLS FIRST], false, 0
(1273) SortMergeJoin
Left keys [2]: [product#29133, plant#29134]
Right keys [2]: [product#29313, plant#29312]
Join type: LeftOuter
Join condition: None
(1274) Project
Output [3]: [product#29133, plant#29134, CASE WHEN isnotnull(minCalculationDateTime#29453) THEN minCalculationDateTime#29453 ELSE orderDateTime#29135 END AS stockDatetime#29455]
Input [6]: [product#29133, plant#29134, orderDateTime#29135, product#29313, plant#29312, minCalculationDateTime#29453]
(1275) Exchange
Input [3]: [product#29133, plant#29134, stockDatetime#29455]
Arguments: hashpartitioning(coalesce(plant#29134, ), isnull(plant#29134), coalesce(product#29133, ), isnull(product#29133), 10), ENSURE_REQUIREMENTS, [plan_id=122268]
(1276) Sort
Input [3]: [product#29133, plant#29134, stockDatetime#29455]
Arguments: [coalesce(plant#29134, ) ASC NULLS FIRST, isnull(plant#29134) ASC NULLS FIRST, coalesce(product#29133, ) ASC NULLS FIRST, isnull(product#29133) ASC NULLS FIRST], false, 0
(1277) Scan parquet
Output [3]: [product#29458, plant#29459, orderDateTime#29460]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1278) Exchange
Input [3]: [product#29458, plant#29459, orderDateTime#29460]
Arguments: hashpartitioning(product#29458, plant#29459, 10), REPARTITION_BY_NUM, [plan_id=119926]
(1279) Scan parquet
Output [8]: [internalUUID#29463, plant#29464, product#29465, blockedForReplenishmentStartingFrom#29466, productionAspect#29467, salesPlant#29468, listing#29469, systemId#29462]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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,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>>>
(1280) Project
Output [8]: [systemId#29462, internalUUID#29463, plant#29464, product#29465, blockedForReplenishmentStartingFrom#29466, productionAspect#29467, salesPlant#29468, listing#29469]
Input [8]: [internalUUID#29463, plant#29464, product#29465, blockedForReplenishmentStartingFrom#29466, productionAspect#29467, salesPlant#29468, listing#29469, systemId#29462]
(1281) Exchange
Input [8]: [systemId#29462, internalUUID#29463, plant#29464, product#29465, blockedForReplenishmentStartingFrom#29466, productionAspect#29467, salesPlant#29468, listing#29469]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119929]
(1282) Project
Output [1]: [struct(systemId, systemId#29462, internalUUID, internalUUID#29463, plant, plant#29464, product, product#29465, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#29466, productionAspect, productionAspect#29467, salesPlant, salesPlant#29468, listing, listing#29469) AS productPlant#29470]
Input [8]: [systemId#29462, internalUUID#29463, plant#29464, product#29465, blockedForReplenishmentStartingFrom#29466, productionAspect#29467, salesPlant#29468, listing#29469]
(1283) BroadcastExchange
Input [1]: [productPlant#29470]
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,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,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,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,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=122112]
(1284) BroadcastHashJoin
Left keys [4]: [coalesce(product#29458, ), isnull(product#29458), coalesce(plant#29459, ), isnull(plant#29459)]
Right keys [4]: [coalesce(productPlant#29470.product.internalRefUUID, ), isnull(productPlant#29470.product.internalRefUUID), coalesce(productPlant#29470.plant.internalRefUUID, ), isnull(productPlant#29470.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1285) Scan parquet
Output [3]: [internalUUID#29472, address#29478, systemId#29471]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1286) Project
Output [2]: [internalUUID#29472, address#29478.timeZone.code AS timezonecode#29483]
Input [3]: [internalUUID#29472, address#29478, systemId#29471]
(1287) Exchange
Input [2]: [internalUUID#29472, timezonecode#29483]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119934]
(1288) BroadcastExchange
Input [2]: [internalUUID#29472, timezonecode#29483]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122115]
(1289) BroadcastHashJoin
Left keys [2]: [coalesce(plant#29459, ), isnull(plant#29459)]
Right keys [2]: [coalesce(internalUUID#29472, ), isnull(internalUUID#29472)]
Join type: LeftOuter
Join condition: None
(1290) Project
Output [5]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, CASE WHEN isnotnull(timezonecode#29483) THEN timezonecode#29483 ELSE UTC END AS timezonecode#29484]
Input [6]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, internalUUID#29472, timezonecode#29483]
(1291) Scan parquet
Output [4]: [internalUUID#29486, baseUnitOfMeasure#29490, unitOfMeasureConversions#29492, systemId#29485]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1292) Filter
Input [4]: [internalUUID#29486, baseUnitOfMeasure#29490, unitOfMeasureConversions#29492, systemId#29485]
Condition : isnotnull(internalUUID#29486)
(1293) Project
Output [3]: [internalUUID#29486, baseUnitOfMeasure#29490, unitOfMeasureConversions#29492]
Input [4]: [internalUUID#29486, baseUnitOfMeasure#29490, unitOfMeasureConversions#29492, systemId#29485]
(1294) Exchange
Input [3]: [internalUUID#29486, baseUnitOfMeasure#29490, unitOfMeasureConversions#29492]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119940]
(1295) BroadcastExchange
Input [3]: [internalUUID#29486, baseUnitOfMeasure#29490, unitOfMeasureConversions#29492]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122119]
(1296) BroadcastHashJoin
Left keys [1]: [product#29458]
Right keys [1]: [internalUUID#29486]
Join type: LeftOuter
Join condition: None
(1297) Project
Output [6]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, filter(unitOfMeasureConversions#29492, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#29470.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#29470.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#29490.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#29490.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#29497]
Input [8]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, internalUUID#29486, baseUnitOfMeasure#29490, unitOfMeasureConversions#29492]
(1298) Project
Output [7]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, filteredUnitOfMeasureConversions#29497.quantityDenominator AS _extract_quantityDenominator#33616, filteredUnitOfMeasureConversions#29497.quantityNumerator AS _extract_quantityNumerator#33617]
Input [6]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, filteredUnitOfMeasureConversions#29497]
(1299) Generate
Input [7]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, _extract_quantityDenominator#33616, _extract_quantityNumerator#33617]
Arguments: explode(_extract_quantityNumerator#33617), [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, _extract_quantityDenominator#33616], true, [quantityNumerator#29498]
(1300) Generate
Input [7]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, _extract_quantityDenominator#33616, quantityNumerator#29498]
Arguments: explode(_extract_quantityDenominator#33616), [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, quantityNumerator#29498], true, [quantityDenominator#29499]
(1301) Project
Output [6]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, (cast(quantityNumerator#29498 as double) / cast(quantityDenominator#29499 as double)) AS outboundUnit#29500]
Input [7]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, quantityNumerator#29498, quantityDenominator#29499]
(1302) Project
Output [6]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, CASE WHEN (isnull(outboundUnit#29500) OR (outboundUnit#29500 <= 0.0)) THEN 1.0 ELSE outboundUnit#29500 END AS outboundUnit#29501]
Input [6]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29500]
(1303) Sort
Input [6]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29501]
Arguments: [product#29458 ASC NULLS FIRST, plant#29459 ASC NULLS FIRST], false, 0
(1304) Scan parquet
Output [6]: [internalUUID#29503, product#29504, plant#29505, calculationDateTime#29506, stockQuantities#29507, systemId#29502]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(1305) Filter
Input [6]: [internalUUID#29503, product#29504, plant#29505, calculationDateTime#29506, stockQuantities#29507, systemId#29502]
Condition : (isnotnull(plant#29505.internalRefUUID) AND isnotnull(product#29504.internalRefUUID))
(1306) Project
Output [6]: [systemId#29502, internalUUID#29503, product#29504, plant#29505, calculationDateTime#29506, stockQuantities#29507]
Input [6]: [internalUUID#29503, product#29504, plant#29505, calculationDateTime#29506, stockQuantities#29507, systemId#29502]
(1307) Exchange
Input [6]: [systemId#29502, internalUUID#29503, product#29504, plant#29505, calculationDateTime#29506, stockQuantities#29507]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119951]
(1308) BroadcastExchange
Input [6]: [systemId#29502, internalUUID#29503, product#29504, plant#29505, calculationDateTime#29506, stockQuantities#29507]
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=122151]
(1309) Scan parquet
Output [2]: [marketUnit#29508, distributionCenters#29514]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1310) Filter
Input [2]: [marketUnit#29508, distributionCenters#29514]
Condition : (((marketUnit#29508 <=> DIP_1691) AND (size(distributionCenters#29514, true) > 0)) AND isnotnull(distributionCenters#29514))
(1311) Project
Output [1]: [distributionCenters#29514]
Input [2]: [marketUnit#29508, distributionCenters#29514]
(1312) Exchange
Input [1]: [distributionCenters#29514]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119955]
(1313) Generate
Input [1]: [distributionCenters#29514]
Arguments: explode(distributionCenters#29514), false, [distributionCenters#29530]
(1314) Filter
Input [1]: [distributionCenters#29530]
Condition : (((size(distributionCenters#29530.storageLocations, true) > 0) AND isnotnull(distributionCenters#29530.storageLocations)) AND isnotnull(distributionCenters#29530.internalRefUUID))
(1315) Project
Output [2]: [distributionCenters#29530.internalRefUUID AS _extract_internalRefUUID#33415, distributionCenters#29530.storageLocations AS _extract_storageLocations#33416]
Input [1]: [distributionCenters#29530]
(1316) Generate
Input [2]: [_extract_internalRefUUID#33415, _extract_storageLocations#33416]
Arguments: explode(_extract_storageLocations#33416), [_extract_internalRefUUID#33415], false, [storageLocations#29531]
(1317) Project
Output [3]: [_extract_internalRefUUID#33415 AS plantUuid#29533, storageLocations#29531.id AS storageLocId#29534, storageLocations#29531.internalRefUUID AS storageLocUuid#29535]
Input [2]: [_extract_internalRefUUID#33415, storageLocations#29531]
(1318) BroadcastExchange
Input [3]: [plantUuid#29533, storageLocId#29534, storageLocUuid#29535]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122147]
(1319) Scan parquet
Output [2]: [product#29536, plant#29537]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1320) Filter
Input [2]: [product#29536, plant#29537]
Condition : isnotnull(plant#29537)
(1321) Exchange
Input [2]: [product#29536, plant#29537]
Arguments: hashpartitioning(product#29536, plant#29537, 10), REPARTITION_BY_NUM, [plan_id=121193]
(1322) Scan parquet
Output [4]: [plant#29542, product#29543, productionAspect#29545, systemId#29540]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(1323) Project
Output [4]: [plant#29542.internalRefUUID AS _extract_internalRefUUID#34091, product#29543.internalRefUUID AS _extract_internalRefUUID#34092, productionAspect#29545.productMovementPlants.unitOfIssue.code AS _extract_code#34089, productionAspect#29545.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34090]
Input [4]: [plant#29542, product#29543, productionAspect#29545, systemId#29540]
(1324) Exchange
Input [4]: [_extract_internalRefUUID#34091, _extract_internalRefUUID#34092, _extract_code#34089, _extract_internalRefUUID#34090]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119967]
(1325) Project
Output [4]: [_extract_code#34089, _extract_internalRefUUID#34090, _extract_internalRefUUID#34092, _extract_internalRefUUID#34091]
Input [4]: [_extract_internalRefUUID#34091, _extract_internalRefUUID#34092, _extract_code#34089, _extract_internalRefUUID#34090]
(1326) BroadcastExchange
Input [4]: [_extract_code#34089, _extract_internalRefUUID#34090, _extract_internalRefUUID#34092, _extract_internalRefUUID#34091]
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=122127]
(1327) BroadcastHashJoin
Left keys [4]: [coalesce(product#29536, ), isnull(product#29536), coalesce(plant#29537, ), isnull(plant#29537)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34092, ), isnull(_extract_internalRefUUID#34092), coalesce(_extract_internalRefUUID#34091, ), isnull(_extract_internalRefUUID#34091)]
Join type: LeftOuter
Join condition: None
(1328) Project
Output [4]: [product#29536, plant#29537, _extract_code#34089, _extract_internalRefUUID#34090]
Input [6]: [product#29536, plant#29537, _extract_code#34089, _extract_internalRefUUID#34090, _extract_internalRefUUID#34092, _extract_internalRefUUID#34091]
(1329) Scan parquet
Output [2]: [internalUUID#29550, systemId#29549]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1330) Project
Output [1]: [internalUUID#29550]
Input [2]: [internalUUID#29550, systemId#29549]
(1331) Exchange
Input [1]: [internalUUID#29550]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119973]
(1332) BroadcastExchange
Input [1]: [internalUUID#29550]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122131]
(1333) BroadcastHashJoin
Left keys [2]: [coalesce(plant#29537, ), isnull(plant#29537)]
Right keys [2]: [coalesce(internalUUID#29550, ), isnull(internalUUID#29550)]
Join type: LeftOuter
Join condition: None
(1334) Project
Output [4]: [product#29536, plant#29537, _extract_code#34089, _extract_internalRefUUID#34090]
Input [5]: [product#29536, plant#29537, _extract_code#34089, _extract_internalRefUUID#34090, internalUUID#29550]
(1335) Scan parquet
Output [4]: [internalUUID#29564, baseUnitOfMeasure#29568, unitOfMeasureConversions#29570, systemId#29563]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1336) Filter
Input [4]: [internalUUID#29564, baseUnitOfMeasure#29568, unitOfMeasureConversions#29570, systemId#29563]
Condition : isnotnull(internalUUID#29564)
(1337) Project
Output [3]: [internalUUID#29564, baseUnitOfMeasure#29568, unitOfMeasureConversions#29570]
Input [4]: [internalUUID#29564, baseUnitOfMeasure#29568, unitOfMeasureConversions#29570, systemId#29563]
(1338) Exchange
Input [3]: [internalUUID#29564, baseUnitOfMeasure#29568, unitOfMeasureConversions#29570]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=119979]
(1339) BroadcastExchange
Input [3]: [internalUUID#29564, baseUnitOfMeasure#29568, unitOfMeasureConversions#29570]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122135]
(1340) BroadcastHashJoin
Left keys [1]: [product#29536]
Right keys [1]: [internalUUID#29564]
Join type: LeftOuter
Join condition: None
(1341) Project
Output [2]: [plant#29537, filter(unitOfMeasureConversions#29570, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34089) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34090)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#29568.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#29568.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#29575]
Input [7]: [product#29536, plant#29537, _extract_code#34089, _extract_internalRefUUID#34090, internalUUID#29564, baseUnitOfMeasure#29568, unitOfMeasureConversions#29570]
(1342) Generate
Input [2]: [plant#29537, filteredUnitOfMeasureConversions#29575]
Arguments: explode(filteredUnitOfMeasureConversions#29575.quantityNumerator), [plant#29537, filteredUnitOfMeasureConversions#29575], true, [quantityNumerator#29576]
(1343) Project
Output [2]: [plant#29537, filteredUnitOfMeasureConversions#29575.quantityDenominator AS _extract_quantityDenominator#33417]
Input [3]: [plant#29537, filteredUnitOfMeasureConversions#29575, quantityNumerator#29576]
(1344) Generate
Input [2]: [plant#29537, _extract_quantityDenominator#33417]
Arguments: explode(_extract_quantityDenominator#33417), [plant#29537], true, [quantityDenominator#29577]
(1345) Project
Output [1]: [plant#29537]
Input [2]: [plant#29537, quantityDenominator#29577]
(1346) HashAggregate
Input [1]: [plant#29537]
Keys [1]: [plant#29537]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#29537]
(1347) Exchange
Input [1]: [plant#29537]
Arguments: hashpartitioning(plant#29537, 10), ENSURE_REQUIREMENTS, [plan_id=122144]
(1348) HashAggregate
Input [1]: [plant#29537]
Keys [1]: [plant#29537]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#29537]
(1349) BroadcastHashJoin
Left keys [1]: [plantUuid#29533]
Right keys [1]: [plant#29537]
Join type: Inner
Join condition: None
(1350) Project
Output [3]: [plantUuid#29533, storageLocId#29534, storageLocUuid#29535]
Input [4]: [plantUuid#29533, storageLocId#29534, storageLocUuid#29535, plant#29537]
(1351) BroadcastHashJoin
Left keys [2]: [coalesce(plant#29505.internalRefUUID, ), isnull(plant#29505.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#29533, ), isnull(plantUuid#29533)]
Join type: Inner
Join condition: None
(1352) Generate
Input [9]: [systemId#29502, internalUUID#29503, product#29504, plant#29505, calculationDateTime#29506, stockQuantities#29507, plantUuid#29533, storageLocId#29534, storageLocUuid#29535]
Arguments: explode(filter(stockQuantities#29507, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#29535) AND (lambda x#26016.storageLocation.Id = storageLocId#29534)), lambda x#26016, false))), [systemId#29502, internalUUID#29503, product#29504, plant#29505, calculationDateTime#29506, plantUuid#29533], false, [stockQuantity#29580]
(1353) ObjectHashAggregate
Input [7]: [systemId#29502, internalUUID#29503, product#29504, plant#29505, calculationDateTime#29506, plantUuid#29533, stockQuantity#29580]
Keys [5]: [plantUuid#29533, internalUUID#29503, plant#29505, product#29504, systemId#29502]
Functions [2]: [partial_first(calculationDateTime#29506, false), partial_collect_list(stockQuantity#29580, 0, 0)]
Aggregate Attributes [3]: [first#35127, valueSet#35128, buf#35129]
Results [8]: [plantUuid#29533, internalUUID#29503, plant#29505, product#29504, systemId#29502, first#35130, valueSet#35131, buf#35132]
(1354) ObjectHashAggregate
Input [8]: [plantUuid#29533, internalUUID#29503, plant#29505, product#29504, systemId#29502, first#35130, valueSet#35131, buf#35132]
Keys [5]: [plantUuid#29533, internalUUID#29503, plant#29505, product#29504, systemId#29502]
Functions [2]: [first(calculationDateTime#29506, false), collect_list(stockQuantity#29580, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#29506)()#26031, collect_list(stockQuantity#29580, 0, 0)#26032]
Results [4]: [product#29504, plant#29505, first(calculationDateTime#29506)()#26031 AS calculationDateTime#29581, collect_list(stockQuantity#29580, 0, 0)#26032 AS stockQuantities#29582]
(1355) Filter
Input [4]: [product#29504, plant#29505, calculationDateTime#29581, stockQuantities#29582]
Condition : ((size(stockQuantities#29582, true) > 0) AND isnotnull(calculationDateTime#29581))
(1356) Generate
Input [4]: [product#29504, plant#29505, calculationDateTime#29581, stockQuantities#29582]
Arguments: explode(stockQuantities#29582), [product#29504, plant#29505, calculationDateTime#29581], false, [stockQuantity#29583]
(1357) Filter
Input [4]: [product#29504, plant#29505, calculationDateTime#29581, stockQuantity#29583]
Condition : (((isnotnull(stockQuantity#29583.specialStockIndicator.code) AND isnotnull(stockQuantity#29583.stockType.code)) AND (stockQuantity#29583.specialStockIndicator.code = )) AND (stockQuantity#29583.stockType.code = 01))
(1358) Project
Output [5]: [plant#29505.internalRefUUID AS plantUuid#29585, product#29504.internalRefUUID AS productUuid#29587, calculationDateTime#29581, stockQuantity#29583.storagelocation.id AS storageLocId#29588, stockQuantity#29583.quantity.measure AS quantity#29590]
Input [4]: [product#29504, plant#29505, calculationDateTime#29581, stockQuantity#29583]
(1359) Exchange
Input [5]: [plantUuid#29585, productUuid#29587, calculationDateTime#29581, storageLocId#29588, quantity#29590]
Arguments: hashpartitioning(productUuid#29587, plantUuid#29585, 10), ENSURE_REQUIREMENTS, [plan_id=122177]
(1360) Sort
Input [5]: [plantUuid#29585, productUuid#29587, calculationDateTime#29581, storageLocId#29588, quantity#29590]
Arguments: [productUuid#29587 ASC NULLS FIRST, plantUuid#29585 ASC NULLS FIRST], false, 0
(1361) Scan parquet
Output [3]: [product#29593, plant#29594, orderDateTime#29595]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1362) Filter
Input [3]: [product#29593, plant#29594, orderDateTime#29595]
Condition : ((isnotnull(orderDateTime#29595) AND isnotnull(plant#29594)) AND isnotnull(product#29593))
(1363) Exchange
Input [3]: [product#29593, plant#29594, orderDateTime#29595]
Arguments: hashpartitioning(product#29593, plant#29594, 10), REPARTITION_BY_NUM, [plan_id=121216]
(1364) Scan parquet
Output [4]: [plant#29599, product#29600, productionAspect#29602, systemId#29597]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(1365) Project
Output [4]: [plant#29599.internalRefUUID AS _extract_internalRefUUID#34096, product#29600.internalRefUUID AS _extract_internalRefUUID#34093, productionAspect#29602.productMovementPlants.unitOfIssue.code AS _extract_code#34094, productionAspect#29602.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34095]
Input [4]: [plant#29599, product#29600, productionAspect#29602, systemId#29597]
(1366) Exchange
Input [4]: [_extract_internalRefUUID#34096, _extract_internalRefUUID#34093, _extract_code#34094, _extract_internalRefUUID#34095]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120004]
(1367) Project
Output [4]: [_extract_code#34094, _extract_internalRefUUID#34095, _extract_internalRefUUID#34093, _extract_internalRefUUID#34096]
Input [4]: [_extract_internalRefUUID#34096, _extract_internalRefUUID#34093, _extract_code#34094, _extract_internalRefUUID#34095]
(1368) BroadcastExchange
Input [4]: [_extract_code#34094, _extract_internalRefUUID#34095, _extract_internalRefUUID#34093, _extract_internalRefUUID#34096]
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=122160]
(1369) BroadcastHashJoin
Left keys [4]: [coalesce(product#29593, ), isnull(product#29593), coalesce(plant#29594, ), isnull(plant#29594)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34093, ), isnull(_extract_internalRefUUID#34093), coalesce(_extract_internalRefUUID#34096, ), isnull(_extract_internalRefUUID#34096)]
Join type: LeftOuter
Join condition: None
(1370) Project
Output [5]: [product#29593, plant#29594, orderDateTime#29595, _extract_code#34094, _extract_internalRefUUID#34095]
Input [7]: [product#29593, plant#29594, orderDateTime#29595, _extract_code#34094, _extract_internalRefUUID#34095, _extract_internalRefUUID#34093, _extract_internalRefUUID#34096]
(1371) Scan parquet
Output [2]: [internalUUID#29607, systemId#29606]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1372) Project
Output [1]: [internalUUID#29607]
Input [2]: [internalUUID#29607, systemId#29606]
(1373) Exchange
Input [1]: [internalUUID#29607]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120010]
(1374) BroadcastExchange
Input [1]: [internalUUID#29607]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122164]
(1375) BroadcastHashJoin
Left keys [2]: [coalesce(plant#29594, ), isnull(plant#29594)]
Right keys [2]: [coalesce(internalUUID#29607, ), isnull(internalUUID#29607)]
Join type: LeftOuter
Join condition: None
(1376) Project
Output [5]: [product#29593, plant#29594, orderDateTime#29595, _extract_code#34094, _extract_internalRefUUID#34095]
Input [6]: [product#29593, plant#29594, orderDateTime#29595, _extract_code#34094, _extract_internalRefUUID#34095, internalUUID#29607]
(1377) Scan parquet
Output [4]: [internalUUID#29621, baseUnitOfMeasure#29625, unitOfMeasureConversions#29627, systemId#29620]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1378) Filter
Input [4]: [internalUUID#29621, baseUnitOfMeasure#29625, unitOfMeasureConversions#29627, systemId#29620]
Condition : isnotnull(internalUUID#29621)
(1379) Project
Output [3]: [internalUUID#29621, baseUnitOfMeasure#29625, unitOfMeasureConversions#29627]
Input [4]: [internalUUID#29621, baseUnitOfMeasure#29625, unitOfMeasureConversions#29627, systemId#29620]
(1380) Exchange
Input [3]: [internalUUID#29621, baseUnitOfMeasure#29625, unitOfMeasureConversions#29627]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120016]
(1381) BroadcastExchange
Input [3]: [internalUUID#29621, baseUnitOfMeasure#29625, unitOfMeasureConversions#29627]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122168]
(1382) BroadcastHashJoin
Left keys [1]: [product#29593]
Right keys [1]: [internalUUID#29621]
Join type: LeftOuter
Join condition: None
(1383) Project
Output [4]: [product#29593, plant#29594, orderDateTime#29595, filter(unitOfMeasureConversions#29627, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34094) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34095)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#29625.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#29625.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#29632]
Input [8]: [product#29593, plant#29594, orderDateTime#29595, _extract_code#34094, _extract_internalRefUUID#34095, internalUUID#29621, baseUnitOfMeasure#29625, unitOfMeasureConversions#29627]
(1384) Generate
Input [4]: [product#29593, plant#29594, orderDateTime#29595, filteredUnitOfMeasureConversions#29632]
Arguments: explode(filteredUnitOfMeasureConversions#29632.quantityNumerator), [product#29593, plant#29594, orderDateTime#29595, filteredUnitOfMeasureConversions#29632], true, [quantityNumerator#29633]
(1385) Project
Output [4]: [product#29593, plant#29594, orderDateTime#29595, filteredUnitOfMeasureConversions#29632.quantityDenominator AS _extract_quantityDenominator#33421]
Input [5]: [product#29593, plant#29594, orderDateTime#29595, filteredUnitOfMeasureConversions#29632, quantityNumerator#29633]
(1386) Generate
Input [4]: [product#29593, plant#29594, orderDateTime#29595, _extract_quantityDenominator#33421]
Arguments: explode(_extract_quantityDenominator#33421), [product#29593, plant#29594, orderDateTime#29595], true, [quantityDenominator#29634]
(1387) Project
Output [3]: [product#29593, plant#29594, orderDateTime#29595]
Input [4]: [product#29593, plant#29594, orderDateTime#29595, quantityDenominator#29634]
(1388) Sort
Input [3]: [product#29593, plant#29594, orderDateTime#29595]
Arguments: [product#29593 ASC NULLS FIRST, plant#29594 ASC NULLS FIRST], false, 0
(1389) SortMergeJoin
Left keys [2]: [productUuid#29587, plantUuid#29585]
Right keys [2]: [product#29593, plant#29594]
Join type: Inner
Join condition: (calculationDateTime#29581 <= orderDateTime#29595)
(1390) Project
Output [5]: [plantUuid#29585 AS plant#29637, productUuid#29587 AS product#29638, storageLocId#29588, calculationDateTime#29581, quantity#29590]
Input [8]: [plantUuid#29585, productUuid#29587, calculationDateTime#29581, storageLocId#29588, quantity#29590, product#29593, plant#29594, orderDateTime#29595]
(1391) Exchange
Input [5]: [plant#29637, product#29638, storageLocId#29588, calculationDateTime#29581, quantity#29590]
Arguments: hashpartitioning(coalesce(plant#29637, ), isnull(plant#29637), coalesce(product#29638, ), isnull(product#29638), coalesce(storageLocId#29588, ), isnull(storageLocId#29588), coalesce(calculationDateTime#29581, 1970-01-01 00:00:00), isnull(calculationDateTime#29581), 10), ENSURE_REQUIREMENTS, [plan_id=122241]
(1392) Sort
Input [5]: [plant#29637, product#29638, storageLocId#29588, calculationDateTime#29581, quantity#29590]
Arguments: [coalesce(plant#29637, ) ASC NULLS FIRST, isnull(plant#29637) ASC NULLS FIRST, coalesce(product#29638, ) ASC NULLS FIRST, isnull(product#29638) ASC NULLS FIRST, coalesce(storageLocId#29588, ) ASC NULLS FIRST, isnull(storageLocId#29588) ASC NULLS FIRST, coalesce(calculationDateTime#29581, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#29581) ASC NULLS FIRST], false, 0
(1393) Scan parquet
Output [6]: [internalUUID#29640, product#29641, plant#29642, calculationDateTime#29643, stockQuantities#29644, systemId#29639]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(1394) Filter
Input [6]: [internalUUID#29640, product#29641, plant#29642, calculationDateTime#29643, stockQuantities#29644, systemId#29639]
Condition : (isnotnull(plant#29642.internalRefUUID) AND isnotnull(product#29641.internalRefUUID))
(1395) Project
Output [6]: [systemId#29639, internalUUID#29640, product#29641, plant#29642, calculationDateTime#29643, stockQuantities#29644]
Input [6]: [internalUUID#29640, product#29641, plant#29642, calculationDateTime#29643, stockQuantities#29644, systemId#29639]
(1396) Exchange
Input [6]: [systemId#29639, internalUUID#29640, product#29641, plant#29642, calculationDateTime#29643, stockQuantities#29644]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120028]
(1397) BroadcastExchange
Input [6]: [systemId#29639, internalUUID#29640, product#29641, plant#29642, calculationDateTime#29643, stockQuantities#29644]
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=122206]
(1398) Scan parquet
Output [2]: [marketUnit#29645, distributionCenters#29651]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1399) Filter
Input [2]: [marketUnit#29645, distributionCenters#29651]
Condition : (((marketUnit#29645 <=> DIP_1691) AND (size(distributionCenters#29651, true) > 0)) AND isnotnull(distributionCenters#29651))
(1400) Project
Output [1]: [distributionCenters#29651]
Input [2]: [marketUnit#29645, distributionCenters#29651]
(1401) Exchange
Input [1]: [distributionCenters#29651]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120032]
(1402) Generate
Input [1]: [distributionCenters#29651]
Arguments: explode(distributionCenters#29651), false, [distributionCenters#29667]
(1403) Filter
Input [1]: [distributionCenters#29667]
Condition : (((size(distributionCenters#29667.storageLocations, true) > 0) AND isnotnull(distributionCenters#29667.storageLocations)) AND isnotnull(distributionCenters#29667.internalRefUUID))
(1404) Project
Output [2]: [distributionCenters#29667.internalRefUUID AS _extract_internalRefUUID#33425, distributionCenters#29667.storageLocations AS _extract_storageLocations#33426]
Input [1]: [distributionCenters#29667]
(1405) Generate
Input [2]: [_extract_internalRefUUID#33425, _extract_storageLocations#33426]
Arguments: explode(_extract_storageLocations#33426), [_extract_internalRefUUID#33425], false, [storageLocations#29668]
(1406) Project
Output [3]: [_extract_internalRefUUID#33425 AS plantUuid#29670, storageLocations#29668.id AS storageLocId#29671, storageLocations#29668.internalRefUUID AS storageLocUuid#29672]
Input [2]: [_extract_internalRefUUID#33425, storageLocations#29668]
(1407) BroadcastExchange
Input [3]: [plantUuid#29670, storageLocId#29671, storageLocUuid#29672]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122202]
(1408) Scan parquet
Output [2]: [product#29673, plant#29674]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1409) Filter
Input [2]: [product#29673, plant#29674]
Condition : isnotnull(plant#29674)
(1410) Exchange
Input [2]: [product#29673, plant#29674]
Arguments: hashpartitioning(product#29673, plant#29674, 10), REPARTITION_BY_NUM, [plan_id=121229]
(1411) Scan parquet
Output [4]: [plant#29679, product#29680, productionAspect#29682, systemId#29677]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(1412) Project
Output [4]: [plant#29679.internalRefUUID AS _extract_internalRefUUID#34098, product#29680.internalRefUUID AS _extract_internalRefUUID#34097, productionAspect#29682.productMovementPlants.unitOfIssue.code AS _extract_code#34099, productionAspect#29682.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34100]
Input [4]: [plant#29679, product#29680, productionAspect#29682, systemId#29677]
(1413) Exchange
Input [4]: [_extract_internalRefUUID#34098, _extract_internalRefUUID#34097, _extract_code#34099, _extract_internalRefUUID#34100]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120044]
(1414) Project
Output [4]: [_extract_code#34099, _extract_internalRefUUID#34100, _extract_internalRefUUID#34097, _extract_internalRefUUID#34098]
Input [4]: [_extract_internalRefUUID#34098, _extract_internalRefUUID#34097, _extract_code#34099, _extract_internalRefUUID#34100]
(1415) BroadcastExchange
Input [4]: [_extract_code#34099, _extract_internalRefUUID#34100, _extract_internalRefUUID#34097, _extract_internalRefUUID#34098]
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=122182]
(1416) BroadcastHashJoin
Left keys [4]: [coalesce(product#29673, ), isnull(product#29673), coalesce(plant#29674, ), isnull(plant#29674)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34097, ), isnull(_extract_internalRefUUID#34097), coalesce(_extract_internalRefUUID#34098, ), isnull(_extract_internalRefUUID#34098)]
Join type: LeftOuter
Join condition: None
(1417) Project
Output [4]: [product#29673, plant#29674, _extract_code#34099, _extract_internalRefUUID#34100]
Input [6]: [product#29673, plant#29674, _extract_code#34099, _extract_internalRefUUID#34100, _extract_internalRefUUID#34097, _extract_internalRefUUID#34098]
(1418) Scan parquet
Output [2]: [internalUUID#29687, systemId#29686]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1419) Project
Output [1]: [internalUUID#29687]
Input [2]: [internalUUID#29687, systemId#29686]
(1420) Exchange
Input [1]: [internalUUID#29687]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120050]
(1421) BroadcastExchange
Input [1]: [internalUUID#29687]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122186]
(1422) BroadcastHashJoin
Left keys [2]: [coalesce(plant#29674, ), isnull(plant#29674)]
Right keys [2]: [coalesce(internalUUID#29687, ), isnull(internalUUID#29687)]
Join type: LeftOuter
Join condition: None
(1423) Project
Output [4]: [product#29673, plant#29674, _extract_code#34099, _extract_internalRefUUID#34100]
Input [5]: [product#29673, plant#29674, _extract_code#34099, _extract_internalRefUUID#34100, internalUUID#29687]
(1424) Scan parquet
Output [4]: [internalUUID#29701, baseUnitOfMeasure#29705, unitOfMeasureConversions#29707, systemId#29700]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1425) Filter
Input [4]: [internalUUID#29701, baseUnitOfMeasure#29705, unitOfMeasureConversions#29707, systemId#29700]
Condition : isnotnull(internalUUID#29701)
(1426) Project
Output [3]: [internalUUID#29701, baseUnitOfMeasure#29705, unitOfMeasureConversions#29707]
Input [4]: [internalUUID#29701, baseUnitOfMeasure#29705, unitOfMeasureConversions#29707, systemId#29700]
(1427) Exchange
Input [3]: [internalUUID#29701, baseUnitOfMeasure#29705, unitOfMeasureConversions#29707]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120056]
(1428) BroadcastExchange
Input [3]: [internalUUID#29701, baseUnitOfMeasure#29705, unitOfMeasureConversions#29707]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122190]
(1429) BroadcastHashJoin
Left keys [1]: [product#29673]
Right keys [1]: [internalUUID#29701]
Join type: LeftOuter
Join condition: None
(1430) Project
Output [2]: [plant#29674, filter(unitOfMeasureConversions#29707, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34099) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34100)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#29705.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#29705.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#29712]
Input [7]: [product#29673, plant#29674, _extract_code#34099, _extract_internalRefUUID#34100, internalUUID#29701, baseUnitOfMeasure#29705, unitOfMeasureConversions#29707]
(1431) Generate
Input [2]: [plant#29674, filteredUnitOfMeasureConversions#29712]
Arguments: explode(filteredUnitOfMeasureConversions#29712.quantityNumerator), [plant#29674, filteredUnitOfMeasureConversions#29712], true, [quantityNumerator#29713]
(1432) Project
Output [2]: [plant#29674, filteredUnitOfMeasureConversions#29712.quantityDenominator AS _extract_quantityDenominator#33427]
Input [3]: [plant#29674, filteredUnitOfMeasureConversions#29712, quantityNumerator#29713]
(1433) Generate
Input [2]: [plant#29674, _extract_quantityDenominator#33427]
Arguments: explode(_extract_quantityDenominator#33427), [plant#29674], true, [quantityDenominator#29714]
(1434) Project
Output [1]: [plant#29674]
Input [2]: [plant#29674, quantityDenominator#29714]
(1435) HashAggregate
Input [1]: [plant#29674]
Keys [1]: [plant#29674]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#29674]
(1436) Exchange
Input [1]: [plant#29674]
Arguments: hashpartitioning(plant#29674, 10), ENSURE_REQUIREMENTS, [plan_id=122199]
(1437) HashAggregate
Input [1]: [plant#29674]
Keys [1]: [plant#29674]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#29674]
(1438) BroadcastHashJoin
Left keys [1]: [plantUuid#29670]
Right keys [1]: [plant#29674]
Join type: Inner
Join condition: None
(1439) Project
Output [3]: [plantUuid#29670, storageLocId#29671, storageLocUuid#29672]
Input [4]: [plantUuid#29670, storageLocId#29671, storageLocUuid#29672, plant#29674]
(1440) BroadcastHashJoin
Left keys [2]: [coalesce(plant#29642.internalRefUUID, ), isnull(plant#29642.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#29670, ), isnull(plantUuid#29670)]
Join type: Inner
Join condition: None
(1441) Generate
Input [9]: [systemId#29639, internalUUID#29640, product#29641, plant#29642, calculationDateTime#29643, stockQuantities#29644, plantUuid#29670, storageLocId#29671, storageLocUuid#29672]
Arguments: explode(filter(stockQuantities#29644, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#29672) AND (lambda x#26016.storageLocation.Id = storageLocId#29671)), lambda x#26016, false))), [systemId#29639, internalUUID#29640, product#29641, plant#29642, calculationDateTime#29643, plantUuid#29670], false, [stockQuantity#29717]
(1442) ObjectHashAggregate
Input [7]: [systemId#29639, internalUUID#29640, product#29641, plant#29642, calculationDateTime#29643, plantUuid#29670, stockQuantity#29717]
Keys [5]: [plantUuid#29670, internalUUID#29640, plant#29642, product#29641, systemId#29639]
Functions [2]: [partial_first(calculationDateTime#29643, false), partial_collect_list(stockQuantity#29717, 0, 0)]
Aggregate Attributes [3]: [first#35135, valueSet#35136, buf#35137]
Results [8]: [plantUuid#29670, internalUUID#29640, plant#29642, product#29641, systemId#29639, first#35138, valueSet#35139, buf#35140]
(1443) ObjectHashAggregate
Input [8]: [plantUuid#29670, internalUUID#29640, plant#29642, product#29641, systemId#29639, first#35138, valueSet#35139, buf#35140]
Keys [5]: [plantUuid#29670, internalUUID#29640, plant#29642, product#29641, systemId#29639]
Functions [2]: [first(calculationDateTime#29643, false), collect_list(stockQuantity#29717, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#29643)()#26031, collect_list(stockQuantity#29717, 0, 0)#26032]
Results [4]: [product#29641, plant#29642, first(calculationDateTime#29643)()#26031 AS calculationDateTime#29718, collect_list(stockQuantity#29717, 0, 0)#26032 AS stockQuantities#29719]
(1444) Filter
Input [4]: [product#29641, plant#29642, calculationDateTime#29718, stockQuantities#29719]
Condition : ((size(stockQuantities#29719, true) > 0) AND isnotnull(calculationDateTime#29718))
(1445) Generate
Input [4]: [product#29641, plant#29642, calculationDateTime#29718, stockQuantities#29719]
Arguments: explode(stockQuantities#29719), [product#29641, plant#29642, calculationDateTime#29718], false, [stockQuantity#29720]
(1446) Filter
Input [4]: [product#29641, plant#29642, calculationDateTime#29718, stockQuantity#29720]
Condition : (((isnotnull(stockQuantity#29720.specialStockIndicator.code) AND isnotnull(stockQuantity#29720.stockType.code)) AND (stockQuantity#29720.specialStockIndicator.code = )) AND (stockQuantity#29720.stockType.code = 01))
(1447) Project
Output [4]: [plant#29642.internalRefUUID AS plantUuid#29722, product#29641.internalRefUUID AS productUuid#29724, calculationDateTime#29718, stockQuantity#29720.storagelocation.id AS storageLocId#29725]
Input [4]: [product#29641, plant#29642, calculationDateTime#29718, stockQuantity#29720]
(1448) Exchange
Input [4]: [plantUuid#29722, productUuid#29724, calculationDateTime#29718, storageLocId#29725]
Arguments: hashpartitioning(productUuid#29724, plantUuid#29722, 10), ENSURE_REQUIREMENTS, [plan_id=122232]
(1449) Sort
Input [4]: [plantUuid#29722, productUuid#29724, calculationDateTime#29718, storageLocId#29725]
Arguments: [productUuid#29724 ASC NULLS FIRST, plantUuid#29722 ASC NULLS FIRST], false, 0
(1450) Scan parquet
Output [3]: [product#29730, plant#29731, orderDateTime#29732]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1451) Filter
Input [3]: [product#29730, plant#29731, orderDateTime#29732]
Condition : ((isnotnull(orderDateTime#29732) AND isnotnull(plant#29731)) AND isnotnull(product#29730))
(1452) Exchange
Input [3]: [product#29730, plant#29731, orderDateTime#29732]
Arguments: hashpartitioning(product#29730, plant#29731, 10), REPARTITION_BY_NUM, [plan_id=121252]
(1453) Scan parquet
Output [4]: [plant#29736, product#29737, productionAspect#29739, systemId#29734]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(1454) Project
Output [4]: [plant#29736.internalRefUUID AS _extract_internalRefUUID#34102, product#29737.internalRefUUID AS _extract_internalRefUUID#34101, productionAspect#29739.productMovementPlants.unitOfIssue.code AS _extract_code#34103, productionAspect#29739.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34104]
Input [4]: [plant#29736, product#29737, productionAspect#29739, systemId#29734]
(1455) Exchange
Input [4]: [_extract_internalRefUUID#34102, _extract_internalRefUUID#34101, _extract_code#34103, _extract_internalRefUUID#34104]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120081]
(1456) Project
Output [4]: [_extract_code#34103, _extract_internalRefUUID#34104, _extract_internalRefUUID#34101, _extract_internalRefUUID#34102]
Input [4]: [_extract_internalRefUUID#34102, _extract_internalRefUUID#34101, _extract_code#34103, _extract_internalRefUUID#34104]
(1457) BroadcastExchange
Input [4]: [_extract_code#34103, _extract_internalRefUUID#34104, _extract_internalRefUUID#34101, _extract_internalRefUUID#34102]
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=122215]
(1458) BroadcastHashJoin
Left keys [4]: [coalesce(product#29730, ), isnull(product#29730), coalesce(plant#29731, ), isnull(plant#29731)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34101, ), isnull(_extract_internalRefUUID#34101), coalesce(_extract_internalRefUUID#34102, ), isnull(_extract_internalRefUUID#34102)]
Join type: LeftOuter
Join condition: None
(1459) Project
Output [5]: [product#29730, plant#29731, orderDateTime#29732, _extract_code#34103, _extract_internalRefUUID#34104]
Input [7]: [product#29730, plant#29731, orderDateTime#29732, _extract_code#34103, _extract_internalRefUUID#34104, _extract_internalRefUUID#34101, _extract_internalRefUUID#34102]
(1460) Scan parquet
Output [2]: [internalUUID#29744, systemId#29743]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1461) Project
Output [1]: [internalUUID#29744]
Input [2]: [internalUUID#29744, systemId#29743]
(1462) Exchange
Input [1]: [internalUUID#29744]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120087]
(1463) BroadcastExchange
Input [1]: [internalUUID#29744]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122219]
(1464) BroadcastHashJoin
Left keys [2]: [coalesce(plant#29731, ), isnull(plant#29731)]
Right keys [2]: [coalesce(internalUUID#29744, ), isnull(internalUUID#29744)]
Join type: LeftOuter
Join condition: None
(1465) Project
Output [5]: [product#29730, plant#29731, orderDateTime#29732, _extract_code#34103, _extract_internalRefUUID#34104]
Input [6]: [product#29730, plant#29731, orderDateTime#29732, _extract_code#34103, _extract_internalRefUUID#34104, internalUUID#29744]
(1466) Scan parquet
Output [4]: [internalUUID#29758, baseUnitOfMeasure#29762, unitOfMeasureConversions#29764, systemId#29757]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1467) Filter
Input [4]: [internalUUID#29758, baseUnitOfMeasure#29762, unitOfMeasureConversions#29764, systemId#29757]
Condition : isnotnull(internalUUID#29758)
(1468) Project
Output [3]: [internalUUID#29758, baseUnitOfMeasure#29762, unitOfMeasureConversions#29764]
Input [4]: [internalUUID#29758, baseUnitOfMeasure#29762, unitOfMeasureConversions#29764, systemId#29757]
(1469) Exchange
Input [3]: [internalUUID#29758, baseUnitOfMeasure#29762, unitOfMeasureConversions#29764]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120093]
(1470) BroadcastExchange
Input [3]: [internalUUID#29758, baseUnitOfMeasure#29762, unitOfMeasureConversions#29764]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122223]
(1471) BroadcastHashJoin
Left keys [1]: [product#29730]
Right keys [1]: [internalUUID#29758]
Join type: LeftOuter
Join condition: None
(1472) Project
Output [4]: [product#29730, plant#29731, orderDateTime#29732, filter(unitOfMeasureConversions#29764, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34103) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34104)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#29762.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#29762.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#29769]
Input [8]: [product#29730, plant#29731, orderDateTime#29732, _extract_code#34103, _extract_internalRefUUID#34104, internalUUID#29758, baseUnitOfMeasure#29762, unitOfMeasureConversions#29764]
(1473) Generate
Input [4]: [product#29730, plant#29731, orderDateTime#29732, filteredUnitOfMeasureConversions#29769]
Arguments: explode(filteredUnitOfMeasureConversions#29769.quantityNumerator), [product#29730, plant#29731, orderDateTime#29732, filteredUnitOfMeasureConversions#29769], true, [quantityNumerator#29770]
(1474) Project
Output [4]: [product#29730, plant#29731, orderDateTime#29732, filteredUnitOfMeasureConversions#29769.quantityDenominator AS _extract_quantityDenominator#33431]
Input [5]: [product#29730, plant#29731, orderDateTime#29732, filteredUnitOfMeasureConversions#29769, quantityNumerator#29770]
(1475) Generate
Input [4]: [product#29730, plant#29731, orderDateTime#29732, _extract_quantityDenominator#33431]
Arguments: explode(_extract_quantityDenominator#33431), [product#29730, plant#29731, orderDateTime#29732], true, [quantityDenominator#29771]
(1476) Project
Output [3]: [product#29730, plant#29731, orderDateTime#29732]
Input [4]: [product#29730, plant#29731, orderDateTime#29732, quantityDenominator#29771]
(1477) Sort
Input [3]: [product#29730, plant#29731, orderDateTime#29732]
Arguments: [product#29730 ASC NULLS FIRST, plant#29731 ASC NULLS FIRST], false, 0
(1478) SortMergeJoin
Left keys [2]: [productUuid#29724, plantUuid#29722]
Right keys [2]: [product#29730, plant#29731]
Join type: Inner
Join condition: (calculationDateTime#29718 <= orderDateTime#29732)
(1479) Project
Output [4]: [plantUuid#29722 AS plant#29774, productUuid#29724 AS product#29775, storageLocId#29725, calculationDateTime#29718]
Input [7]: [plantUuid#29722, productUuid#29724, calculationDateTime#29718, storageLocId#29725, product#29730, plant#29731, orderDateTime#29732]
(1480) HashAggregate
Input [4]: [plant#29774, product#29775, storageLocId#29725, calculationDateTime#29718]
Keys [3]: [plant#29774, product#29775, storageLocId#29725]
Functions [1]: [partial_max(calculationDateTime#29718)]
Aggregate Attributes [1]: [max#35133]
Results [4]: [plant#29774, product#29775, storageLocId#29725, max#35134]
(1481) HashAggregate
Input [4]: [plant#29774, product#29775, storageLocId#29725, max#35134]
Keys [3]: [plant#29774, product#29775, storageLocId#29725]
Functions [1]: [max(calculationDateTime#29718)]
Aggregate Attributes [1]: [max(calculationDateTime#29718)#26109]
Results [4]: [plant#29774, product#29775, storageLocId#29725, max(calculationDateTime#29718)#26109 AS max_calc_datetime#29776]
(1482) Exchange
Input [4]: [plant#29774, product#29775, storageLocId#29725, max_calc_datetime#29776]
Arguments: hashpartitioning(coalesce(plant#29774, ), isnull(plant#29774), coalesce(product#29775, ), isnull(product#29775), coalesce(storageLocId#29725, ), isnull(storageLocId#29725), coalesce(max_calc_datetime#29776, 1970-01-01 00:00:00), isnull(max_calc_datetime#29776), 10), ENSURE_REQUIREMENTS, [plan_id=122242]
(1483) Sort
Input [4]: [plant#29774, product#29775, storageLocId#29725, max_calc_datetime#29776]
Arguments: [coalesce(plant#29774, ) ASC NULLS FIRST, isnull(plant#29774) ASC NULLS FIRST, coalesce(product#29775, ) ASC NULLS FIRST, isnull(product#29775) ASC NULLS FIRST, coalesce(storageLocId#29725, ) ASC NULLS FIRST, isnull(storageLocId#29725) ASC NULLS FIRST, coalesce(max_calc_datetime#29776, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#29776) ASC NULLS FIRST], false, 0
(1484) SortMergeJoin
Left keys [8]: [coalesce(plant#29637, ), isnull(plant#29637), coalesce(product#29638, ), isnull(product#29638), coalesce(storageLocId#29588, ), isnull(storageLocId#29588), coalesce(calculationDateTime#29581, 1970-01-01 00:00:00), isnull(calculationDateTime#29581)]
Right keys [8]: [coalesce(plant#29774, ), isnull(plant#29774), coalesce(product#29775, ), isnull(product#29775), coalesce(storageLocId#29725, ), isnull(storageLocId#29725), coalesce(max_calc_datetime#29776, 1970-01-01 00:00:00), isnull(max_calc_datetime#29776)]
Join type: Inner
Join condition: None
(1485) Project
Output [4]: [plant#29637, product#29638, calculationDateTime#29581, quantity#29590]
Input [9]: [plant#29637, product#29638, storageLocId#29588, calculationDateTime#29581, quantity#29590, plant#29774, product#29775, storageLocId#29725, max_calc_datetime#29776]
(1486) HashAggregate
Input [4]: [plant#29637, product#29638, calculationDateTime#29581, quantity#29590]
Keys [2]: [product#29638, plant#29637]
Functions [2]: [partial_min(calculationDateTime#29581), partial_sum(quantity#29590)]
Aggregate Attributes [2]: [min#35123, sum#35124]
Results [4]: [product#29638, plant#29637, min#35125, sum#35126]
(1487) Exchange
Input [4]: [product#29638, plant#29637, min#35125, sum#35126]
Arguments: hashpartitioning(product#29638, plant#29637, 10), ENSURE_REQUIREMENTS, [plan_id=122249]
(1488) HashAggregate
Input [4]: [product#29638, plant#29637, min#35125, sum#35126]
Keys [2]: [product#29638, plant#29637]
Functions [2]: [min(calculationDateTime#29581), sum(quantity#29590)]
Aggregate Attributes [2]: [min(calculationDateTime#29581)#26265, sum(quantity#29590)#26264]
Results [4]: [product#29638, plant#29637, min(calculationDateTime#29581)#26265 AS minCalculationDateTime#29778, round(sum(quantity#29590)#26264, 0) AS roundedQuantitySum#29779]
(1489) Sort
Input [4]: [product#29638, plant#29637, minCalculationDateTime#29778, roundedQuantitySum#29779]
Arguments: [product#29638 ASC NULLS FIRST, plant#29637 ASC NULLS FIRST], false, 0
(1490) SortMergeJoin
Left keys [2]: [product#29458, plant#29459]
Right keys [2]: [product#29638, plant#29637]
Join type: LeftOuter
Join condition: None
(1491) Project
Output [8]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29501, CASE WHEN isnotnull(minCalculationDateTime#29778) THEN minCalculationDateTime#29778 ELSE orderDateTime#29460 END AS stockDatetime#29780, CASE WHEN isnotnull(roundedQuantitySum#29779) THEN array(roundedQuantitySum#29779) ELSE [0.0] END AS stockBatchQuantities#29781]
Input [10]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29501, product#29638, plant#29637, minCalculationDateTime#29778, roundedQuantitySum#29779]
(1492) Scan parquet
Output [9]: [product#29783, plant#29784, demandChannel#29785, demandStream#29786, considerVariance#29787, demandTimeBuckets#29788, demandPointInTimeStart#29789, demandPointInTimeEnd#29790, demandPointInTime#29791]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000005/0_1_10000000005]
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>>>
(1493) Filter
Input [9]: [product#29783, plant#29784, demandChannel#29785, demandStream#29786, considerVariance#29787, demandTimeBuckets#29788, demandPointInTimeStart#29789, demandPointInTimeEnd#29790, demandPointInTime#29791]
Condition : (isnotnull(product#29783) AND isnotnull(plant#29784))
(1494) BroadcastExchange
Input [9]: [product#29783, plant#29784, demandChannel#29785, demandStream#29786, considerVariance#29787, demandTimeBuckets#29788, demandPointInTimeStart#29789, demandPointInTimeEnd#29790, demandPointInTime#29791]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=122258]
(1495) BroadcastHashJoin
Left keys [2]: [product#29458, plant#29459]
Right keys [2]: [product#29783, plant#29784]
Join type: LeftOuter
Join condition: None
(1496) Project
Output [9]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29501, stockDatetime#29780, stockBatchQuantities#29781, CASE WHEN isnotnull(product#29783) THEN struct(demandChannel, demandChannel#29785, demandStream, demandStream#29786, considerVariance, considerVariance#29787, demandTimeBuckets, demandTimeBuckets#29788, demandPointInTimeStart, demandPointInTimeStart#29789, demandPointInTimeEnd, demandPointInTimeEnd#29790, demandPointInTime, demandPointInTime#29791) END AS rawDemands#29792]
Input [17]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29501, stockDatetime#29780, stockBatchQuantities#29781, product#29783, plant#29784, demandChannel#29785, demandStream#29786, considerVariance#29787, demandTimeBuckets#29788, demandPointInTimeStart#29789, demandPointInTimeEnd#29790, demandPointInTime#29791]
(1497) ObjectHashAggregate
Input [9]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29501, stockDatetime#29780, stockBatchQuantities#29781, rawDemands#29792]
Keys [9]: [product#29458, plant#29459, orderDateTime#29460, knownfloatingpointnormalized(if (isnull(productPlant#29470)) null else named_struct(systemId, productPlant#29470.systemId, internalUUID, productPlant#29470.internalUUID, plant, productPlant#29470.plant, product, productPlant#29470.product, blockedForReplenishmentStartingFrom, productPlant#29470.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#29470.productionAspect)) null else named_struct(productMovementPlants, productPlant#29470.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#29470.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#29470.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#29470.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#29470.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#29470.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#29470.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#29470.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#29470.salesPlant, listing, productPlant#29470.listing)) AS productPlant#29470, timezonecode#29484, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#29501)) AS outboundUnit#29501, stockDatetime#29780, knownfloatingpointnormalized(transform(stockBatchQuantities#29781, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#35120)), lambda arg#35120, false))) AS stockBatchQuantities#29781, [7226582400000000] AS [7226582400000000]#35119]
Functions [1]: [partial_collect_list(rawDemands#29792, 0, 0)]
Aggregate Attributes [1]: [buf#35121]
Results [10]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29501, stockDatetime#29780, stockBatchQuantities#29781, [7226582400000000]#35119, buf#35122]
(1498) ObjectHashAggregate
Input [10]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29501, stockDatetime#29780, stockBatchQuantities#29781, [7226582400000000]#35119, buf#35122]
Keys [9]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29501, stockDatetime#29780, stockBatchQuantities#29781, [7226582400000000]#35119]
Functions [1]: [collect_list(rawDemands#29792, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#29792, 0, 0)#26357]
Results [10]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29501, stockDatetime#29780, stockBatchQuantities#29781, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#29782, collect_list(rawDemands#29792, 0, 0)#26357 AS rawDemands#29793]
(1499) DeserializeToObject
Input [10]: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29501, stockDatetime#29780, stockBatchQuantities#29781, stockBatchShelfLifeEndDatetimes#29782, rawDemands#29793]
Arguments: createexternalrow(invoke(product#29458.toString()), invoke(plant#29459.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#29460)), if (isnull(productPlant#29470)) null else createexternalrow(invoke(productPlant#29470.systemId.toString()), invoke(productPlant#29470.internalUUID.toString()), if (isnull(productPlant#29470.plant)) null else createexternalrow(invoke(productPlant#29470.plant.internalRefUUID.toString()), invoke(productPlant#29470.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#29470.product)) null else createexternalrow(invoke(productPlant#29470.product.internalRefUUID.toString()), invoke(productPlant#29470.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#29470.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#29470.productionAspect)) null else createexternalrow(if (isnull(productPlant#29470.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#29470.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#29470.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#29470.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#29470.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#29470.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#29470.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#29470.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#29470.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#29470.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#29470.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#29470.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#29470.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#29470.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#29470.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#29470.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#29470.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#29470.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#29470.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#29470.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#29470.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(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(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#29470.salesPlant)) null else createexternalrow(if (isnull(productPlant#29470.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#29470.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#29470.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#29470.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(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#29484.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#29501)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#29780)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#29781, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#29782, 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#29793, 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(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#26378: org.apache.spark.sql.Row
(1500) MapElements
Input [1]: [obj#26378]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@5081ce9e, obj#26383: org.apache.spark.sql.Row
(1501) SerializeFromObject
Input [1]: [obj#26383]
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#29794, 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#29795]
(1502) Exchange
Input [2]: [product#29794, plant#29795]
Arguments: hashpartitioning(coalesce(plant#29795, ), isnull(plant#29795), coalesce(product#29794, ), isnull(product#29794), 10), ENSURE_REQUIREMENTS, [plan_id=122269]
(1503) Sort
Input [2]: [product#29794, plant#29795]
Arguments: [coalesce(plant#29795, ) ASC NULLS FIRST, isnull(plant#29795) ASC NULLS FIRST, coalesce(product#29794, ) ASC NULLS FIRST, isnull(product#29794) ASC NULLS FIRST], false, 0
(1504) SortMergeJoin
Left keys [4]: [coalesce(plant#29134, ), isnull(plant#29134), coalesce(product#29133, ), isnull(product#29133)]
Right keys [4]: [coalesce(plant#29795, ), isnull(plant#29795), coalesce(product#29794, ), isnull(product#29794)]
Join type: LeftOuter
Join condition: None
(1505) Project
Output [3]: [product#29133, plant#29134, stockDatetime#29455]
Input [5]: [product#29133, plant#29134, stockDatetime#29455, product#29794, plant#29795]
(1506) Scan parquet
Output [6]: [internalUUID#29799, id#29800, supplier#29802, isMarkedForDeletion#29805, items#29806, systemId#29798]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(1507) Filter
Input [6]: [internalUUID#29799, id#29800, supplier#29802, isMarkedForDeletion#29805, items#29806, systemId#29798]
Condition : (((isnotnull(isMarkedForDeletion#29805) AND NOT isMarkedForDeletion#29805) AND (size(items#29806, true) > 0)) AND isnotnull(items#29806))
(1508) Project
Output [4]: [internalUUID#29799, id#29800, supplier#29802, items#29806]
Input [6]: [internalUUID#29799, id#29800, supplier#29802, isMarkedForDeletion#29805, items#29806, systemId#29798]
(1509) Exchange
Input [4]: [internalUUID#29799, id#29800, supplier#29802, items#29806]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120125]
(1510) Generate
Input [4]: [internalUUID#29799, id#29800, supplier#29802, items#29806]
Arguments: explode(items#29806), [internalUUID#29799, id#29800, supplier#29802], false, [item#29807]
(1511) Filter
Input [4]: [internalUUID#29799, id#29800, supplier#29802, item#29807]
Condition : ((((isnotnull(item#29807.deletionIndicator) AND isnotnull(item#29807.completeIndicator)) AND isnotnull(item#29807.returnIndicator)) AND ((NOT item#29807.deletionIndicator AND NOT item#29807.completeIndicator) AND NOT item#29807.returnIndicator)) AND isnotnull(item#29807.product.internalRefUUID))
(1512) Project
Output [9]: [id#29800, internalUUID#29799, supplier#29802.internalRefUUID AS supplierUuid#29808, item#29807.product.internalRefUUID AS product#29810, item#29807.quantityUnit.code AS quantityUom#29812, item#29807.quantityUnit.internalRefUUID AS quantityUomUuid#29813, item#29807.quantityNumerator AS quantityNumerator#29814, item#29807.quantityDenominator AS quantityDenominator#29815, item#29807.scheduleLines AS scheduleLines#29816]
Input [4]: [internalUUID#29799, id#29800, supplier#29802, item#29807]
(1513) BroadcastExchange
Input [9]: [id#29800, internalUUID#29799, supplierUuid#29808, product#29810, quantityUom#29812, quantityUomUuid#29813, quantityNumerator#29814, quantityDenominator#29815, scheduleLines#29816]
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=122275]
(1514) BroadcastHashJoin
Left keys [4]: [coalesce(product#29133, ), isnull(product#29133), coalesce(plant#29134, ), isnull(plant#29134)]
Right keys [4]: [coalesce(product#29810, ), isnull(product#29810), coalesce(supplierUuid#29808, ), isnull(supplierUuid#29808)]
Join type: Inner
Join condition: None
(1515) Project
Output [3]: [product#29810, plant#29134, filter(transform(filter(transform(scheduleLines#29816, lambdafunction(struct(openQty, (greatest((lambda x_16#29113.quantity - coalesce(lambda x_16#29113.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_16#29113.productAvailabilityDateTime, lambda x_16#29113.deliveryAt)), lambda x_16#29113, false)), lambdafunction((lambda x_17#29114.availabilityDatetime < stockDatetime#29455), lambda x_17#29114, false)), lambdafunction(struct(documentId, id#29800, documentUuid, internalUUID#29799, openQty, lambda x_18#29115.openQty, openQtyInBaseUnit, ((lambda x_18#29115.openQty * quantityNumerator#29814) / quantityDenominator#29815), qtyUom, quantityUom#29812, qtyUomUuid, quantityUomUuid#29813, availabilityDatetime, lambda x_18#29115.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_18#29115, false)), lambdafunction(NOT (lambda x_19#29116.openQty = 0.0), lambda x_19#29116, false)) AS openGoodsMovements#29112]
Input [12]: [product#29133, plant#29134, stockDatetime#29455, id#29800, internalUUID#29799, supplierUuid#29808, product#29810, quantityUom#29812, quantityUomUuid#29813, quantityNumerator#29814, quantityDenominator#29815, scheduleLines#29816]
(1516) ObjectHashAggregate
Input [3]: [product#29810, plant#29134, openGoodsMovements#29112]
Keys [2]: [product#29810, plant#29134]
Functions [1]: [partial_collect_list(openGoodsMovements#29112, 0, 0)]
Aggregate Attributes [1]: [buf#35101]
Results [3]: [product#29810, plant#29134, buf#35102]
(1517) Exchange
Input [3]: [product#29810, plant#29134, buf#35102]
Arguments: hashpartitioning(product#29810, plant#29134, 10), ENSURE_REQUIREMENTS, [plan_id=122280]
(1518) ObjectHashAggregate
Input [3]: [product#29810, plant#29134, buf#35102]
Keys [2]: [product#29810, plant#29134]
Functions [1]: [collect_list(openGoodsMovements#29112, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#29112, 0, 0)#29132]
Results [3]: [product#29810, plant#29134, flatten(collect_list(openGoodsMovements#29112, 0, 0)#29132) AS openGoodsMovements#29117]
(1519) Filter
Input [3]: [product#29810, plant#29134, openGoodsMovements#29117]
Condition : (size(openGoodsMovements#29117, false) > 0)
(1520) Union
(1521) ObjectHashAggregate
Input [3]: [product#26759, plant#26758, openGoodsMovements#27136]
Keys [2]: [product#26759, plant#26758]
Functions [1]: [partial_collect_list(openGoodsMovements#27136, 0, 0)]
Aggregate Attributes [1]: [buf#35099]
Results [3]: [product#26759, plant#26758, buf#35100]
(1522) Exchange
Input [3]: [product#26759, plant#26758, buf#35100]
Arguments: hashpartitioning(product#26759, plant#26758, 10), ENSURE_REQUIREMENTS, [plan_id=122286]
(1523) ObjectHashAggregate
Input [3]: [product#26759, plant#26758, buf#35100]
Keys [2]: [product#26759, plant#26758]
Functions [1]: [collect_list(openGoodsMovements#27136, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#27136, 0, 0)#29872]
Results [3]: [product#26759, plant#26758, flatten(collect_list(openGoodsMovements#27136, 0, 0)#29872) AS openGoodsMovements#29868]
(1524) Project
Output [5]: [product#26759, plant#26758, openGoodsMovements#29868.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#33525, openGoodsMovements#29868.availabilityDatetime AS _extract_availabilityDatetime#33526, openGoodsMovements#29868.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#33527]
Input [3]: [product#26759, plant#26758, openGoodsMovements#29868]
(1525) Sort
Input [5]: [product#26759, plant#26758, _extract_openQtyInBaseUnit#33525, _extract_availabilityDatetime#33526, _extract_shelfLifeEndDatetime#33527]
Arguments: [product#26759 ASC NULLS FIRST, plant#26758 ASC NULLS FIRST], false, 0
(1526) SortMergeJoin
Left keys [2]: [product#25911, plant#25912]
Right keys [2]: [product#26759, plant#26758]
Join type: LeftOuter
Join condition: None
(1527) Project
Output [10]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, dayBucketDemands#26390, pointInTimeDemands#26391, coalesce(_extract_openQtyInBaseUnit#33525, []) AS openGoodsMovementQuantities#30587, coalesce(_extract_availabilityDatetime#33526, []) AS openGoodsMovementAvailabilityDatetimes#30588, coalesce(_extract_shelfLifeEndDatetime#33527, []) AS openGoodsMovementShelfLifeEndDatetimes#30589]
Input [12]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, dayBucketDemands#26390, pointInTimeDemands#26391, product#26759, plant#26758, _extract_openQtyInBaseUnit#33525, _extract_availabilityDatetime#33526, _extract_shelfLifeEndDatetime#33527]
(1528) Scan parquet
Output [3]: [product#30889, plant#30890, orderDateTime#30891]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1529) Exchange
Input [3]: [product#30889, plant#30890, orderDateTime#30891]
Arguments: hashpartitioning(product#30889, plant#30890, 10), REPARTITION_BY_NUM, [plan_id=120141]
(1530) Scan parquet
Output [8]: [internalUUID#30894, plant#30895, product#30896, blockedForReplenishmentStartingFrom#30897, productionAspect#30898, salesPlant#30899, listing#30900, systemId#30893]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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,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>>>
(1531) Project
Output [8]: [systemId#30893, internalUUID#30894, plant#30895, product#30896, blockedForReplenishmentStartingFrom#30897, productionAspect#30898, salesPlant#30899, listing#30900]
Input [8]: [internalUUID#30894, plant#30895, product#30896, blockedForReplenishmentStartingFrom#30897, productionAspect#30898, salesPlant#30899, listing#30900, systemId#30893]
(1532) Exchange
Input [8]: [systemId#30893, internalUUID#30894, plant#30895, product#30896, blockedForReplenishmentStartingFrom#30897, productionAspect#30898, salesPlant#30899, listing#30900]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120144]
(1533) Project
Output [1]: [struct(systemId, systemId#30893, internalUUID, internalUUID#30894, plant, plant#30895, product, product#30896, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#30897, productionAspect, productionAspect#30898, salesPlant, salesPlant#30899, listing, listing#30900) AS productPlant#30901]
Input [8]: [systemId#30893, internalUUID#30894, plant#30895, product#30896, blockedForReplenishmentStartingFrom#30897, productionAspect#30898, salesPlant#30899, listing#30900]
(1534) BroadcastExchange
Input [1]: [productPlant#30901]
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,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,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,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,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=122296]
(1535) BroadcastHashJoin
Left keys [4]: [coalesce(product#30889, ), isnull(product#30889), coalesce(plant#30890, ), isnull(plant#30890)]
Right keys [4]: [coalesce(productPlant#30901.product.internalRefUUID, ), isnull(productPlant#30901.product.internalRefUUID), coalesce(productPlant#30901.plant.internalRefUUID, ), isnull(productPlant#30901.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1536) Scan parquet
Output [3]: [internalUUID#30903, address#30909, systemId#30902]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1537) Project
Output [2]: [internalUUID#30903, address#30909.timeZone.code AS timezonecode#30914]
Input [3]: [internalUUID#30903, address#30909, systemId#30902]
(1538) Exchange
Input [2]: [internalUUID#30903, timezonecode#30914]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120149]
(1539) BroadcastExchange
Input [2]: [internalUUID#30903, timezonecode#30914]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122299]
(1540) BroadcastHashJoin
Left keys [2]: [coalesce(plant#30890, ), isnull(plant#30890)]
Right keys [2]: [coalesce(internalUUID#30903, ), isnull(internalUUID#30903)]
Join type: LeftOuter
Join condition: None
(1541) Project
Output [5]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, CASE WHEN isnotnull(timezonecode#30914) THEN timezonecode#30914 ELSE UTC END AS timezonecode#30915]
Input [6]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, internalUUID#30903, timezonecode#30914]
(1542) Scan parquet
Output [4]: [internalUUID#30917, baseUnitOfMeasure#30921, unitOfMeasureConversions#30923, systemId#30916]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1543) Filter
Input [4]: [internalUUID#30917, baseUnitOfMeasure#30921, unitOfMeasureConversions#30923, systemId#30916]
Condition : isnotnull(internalUUID#30917)
(1544) Project
Output [3]: [internalUUID#30917, baseUnitOfMeasure#30921, unitOfMeasureConversions#30923]
Input [4]: [internalUUID#30917, baseUnitOfMeasure#30921, unitOfMeasureConversions#30923, systemId#30916]
(1545) Exchange
Input [3]: [internalUUID#30917, baseUnitOfMeasure#30921, unitOfMeasureConversions#30923]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120155]
(1546) BroadcastExchange
Input [3]: [internalUUID#30917, baseUnitOfMeasure#30921, unitOfMeasureConversions#30923]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122303]
(1547) BroadcastHashJoin
Left keys [1]: [product#30889]
Right keys [1]: [internalUUID#30917]
Join type: LeftOuter
Join condition: None
(1548) Project
Output [6]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, filter(unitOfMeasureConversions#30923, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#30901.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#30901.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#30921.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#30921.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#30928]
Input [8]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, internalUUID#30917, baseUnitOfMeasure#30921, unitOfMeasureConversions#30923]
(1549) Project
Output [7]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, filteredUnitOfMeasureConversions#30928.quantityDenominator AS _extract_quantityDenominator#33645, filteredUnitOfMeasureConversions#30928.quantityNumerator AS _extract_quantityNumerator#33646]
Input [6]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, filteredUnitOfMeasureConversions#30928]
(1550) Generate
Input [7]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, _extract_quantityDenominator#33645, _extract_quantityNumerator#33646]
Arguments: explode(_extract_quantityNumerator#33646), [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, _extract_quantityDenominator#33645], true, [quantityNumerator#30929]
(1551) Generate
Input [7]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, _extract_quantityDenominator#33645, quantityNumerator#30929]
Arguments: explode(_extract_quantityDenominator#33645), [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, quantityNumerator#30929], true, [quantityDenominator#30930]
(1552) Project
Output [6]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, (cast(quantityNumerator#30929 as double) / cast(quantityDenominator#30930 as double)) AS outboundUnit#30931]
Input [7]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, quantityNumerator#30929, quantityDenominator#30930]
(1553) Project
Output [6]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, CASE WHEN (isnull(outboundUnit#30931) OR (outboundUnit#30931 <= 0.0)) THEN 1.0 ELSE outboundUnit#30931 END AS outboundUnit#30932]
Input [6]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30931]
(1554) Sort
Input [6]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932]
Arguments: [product#30889 ASC NULLS FIRST, plant#30890 ASC NULLS FIRST], false, 0
(1555) Scan parquet
Output [6]: [internalUUID#30934, product#30935, plant#30936, calculationDateTime#30937, stockQuantities#30938, systemId#30933]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(1556) Filter
Input [6]: [internalUUID#30934, product#30935, plant#30936, calculationDateTime#30937, stockQuantities#30938, systemId#30933]
Condition : (isnotnull(plant#30936.internalRefUUID) AND isnotnull(product#30935.internalRefUUID))
(1557) Project
Output [6]: [systemId#30933, internalUUID#30934, product#30935, plant#30936, calculationDateTime#30937, stockQuantities#30938]
Input [6]: [internalUUID#30934, product#30935, plant#30936, calculationDateTime#30937, stockQuantities#30938, systemId#30933]
(1558) Exchange
Input [6]: [systemId#30933, internalUUID#30934, product#30935, plant#30936, calculationDateTime#30937, stockQuantities#30938]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120166]
(1559) BroadcastExchange
Input [6]: [systemId#30933, internalUUID#30934, product#30935, plant#30936, calculationDateTime#30937, stockQuantities#30938]
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=122335]
(1560) Scan parquet
Output [2]: [marketUnit#30939, distributionCenters#30945]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1561) Filter
Input [2]: [marketUnit#30939, distributionCenters#30945]
Condition : (((marketUnit#30939 <=> DIP_1691) AND (size(distributionCenters#30945, true) > 0)) AND isnotnull(distributionCenters#30945))
(1562) Project
Output [1]: [distributionCenters#30945]
Input [2]: [marketUnit#30939, distributionCenters#30945]
(1563) Exchange
Input [1]: [distributionCenters#30945]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120170]
(1564) Generate
Input [1]: [distributionCenters#30945]
Arguments: explode(distributionCenters#30945), false, [distributionCenters#30961]
(1565) Filter
Input [1]: [distributionCenters#30961]
Condition : (((size(distributionCenters#30961.storageLocations, true) > 0) AND isnotnull(distributionCenters#30961.storageLocations)) AND isnotnull(distributionCenters#30961.internalRefUUID))
(1566) Project
Output [2]: [distributionCenters#30961.internalRefUUID AS _extract_internalRefUUID#33437, distributionCenters#30961.storageLocations AS _extract_storageLocations#33438]
Input [1]: [distributionCenters#30961]
(1567) Generate
Input [2]: [_extract_internalRefUUID#33437, _extract_storageLocations#33438]
Arguments: explode(_extract_storageLocations#33438), [_extract_internalRefUUID#33437], false, [storageLocations#30962]
(1568) Project
Output [3]: [_extract_internalRefUUID#33437 AS plantUuid#30964, storageLocations#30962.id AS storageLocId#30965, storageLocations#30962.internalRefUUID AS storageLocUuid#30966]
Input [2]: [_extract_internalRefUUID#33437, storageLocations#30962]
(1569) BroadcastExchange
Input [3]: [plantUuid#30964, storageLocId#30965, storageLocUuid#30966]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122331]
(1570) Scan parquet
Output [2]: [product#30967, plant#30968]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1571) Filter
Input [2]: [product#30967, plant#30968]
Condition : isnotnull(plant#30968)
(1572) Exchange
Input [2]: [product#30967, plant#30968]
Arguments: hashpartitioning(product#30967, plant#30968, 10), REPARTITION_BY_NUM, [plan_id=121293]
(1573) Scan parquet
Output [4]: [plant#30973, product#30974, productionAspect#30976, systemId#30971]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(1574) Project
Output [4]: [plant#30973.internalRefUUID AS _extract_internalRefUUID#34107, product#30974.internalRefUUID AS _extract_internalRefUUID#34108, productionAspect#30976.productMovementPlants.unitOfIssue.code AS _extract_code#34105, productionAspect#30976.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34106]
Input [4]: [plant#30973, product#30974, productionAspect#30976, systemId#30971]
(1575) Exchange
Input [4]: [_extract_internalRefUUID#34107, _extract_internalRefUUID#34108, _extract_code#34105, _extract_internalRefUUID#34106]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120182]
(1576) Project
Output [4]: [_extract_code#34105, _extract_internalRefUUID#34106, _extract_internalRefUUID#34108, _extract_internalRefUUID#34107]
Input [4]: [_extract_internalRefUUID#34107, _extract_internalRefUUID#34108, _extract_code#34105, _extract_internalRefUUID#34106]
(1577) BroadcastExchange
Input [4]: [_extract_code#34105, _extract_internalRefUUID#34106, _extract_internalRefUUID#34108, _extract_internalRefUUID#34107]
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=122311]
(1578) BroadcastHashJoin
Left keys [4]: [coalesce(product#30967, ), isnull(product#30967), coalesce(plant#30968, ), isnull(plant#30968)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34108, ), isnull(_extract_internalRefUUID#34108), coalesce(_extract_internalRefUUID#34107, ), isnull(_extract_internalRefUUID#34107)]
Join type: LeftOuter
Join condition: None
(1579) Project
Output [4]: [product#30967, plant#30968, _extract_code#34105, _extract_internalRefUUID#34106]
Input [6]: [product#30967, plant#30968, _extract_code#34105, _extract_internalRefUUID#34106, _extract_internalRefUUID#34108, _extract_internalRefUUID#34107]
(1580) Scan parquet
Output [2]: [internalUUID#30981, systemId#30980]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1581) Project
Output [1]: [internalUUID#30981]
Input [2]: [internalUUID#30981, systemId#30980]
(1582) Exchange
Input [1]: [internalUUID#30981]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120188]
(1583) BroadcastExchange
Input [1]: [internalUUID#30981]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122315]
(1584) BroadcastHashJoin
Left keys [2]: [coalesce(plant#30968, ), isnull(plant#30968)]
Right keys [2]: [coalesce(internalUUID#30981, ), isnull(internalUUID#30981)]
Join type: LeftOuter
Join condition: None
(1585) Project
Output [4]: [product#30967, plant#30968, _extract_code#34105, _extract_internalRefUUID#34106]
Input [5]: [product#30967, plant#30968, _extract_code#34105, _extract_internalRefUUID#34106, internalUUID#30981]
(1586) Scan parquet
Output [4]: [internalUUID#30995, baseUnitOfMeasure#30999, unitOfMeasureConversions#31001, systemId#30994]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1587) Filter
Input [4]: [internalUUID#30995, baseUnitOfMeasure#30999, unitOfMeasureConversions#31001, systemId#30994]
Condition : isnotnull(internalUUID#30995)
(1588) Project
Output [3]: [internalUUID#30995, baseUnitOfMeasure#30999, unitOfMeasureConversions#31001]
Input [4]: [internalUUID#30995, baseUnitOfMeasure#30999, unitOfMeasureConversions#31001, systemId#30994]
(1589) Exchange
Input [3]: [internalUUID#30995, baseUnitOfMeasure#30999, unitOfMeasureConversions#31001]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120194]
(1590) BroadcastExchange
Input [3]: [internalUUID#30995, baseUnitOfMeasure#30999, unitOfMeasureConversions#31001]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122319]
(1591) BroadcastHashJoin
Left keys [1]: [product#30967]
Right keys [1]: [internalUUID#30995]
Join type: LeftOuter
Join condition: None
(1592) Project
Output [2]: [plant#30968, filter(unitOfMeasureConversions#31001, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34105) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34106)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#30999.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#30999.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31006]
Input [7]: [product#30967, plant#30968, _extract_code#34105, _extract_internalRefUUID#34106, internalUUID#30995, baseUnitOfMeasure#30999, unitOfMeasureConversions#31001]
(1593) Generate
Input [2]: [plant#30968, filteredUnitOfMeasureConversions#31006]
Arguments: explode(filteredUnitOfMeasureConversions#31006.quantityNumerator), [plant#30968, filteredUnitOfMeasureConversions#31006], true, [quantityNumerator#31007]
(1594) Project
Output [2]: [plant#30968, filteredUnitOfMeasureConversions#31006.quantityDenominator AS _extract_quantityDenominator#33439]
Input [3]: [plant#30968, filteredUnitOfMeasureConversions#31006, quantityNumerator#31007]
(1595) Generate
Input [2]: [plant#30968, _extract_quantityDenominator#33439]
Arguments: explode(_extract_quantityDenominator#33439), [plant#30968], true, [quantityDenominator#31008]
(1596) Project
Output [1]: [plant#30968]
Input [2]: [plant#30968, quantityDenominator#31008]
(1597) HashAggregate
Input [1]: [plant#30968]
Keys [1]: [plant#30968]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#30968]
(1598) Exchange
Input [1]: [plant#30968]
Arguments: hashpartitioning(plant#30968, 10), ENSURE_REQUIREMENTS, [plan_id=122328]
(1599) HashAggregate
Input [1]: [plant#30968]
Keys [1]: [plant#30968]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#30968]
(1600) BroadcastHashJoin
Left keys [1]: [plantUuid#30964]
Right keys [1]: [plant#30968]
Join type: Inner
Join condition: None
(1601) Project
Output [3]: [plantUuid#30964, storageLocId#30965, storageLocUuid#30966]
Input [4]: [plantUuid#30964, storageLocId#30965, storageLocUuid#30966, plant#30968]
(1602) BroadcastHashJoin
Left keys [2]: [coalesce(plant#30936.internalRefUUID, ), isnull(plant#30936.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#30964, ), isnull(plantUuid#30964)]
Join type: Inner
Join condition: None
(1603) Generate
Input [9]: [systemId#30933, internalUUID#30934, product#30935, plant#30936, calculationDateTime#30937, stockQuantities#30938, plantUuid#30964, storageLocId#30965, storageLocUuid#30966]
Arguments: explode(filter(stockQuantities#30938, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#30966) AND (lambda x#26016.storageLocation.Id = storageLocId#30965)), lambda x#26016, false))), [systemId#30933, internalUUID#30934, product#30935, plant#30936, calculationDateTime#30937, plantUuid#30964], false, [stockQuantity#31011]
(1604) ObjectHashAggregate
Input [7]: [systemId#30933, internalUUID#30934, product#30935, plant#30936, calculationDateTime#30937, plantUuid#30964, stockQuantity#31011]
Keys [5]: [plantUuid#30964, internalUUID#30934, plant#30936, product#30935, systemId#30933]
Functions [2]: [partial_first(calculationDateTime#30937, false), partial_collect_list(stockQuantity#31011, 0, 0)]
Aggregate Attributes [3]: [first#35145, valueSet#35146, buf#35147]
Results [8]: [plantUuid#30964, internalUUID#30934, plant#30936, product#30935, systemId#30933, first#35148, valueSet#35149, buf#35150]
(1605) ObjectHashAggregate
Input [8]: [plantUuid#30964, internalUUID#30934, plant#30936, product#30935, systemId#30933, first#35148, valueSet#35149, buf#35150]
Keys [5]: [plantUuid#30964, internalUUID#30934, plant#30936, product#30935, systemId#30933]
Functions [2]: [first(calculationDateTime#30937, false), collect_list(stockQuantity#31011, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#30937)()#26031, collect_list(stockQuantity#31011, 0, 0)#26032]
Results [4]: [product#30935, plant#30936, first(calculationDateTime#30937)()#26031 AS calculationDateTime#31012, collect_list(stockQuantity#31011, 0, 0)#26032 AS stockQuantities#31013]
(1606) Filter
Input [4]: [product#30935, plant#30936, calculationDateTime#31012, stockQuantities#31013]
Condition : ((size(stockQuantities#31013, true) > 0) AND isnotnull(calculationDateTime#31012))
(1607) Generate
Input [4]: [product#30935, plant#30936, calculationDateTime#31012, stockQuantities#31013]
Arguments: explode(stockQuantities#31013), [product#30935, plant#30936, calculationDateTime#31012], false, [stockQuantity#31014]
(1608) Filter
Input [4]: [product#30935, plant#30936, calculationDateTime#31012, stockQuantity#31014]
Condition : (((isnotnull(stockQuantity#31014.specialStockIndicator.code) AND isnotnull(stockQuantity#31014.stockType.code)) AND (stockQuantity#31014.specialStockIndicator.code = )) AND (stockQuantity#31014.stockType.code = 01))
(1609) Project
Output [5]: [plant#30936.internalRefUUID AS plantUuid#31016, product#30935.internalRefUUID AS productUuid#31018, calculationDateTime#31012, stockQuantity#31014.storagelocation.id AS storageLocId#31019, stockQuantity#31014.quantity.measure AS quantity#31021]
Input [4]: [product#30935, plant#30936, calculationDateTime#31012, stockQuantity#31014]
(1610) Exchange
Input [5]: [plantUuid#31016, productUuid#31018, calculationDateTime#31012, storageLocId#31019, quantity#31021]
Arguments: hashpartitioning(productUuid#31018, plantUuid#31016, 10), ENSURE_REQUIREMENTS, [plan_id=122361]
(1611) Sort
Input [5]: [plantUuid#31016, productUuid#31018, calculationDateTime#31012, storageLocId#31019, quantity#31021]
Arguments: [productUuid#31018 ASC NULLS FIRST, plantUuid#31016 ASC NULLS FIRST], false, 0
(1612) Scan parquet
Output [3]: [product#31024, plant#31025, orderDateTime#31026]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1613) Filter
Input [3]: [product#31024, plant#31025, orderDateTime#31026]
Condition : ((isnotnull(orderDateTime#31026) AND isnotnull(plant#31025)) AND isnotnull(product#31024))
(1614) Exchange
Input [3]: [product#31024, plant#31025, orderDateTime#31026]
Arguments: hashpartitioning(product#31024, plant#31025, 10), REPARTITION_BY_NUM, [plan_id=121316]
(1615) Scan parquet
Output [4]: [plant#31030, product#31031, productionAspect#31033, systemId#31028]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(1616) Project
Output [4]: [plant#31030.internalRefUUID AS _extract_internalRefUUID#34110, product#31031.internalRefUUID AS _extract_internalRefUUID#34109, productionAspect#31033.productMovementPlants.unitOfIssue.code AS _extract_code#34111, productionAspect#31033.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34112]
Input [4]: [plant#31030, product#31031, productionAspect#31033, systemId#31028]
(1617) Exchange
Input [4]: [_extract_internalRefUUID#34110, _extract_internalRefUUID#34109, _extract_code#34111, _extract_internalRefUUID#34112]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120219]
(1618) Project
Output [4]: [_extract_code#34111, _extract_internalRefUUID#34112, _extract_internalRefUUID#34109, _extract_internalRefUUID#34110]
Input [4]: [_extract_internalRefUUID#34110, _extract_internalRefUUID#34109, _extract_code#34111, _extract_internalRefUUID#34112]
(1619) BroadcastExchange
Input [4]: [_extract_code#34111, _extract_internalRefUUID#34112, _extract_internalRefUUID#34109, _extract_internalRefUUID#34110]
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=122344]
(1620) BroadcastHashJoin
Left keys [4]: [coalesce(product#31024, ), isnull(product#31024), coalesce(plant#31025, ), isnull(plant#31025)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34109, ), isnull(_extract_internalRefUUID#34109), coalesce(_extract_internalRefUUID#34110, ), isnull(_extract_internalRefUUID#34110)]
Join type: LeftOuter
Join condition: None
(1621) Project
Output [5]: [product#31024, plant#31025, orderDateTime#31026, _extract_code#34111, _extract_internalRefUUID#34112]
Input [7]: [product#31024, plant#31025, orderDateTime#31026, _extract_code#34111, _extract_internalRefUUID#34112, _extract_internalRefUUID#34109, _extract_internalRefUUID#34110]
(1622) Scan parquet
Output [2]: [internalUUID#31038, systemId#31037]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1623) Project
Output [1]: [internalUUID#31038]
Input [2]: [internalUUID#31038, systemId#31037]
(1624) Exchange
Input [1]: [internalUUID#31038]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120225]
(1625) BroadcastExchange
Input [1]: [internalUUID#31038]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122348]
(1626) BroadcastHashJoin
Left keys [2]: [coalesce(plant#31025, ), isnull(plant#31025)]
Right keys [2]: [coalesce(internalUUID#31038, ), isnull(internalUUID#31038)]
Join type: LeftOuter
Join condition: None
(1627) Project
Output [5]: [product#31024, plant#31025, orderDateTime#31026, _extract_code#34111, _extract_internalRefUUID#34112]
Input [6]: [product#31024, plant#31025, orderDateTime#31026, _extract_code#34111, _extract_internalRefUUID#34112, internalUUID#31038]
(1628) Scan parquet
Output [4]: [internalUUID#31052, baseUnitOfMeasure#31056, unitOfMeasureConversions#31058, systemId#31051]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1629) Filter
Input [4]: [internalUUID#31052, baseUnitOfMeasure#31056, unitOfMeasureConversions#31058, systemId#31051]
Condition : isnotnull(internalUUID#31052)
(1630) Project
Output [3]: [internalUUID#31052, baseUnitOfMeasure#31056, unitOfMeasureConversions#31058]
Input [4]: [internalUUID#31052, baseUnitOfMeasure#31056, unitOfMeasureConversions#31058, systemId#31051]
(1631) Exchange
Input [3]: [internalUUID#31052, baseUnitOfMeasure#31056, unitOfMeasureConversions#31058]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120231]
(1632) BroadcastExchange
Input [3]: [internalUUID#31052, baseUnitOfMeasure#31056, unitOfMeasureConversions#31058]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122352]
(1633) BroadcastHashJoin
Left keys [1]: [product#31024]
Right keys [1]: [internalUUID#31052]
Join type: LeftOuter
Join condition: None
(1634) Project
Output [4]: [product#31024, plant#31025, orderDateTime#31026, filter(unitOfMeasureConversions#31058, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34111) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34112)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31056.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31056.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31063]
Input [8]: [product#31024, plant#31025, orderDateTime#31026, _extract_code#34111, _extract_internalRefUUID#34112, internalUUID#31052, baseUnitOfMeasure#31056, unitOfMeasureConversions#31058]
(1635) Generate
Input [4]: [product#31024, plant#31025, orderDateTime#31026, filteredUnitOfMeasureConversions#31063]
Arguments: explode(filteredUnitOfMeasureConversions#31063.quantityNumerator), [product#31024, plant#31025, orderDateTime#31026, filteredUnitOfMeasureConversions#31063], true, [quantityNumerator#31064]
(1636) Project
Output [4]: [product#31024, plant#31025, orderDateTime#31026, filteredUnitOfMeasureConversions#31063.quantityDenominator AS _extract_quantityDenominator#33443]
Input [5]: [product#31024, plant#31025, orderDateTime#31026, filteredUnitOfMeasureConversions#31063, quantityNumerator#31064]
(1637) Generate
Input [4]: [product#31024, plant#31025, orderDateTime#31026, _extract_quantityDenominator#33443]
Arguments: explode(_extract_quantityDenominator#33443), [product#31024, plant#31025, orderDateTime#31026], true, [quantityDenominator#31065]
(1638) Project
Output [3]: [product#31024, plant#31025, orderDateTime#31026]
Input [4]: [product#31024, plant#31025, orderDateTime#31026, quantityDenominator#31065]
(1639) Sort
Input [3]: [product#31024, plant#31025, orderDateTime#31026]
Arguments: [product#31024 ASC NULLS FIRST, plant#31025 ASC NULLS FIRST], false, 0
(1640) SortMergeJoin
Left keys [2]: [productUuid#31018, plantUuid#31016]
Right keys [2]: [product#31024, plant#31025]
Join type: Inner
Join condition: (calculationDateTime#31012 <= orderDateTime#31026)
(1641) Project
Output [5]: [plantUuid#31016 AS plant#31068, productUuid#31018 AS product#31069, storageLocId#31019, calculationDateTime#31012, quantity#31021]
Input [8]: [plantUuid#31016, productUuid#31018, calculationDateTime#31012, storageLocId#31019, quantity#31021, product#31024, plant#31025, orderDateTime#31026]
(1642) Exchange
Input [5]: [plant#31068, product#31069, storageLocId#31019, calculationDateTime#31012, quantity#31021]
Arguments: hashpartitioning(coalesce(plant#31068, ), isnull(plant#31068), coalesce(product#31069, ), isnull(product#31069), coalesce(storageLocId#31019, ), isnull(storageLocId#31019), coalesce(calculationDateTime#31012, 1970-01-01 00:00:00), isnull(calculationDateTime#31012), 10), ENSURE_REQUIREMENTS, [plan_id=122425]
(1643) Sort
Input [5]: [plant#31068, product#31069, storageLocId#31019, calculationDateTime#31012, quantity#31021]
Arguments: [coalesce(plant#31068, ) ASC NULLS FIRST, isnull(plant#31068) ASC NULLS FIRST, coalesce(product#31069, ) ASC NULLS FIRST, isnull(product#31069) ASC NULLS FIRST, coalesce(storageLocId#31019, ) ASC NULLS FIRST, isnull(storageLocId#31019) ASC NULLS FIRST, coalesce(calculationDateTime#31012, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#31012) ASC NULLS FIRST], false, 0
(1644) Scan parquet
Output [6]: [internalUUID#31071, product#31072, plant#31073, calculationDateTime#31074, stockQuantities#31075, systemId#31070]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(1645) Filter
Input [6]: [internalUUID#31071, product#31072, plant#31073, calculationDateTime#31074, stockQuantities#31075, systemId#31070]
Condition : (isnotnull(plant#31073.internalRefUUID) AND isnotnull(product#31072.internalRefUUID))
(1646) Project
Output [6]: [systemId#31070, internalUUID#31071, product#31072, plant#31073, calculationDateTime#31074, stockQuantities#31075]
Input [6]: [internalUUID#31071, product#31072, plant#31073, calculationDateTime#31074, stockQuantities#31075, systemId#31070]
(1647) Exchange
Input [6]: [systemId#31070, internalUUID#31071, product#31072, plant#31073, calculationDateTime#31074, stockQuantities#31075]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120243]
(1648) BroadcastExchange
Input [6]: [systemId#31070, internalUUID#31071, product#31072, plant#31073, calculationDateTime#31074, stockQuantities#31075]
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=122390]
(1649) Scan parquet
Output [2]: [marketUnit#31076, distributionCenters#31082]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1650) Filter
Input [2]: [marketUnit#31076, distributionCenters#31082]
Condition : (((marketUnit#31076 <=> DIP_1691) AND (size(distributionCenters#31082, true) > 0)) AND isnotnull(distributionCenters#31082))
(1651) Project
Output [1]: [distributionCenters#31082]
Input [2]: [marketUnit#31076, distributionCenters#31082]
(1652) Exchange
Input [1]: [distributionCenters#31082]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120247]
(1653) Generate
Input [1]: [distributionCenters#31082]
Arguments: explode(distributionCenters#31082), false, [distributionCenters#31098]
(1654) Filter
Input [1]: [distributionCenters#31098]
Condition : (((size(distributionCenters#31098.storageLocations, true) > 0) AND isnotnull(distributionCenters#31098.storageLocations)) AND isnotnull(distributionCenters#31098.internalRefUUID))
(1655) Project
Output [2]: [distributionCenters#31098.internalRefUUID AS _extract_internalRefUUID#33447, distributionCenters#31098.storageLocations AS _extract_storageLocations#33448]
Input [1]: [distributionCenters#31098]
(1656) Generate
Input [2]: [_extract_internalRefUUID#33447, _extract_storageLocations#33448]
Arguments: explode(_extract_storageLocations#33448), [_extract_internalRefUUID#33447], false, [storageLocations#31099]
(1657) Project
Output [3]: [_extract_internalRefUUID#33447 AS plantUuid#31101, storageLocations#31099.id AS storageLocId#31102, storageLocations#31099.internalRefUUID AS storageLocUuid#31103]
Input [2]: [_extract_internalRefUUID#33447, storageLocations#31099]
(1658) BroadcastExchange
Input [3]: [plantUuid#31101, storageLocId#31102, storageLocUuid#31103]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122386]
(1659) Scan parquet
Output [2]: [product#31104, plant#31105]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1660) Filter
Input [2]: [product#31104, plant#31105]
Condition : isnotnull(plant#31105)
(1661) Exchange
Input [2]: [product#31104, plant#31105]
Arguments: hashpartitioning(product#31104, plant#31105, 10), REPARTITION_BY_NUM, [plan_id=121329]
(1662) Scan parquet
Output [4]: [plant#31110, product#31111, productionAspect#31113, systemId#31108]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(1663) Project
Output [4]: [plant#31110.internalRefUUID AS _extract_internalRefUUID#34113, product#31111.internalRefUUID AS _extract_internalRefUUID#34116, productionAspect#31113.productMovementPlants.unitOfIssue.code AS _extract_code#34114, productionAspect#31113.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34115]
Input [4]: [plant#31110, product#31111, productionAspect#31113, systemId#31108]
(1664) Exchange
Input [4]: [_extract_internalRefUUID#34113, _extract_internalRefUUID#34116, _extract_code#34114, _extract_internalRefUUID#34115]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120259]
(1665) Project
Output [4]: [_extract_code#34114, _extract_internalRefUUID#34115, _extract_internalRefUUID#34116, _extract_internalRefUUID#34113]
Input [4]: [_extract_internalRefUUID#34113, _extract_internalRefUUID#34116, _extract_code#34114, _extract_internalRefUUID#34115]
(1666) BroadcastExchange
Input [4]: [_extract_code#34114, _extract_internalRefUUID#34115, _extract_internalRefUUID#34116, _extract_internalRefUUID#34113]
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=122366]
(1667) BroadcastHashJoin
Left keys [4]: [coalesce(product#31104, ), isnull(product#31104), coalesce(plant#31105, ), isnull(plant#31105)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34116, ), isnull(_extract_internalRefUUID#34116), coalesce(_extract_internalRefUUID#34113, ), isnull(_extract_internalRefUUID#34113)]
Join type: LeftOuter
Join condition: None
(1668) Project
Output [4]: [product#31104, plant#31105, _extract_code#34114, _extract_internalRefUUID#34115]
Input [6]: [product#31104, plant#31105, _extract_code#34114, _extract_internalRefUUID#34115, _extract_internalRefUUID#34116, _extract_internalRefUUID#34113]
(1669) Scan parquet
Output [2]: [internalUUID#31118, systemId#31117]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1670) Project
Output [1]: [internalUUID#31118]
Input [2]: [internalUUID#31118, systemId#31117]
(1671) Exchange
Input [1]: [internalUUID#31118]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120265]
(1672) BroadcastExchange
Input [1]: [internalUUID#31118]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122370]
(1673) BroadcastHashJoin
Left keys [2]: [coalesce(plant#31105, ), isnull(plant#31105)]
Right keys [2]: [coalesce(internalUUID#31118, ), isnull(internalUUID#31118)]
Join type: LeftOuter
Join condition: None
(1674) Project
Output [4]: [product#31104, plant#31105, _extract_code#34114, _extract_internalRefUUID#34115]
Input [5]: [product#31104, plant#31105, _extract_code#34114, _extract_internalRefUUID#34115, internalUUID#31118]
(1675) Scan parquet
Output [4]: [internalUUID#31132, baseUnitOfMeasure#31136, unitOfMeasureConversions#31138, systemId#31131]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1676) Filter
Input [4]: [internalUUID#31132, baseUnitOfMeasure#31136, unitOfMeasureConversions#31138, systemId#31131]
Condition : isnotnull(internalUUID#31132)
(1677) Project
Output [3]: [internalUUID#31132, baseUnitOfMeasure#31136, unitOfMeasureConversions#31138]
Input [4]: [internalUUID#31132, baseUnitOfMeasure#31136, unitOfMeasureConversions#31138, systemId#31131]
(1678) Exchange
Input [3]: [internalUUID#31132, baseUnitOfMeasure#31136, unitOfMeasureConversions#31138]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120271]
(1679) BroadcastExchange
Input [3]: [internalUUID#31132, baseUnitOfMeasure#31136, unitOfMeasureConversions#31138]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122374]
(1680) BroadcastHashJoin
Left keys [1]: [product#31104]
Right keys [1]: [internalUUID#31132]
Join type: LeftOuter
Join condition: None
(1681) Project
Output [2]: [plant#31105, filter(unitOfMeasureConversions#31138, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34114) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34115)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31136.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31136.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31143]
Input [7]: [product#31104, plant#31105, _extract_code#34114, _extract_internalRefUUID#34115, internalUUID#31132, baseUnitOfMeasure#31136, unitOfMeasureConversions#31138]
(1682) Generate
Input [2]: [plant#31105, filteredUnitOfMeasureConversions#31143]
Arguments: explode(filteredUnitOfMeasureConversions#31143.quantityNumerator), [plant#31105, filteredUnitOfMeasureConversions#31143], true, [quantityNumerator#31144]
(1683) Project
Output [2]: [plant#31105, filteredUnitOfMeasureConversions#31143.quantityDenominator AS _extract_quantityDenominator#33449]
Input [3]: [plant#31105, filteredUnitOfMeasureConversions#31143, quantityNumerator#31144]
(1684) Generate
Input [2]: [plant#31105, _extract_quantityDenominator#33449]
Arguments: explode(_extract_quantityDenominator#33449), [plant#31105], true, [quantityDenominator#31145]
(1685) Project
Output [1]: [plant#31105]
Input [2]: [plant#31105, quantityDenominator#31145]
(1686) HashAggregate
Input [1]: [plant#31105]
Keys [1]: [plant#31105]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#31105]
(1687) Exchange
Input [1]: [plant#31105]
Arguments: hashpartitioning(plant#31105, 10), ENSURE_REQUIREMENTS, [plan_id=122383]
(1688) HashAggregate
Input [1]: [plant#31105]
Keys [1]: [plant#31105]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#31105]
(1689) BroadcastHashJoin
Left keys [1]: [plantUuid#31101]
Right keys [1]: [plant#31105]
Join type: Inner
Join condition: None
(1690) Project
Output [3]: [plantUuid#31101, storageLocId#31102, storageLocUuid#31103]
Input [4]: [plantUuid#31101, storageLocId#31102, storageLocUuid#31103, plant#31105]
(1691) BroadcastHashJoin
Left keys [2]: [coalesce(plant#31073.internalRefUUID, ), isnull(plant#31073.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#31101, ), isnull(plantUuid#31101)]
Join type: Inner
Join condition: None
(1692) Generate
Input [9]: [systemId#31070, internalUUID#31071, product#31072, plant#31073, calculationDateTime#31074, stockQuantities#31075, plantUuid#31101, storageLocId#31102, storageLocUuid#31103]
Arguments: explode(filter(stockQuantities#31075, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#31103) AND (lambda x#26016.storageLocation.Id = storageLocId#31102)), lambda x#26016, false))), [systemId#31070, internalUUID#31071, product#31072, plant#31073, calculationDateTime#31074, plantUuid#31101], false, [stockQuantity#31148]
(1693) ObjectHashAggregate
Input [7]: [systemId#31070, internalUUID#31071, product#31072, plant#31073, calculationDateTime#31074, plantUuid#31101, stockQuantity#31148]
Keys [5]: [plantUuid#31101, internalUUID#31071, plant#31073, product#31072, systemId#31070]
Functions [2]: [partial_first(calculationDateTime#31074, false), partial_collect_list(stockQuantity#31148, 0, 0)]
Aggregate Attributes [3]: [first#35153, valueSet#35154, buf#35155]
Results [8]: [plantUuid#31101, internalUUID#31071, plant#31073, product#31072, systemId#31070, first#35156, valueSet#35157, buf#35158]
(1694) ObjectHashAggregate
Input [8]: [plantUuid#31101, internalUUID#31071, plant#31073, product#31072, systemId#31070, first#35156, valueSet#35157, buf#35158]
Keys [5]: [plantUuid#31101, internalUUID#31071, plant#31073, product#31072, systemId#31070]
Functions [2]: [first(calculationDateTime#31074, false), collect_list(stockQuantity#31148, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#31074)()#26031, collect_list(stockQuantity#31148, 0, 0)#26032]
Results [4]: [product#31072, plant#31073, first(calculationDateTime#31074)()#26031 AS calculationDateTime#31149, collect_list(stockQuantity#31148, 0, 0)#26032 AS stockQuantities#31150]
(1695) Filter
Input [4]: [product#31072, plant#31073, calculationDateTime#31149, stockQuantities#31150]
Condition : ((size(stockQuantities#31150, true) > 0) AND isnotnull(calculationDateTime#31149))
(1696) Generate
Input [4]: [product#31072, plant#31073, calculationDateTime#31149, stockQuantities#31150]
Arguments: explode(stockQuantities#31150), [product#31072, plant#31073, calculationDateTime#31149], false, [stockQuantity#31151]
(1697) Filter
Input [4]: [product#31072, plant#31073, calculationDateTime#31149, stockQuantity#31151]
Condition : (((isnotnull(stockQuantity#31151.specialStockIndicator.code) AND isnotnull(stockQuantity#31151.stockType.code)) AND (stockQuantity#31151.specialStockIndicator.code = )) AND (stockQuantity#31151.stockType.code = 01))
(1698) Project
Output [4]: [plant#31073.internalRefUUID AS plantUuid#31153, product#31072.internalRefUUID AS productUuid#31155, calculationDateTime#31149, stockQuantity#31151.storagelocation.id AS storageLocId#31156]
Input [4]: [product#31072, plant#31073, calculationDateTime#31149, stockQuantity#31151]
(1699) Exchange
Input [4]: [plantUuid#31153, productUuid#31155, calculationDateTime#31149, storageLocId#31156]
Arguments: hashpartitioning(productUuid#31155, plantUuid#31153, 10), ENSURE_REQUIREMENTS, [plan_id=122416]
(1700) Sort
Input [4]: [plantUuid#31153, productUuid#31155, calculationDateTime#31149, storageLocId#31156]
Arguments: [productUuid#31155 ASC NULLS FIRST, plantUuid#31153 ASC NULLS FIRST], false, 0
(1701) Scan parquet
Output [3]: [product#31161, plant#31162, orderDateTime#31163]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1702) Filter
Input [3]: [product#31161, plant#31162, orderDateTime#31163]
Condition : ((isnotnull(orderDateTime#31163) AND isnotnull(plant#31162)) AND isnotnull(product#31161))
(1703) Exchange
Input [3]: [product#31161, plant#31162, orderDateTime#31163]
Arguments: hashpartitioning(product#31161, plant#31162, 10), REPARTITION_BY_NUM, [plan_id=121352]
(1704) Scan parquet
Output [4]: [plant#31167, product#31168, productionAspect#31170, systemId#31165]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(1705) Project
Output [4]: [plant#31167.internalRefUUID AS _extract_internalRefUUID#34120, product#31168.internalRefUUID AS _extract_internalRefUUID#34117, productionAspect#31170.productMovementPlants.unitOfIssue.code AS _extract_code#34118, productionAspect#31170.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34119]
Input [4]: [plant#31167, product#31168, productionAspect#31170, systemId#31165]
(1706) Exchange
Input [4]: [_extract_internalRefUUID#34120, _extract_internalRefUUID#34117, _extract_code#34118, _extract_internalRefUUID#34119]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120296]
(1707) Project
Output [4]: [_extract_code#34118, _extract_internalRefUUID#34119, _extract_internalRefUUID#34117, _extract_internalRefUUID#34120]
Input [4]: [_extract_internalRefUUID#34120, _extract_internalRefUUID#34117, _extract_code#34118, _extract_internalRefUUID#34119]
(1708) BroadcastExchange
Input [4]: [_extract_code#34118, _extract_internalRefUUID#34119, _extract_internalRefUUID#34117, _extract_internalRefUUID#34120]
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=122399]
(1709) BroadcastHashJoin
Left keys [4]: [coalesce(product#31161, ), isnull(product#31161), coalesce(plant#31162, ), isnull(plant#31162)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34117, ), isnull(_extract_internalRefUUID#34117), coalesce(_extract_internalRefUUID#34120, ), isnull(_extract_internalRefUUID#34120)]
Join type: LeftOuter
Join condition: None
(1710) Project
Output [5]: [product#31161, plant#31162, orderDateTime#31163, _extract_code#34118, _extract_internalRefUUID#34119]
Input [7]: [product#31161, plant#31162, orderDateTime#31163, _extract_code#34118, _extract_internalRefUUID#34119, _extract_internalRefUUID#34117, _extract_internalRefUUID#34120]
(1711) Scan parquet
Output [2]: [internalUUID#31175, systemId#31174]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1712) Project
Output [1]: [internalUUID#31175]
Input [2]: [internalUUID#31175, systemId#31174]
(1713) Exchange
Input [1]: [internalUUID#31175]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120302]
(1714) BroadcastExchange
Input [1]: [internalUUID#31175]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122403]
(1715) BroadcastHashJoin
Left keys [2]: [coalesce(plant#31162, ), isnull(plant#31162)]
Right keys [2]: [coalesce(internalUUID#31175, ), isnull(internalUUID#31175)]
Join type: LeftOuter
Join condition: None
(1716) Project
Output [5]: [product#31161, plant#31162, orderDateTime#31163, _extract_code#34118, _extract_internalRefUUID#34119]
Input [6]: [product#31161, plant#31162, orderDateTime#31163, _extract_code#34118, _extract_internalRefUUID#34119, internalUUID#31175]
(1717) Scan parquet
Output [4]: [internalUUID#31189, baseUnitOfMeasure#31193, unitOfMeasureConversions#31195, systemId#31188]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1718) Filter
Input [4]: [internalUUID#31189, baseUnitOfMeasure#31193, unitOfMeasureConversions#31195, systemId#31188]
Condition : isnotnull(internalUUID#31189)
(1719) Project
Output [3]: [internalUUID#31189, baseUnitOfMeasure#31193, unitOfMeasureConversions#31195]
Input [4]: [internalUUID#31189, baseUnitOfMeasure#31193, unitOfMeasureConversions#31195, systemId#31188]
(1720) Exchange
Input [3]: [internalUUID#31189, baseUnitOfMeasure#31193, unitOfMeasureConversions#31195]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120308]
(1721) BroadcastExchange
Input [3]: [internalUUID#31189, baseUnitOfMeasure#31193, unitOfMeasureConversions#31195]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122407]
(1722) BroadcastHashJoin
Left keys [1]: [product#31161]
Right keys [1]: [internalUUID#31189]
Join type: LeftOuter
Join condition: None
(1723) Project
Output [4]: [product#31161, plant#31162, orderDateTime#31163, filter(unitOfMeasureConversions#31195, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34118) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34119)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31193.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31193.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31200]
Input [8]: [product#31161, plant#31162, orderDateTime#31163, _extract_code#34118, _extract_internalRefUUID#34119, internalUUID#31189, baseUnitOfMeasure#31193, unitOfMeasureConversions#31195]
(1724) Generate
Input [4]: [product#31161, plant#31162, orderDateTime#31163, filteredUnitOfMeasureConversions#31200]
Arguments: explode(filteredUnitOfMeasureConversions#31200.quantityNumerator), [product#31161, plant#31162, orderDateTime#31163, filteredUnitOfMeasureConversions#31200], true, [quantityNumerator#31201]
(1725) Project
Output [4]: [product#31161, plant#31162, orderDateTime#31163, filteredUnitOfMeasureConversions#31200.quantityDenominator AS _extract_quantityDenominator#33453]
Input [5]: [product#31161, plant#31162, orderDateTime#31163, filteredUnitOfMeasureConversions#31200, quantityNumerator#31201]
(1726) Generate
Input [4]: [product#31161, plant#31162, orderDateTime#31163, _extract_quantityDenominator#33453]
Arguments: explode(_extract_quantityDenominator#33453), [product#31161, plant#31162, orderDateTime#31163], true, [quantityDenominator#31202]
(1727) Project
Output [3]: [product#31161, plant#31162, orderDateTime#31163]
Input [4]: [product#31161, plant#31162, orderDateTime#31163, quantityDenominator#31202]
(1728) Sort
Input [3]: [product#31161, plant#31162, orderDateTime#31163]
Arguments: [product#31161 ASC NULLS FIRST, plant#31162 ASC NULLS FIRST], false, 0
(1729) SortMergeJoin
Left keys [2]: [productUuid#31155, plantUuid#31153]
Right keys [2]: [product#31161, plant#31162]
Join type: Inner
Join condition: (calculationDateTime#31149 <= orderDateTime#31163)
(1730) Project
Output [4]: [plantUuid#31153 AS plant#31205, productUuid#31155 AS product#31206, storageLocId#31156, calculationDateTime#31149]
Input [7]: [plantUuid#31153, productUuid#31155, calculationDateTime#31149, storageLocId#31156, product#31161, plant#31162, orderDateTime#31163]
(1731) HashAggregate
Input [4]: [plant#31205, product#31206, storageLocId#31156, calculationDateTime#31149]
Keys [3]: [plant#31205, product#31206, storageLocId#31156]
Functions [1]: [partial_max(calculationDateTime#31149)]
Aggregate Attributes [1]: [max#35151]
Results [4]: [plant#31205, product#31206, storageLocId#31156, max#35152]
(1732) HashAggregate
Input [4]: [plant#31205, product#31206, storageLocId#31156, max#35152]
Keys [3]: [plant#31205, product#31206, storageLocId#31156]
Functions [1]: [max(calculationDateTime#31149)]
Aggregate Attributes [1]: [max(calculationDateTime#31149)#26109]
Results [4]: [plant#31205, product#31206, storageLocId#31156, max(calculationDateTime#31149)#26109 AS max_calc_datetime#31207]
(1733) Exchange
Input [4]: [plant#31205, product#31206, storageLocId#31156, max_calc_datetime#31207]
Arguments: hashpartitioning(coalesce(plant#31205, ), isnull(plant#31205), coalesce(product#31206, ), isnull(product#31206), coalesce(storageLocId#31156, ), isnull(storageLocId#31156), coalesce(max_calc_datetime#31207, 1970-01-01 00:00:00), isnull(max_calc_datetime#31207), 10), ENSURE_REQUIREMENTS, [plan_id=122426]
(1734) Sort
Input [4]: [plant#31205, product#31206, storageLocId#31156, max_calc_datetime#31207]
Arguments: [coalesce(plant#31205, ) ASC NULLS FIRST, isnull(plant#31205) ASC NULLS FIRST, coalesce(product#31206, ) ASC NULLS FIRST, isnull(product#31206) ASC NULLS FIRST, coalesce(storageLocId#31156, ) ASC NULLS FIRST, isnull(storageLocId#31156) ASC NULLS FIRST, coalesce(max_calc_datetime#31207, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#31207) ASC NULLS FIRST], false, 0
(1735) SortMergeJoin
Left keys [8]: [coalesce(plant#31068, ), isnull(plant#31068), coalesce(product#31069, ), isnull(product#31069), coalesce(storageLocId#31019, ), isnull(storageLocId#31019), coalesce(calculationDateTime#31012, 1970-01-01 00:00:00), isnull(calculationDateTime#31012)]
Right keys [8]: [coalesce(plant#31205, ), isnull(plant#31205), coalesce(product#31206, ), isnull(product#31206), coalesce(storageLocId#31156, ), isnull(storageLocId#31156), coalesce(max_calc_datetime#31207, 1970-01-01 00:00:00), isnull(max_calc_datetime#31207)]
Join type: Inner
Join condition: None
(1736) Project
Output [4]: [plant#31068, product#31069, calculationDateTime#31012, quantity#31021]
Input [9]: [plant#31068, product#31069, storageLocId#31019, calculationDateTime#31012, quantity#31021, plant#31205, product#31206, storageLocId#31156, max_calc_datetime#31207]
(1737) HashAggregate
Input [4]: [plant#31068, product#31069, calculationDateTime#31012, quantity#31021]
Keys [2]: [product#31069, plant#31068]
Functions [2]: [partial_min(calculationDateTime#31012), partial_sum(quantity#31021)]
Aggregate Attributes [2]: [min#35141, sum#35142]
Results [4]: [product#31069, plant#31068, min#35143, sum#35144]
(1738) Exchange
Input [4]: [product#31069, plant#31068, min#35143, sum#35144]
Arguments: hashpartitioning(product#31069, plant#31068, 10), ENSURE_REQUIREMENTS, [plan_id=122433]
(1739) HashAggregate
Input [4]: [product#31069, plant#31068, min#35143, sum#35144]
Keys [2]: [product#31069, plant#31068]
Functions [2]: [min(calculationDateTime#31012), sum(quantity#31021)]
Aggregate Attributes [2]: [min(calculationDateTime#31012)#26265, sum(quantity#31021)#26264]
Results [4]: [product#31069, plant#31068, min(calculationDateTime#31012)#26265 AS minCalculationDateTime#31209, round(sum(quantity#31021)#26264, 0) AS roundedQuantitySum#31210]
(1740) Sort
Input [4]: [product#31069, plant#31068, minCalculationDateTime#31209, roundedQuantitySum#31210]
Arguments: [product#31069 ASC NULLS FIRST, plant#31068 ASC NULLS FIRST], false, 0
(1741) SortMergeJoin
Left keys [2]: [product#30889, plant#30890]
Right keys [2]: [product#31069, plant#31068]
Join type: LeftOuter
Join condition: None
(1742) Project
Output [8]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, CASE WHEN isnotnull(minCalculationDateTime#31209) THEN minCalculationDateTime#31209 ELSE orderDateTime#30891 END AS stockDatetime#31211, CASE WHEN isnotnull(roundedQuantitySum#31210) THEN array(roundedQuantitySum#31210) ELSE [0.0] END AS stockBatchQuantities#31212]
Input [10]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, product#31069, plant#31068, minCalculationDateTime#31209, roundedQuantitySum#31210]
(1743) Exchange
Input [8]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212]
Arguments: hashpartitioning(coalesce(plant#30890, ), isnull(plant#30890), coalesce(product#30889, ), isnull(product#30889), 10), ENSURE_REQUIREMENTS, [plan_id=122597]
(1744) Sort
Input [8]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212]
Arguments: [coalesce(plant#30890, ) ASC NULLS FIRST, isnull(plant#30890) ASC NULLS FIRST, coalesce(product#30889, ) ASC NULLS FIRST, isnull(product#30889) ASC NULLS FIRST], false, 0
(1745) Scan parquet
Output [3]: [product#31214, plant#31215, orderDateTime#31216]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1746) Exchange
Input [3]: [product#31214, plant#31215, orderDateTime#31216]
Arguments: hashpartitioning(product#31214, plant#31215, 10), REPARTITION_BY_NUM, [plan_id=120326]
(1747) Scan parquet
Output [8]: [internalUUID#31219, plant#31220, product#31221, blockedForReplenishmentStartingFrom#31222, productionAspect#31223, salesPlant#31224, listing#31225, systemId#31218]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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,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>>>
(1748) Project
Output [8]: [systemId#31218, internalUUID#31219, plant#31220, product#31221, blockedForReplenishmentStartingFrom#31222, productionAspect#31223, salesPlant#31224, listing#31225]
Input [8]: [internalUUID#31219, plant#31220, product#31221, blockedForReplenishmentStartingFrom#31222, productionAspect#31223, salesPlant#31224, listing#31225, systemId#31218]
(1749) Exchange
Input [8]: [systemId#31218, internalUUID#31219, plant#31220, product#31221, blockedForReplenishmentStartingFrom#31222, productionAspect#31223, salesPlant#31224, listing#31225]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120329]
(1750) Project
Output [1]: [struct(systemId, systemId#31218, internalUUID, internalUUID#31219, plant, plant#31220, product, product#31221, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#31222, productionAspect, productionAspect#31223, salesPlant, salesPlant#31224, listing, listing#31225) AS productPlant#31226]
Input [8]: [systemId#31218, internalUUID#31219, plant#31220, product#31221, blockedForReplenishmentStartingFrom#31222, productionAspect#31223, salesPlant#31224, listing#31225]
(1751) BroadcastExchange
Input [1]: [productPlant#31226]
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,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,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,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,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=122441]
(1752) BroadcastHashJoin
Left keys [4]: [coalesce(product#31214, ), isnull(product#31214), coalesce(plant#31215, ), isnull(plant#31215)]
Right keys [4]: [coalesce(productPlant#31226.product.internalRefUUID, ), isnull(productPlant#31226.product.internalRefUUID), coalesce(productPlant#31226.plant.internalRefUUID, ), isnull(productPlant#31226.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1753) Scan parquet
Output [3]: [internalUUID#31228, address#31234, systemId#31227]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1754) Project
Output [2]: [internalUUID#31228, address#31234.timeZone.code AS timezonecode#31239]
Input [3]: [internalUUID#31228, address#31234, systemId#31227]
(1755) Exchange
Input [2]: [internalUUID#31228, timezonecode#31239]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120334]
(1756) BroadcastExchange
Input [2]: [internalUUID#31228, timezonecode#31239]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122444]
(1757) BroadcastHashJoin
Left keys [2]: [coalesce(plant#31215, ), isnull(plant#31215)]
Right keys [2]: [coalesce(internalUUID#31228, ), isnull(internalUUID#31228)]
Join type: LeftOuter
Join condition: None
(1758) Project
Output [5]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, CASE WHEN isnotnull(timezonecode#31239) THEN timezonecode#31239 ELSE UTC END AS timezonecode#31240]
Input [6]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, internalUUID#31228, timezonecode#31239]
(1759) Scan parquet
Output [4]: [internalUUID#31242, baseUnitOfMeasure#31246, unitOfMeasureConversions#31248, systemId#31241]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1760) Filter
Input [4]: [internalUUID#31242, baseUnitOfMeasure#31246, unitOfMeasureConversions#31248, systemId#31241]
Condition : isnotnull(internalUUID#31242)
(1761) Project
Output [3]: [internalUUID#31242, baseUnitOfMeasure#31246, unitOfMeasureConversions#31248]
Input [4]: [internalUUID#31242, baseUnitOfMeasure#31246, unitOfMeasureConversions#31248, systemId#31241]
(1762) Exchange
Input [3]: [internalUUID#31242, baseUnitOfMeasure#31246, unitOfMeasureConversions#31248]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120340]
(1763) BroadcastExchange
Input [3]: [internalUUID#31242, baseUnitOfMeasure#31246, unitOfMeasureConversions#31248]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122448]
(1764) BroadcastHashJoin
Left keys [1]: [product#31214]
Right keys [1]: [internalUUID#31242]
Join type: LeftOuter
Join condition: None
(1765) Project
Output [6]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, filter(unitOfMeasureConversions#31248, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#31226.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#31226.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31246.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31246.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31253]
Input [8]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, internalUUID#31242, baseUnitOfMeasure#31246, unitOfMeasureConversions#31248]
(1766) Project
Output [7]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, filteredUnitOfMeasureConversions#31253.quantityDenominator AS _extract_quantityDenominator#33671, filteredUnitOfMeasureConversions#31253.quantityNumerator AS _extract_quantityNumerator#33672]
Input [6]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, filteredUnitOfMeasureConversions#31253]
(1767) Generate
Input [7]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, _extract_quantityDenominator#33671, _extract_quantityNumerator#33672]
Arguments: explode(_extract_quantityNumerator#33672), [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, _extract_quantityDenominator#33671], true, [quantityNumerator#31254]
(1768) Generate
Input [7]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, _extract_quantityDenominator#33671, quantityNumerator#31254]
Arguments: explode(_extract_quantityDenominator#33671), [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, quantityNumerator#31254], true, [quantityDenominator#31255]
(1769) Project
Output [6]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, (cast(quantityNumerator#31254 as double) / cast(quantityDenominator#31255 as double)) AS outboundUnit#31256]
Input [7]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, quantityNumerator#31254, quantityDenominator#31255]
(1770) Project
Output [6]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, CASE WHEN (isnull(outboundUnit#31256) OR (outboundUnit#31256 <= 0.0)) THEN 1.0 ELSE outboundUnit#31256 END AS outboundUnit#31257]
Input [6]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31256]
(1771) Sort
Input [6]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31257]
Arguments: [product#31214 ASC NULLS FIRST, plant#31215 ASC NULLS FIRST], false, 0
(1772) Scan parquet
Output [6]: [internalUUID#31259, product#31260, plant#31261, calculationDateTime#31262, stockQuantities#31263, systemId#31258]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(1773) Filter
Input [6]: [internalUUID#31259, product#31260, plant#31261, calculationDateTime#31262, stockQuantities#31263, systemId#31258]
Condition : (isnotnull(plant#31261.internalRefUUID) AND isnotnull(product#31260.internalRefUUID))
(1774) Project
Output [6]: [systemId#31258, internalUUID#31259, product#31260, plant#31261, calculationDateTime#31262, stockQuantities#31263]
Input [6]: [internalUUID#31259, product#31260, plant#31261, calculationDateTime#31262, stockQuantities#31263, systemId#31258]
(1775) Exchange
Input [6]: [systemId#31258, internalUUID#31259, product#31260, plant#31261, calculationDateTime#31262, stockQuantities#31263]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120351]
(1776) BroadcastExchange
Input [6]: [systemId#31258, internalUUID#31259, product#31260, plant#31261, calculationDateTime#31262, stockQuantities#31263]
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=122480]
(1777) Scan parquet
Output [2]: [marketUnit#31264, distributionCenters#31270]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1778) Filter
Input [2]: [marketUnit#31264, distributionCenters#31270]
Condition : (((marketUnit#31264 <=> DIP_1691) AND (size(distributionCenters#31270, true) > 0)) AND isnotnull(distributionCenters#31270))
(1779) Project
Output [1]: [distributionCenters#31270]
Input [2]: [marketUnit#31264, distributionCenters#31270]
(1780) Exchange
Input [1]: [distributionCenters#31270]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120355]
(1781) Generate
Input [1]: [distributionCenters#31270]
Arguments: explode(distributionCenters#31270), false, [distributionCenters#31286]
(1782) Filter
Input [1]: [distributionCenters#31286]
Condition : (((size(distributionCenters#31286.storageLocations, true) > 0) AND isnotnull(distributionCenters#31286.storageLocations)) AND isnotnull(distributionCenters#31286.internalRefUUID))
(1783) Project
Output [2]: [distributionCenters#31286.internalRefUUID AS _extract_internalRefUUID#33459, distributionCenters#31286.storageLocations AS _extract_storageLocations#33460]
Input [1]: [distributionCenters#31286]
(1784) Generate
Input [2]: [_extract_internalRefUUID#33459, _extract_storageLocations#33460]
Arguments: explode(_extract_storageLocations#33460), [_extract_internalRefUUID#33459], false, [storageLocations#31287]
(1785) Project
Output [3]: [_extract_internalRefUUID#33459 AS plantUuid#31289, storageLocations#31287.id AS storageLocId#31290, storageLocations#31287.internalRefUUID AS storageLocUuid#31291]
Input [2]: [_extract_internalRefUUID#33459, storageLocations#31287]
(1786) BroadcastExchange
Input [3]: [plantUuid#31289, storageLocId#31290, storageLocUuid#31291]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122476]
(1787) Scan parquet
Output [2]: [product#31292, plant#31293]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1788) Filter
Input [2]: [product#31292, plant#31293]
Condition : isnotnull(plant#31293)
(1789) Exchange
Input [2]: [product#31292, plant#31293]
Arguments: hashpartitioning(product#31292, plant#31293, 10), REPARTITION_BY_NUM, [plan_id=121373]
(1790) Scan parquet
Output [4]: [plant#31298, product#31299, productionAspect#31301, systemId#31296]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(1791) Project
Output [4]: [plant#31298.internalRefUUID AS _extract_internalRefUUID#34122, product#31299.internalRefUUID AS _extract_internalRefUUID#34121, productionAspect#31301.productMovementPlants.unitOfIssue.code AS _extract_code#34123, productionAspect#31301.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34124]
Input [4]: [plant#31298, product#31299, productionAspect#31301, systemId#31296]
(1792) Exchange
Input [4]: [_extract_internalRefUUID#34122, _extract_internalRefUUID#34121, _extract_code#34123, _extract_internalRefUUID#34124]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120367]
(1793) Project
Output [4]: [_extract_code#34123, _extract_internalRefUUID#34124, _extract_internalRefUUID#34121, _extract_internalRefUUID#34122]
Input [4]: [_extract_internalRefUUID#34122, _extract_internalRefUUID#34121, _extract_code#34123, _extract_internalRefUUID#34124]
(1794) BroadcastExchange
Input [4]: [_extract_code#34123, _extract_internalRefUUID#34124, _extract_internalRefUUID#34121, _extract_internalRefUUID#34122]
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=122456]
(1795) BroadcastHashJoin
Left keys [4]: [coalesce(product#31292, ), isnull(product#31292), coalesce(plant#31293, ), isnull(plant#31293)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34121, ), isnull(_extract_internalRefUUID#34121), coalesce(_extract_internalRefUUID#34122, ), isnull(_extract_internalRefUUID#34122)]
Join type: LeftOuter
Join condition: None
(1796) Project
Output [4]: [product#31292, plant#31293, _extract_code#34123, _extract_internalRefUUID#34124]
Input [6]: [product#31292, plant#31293, _extract_code#34123, _extract_internalRefUUID#34124, _extract_internalRefUUID#34121, _extract_internalRefUUID#34122]
(1797) Scan parquet
Output [2]: [internalUUID#31306, systemId#31305]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1798) Project
Output [1]: [internalUUID#31306]
Input [2]: [internalUUID#31306, systemId#31305]
(1799) Exchange
Input [1]: [internalUUID#31306]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120373]
(1800) BroadcastExchange
Input [1]: [internalUUID#31306]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122460]
(1801) BroadcastHashJoin
Left keys [2]: [coalesce(plant#31293, ), isnull(plant#31293)]
Right keys [2]: [coalesce(internalUUID#31306, ), isnull(internalUUID#31306)]
Join type: LeftOuter
Join condition: None
(1802) Project
Output [4]: [product#31292, plant#31293, _extract_code#34123, _extract_internalRefUUID#34124]
Input [5]: [product#31292, plant#31293, _extract_code#34123, _extract_internalRefUUID#34124, internalUUID#31306]
(1803) Scan parquet
Output [4]: [internalUUID#31320, baseUnitOfMeasure#31324, unitOfMeasureConversions#31326, systemId#31319]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1804) Filter
Input [4]: [internalUUID#31320, baseUnitOfMeasure#31324, unitOfMeasureConversions#31326, systemId#31319]
Condition : isnotnull(internalUUID#31320)
(1805) Project
Output [3]: [internalUUID#31320, baseUnitOfMeasure#31324, unitOfMeasureConversions#31326]
Input [4]: [internalUUID#31320, baseUnitOfMeasure#31324, unitOfMeasureConversions#31326, systemId#31319]
(1806) Exchange
Input [3]: [internalUUID#31320, baseUnitOfMeasure#31324, unitOfMeasureConversions#31326]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120379]
(1807) BroadcastExchange
Input [3]: [internalUUID#31320, baseUnitOfMeasure#31324, unitOfMeasureConversions#31326]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122464]
(1808) BroadcastHashJoin
Left keys [1]: [product#31292]
Right keys [1]: [internalUUID#31320]
Join type: LeftOuter
Join condition: None
(1809) Project
Output [2]: [plant#31293, filter(unitOfMeasureConversions#31326, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34123) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34124)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31324.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31324.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31331]
Input [7]: [product#31292, plant#31293, _extract_code#34123, _extract_internalRefUUID#34124, internalUUID#31320, baseUnitOfMeasure#31324, unitOfMeasureConversions#31326]
(1810) Generate
Input [2]: [plant#31293, filteredUnitOfMeasureConversions#31331]
Arguments: explode(filteredUnitOfMeasureConversions#31331.quantityNumerator), [plant#31293, filteredUnitOfMeasureConversions#31331], true, [quantityNumerator#31332]
(1811) Project
Output [2]: [plant#31293, filteredUnitOfMeasureConversions#31331.quantityDenominator AS _extract_quantityDenominator#33461]
Input [3]: [plant#31293, filteredUnitOfMeasureConversions#31331, quantityNumerator#31332]
(1812) Generate
Input [2]: [plant#31293, _extract_quantityDenominator#33461]
Arguments: explode(_extract_quantityDenominator#33461), [plant#31293], true, [quantityDenominator#31333]
(1813) Project
Output [1]: [plant#31293]
Input [2]: [plant#31293, quantityDenominator#31333]
(1814) HashAggregate
Input [1]: [plant#31293]
Keys [1]: [plant#31293]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#31293]
(1815) Exchange
Input [1]: [plant#31293]
Arguments: hashpartitioning(plant#31293, 10), ENSURE_REQUIREMENTS, [plan_id=122473]
(1816) HashAggregate
Input [1]: [plant#31293]
Keys [1]: [plant#31293]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#31293]
(1817) BroadcastHashJoin
Left keys [1]: [plantUuid#31289]
Right keys [1]: [plant#31293]
Join type: Inner
Join condition: None
(1818) Project
Output [3]: [plantUuid#31289, storageLocId#31290, storageLocUuid#31291]
Input [4]: [plantUuid#31289, storageLocId#31290, storageLocUuid#31291, plant#31293]
(1819) BroadcastHashJoin
Left keys [2]: [coalesce(plant#31261.internalRefUUID, ), isnull(plant#31261.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#31289, ), isnull(plantUuid#31289)]
Join type: Inner
Join condition: None
(1820) Generate
Input [9]: [systemId#31258, internalUUID#31259, product#31260, plant#31261, calculationDateTime#31262, stockQuantities#31263, plantUuid#31289, storageLocId#31290, storageLocUuid#31291]
Arguments: explode(filter(stockQuantities#31263, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#31291) AND (lambda x#26016.storageLocation.Id = storageLocId#31290)), lambda x#26016, false))), [systemId#31258, internalUUID#31259, product#31260, plant#31261, calculationDateTime#31262, plantUuid#31289], false, [stockQuantity#31336]
(1821) ObjectHashAggregate
Input [7]: [systemId#31258, internalUUID#31259, product#31260, plant#31261, calculationDateTime#31262, plantUuid#31289, stockQuantity#31336]
Keys [5]: [plantUuid#31289, internalUUID#31259, plant#31261, product#31260, systemId#31258]
Functions [2]: [partial_first(calculationDateTime#31262, false), partial_collect_list(stockQuantity#31336, 0, 0)]
Aggregate Attributes [3]: [first#35167, valueSet#35168, buf#35169]
Results [8]: [plantUuid#31289, internalUUID#31259, plant#31261, product#31260, systemId#31258, first#35170, valueSet#35171, buf#35172]
(1822) ObjectHashAggregate
Input [8]: [plantUuid#31289, internalUUID#31259, plant#31261, product#31260, systemId#31258, first#35170, valueSet#35171, buf#35172]
Keys [5]: [plantUuid#31289, internalUUID#31259, plant#31261, product#31260, systemId#31258]
Functions [2]: [first(calculationDateTime#31262, false), collect_list(stockQuantity#31336, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#31262)()#26031, collect_list(stockQuantity#31336, 0, 0)#26032]
Results [4]: [product#31260, plant#31261, first(calculationDateTime#31262)()#26031 AS calculationDateTime#31337, collect_list(stockQuantity#31336, 0, 0)#26032 AS stockQuantities#31338]
(1823) Filter
Input [4]: [product#31260, plant#31261, calculationDateTime#31337, stockQuantities#31338]
Condition : ((size(stockQuantities#31338, true) > 0) AND isnotnull(calculationDateTime#31337))
(1824) Generate
Input [4]: [product#31260, plant#31261, calculationDateTime#31337, stockQuantities#31338]
Arguments: explode(stockQuantities#31338), [product#31260, plant#31261, calculationDateTime#31337], false, [stockQuantity#31339]
(1825) Filter
Input [4]: [product#31260, plant#31261, calculationDateTime#31337, stockQuantity#31339]
Condition : (((isnotnull(stockQuantity#31339.specialStockIndicator.code) AND isnotnull(stockQuantity#31339.stockType.code)) AND (stockQuantity#31339.specialStockIndicator.code = )) AND (stockQuantity#31339.stockType.code = 01))
(1826) Project
Output [5]: [plant#31261.internalRefUUID AS plantUuid#31341, product#31260.internalRefUUID AS productUuid#31343, calculationDateTime#31337, stockQuantity#31339.storagelocation.id AS storageLocId#31344, stockQuantity#31339.quantity.measure AS quantity#31346]
Input [4]: [product#31260, plant#31261, calculationDateTime#31337, stockQuantity#31339]
(1827) Exchange
Input [5]: [plantUuid#31341, productUuid#31343, calculationDateTime#31337, storageLocId#31344, quantity#31346]
Arguments: hashpartitioning(productUuid#31343, plantUuid#31341, 10), ENSURE_REQUIREMENTS, [plan_id=122506]
(1828) Sort
Input [5]: [plantUuid#31341, productUuid#31343, calculationDateTime#31337, storageLocId#31344, quantity#31346]
Arguments: [productUuid#31343 ASC NULLS FIRST, plantUuid#31341 ASC NULLS FIRST], false, 0
(1829) Scan parquet
Output [3]: [product#31349, plant#31350, orderDateTime#31351]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1830) Filter
Input [3]: [product#31349, plant#31350, orderDateTime#31351]
Condition : ((isnotnull(orderDateTime#31351) AND isnotnull(plant#31350)) AND isnotnull(product#31349))
(1831) Exchange
Input [3]: [product#31349, plant#31350, orderDateTime#31351]
Arguments: hashpartitioning(product#31349, plant#31350, 10), REPARTITION_BY_NUM, [plan_id=121396]
(1832) Scan parquet
Output [4]: [plant#31355, product#31356, productionAspect#31358, systemId#31353]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(1833) Project
Output [4]: [plant#31355.internalRefUUID AS _extract_internalRefUUID#34125, product#31356.internalRefUUID AS _extract_internalRefUUID#34128, productionAspect#31358.productMovementPlants.unitOfIssue.code AS _extract_code#34126, productionAspect#31358.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34127]
Input [4]: [plant#31355, product#31356, productionAspect#31358, systemId#31353]
(1834) Exchange
Input [4]: [_extract_internalRefUUID#34125, _extract_internalRefUUID#34128, _extract_code#34126, _extract_internalRefUUID#34127]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120404]
(1835) Project
Output [4]: [_extract_code#34126, _extract_internalRefUUID#34127, _extract_internalRefUUID#34128, _extract_internalRefUUID#34125]
Input [4]: [_extract_internalRefUUID#34125, _extract_internalRefUUID#34128, _extract_code#34126, _extract_internalRefUUID#34127]
(1836) BroadcastExchange
Input [4]: [_extract_code#34126, _extract_internalRefUUID#34127, _extract_internalRefUUID#34128, _extract_internalRefUUID#34125]
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=122489]
(1837) BroadcastHashJoin
Left keys [4]: [coalesce(product#31349, ), isnull(product#31349), coalesce(plant#31350, ), isnull(plant#31350)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34128, ), isnull(_extract_internalRefUUID#34128), coalesce(_extract_internalRefUUID#34125, ), isnull(_extract_internalRefUUID#34125)]
Join type: LeftOuter
Join condition: None
(1838) Project
Output [5]: [product#31349, plant#31350, orderDateTime#31351, _extract_code#34126, _extract_internalRefUUID#34127]
Input [7]: [product#31349, plant#31350, orderDateTime#31351, _extract_code#34126, _extract_internalRefUUID#34127, _extract_internalRefUUID#34128, _extract_internalRefUUID#34125]
(1839) Scan parquet
Output [2]: [internalUUID#31363, systemId#31362]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1840) Project
Output [1]: [internalUUID#31363]
Input [2]: [internalUUID#31363, systemId#31362]
(1841) Exchange
Input [1]: [internalUUID#31363]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120410]
(1842) BroadcastExchange
Input [1]: [internalUUID#31363]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122493]
(1843) BroadcastHashJoin
Left keys [2]: [coalesce(plant#31350, ), isnull(plant#31350)]
Right keys [2]: [coalesce(internalUUID#31363, ), isnull(internalUUID#31363)]
Join type: LeftOuter
Join condition: None
(1844) Project
Output [5]: [product#31349, plant#31350, orderDateTime#31351, _extract_code#34126, _extract_internalRefUUID#34127]
Input [6]: [product#31349, plant#31350, orderDateTime#31351, _extract_code#34126, _extract_internalRefUUID#34127, internalUUID#31363]
(1845) Scan parquet
Output [4]: [internalUUID#31377, baseUnitOfMeasure#31381, unitOfMeasureConversions#31383, systemId#31376]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1846) Filter
Input [4]: [internalUUID#31377, baseUnitOfMeasure#31381, unitOfMeasureConversions#31383, systemId#31376]
Condition : isnotnull(internalUUID#31377)
(1847) Project
Output [3]: [internalUUID#31377, baseUnitOfMeasure#31381, unitOfMeasureConversions#31383]
Input [4]: [internalUUID#31377, baseUnitOfMeasure#31381, unitOfMeasureConversions#31383, systemId#31376]
(1848) Exchange
Input [3]: [internalUUID#31377, baseUnitOfMeasure#31381, unitOfMeasureConversions#31383]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120416]
(1849) BroadcastExchange
Input [3]: [internalUUID#31377, baseUnitOfMeasure#31381, unitOfMeasureConversions#31383]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122497]
(1850) BroadcastHashJoin
Left keys [1]: [product#31349]
Right keys [1]: [internalUUID#31377]
Join type: LeftOuter
Join condition: None
(1851) Project
Output [4]: [product#31349, plant#31350, orderDateTime#31351, filter(unitOfMeasureConversions#31383, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34126) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34127)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31381.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31381.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31388]
Input [8]: [product#31349, plant#31350, orderDateTime#31351, _extract_code#34126, _extract_internalRefUUID#34127, internalUUID#31377, baseUnitOfMeasure#31381, unitOfMeasureConversions#31383]
(1852) Generate
Input [4]: [product#31349, plant#31350, orderDateTime#31351, filteredUnitOfMeasureConversions#31388]
Arguments: explode(filteredUnitOfMeasureConversions#31388.quantityNumerator), [product#31349, plant#31350, orderDateTime#31351, filteredUnitOfMeasureConversions#31388], true, [quantityNumerator#31389]
(1853) Project
Output [4]: [product#31349, plant#31350, orderDateTime#31351, filteredUnitOfMeasureConversions#31388.quantityDenominator AS _extract_quantityDenominator#33465]
Input [5]: [product#31349, plant#31350, orderDateTime#31351, filteredUnitOfMeasureConversions#31388, quantityNumerator#31389]
(1854) Generate
Input [4]: [product#31349, plant#31350, orderDateTime#31351, _extract_quantityDenominator#33465]
Arguments: explode(_extract_quantityDenominator#33465), [product#31349, plant#31350, orderDateTime#31351], true, [quantityDenominator#31390]
(1855) Project
Output [3]: [product#31349, plant#31350, orderDateTime#31351]
Input [4]: [product#31349, plant#31350, orderDateTime#31351, quantityDenominator#31390]
(1856) Sort
Input [3]: [product#31349, plant#31350, orderDateTime#31351]
Arguments: [product#31349 ASC NULLS FIRST, plant#31350 ASC NULLS FIRST], false, 0
(1857) SortMergeJoin
Left keys [2]: [productUuid#31343, plantUuid#31341]
Right keys [2]: [product#31349, plant#31350]
Join type: Inner
Join condition: (calculationDateTime#31337 <= orderDateTime#31351)
(1858) Project
Output [5]: [plantUuid#31341 AS plant#31393, productUuid#31343 AS product#31394, storageLocId#31344, calculationDateTime#31337, quantity#31346]
Input [8]: [plantUuid#31341, productUuid#31343, calculationDateTime#31337, storageLocId#31344, quantity#31346, product#31349, plant#31350, orderDateTime#31351]
(1859) Exchange
Input [5]: [plant#31393, product#31394, storageLocId#31344, calculationDateTime#31337, quantity#31346]
Arguments: hashpartitioning(coalesce(plant#31393, ), isnull(plant#31393), coalesce(product#31394, ), isnull(product#31394), coalesce(storageLocId#31344, ), isnull(storageLocId#31344), coalesce(calculationDateTime#31337, 1970-01-01 00:00:00), isnull(calculationDateTime#31337), 10), ENSURE_REQUIREMENTS, [plan_id=122570]
(1860) Sort
Input [5]: [plant#31393, product#31394, storageLocId#31344, calculationDateTime#31337, quantity#31346]
Arguments: [coalesce(plant#31393, ) ASC NULLS FIRST, isnull(plant#31393) ASC NULLS FIRST, coalesce(product#31394, ) ASC NULLS FIRST, isnull(product#31394) ASC NULLS FIRST, coalesce(storageLocId#31344, ) ASC NULLS FIRST, isnull(storageLocId#31344) ASC NULLS FIRST, coalesce(calculationDateTime#31337, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#31337) ASC NULLS FIRST], false, 0
(1861) Scan parquet
Output [6]: [internalUUID#31396, product#31397, plant#31398, calculationDateTime#31399, stockQuantities#31400, systemId#31395]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(1862) Filter
Input [6]: [internalUUID#31396, product#31397, plant#31398, calculationDateTime#31399, stockQuantities#31400, systemId#31395]
Condition : (isnotnull(plant#31398.internalRefUUID) AND isnotnull(product#31397.internalRefUUID))
(1863) Project
Output [6]: [systemId#31395, internalUUID#31396, product#31397, plant#31398, calculationDateTime#31399, stockQuantities#31400]
Input [6]: [internalUUID#31396, product#31397, plant#31398, calculationDateTime#31399, stockQuantities#31400, systemId#31395]
(1864) Exchange
Input [6]: [systemId#31395, internalUUID#31396, product#31397, plant#31398, calculationDateTime#31399, stockQuantities#31400]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120428]
(1865) BroadcastExchange
Input [6]: [systemId#31395, internalUUID#31396, product#31397, plant#31398, calculationDateTime#31399, stockQuantities#31400]
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=122535]
(1866) Scan parquet
Output [2]: [marketUnit#31401, distributionCenters#31407]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1867) Filter
Input [2]: [marketUnit#31401, distributionCenters#31407]
Condition : (((marketUnit#31401 <=> DIP_1691) AND (size(distributionCenters#31407, true) > 0)) AND isnotnull(distributionCenters#31407))
(1868) Project
Output [1]: [distributionCenters#31407]
Input [2]: [marketUnit#31401, distributionCenters#31407]
(1869) Exchange
Input [1]: [distributionCenters#31407]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120432]
(1870) Generate
Input [1]: [distributionCenters#31407]
Arguments: explode(distributionCenters#31407), false, [distributionCenters#31423]
(1871) Filter
Input [1]: [distributionCenters#31423]
Condition : (((size(distributionCenters#31423.storageLocations, true) > 0) AND isnotnull(distributionCenters#31423.storageLocations)) AND isnotnull(distributionCenters#31423.internalRefUUID))
(1872) Project
Output [2]: [distributionCenters#31423.internalRefUUID AS _extract_internalRefUUID#33469, distributionCenters#31423.storageLocations AS _extract_storageLocations#33470]
Input [1]: [distributionCenters#31423]
(1873) Generate
Input [2]: [_extract_internalRefUUID#33469, _extract_storageLocations#33470]
Arguments: explode(_extract_storageLocations#33470), [_extract_internalRefUUID#33469], false, [storageLocations#31424]
(1874) Project
Output [3]: [_extract_internalRefUUID#33469 AS plantUuid#31426, storageLocations#31424.id AS storageLocId#31427, storageLocations#31424.internalRefUUID AS storageLocUuid#31428]
Input [2]: [_extract_internalRefUUID#33469, storageLocations#31424]
(1875) BroadcastExchange
Input [3]: [plantUuid#31426, storageLocId#31427, storageLocUuid#31428]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122531]
(1876) Scan parquet
Output [2]: [product#31429, plant#31430]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1877) Filter
Input [2]: [product#31429, plant#31430]
Condition : isnotnull(plant#31430)
(1878) Exchange
Input [2]: [product#31429, plant#31430]
Arguments: hashpartitioning(product#31429, plant#31430, 10), REPARTITION_BY_NUM, [plan_id=121409]
(1879) Scan parquet
Output [4]: [plant#31435, product#31436, productionAspect#31438, systemId#31433]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(1880) Project
Output [4]: [plant#31435.internalRefUUID AS _extract_internalRefUUID#34129, product#31436.internalRefUUID AS _extract_internalRefUUID#34130, productionAspect#31438.productMovementPlants.unitOfIssue.code AS _extract_code#34131, productionAspect#31438.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34132]
Input [4]: [plant#31435, product#31436, productionAspect#31438, systemId#31433]
(1881) Exchange
Input [4]: [_extract_internalRefUUID#34129, _extract_internalRefUUID#34130, _extract_code#34131, _extract_internalRefUUID#34132]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120444]
(1882) Project
Output [4]: [_extract_code#34131, _extract_internalRefUUID#34132, _extract_internalRefUUID#34130, _extract_internalRefUUID#34129]
Input [4]: [_extract_internalRefUUID#34129, _extract_internalRefUUID#34130, _extract_code#34131, _extract_internalRefUUID#34132]
(1883) BroadcastExchange
Input [4]: [_extract_code#34131, _extract_internalRefUUID#34132, _extract_internalRefUUID#34130, _extract_internalRefUUID#34129]
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=122511]
(1884) BroadcastHashJoin
Left keys [4]: [coalesce(product#31429, ), isnull(product#31429), coalesce(plant#31430, ), isnull(plant#31430)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34130, ), isnull(_extract_internalRefUUID#34130), coalesce(_extract_internalRefUUID#34129, ), isnull(_extract_internalRefUUID#34129)]
Join type: LeftOuter
Join condition: None
(1885) Project
Output [4]: [product#31429, plant#31430, _extract_code#34131, _extract_internalRefUUID#34132]
Input [6]: [product#31429, plant#31430, _extract_code#34131, _extract_internalRefUUID#34132, _extract_internalRefUUID#34130, _extract_internalRefUUID#34129]
(1886) Scan parquet
Output [2]: [internalUUID#31443, systemId#31442]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1887) Project
Output [1]: [internalUUID#31443]
Input [2]: [internalUUID#31443, systemId#31442]
(1888) Exchange
Input [1]: [internalUUID#31443]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120450]
(1889) BroadcastExchange
Input [1]: [internalUUID#31443]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122515]
(1890) BroadcastHashJoin
Left keys [2]: [coalesce(plant#31430, ), isnull(plant#31430)]
Right keys [2]: [coalesce(internalUUID#31443, ), isnull(internalUUID#31443)]
Join type: LeftOuter
Join condition: None
(1891) Project
Output [4]: [product#31429, plant#31430, _extract_code#34131, _extract_internalRefUUID#34132]
Input [5]: [product#31429, plant#31430, _extract_code#34131, _extract_internalRefUUID#34132, internalUUID#31443]
(1892) Scan parquet
Output [4]: [internalUUID#31457, baseUnitOfMeasure#31461, unitOfMeasureConversions#31463, systemId#31456]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1893) Filter
Input [4]: [internalUUID#31457, baseUnitOfMeasure#31461, unitOfMeasureConversions#31463, systemId#31456]
Condition : isnotnull(internalUUID#31457)
(1894) Project
Output [3]: [internalUUID#31457, baseUnitOfMeasure#31461, unitOfMeasureConversions#31463]
Input [4]: [internalUUID#31457, baseUnitOfMeasure#31461, unitOfMeasureConversions#31463, systemId#31456]
(1895) Exchange
Input [3]: [internalUUID#31457, baseUnitOfMeasure#31461, unitOfMeasureConversions#31463]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120456]
(1896) BroadcastExchange
Input [3]: [internalUUID#31457, baseUnitOfMeasure#31461, unitOfMeasureConversions#31463]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122519]
(1897) BroadcastHashJoin
Left keys [1]: [product#31429]
Right keys [1]: [internalUUID#31457]
Join type: LeftOuter
Join condition: None
(1898) Project
Output [2]: [plant#31430, filter(unitOfMeasureConversions#31463, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34131) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34132)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31461.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31461.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31468]
Input [7]: [product#31429, plant#31430, _extract_code#34131, _extract_internalRefUUID#34132, internalUUID#31457, baseUnitOfMeasure#31461, unitOfMeasureConversions#31463]
(1899) Generate
Input [2]: [plant#31430, filteredUnitOfMeasureConversions#31468]
Arguments: explode(filteredUnitOfMeasureConversions#31468.quantityNumerator), [plant#31430, filteredUnitOfMeasureConversions#31468], true, [quantityNumerator#31469]
(1900) Project
Output [2]: [plant#31430, filteredUnitOfMeasureConversions#31468.quantityDenominator AS _extract_quantityDenominator#33471]
Input [3]: [plant#31430, filteredUnitOfMeasureConversions#31468, quantityNumerator#31469]
(1901) Generate
Input [2]: [plant#31430, _extract_quantityDenominator#33471]
Arguments: explode(_extract_quantityDenominator#33471), [plant#31430], true, [quantityDenominator#31470]
(1902) Project
Output [1]: [plant#31430]
Input [2]: [plant#31430, quantityDenominator#31470]
(1903) HashAggregate
Input [1]: [plant#31430]
Keys [1]: [plant#31430]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#31430]
(1904) Exchange
Input [1]: [plant#31430]
Arguments: hashpartitioning(plant#31430, 10), ENSURE_REQUIREMENTS, [plan_id=122528]
(1905) HashAggregate
Input [1]: [plant#31430]
Keys [1]: [plant#31430]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#31430]
(1906) BroadcastHashJoin
Left keys [1]: [plantUuid#31426]
Right keys [1]: [plant#31430]
Join type: Inner
Join condition: None
(1907) Project
Output [3]: [plantUuid#31426, storageLocId#31427, storageLocUuid#31428]
Input [4]: [plantUuid#31426, storageLocId#31427, storageLocUuid#31428, plant#31430]
(1908) BroadcastHashJoin
Left keys [2]: [coalesce(plant#31398.internalRefUUID, ), isnull(plant#31398.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#31426, ), isnull(plantUuid#31426)]
Join type: Inner
Join condition: None
(1909) Generate
Input [9]: [systemId#31395, internalUUID#31396, product#31397, plant#31398, calculationDateTime#31399, stockQuantities#31400, plantUuid#31426, storageLocId#31427, storageLocUuid#31428]
Arguments: explode(filter(stockQuantities#31400, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#31428) AND (lambda x#26016.storageLocation.Id = storageLocId#31427)), lambda x#26016, false))), [systemId#31395, internalUUID#31396, product#31397, plant#31398, calculationDateTime#31399, plantUuid#31426], false, [stockQuantity#31473]
(1910) ObjectHashAggregate
Input [7]: [systemId#31395, internalUUID#31396, product#31397, plant#31398, calculationDateTime#31399, plantUuid#31426, stockQuantity#31473]
Keys [5]: [plantUuid#31426, internalUUID#31396, plant#31398, product#31397, systemId#31395]
Functions [2]: [partial_first(calculationDateTime#31399, false), partial_collect_list(stockQuantity#31473, 0, 0)]
Aggregate Attributes [3]: [first#35175, valueSet#35176, buf#35177]
Results [8]: [plantUuid#31426, internalUUID#31396, plant#31398, product#31397, systemId#31395, first#35178, valueSet#35179, buf#35180]
(1911) ObjectHashAggregate
Input [8]: [plantUuid#31426, internalUUID#31396, plant#31398, product#31397, systemId#31395, first#35178, valueSet#35179, buf#35180]
Keys [5]: [plantUuid#31426, internalUUID#31396, plant#31398, product#31397, systemId#31395]
Functions [2]: [first(calculationDateTime#31399, false), collect_list(stockQuantity#31473, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#31399)()#26031, collect_list(stockQuantity#31473, 0, 0)#26032]
Results [4]: [product#31397, plant#31398, first(calculationDateTime#31399)()#26031 AS calculationDateTime#31474, collect_list(stockQuantity#31473, 0, 0)#26032 AS stockQuantities#31475]
(1912) Filter
Input [4]: [product#31397, plant#31398, calculationDateTime#31474, stockQuantities#31475]
Condition : ((size(stockQuantities#31475, true) > 0) AND isnotnull(calculationDateTime#31474))
(1913) Generate
Input [4]: [product#31397, plant#31398, calculationDateTime#31474, stockQuantities#31475]
Arguments: explode(stockQuantities#31475), [product#31397, plant#31398, calculationDateTime#31474], false, [stockQuantity#31476]
(1914) Filter
Input [4]: [product#31397, plant#31398, calculationDateTime#31474, stockQuantity#31476]
Condition : (((isnotnull(stockQuantity#31476.specialStockIndicator.code) AND isnotnull(stockQuantity#31476.stockType.code)) AND (stockQuantity#31476.specialStockIndicator.code = )) AND (stockQuantity#31476.stockType.code = 01))
(1915) Project
Output [4]: [plant#31398.internalRefUUID AS plantUuid#31478, product#31397.internalRefUUID AS productUuid#31480, calculationDateTime#31474, stockQuantity#31476.storagelocation.id AS storageLocId#31481]
Input [4]: [product#31397, plant#31398, calculationDateTime#31474, stockQuantity#31476]
(1916) Exchange
Input [4]: [plantUuid#31478, productUuid#31480, calculationDateTime#31474, storageLocId#31481]
Arguments: hashpartitioning(productUuid#31480, plantUuid#31478, 10), ENSURE_REQUIREMENTS, [plan_id=122561]
(1917) Sort
Input [4]: [plantUuid#31478, productUuid#31480, calculationDateTime#31474, storageLocId#31481]
Arguments: [productUuid#31480 ASC NULLS FIRST, plantUuid#31478 ASC NULLS FIRST], false, 0
(1918) Scan parquet
Output [3]: [product#31486, plant#31487, orderDateTime#31488]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1919) Filter
Input [3]: [product#31486, plant#31487, orderDateTime#31488]
Condition : ((isnotnull(orderDateTime#31488) AND isnotnull(plant#31487)) AND isnotnull(product#31486))
(1920) Exchange
Input [3]: [product#31486, plant#31487, orderDateTime#31488]
Arguments: hashpartitioning(product#31486, plant#31487, 10), REPARTITION_BY_NUM, [plan_id=121432]
(1921) Scan parquet
Output [4]: [plant#31492, product#31493, productionAspect#31495, systemId#31490]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(1922) Project
Output [4]: [plant#31492.internalRefUUID AS _extract_internalRefUUID#34133, product#31493.internalRefUUID AS _extract_internalRefUUID#34134, productionAspect#31495.productMovementPlants.unitOfIssue.code AS _extract_code#34135, productionAspect#31495.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34136]
Input [4]: [plant#31492, product#31493, productionAspect#31495, systemId#31490]
(1923) Exchange
Input [4]: [_extract_internalRefUUID#34133, _extract_internalRefUUID#34134, _extract_code#34135, _extract_internalRefUUID#34136]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120481]
(1924) Project
Output [4]: [_extract_code#34135, _extract_internalRefUUID#34136, _extract_internalRefUUID#34134, _extract_internalRefUUID#34133]
Input [4]: [_extract_internalRefUUID#34133, _extract_internalRefUUID#34134, _extract_code#34135, _extract_internalRefUUID#34136]
(1925) BroadcastExchange
Input [4]: [_extract_code#34135, _extract_internalRefUUID#34136, _extract_internalRefUUID#34134, _extract_internalRefUUID#34133]
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=122544]
(1926) BroadcastHashJoin
Left keys [4]: [coalesce(product#31486, ), isnull(product#31486), coalesce(plant#31487, ), isnull(plant#31487)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34134, ), isnull(_extract_internalRefUUID#34134), coalesce(_extract_internalRefUUID#34133, ), isnull(_extract_internalRefUUID#34133)]
Join type: LeftOuter
Join condition: None
(1927) Project
Output [5]: [product#31486, plant#31487, orderDateTime#31488, _extract_code#34135, _extract_internalRefUUID#34136]
Input [7]: [product#31486, plant#31487, orderDateTime#31488, _extract_code#34135, _extract_internalRefUUID#34136, _extract_internalRefUUID#34134, _extract_internalRefUUID#34133]
(1928) Scan parquet
Output [2]: [internalUUID#31500, systemId#31499]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1929) Project
Output [1]: [internalUUID#31500]
Input [2]: [internalUUID#31500, systemId#31499]
(1930) Exchange
Input [1]: [internalUUID#31500]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120487]
(1931) BroadcastExchange
Input [1]: [internalUUID#31500]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122548]
(1932) BroadcastHashJoin
Left keys [2]: [coalesce(plant#31487, ), isnull(plant#31487)]
Right keys [2]: [coalesce(internalUUID#31500, ), isnull(internalUUID#31500)]
Join type: LeftOuter
Join condition: None
(1933) Project
Output [5]: [product#31486, plant#31487, orderDateTime#31488, _extract_code#34135, _extract_internalRefUUID#34136]
Input [6]: [product#31486, plant#31487, orderDateTime#31488, _extract_code#34135, _extract_internalRefUUID#34136, internalUUID#31500]
(1934) Scan parquet
Output [4]: [internalUUID#31514, baseUnitOfMeasure#31518, unitOfMeasureConversions#31520, systemId#31513]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1935) Filter
Input [4]: [internalUUID#31514, baseUnitOfMeasure#31518, unitOfMeasureConversions#31520, systemId#31513]
Condition : isnotnull(internalUUID#31514)
(1936) Project
Output [3]: [internalUUID#31514, baseUnitOfMeasure#31518, unitOfMeasureConversions#31520]
Input [4]: [internalUUID#31514, baseUnitOfMeasure#31518, unitOfMeasureConversions#31520, systemId#31513]
(1937) Exchange
Input [3]: [internalUUID#31514, baseUnitOfMeasure#31518, unitOfMeasureConversions#31520]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120493]
(1938) BroadcastExchange
Input [3]: [internalUUID#31514, baseUnitOfMeasure#31518, unitOfMeasureConversions#31520]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122552]
(1939) BroadcastHashJoin
Left keys [1]: [product#31486]
Right keys [1]: [internalUUID#31514]
Join type: LeftOuter
Join condition: None
(1940) Project
Output [4]: [product#31486, plant#31487, orderDateTime#31488, filter(unitOfMeasureConversions#31520, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34135) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34136)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31518.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31518.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31525]
Input [8]: [product#31486, plant#31487, orderDateTime#31488, _extract_code#34135, _extract_internalRefUUID#34136, internalUUID#31514, baseUnitOfMeasure#31518, unitOfMeasureConversions#31520]
(1941) Generate
Input [4]: [product#31486, plant#31487, orderDateTime#31488, filteredUnitOfMeasureConversions#31525]
Arguments: explode(filteredUnitOfMeasureConversions#31525.quantityNumerator), [product#31486, plant#31487, orderDateTime#31488, filteredUnitOfMeasureConversions#31525], true, [quantityNumerator#31526]
(1942) Project
Output [4]: [product#31486, plant#31487, orderDateTime#31488, filteredUnitOfMeasureConversions#31525.quantityDenominator AS _extract_quantityDenominator#33475]
Input [5]: [product#31486, plant#31487, orderDateTime#31488, filteredUnitOfMeasureConversions#31525, quantityNumerator#31526]
(1943) Generate
Input [4]: [product#31486, plant#31487, orderDateTime#31488, _extract_quantityDenominator#33475]
Arguments: explode(_extract_quantityDenominator#33475), [product#31486, plant#31487, orderDateTime#31488], true, [quantityDenominator#31527]
(1944) Project
Output [3]: [product#31486, plant#31487, orderDateTime#31488]
Input [4]: [product#31486, plant#31487, orderDateTime#31488, quantityDenominator#31527]
(1945) Sort
Input [3]: [product#31486, plant#31487, orderDateTime#31488]
Arguments: [product#31486 ASC NULLS FIRST, plant#31487 ASC NULLS FIRST], false, 0
(1946) SortMergeJoin
Left keys [2]: [productUuid#31480, plantUuid#31478]
Right keys [2]: [product#31486, plant#31487]
Join type: Inner
Join condition: (calculationDateTime#31474 <= orderDateTime#31488)
(1947) Project
Output [4]: [plantUuid#31478 AS plant#31530, productUuid#31480 AS product#31531, storageLocId#31481, calculationDateTime#31474]
Input [7]: [plantUuid#31478, productUuid#31480, calculationDateTime#31474, storageLocId#31481, product#31486, plant#31487, orderDateTime#31488]
(1948) HashAggregate
Input [4]: [plant#31530, product#31531, storageLocId#31481, calculationDateTime#31474]
Keys [3]: [plant#31530, product#31531, storageLocId#31481]
Functions [1]: [partial_max(calculationDateTime#31474)]
Aggregate Attributes [1]: [max#35173]
Results [4]: [plant#31530, product#31531, storageLocId#31481, max#35174]
(1949) HashAggregate
Input [4]: [plant#31530, product#31531, storageLocId#31481, max#35174]
Keys [3]: [plant#31530, product#31531, storageLocId#31481]
Functions [1]: [max(calculationDateTime#31474)]
Aggregate Attributes [1]: [max(calculationDateTime#31474)#26109]
Results [4]: [plant#31530, product#31531, storageLocId#31481, max(calculationDateTime#31474)#26109 AS max_calc_datetime#31532]
(1950) Exchange
Input [4]: [plant#31530, product#31531, storageLocId#31481, max_calc_datetime#31532]
Arguments: hashpartitioning(coalesce(plant#31530, ), isnull(plant#31530), coalesce(product#31531, ), isnull(product#31531), coalesce(storageLocId#31481, ), isnull(storageLocId#31481), coalesce(max_calc_datetime#31532, 1970-01-01 00:00:00), isnull(max_calc_datetime#31532), 10), ENSURE_REQUIREMENTS, [plan_id=122571]
(1951) Sort
Input [4]: [plant#31530, product#31531, storageLocId#31481, max_calc_datetime#31532]
Arguments: [coalesce(plant#31530, ) ASC NULLS FIRST, isnull(plant#31530) ASC NULLS FIRST, coalesce(product#31531, ) ASC NULLS FIRST, isnull(product#31531) ASC NULLS FIRST, coalesce(storageLocId#31481, ) ASC NULLS FIRST, isnull(storageLocId#31481) ASC NULLS FIRST, coalesce(max_calc_datetime#31532, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#31532) ASC NULLS FIRST], false, 0
(1952) SortMergeJoin
Left keys [8]: [coalesce(plant#31393, ), isnull(plant#31393), coalesce(product#31394, ), isnull(product#31394), coalesce(storageLocId#31344, ), isnull(storageLocId#31344), coalesce(calculationDateTime#31337, 1970-01-01 00:00:00), isnull(calculationDateTime#31337)]
Right keys [8]: [coalesce(plant#31530, ), isnull(plant#31530), coalesce(product#31531, ), isnull(product#31531), coalesce(storageLocId#31481, ), isnull(storageLocId#31481), coalesce(max_calc_datetime#31532, 1970-01-01 00:00:00), isnull(max_calc_datetime#31532)]
Join type: Inner
Join condition: None
(1953) Project
Output [4]: [plant#31393, product#31394, calculationDateTime#31337, quantity#31346]
Input [9]: [plant#31393, product#31394, storageLocId#31344, calculationDateTime#31337, quantity#31346, plant#31530, product#31531, storageLocId#31481, max_calc_datetime#31532]
(1954) HashAggregate
Input [4]: [plant#31393, product#31394, calculationDateTime#31337, quantity#31346]
Keys [2]: [product#31394, plant#31393]
Functions [2]: [partial_min(calculationDateTime#31337), partial_sum(quantity#31346)]
Aggregate Attributes [2]: [min#35163, sum#35164]
Results [4]: [product#31394, plant#31393, min#35165, sum#35166]
(1955) Exchange
Input [4]: [product#31394, plant#31393, min#35165, sum#35166]
Arguments: hashpartitioning(product#31394, plant#31393, 10), ENSURE_REQUIREMENTS, [plan_id=122578]
(1956) HashAggregate
Input [4]: [product#31394, plant#31393, min#35165, sum#35166]
Keys [2]: [product#31394, plant#31393]
Functions [2]: [min(calculationDateTime#31337), sum(quantity#31346)]
Aggregate Attributes [2]: [min(calculationDateTime#31337)#26265, sum(quantity#31346)#26264]
Results [4]: [product#31394, plant#31393, min(calculationDateTime#31337)#26265 AS minCalculationDateTime#31534, round(sum(quantity#31346)#26264, 0) AS roundedQuantitySum#31535]
(1957) Sort
Input [4]: [product#31394, plant#31393, minCalculationDateTime#31534, roundedQuantitySum#31535]
Arguments: [product#31394 ASC NULLS FIRST, plant#31393 ASC NULLS FIRST], false, 0
(1958) SortMergeJoin
Left keys [2]: [product#31214, plant#31215]
Right keys [2]: [product#31394, plant#31393]
Join type: LeftOuter
Join condition: None
(1959) Project
Output [8]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31257, CASE WHEN isnotnull(minCalculationDateTime#31534) THEN minCalculationDateTime#31534 ELSE orderDateTime#31216 END AS stockDatetime#31536, CASE WHEN isnotnull(roundedQuantitySum#31535) THEN array(roundedQuantitySum#31535) ELSE [0.0] END AS stockBatchQuantities#31537]
Input [10]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31257, product#31394, plant#31393, minCalculationDateTime#31534, roundedQuantitySum#31535]
(1960) Scan parquet
Output [9]: [product#31539, plant#31540, demandChannel#31541, demandStream#31542, considerVariance#31543, demandTimeBuckets#31544, demandPointInTimeStart#31545, demandPointInTimeEnd#31546, demandPointInTime#31547]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000005/0_1_10000000005]
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>>>
(1961) Filter
Input [9]: [product#31539, plant#31540, demandChannel#31541, demandStream#31542, considerVariance#31543, demandTimeBuckets#31544, demandPointInTimeStart#31545, demandPointInTimeEnd#31546, demandPointInTime#31547]
Condition : (isnotnull(product#31539) AND isnotnull(plant#31540))
(1962) BroadcastExchange
Input [9]: [product#31539, plant#31540, demandChannel#31541, demandStream#31542, considerVariance#31543, demandTimeBuckets#31544, demandPointInTimeStart#31545, demandPointInTimeEnd#31546, demandPointInTime#31547]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=122587]
(1963) BroadcastHashJoin
Left keys [2]: [product#31214, plant#31215]
Right keys [2]: [product#31539, plant#31540]
Join type: LeftOuter
Join condition: None
(1964) Project
Output [9]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31257, stockDatetime#31536, stockBatchQuantities#31537, CASE WHEN isnotnull(product#31539) THEN struct(demandChannel, demandChannel#31541, demandStream, demandStream#31542, considerVariance, considerVariance#31543, demandTimeBuckets, demandTimeBuckets#31544, demandPointInTimeStart, demandPointInTimeStart#31545, demandPointInTimeEnd, demandPointInTimeEnd#31546, demandPointInTime, demandPointInTime#31547) END AS rawDemands#31548]
Input [17]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31257, stockDatetime#31536, stockBatchQuantities#31537, product#31539, plant#31540, demandChannel#31541, demandStream#31542, considerVariance#31543, demandTimeBuckets#31544, demandPointInTimeStart#31545, demandPointInTimeEnd#31546, demandPointInTime#31547]
(1965) ObjectHashAggregate
Input [9]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31257, stockDatetime#31536, stockBatchQuantities#31537, rawDemands#31548]
Keys [9]: [product#31214, plant#31215, orderDateTime#31216, knownfloatingpointnormalized(if (isnull(productPlant#31226)) null else named_struct(systemId, productPlant#31226.systemId, internalUUID, productPlant#31226.internalUUID, plant, productPlant#31226.plant, product, productPlant#31226.product, blockedForReplenishmentStartingFrom, productPlant#31226.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#31226.productionAspect)) null else named_struct(productMovementPlants, productPlant#31226.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#31226.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#31226.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#31226.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#31226.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#31226.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#31226.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#31226.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#31226.salesPlant, listing, productPlant#31226.listing)) AS productPlant#31226, timezonecode#31240, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#31257)) AS outboundUnit#31257, stockDatetime#31536, knownfloatingpointnormalized(transform(stockBatchQuantities#31537, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#35160)), lambda arg#35160, false))) AS stockBatchQuantities#31537, [7226582400000000] AS [7226582400000000]#35159]
Functions [1]: [partial_collect_list(rawDemands#31548, 0, 0)]
Aggregate Attributes [1]: [buf#35161]
Results [10]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31257, stockDatetime#31536, stockBatchQuantities#31537, [7226582400000000]#35159, buf#35162]
(1966) ObjectHashAggregate
Input [10]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31257, stockDatetime#31536, stockBatchQuantities#31537, [7226582400000000]#35159, buf#35162]
Keys [9]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31257, stockDatetime#31536, stockBatchQuantities#31537, [7226582400000000]#35159]
Functions [1]: [collect_list(rawDemands#31548, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#31548, 0, 0)#26357]
Results [10]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31257, stockDatetime#31536, stockBatchQuantities#31537, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#31538, collect_list(rawDemands#31548, 0, 0)#26357 AS rawDemands#31549]
(1967) DeserializeToObject
Input [10]: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31257, stockDatetime#31536, stockBatchQuantities#31537, stockBatchShelfLifeEndDatetimes#31538, rawDemands#31549]
Arguments: createexternalrow(invoke(product#31214.toString()), invoke(plant#31215.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#31216)), if (isnull(productPlant#31226)) null else createexternalrow(invoke(productPlant#31226.systemId.toString()), invoke(productPlant#31226.internalUUID.toString()), if (isnull(productPlant#31226.plant)) null else createexternalrow(invoke(productPlant#31226.plant.internalRefUUID.toString()), invoke(productPlant#31226.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#31226.product)) null else createexternalrow(invoke(productPlant#31226.product.internalRefUUID.toString()), invoke(productPlant#31226.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#31226.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#31226.productionAspect)) null else createexternalrow(if (isnull(productPlant#31226.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#31226.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#31226.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#31226.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#31226.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#31226.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#31226.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#31226.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#31226.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#31226.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#31226.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#31226.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#31226.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#31226.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#31226.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#31226.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#31226.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#31226.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#31226.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#31226.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#31226.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(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(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#31226.salesPlant)) null else createexternalrow(if (isnull(productPlant#31226.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#31226.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#31226.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#31226.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(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#31240.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#31257)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#31536)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#31537, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#31538, 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#31549, 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(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#26378: org.apache.spark.sql.Row
(1968) MapElements
Input [1]: [obj#26378]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@5081ce9e, obj#26383: org.apache.spark.sql.Row
(1969) SerializeFromObject
Input [1]: [obj#26383]
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#31550, 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#31551, 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#31552, 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#31553]
(1970) Exchange
Input [4]: [product#31550, plant#31551, dayBucketDemands#31552, pointInTimeDemands#31553]
Arguments: hashpartitioning(coalesce(plant#31551, ), isnull(plant#31551), coalesce(product#31550, ), isnull(product#31550), 10), ENSURE_REQUIREMENTS, [plan_id=122598]
(1971) Sort
Input [4]: [product#31550, plant#31551, dayBucketDemands#31552, pointInTimeDemands#31553]
Arguments: [coalesce(plant#31551, ) ASC NULLS FIRST, isnull(plant#31551) ASC NULLS FIRST, coalesce(product#31550, ) ASC NULLS FIRST, isnull(product#31550) ASC NULLS FIRST], false, 0
(1972) SortMergeJoin
Left keys [4]: [coalesce(plant#30890, ), isnull(plant#30890), coalesce(product#30889, ), isnull(product#30889)]
Right keys [4]: [coalesce(plant#31551, ), isnull(plant#31551), coalesce(product#31550, ), isnull(product#31550)]
Join type: LeftOuter
Join condition: None
(1973) Project
Output [10]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, dayBucketDemands#31552, pointInTimeDemands#31553]
Input [12]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, product#31550, plant#31551, dayBucketDemands#31552, pointInTimeDemands#31553]
(1974) Exchange
Input [10]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, dayBucketDemands#31552, pointInTimeDemands#31553]
Arguments: hashpartitioning(product#30889, plant#30890, 10), ENSURE_REQUIREMENTS, [plan_id=122927]
(1975) Sort
Input [10]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, dayBucketDemands#31552, pointInTimeDemands#31553]
Arguments: [product#30889 ASC NULLS FIRST, plant#30890 ASC NULLS FIRST], false, 0
(1976) InMemoryTableScan
Output [3]: [product#32304, plant#32303, openGoodsMovements#32315]
Arguments: [product#32304, plant#32303, openGoodsMovements#32315], [isnotnull(product#32304), isnotnull(plant#32303)]
(1977) InMemoryRelation
Arguments: [product#32304, plant#32303, openGoodsMovements#32315], StorageLevel(disk, memory, 2 replicas)
(1978) Filter
Input [3]: [product#32304, plant#32303, openGoodsMovements#32315]
Condition : (isnotnull(product#32304) AND isnotnull(plant#32303))
(1979) Scan parquet
Output [3]: [product#32316, plant#32317, orderDateTime#32318]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1980) Filter
Input [3]: [product#32316, plant#32317, orderDateTime#32318]
Condition : isnotnull(plant#32317)
(1981) Exchange
Input [3]: [product#32316, plant#32317, orderDateTime#32318]
Arguments: hashpartitioning(product#32316, plant#32317, 10), REPARTITION_BY_NUM, [plan_id=121462]
(1982) Scan parquet
Output [4]: [plant#32322, product#32323, productionAspect#32325, systemId#32320]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(1983) Project
Output [4]: [plant#32322.internalRefUUID AS _extract_internalRefUUID#34137, product#32323.internalRefUUID AS _extract_internalRefUUID#34140, productionAspect#32325.productMovementPlants.unitOfIssue.code AS _extract_code#34138, productionAspect#32325.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34139]
Input [4]: [plant#32322, product#32323, productionAspect#32325, systemId#32320]
(1984) Exchange
Input [4]: [_extract_internalRefUUID#34137, _extract_internalRefUUID#34140, _extract_code#34138, _extract_internalRefUUID#34139]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120530]
(1985) Project
Output [4]: [_extract_code#34138, _extract_internalRefUUID#34139, _extract_internalRefUUID#34140, _extract_internalRefUUID#34137]
Input [4]: [_extract_internalRefUUID#34137, _extract_internalRefUUID#34140, _extract_code#34138, _extract_internalRefUUID#34139]
(1986) BroadcastExchange
Input [4]: [_extract_code#34138, _extract_internalRefUUID#34139, _extract_internalRefUUID#34140, _extract_internalRefUUID#34137]
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=122603]
(1987) BroadcastHashJoin
Left keys [4]: [coalesce(product#32316, ), isnull(product#32316), coalesce(plant#32317, ), isnull(plant#32317)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34140, ), isnull(_extract_internalRefUUID#34140), coalesce(_extract_internalRefUUID#34137, ), isnull(_extract_internalRefUUID#34137)]
Join type: LeftOuter
Join condition: None
(1988) Project
Output [5]: [product#32316, plant#32317, orderDateTime#32318, _extract_code#34138, _extract_internalRefUUID#34139]
Input [7]: [product#32316, plant#32317, orderDateTime#32318, _extract_code#34138, _extract_internalRefUUID#34139, _extract_internalRefUUID#34140, _extract_internalRefUUID#34137]
(1989) Scan parquet
Output [2]: [internalUUID#32330, systemId#32329]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1990) Project
Output [1]: [internalUUID#32330]
Input [2]: [internalUUID#32330, systemId#32329]
(1991) Exchange
Input [1]: [internalUUID#32330]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120536]
(1992) BroadcastExchange
Input [1]: [internalUUID#32330]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122607]
(1993) BroadcastHashJoin
Left keys [2]: [coalesce(plant#32317, ), isnull(plant#32317)]
Right keys [2]: [coalesce(internalUUID#32330, ), isnull(internalUUID#32330)]
Join type: LeftOuter
Join condition: None
(1994) Project
Output [5]: [product#32316, plant#32317, orderDateTime#32318, _extract_code#34138, _extract_internalRefUUID#34139]
Input [6]: [product#32316, plant#32317, orderDateTime#32318, _extract_code#34138, _extract_internalRefUUID#34139, internalUUID#32330]
(1995) Scan parquet
Output [4]: [internalUUID#32344, baseUnitOfMeasure#32348, unitOfMeasureConversions#32350, systemId#32343]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(1996) Filter
Input [4]: [internalUUID#32344, baseUnitOfMeasure#32348, unitOfMeasureConversions#32350, systemId#32343]
Condition : isnotnull(internalUUID#32344)
(1997) Project
Output [3]: [internalUUID#32344, baseUnitOfMeasure#32348, unitOfMeasureConversions#32350]
Input [4]: [internalUUID#32344, baseUnitOfMeasure#32348, unitOfMeasureConversions#32350, systemId#32343]
(1998) Exchange
Input [3]: [internalUUID#32344, baseUnitOfMeasure#32348, unitOfMeasureConversions#32350]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120542]
(1999) BroadcastExchange
Input [3]: [internalUUID#32344, baseUnitOfMeasure#32348, unitOfMeasureConversions#32350]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122611]
(2000) BroadcastHashJoin
Left keys [1]: [product#32316]
Right keys [1]: [internalUUID#32344]
Join type: LeftOuter
Join condition: None
(2001) Project
Output [4]: [product#32316, plant#32317, orderDateTime#32318, filter(unitOfMeasureConversions#32350, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34138) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34139)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32348.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32348.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32355]
Input [8]: [product#32316, plant#32317, orderDateTime#32318, _extract_code#34138, _extract_internalRefUUID#34139, internalUUID#32344, baseUnitOfMeasure#32348, unitOfMeasureConversions#32350]
(2002) Generate
Input [4]: [product#32316, plant#32317, orderDateTime#32318, filteredUnitOfMeasureConversions#32355]
Arguments: explode(filteredUnitOfMeasureConversions#32355.quantityNumerator), [product#32316, plant#32317, orderDateTime#32318, filteredUnitOfMeasureConversions#32355], true, [quantityNumerator#32356]
(2003) Project
Output [4]: [product#32316, plant#32317, orderDateTime#32318, filteredUnitOfMeasureConversions#32355.quantityDenominator AS _extract_quantityDenominator#33479]
Input [5]: [product#32316, plant#32317, orderDateTime#32318, filteredUnitOfMeasureConversions#32355, quantityNumerator#32356]
(2004) Generate
Input [4]: [product#32316, plant#32317, orderDateTime#32318, _extract_quantityDenominator#33479]
Arguments: explode(_extract_quantityDenominator#33479), [product#32316, plant#32317, orderDateTime#32318], true, [quantityDenominator#32357]
(2005) Project
Output [3]: [product#32316, plant#32317, orderDateTime#32318]
Input [4]: [product#32316, plant#32317, orderDateTime#32318, quantityDenominator#32357]
(2006) Sort
Input [3]: [product#32316, plant#32317, orderDateTime#32318]
Arguments: [product#32316 ASC NULLS FIRST, plant#32317 ASC NULLS FIRST], false, 0
(2007) Scan parquet
Output [6]: [internalUUID#32361, product#32362, plant#32363, calculationDateTime#32364, stockQuantities#32365, systemId#32360]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(2008) Filter
Input [6]: [internalUUID#32361, product#32362, plant#32363, calculationDateTime#32364, stockQuantities#32365, systemId#32360]
Condition : (isnotnull(plant#32363.internalRefUUID) AND isnotnull(product#32362.internalRefUUID))
(2009) Project
Output [6]: [systemId#32360, internalUUID#32361, product#32362, plant#32363, calculationDateTime#32364, stockQuantities#32365]
Input [6]: [internalUUID#32361, product#32362, plant#32363, calculationDateTime#32364, stockQuantities#32365, systemId#32360]
(2010) Exchange
Input [6]: [systemId#32360, internalUUID#32361, product#32362, plant#32363, calculationDateTime#32364, stockQuantities#32365]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120552]
(2011) BroadcastExchange
Input [6]: [systemId#32360, internalUUID#32361, product#32362, plant#32363, calculationDateTime#32364, stockQuantities#32365]
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=122642]
(2012) Scan parquet
Output [2]: [marketUnit#32366, distributionCenters#32372]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(2013) Filter
Input [2]: [marketUnit#32366, distributionCenters#32372]
Condition : (((marketUnit#32366 <=> DIP_1691) AND (size(distributionCenters#32372, true) > 0)) AND isnotnull(distributionCenters#32372))
(2014) Project
Output [1]: [distributionCenters#32372]
Input [2]: [marketUnit#32366, distributionCenters#32372]
(2015) Exchange
Input [1]: [distributionCenters#32372]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120556]
(2016) Generate
Input [1]: [distributionCenters#32372]
Arguments: explode(distributionCenters#32372), false, [distributionCenters#32388]
(2017) Filter
Input [1]: [distributionCenters#32388]
Condition : (((size(distributionCenters#32388.storageLocations, true) > 0) AND isnotnull(distributionCenters#32388.storageLocations)) AND isnotnull(distributionCenters#32388.internalRefUUID))
(2018) Project
Output [2]: [distributionCenters#32388.internalRefUUID AS _extract_internalRefUUID#33483, distributionCenters#32388.storageLocations AS _extract_storageLocations#33484]
Input [1]: [distributionCenters#32388]
(2019) Generate
Input [2]: [_extract_internalRefUUID#33483, _extract_storageLocations#33484]
Arguments: explode(_extract_storageLocations#33484), [_extract_internalRefUUID#33483], false, [storageLocations#32389]
(2020) Project
Output [3]: [_extract_internalRefUUID#33483 AS plantUuid#32391, storageLocations#32389.id AS storageLocId#32392, storageLocations#32389.internalRefUUID AS storageLocUuid#32393]
Input [2]: [_extract_internalRefUUID#33483, storageLocations#32389]
(2021) BroadcastExchange
Input [3]: [plantUuid#32391, storageLocId#32392, storageLocUuid#32393]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122638]
(2022) Scan parquet
Output [2]: [product#32394, plant#32395]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(2023) Filter
Input [2]: [product#32394, plant#32395]
Condition : isnotnull(plant#32395)
(2024) Exchange
Input [2]: [product#32394, plant#32395]
Arguments: hashpartitioning(product#32394, plant#32395, 10), REPARTITION_BY_NUM, [plan_id=121473]
(2025) Scan parquet
Output [4]: [plant#32400, product#32401, productionAspect#32403, systemId#32398]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(2026) Project
Output [4]: [plant#32400.internalRefUUID AS _extract_internalRefUUID#34143, product#32401.internalRefUUID AS _extract_internalRefUUID#34144, productionAspect#32403.productMovementPlants.unitOfIssue.code AS _extract_code#34141, productionAspect#32403.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34142]
Input [4]: [plant#32400, product#32401, productionAspect#32403, systemId#32398]
(2027) Exchange
Input [4]: [_extract_internalRefUUID#34143, _extract_internalRefUUID#34144, _extract_code#34141, _extract_internalRefUUID#34142]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120568]
(2028) Project
Output [4]: [_extract_code#34141, _extract_internalRefUUID#34142, _extract_internalRefUUID#34144, _extract_internalRefUUID#34143]
Input [4]: [_extract_internalRefUUID#34143, _extract_internalRefUUID#34144, _extract_code#34141, _extract_internalRefUUID#34142]
(2029) BroadcastExchange
Input [4]: [_extract_code#34141, _extract_internalRefUUID#34142, _extract_internalRefUUID#34144, _extract_internalRefUUID#34143]
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=122618]
(2030) BroadcastHashJoin
Left keys [4]: [coalesce(product#32394, ), isnull(product#32394), coalesce(plant#32395, ), isnull(plant#32395)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34144, ), isnull(_extract_internalRefUUID#34144), coalesce(_extract_internalRefUUID#34143, ), isnull(_extract_internalRefUUID#34143)]
Join type: LeftOuter
Join condition: None
(2031) Project
Output [4]: [product#32394, plant#32395, _extract_code#34141, _extract_internalRefUUID#34142]
Input [6]: [product#32394, plant#32395, _extract_code#34141, _extract_internalRefUUID#34142, _extract_internalRefUUID#34144, _extract_internalRefUUID#34143]
(2032) Scan parquet
Output [2]: [internalUUID#32408, systemId#32407]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(2033) Project
Output [1]: [internalUUID#32408]
Input [2]: [internalUUID#32408, systemId#32407]
(2034) Exchange
Input [1]: [internalUUID#32408]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120574]
(2035) BroadcastExchange
Input [1]: [internalUUID#32408]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122622]
(2036) BroadcastHashJoin
Left keys [2]: [coalesce(plant#32395, ), isnull(plant#32395)]
Right keys [2]: [coalesce(internalUUID#32408, ), isnull(internalUUID#32408)]
Join type: LeftOuter
Join condition: None
(2037) Project
Output [4]: [product#32394, plant#32395, _extract_code#34141, _extract_internalRefUUID#34142]
Input [5]: [product#32394, plant#32395, _extract_code#34141, _extract_internalRefUUID#34142, internalUUID#32408]
(2038) Scan parquet
Output [4]: [internalUUID#32422, baseUnitOfMeasure#32426, unitOfMeasureConversions#32428, systemId#32421]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(2039) Filter
Input [4]: [internalUUID#32422, baseUnitOfMeasure#32426, unitOfMeasureConversions#32428, systemId#32421]
Condition : isnotnull(internalUUID#32422)
(2040) Project
Output [3]: [internalUUID#32422, baseUnitOfMeasure#32426, unitOfMeasureConversions#32428]
Input [4]: [internalUUID#32422, baseUnitOfMeasure#32426, unitOfMeasureConversions#32428, systemId#32421]
(2041) Exchange
Input [3]: [internalUUID#32422, baseUnitOfMeasure#32426, unitOfMeasureConversions#32428]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120580]
(2042) BroadcastExchange
Input [3]: [internalUUID#32422, baseUnitOfMeasure#32426, unitOfMeasureConversions#32428]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122626]
(2043) BroadcastHashJoin
Left keys [1]: [product#32394]
Right keys [1]: [internalUUID#32422]
Join type: LeftOuter
Join condition: None
(2044) Project
Output [2]: [plant#32395, filter(unitOfMeasureConversions#32428, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34141) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34142)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32426.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32426.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32433]
Input [7]: [product#32394, plant#32395, _extract_code#34141, _extract_internalRefUUID#34142, internalUUID#32422, baseUnitOfMeasure#32426, unitOfMeasureConversions#32428]
(2045) Generate
Input [2]: [plant#32395, filteredUnitOfMeasureConversions#32433]
Arguments: explode(filteredUnitOfMeasureConversions#32433.quantityNumerator), [plant#32395, filteredUnitOfMeasureConversions#32433], true, [quantityNumerator#32434]
(2046) Project
Output [2]: [plant#32395, filteredUnitOfMeasureConversions#32433.quantityDenominator AS _extract_quantityDenominator#33485]
Input [3]: [plant#32395, filteredUnitOfMeasureConversions#32433, quantityNumerator#32434]
(2047) Generate
Input [2]: [plant#32395, _extract_quantityDenominator#33485]
Arguments: explode(_extract_quantityDenominator#33485), [plant#32395], true, [quantityDenominator#32435]
(2048) Project
Output [1]: [plant#32395]
Input [2]: [plant#32395, quantityDenominator#32435]
(2049) HashAggregate
Input [1]: [plant#32395]
Keys [1]: [plant#32395]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#32395]
(2050) Exchange
Input [1]: [plant#32395]
Arguments: hashpartitioning(plant#32395, 10), ENSURE_REQUIREMENTS, [plan_id=122635]
(2051) HashAggregate
Input [1]: [plant#32395]
Keys [1]: [plant#32395]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#32395]
(2052) BroadcastHashJoin
Left keys [1]: [plantUuid#32391]
Right keys [1]: [plant#32395]
Join type: Inner
Join condition: None
(2053) Project
Output [3]: [plantUuid#32391, storageLocId#32392, storageLocUuid#32393]
Input [4]: [plantUuid#32391, storageLocId#32392, storageLocUuid#32393, plant#32395]
(2054) BroadcastHashJoin
Left keys [2]: [coalesce(plant#32363.internalRefUUID, ), isnull(plant#32363.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#32391, ), isnull(plantUuid#32391)]
Join type: Inner
Join condition: None
(2055) Generate
Input [9]: [systemId#32360, internalUUID#32361, product#32362, plant#32363, calculationDateTime#32364, stockQuantities#32365, plantUuid#32391, storageLocId#32392, storageLocUuid#32393]
Arguments: explode(filter(stockQuantities#32365, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#32393) AND (lambda x#26016.storageLocation.Id = storageLocId#32392)), lambda x#26016, false))), [systemId#32360, internalUUID#32361, product#32362, plant#32363, calculationDateTime#32364, plantUuid#32391], false, [stockQuantity#32438]
(2056) ObjectHashAggregate
Input [7]: [systemId#32360, internalUUID#32361, product#32362, plant#32363, calculationDateTime#32364, plantUuid#32391, stockQuantity#32438]
Keys [5]: [plantUuid#32391, internalUUID#32361, plant#32363, product#32362, systemId#32360]
Functions [2]: [partial_first(calculationDateTime#32364, false), partial_collect_list(stockQuantity#32438, 0, 0)]
Aggregate Attributes [3]: [first#35187, valueSet#35188, buf#35189]
Results [8]: [plantUuid#32391, internalUUID#32361, plant#32363, product#32362, systemId#32360, first#35190, valueSet#35191, buf#35192]
(2057) ObjectHashAggregate
Input [8]: [plantUuid#32391, internalUUID#32361, plant#32363, product#32362, systemId#32360, first#35190, valueSet#35191, buf#35192]
Keys [5]: [plantUuid#32391, internalUUID#32361, plant#32363, product#32362, systemId#32360]
Functions [2]: [first(calculationDateTime#32364, false), collect_list(stockQuantity#32438, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#32364)()#26031, collect_list(stockQuantity#32438, 0, 0)#26032]
Results [4]: [product#32362, plant#32363, first(calculationDateTime#32364)()#26031 AS calculationDateTime#32439, collect_list(stockQuantity#32438, 0, 0)#26032 AS stockQuantities#32440]
(2058) Filter
Input [4]: [product#32362, plant#32363, calculationDateTime#32439, stockQuantities#32440]
Condition : ((size(stockQuantities#32440, true) > 0) AND isnotnull(calculationDateTime#32439))
(2059) Generate
Input [4]: [product#32362, plant#32363, calculationDateTime#32439, stockQuantities#32440]
Arguments: explode(stockQuantities#32440), [product#32362, plant#32363, calculationDateTime#32439], false, [stockQuantity#32441]
(2060) Filter
Input [4]: [product#32362, plant#32363, calculationDateTime#32439, stockQuantity#32441]
Condition : (((isnotnull(stockQuantity#32441.specialStockIndicator.code) AND isnotnull(stockQuantity#32441.stockType.code)) AND (stockQuantity#32441.specialStockIndicator.code = )) AND (stockQuantity#32441.stockType.code = 01))
(2061) Project
Output [4]: [plant#32363.internalRefUUID AS plantUuid#32443, product#32362.internalRefUUID AS productUuid#32445, calculationDateTime#32439, stockQuantity#32441.storagelocation.id AS storageLocId#32446]
Input [4]: [product#32362, plant#32363, calculationDateTime#32439, stockQuantity#32441]
(2062) Exchange
Input [4]: [plantUuid#32443, productUuid#32445, calculationDateTime#32439, storageLocId#32446]
Arguments: hashpartitioning(productUuid#32445, plantUuid#32443, 10), ENSURE_REQUIREMENTS, [plan_id=122668]
(2063) Sort
Input [4]: [plantUuid#32443, productUuid#32445, calculationDateTime#32439, storageLocId#32446]
Arguments: [productUuid#32445 ASC NULLS FIRST, plantUuid#32443 ASC NULLS FIRST], false, 0
(2064) Scan parquet
Output [3]: [product#32451, plant#32452, orderDateTime#32453]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2065) Filter
Input [3]: [product#32451, plant#32452, orderDateTime#32453]
Condition : ((isnotnull(orderDateTime#32453) AND isnotnull(plant#32452)) AND isnotnull(product#32451))
(2066) Exchange
Input [3]: [product#32451, plant#32452, orderDateTime#32453]
Arguments: hashpartitioning(product#32451, plant#32452, 10), REPARTITION_BY_NUM, [plan_id=121496]
(2067) Scan parquet
Output [4]: [plant#32457, product#32458, productionAspect#32460, systemId#32455]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(2068) Project
Output [4]: [plant#32457.internalRefUUID AS _extract_internalRefUUID#34147, product#32458.internalRefUUID AS _extract_internalRefUUID#34148, productionAspect#32460.productMovementPlants.unitOfIssue.code AS _extract_code#34145, productionAspect#32460.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34146]
Input [4]: [plant#32457, product#32458, productionAspect#32460, systemId#32455]
(2069) Exchange
Input [4]: [_extract_internalRefUUID#34147, _extract_internalRefUUID#34148, _extract_code#34145, _extract_internalRefUUID#34146]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120605]
(2070) Project
Output [4]: [_extract_code#34145, _extract_internalRefUUID#34146, _extract_internalRefUUID#34148, _extract_internalRefUUID#34147]
Input [4]: [_extract_internalRefUUID#34147, _extract_internalRefUUID#34148, _extract_code#34145, _extract_internalRefUUID#34146]
(2071) BroadcastExchange
Input [4]: [_extract_code#34145, _extract_internalRefUUID#34146, _extract_internalRefUUID#34148, _extract_internalRefUUID#34147]
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=122651]
(2072) BroadcastHashJoin
Left keys [4]: [coalesce(product#32451, ), isnull(product#32451), coalesce(plant#32452, ), isnull(plant#32452)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34148, ), isnull(_extract_internalRefUUID#34148), coalesce(_extract_internalRefUUID#34147, ), isnull(_extract_internalRefUUID#34147)]
Join type: LeftOuter
Join condition: None
(2073) Project
Output [5]: [product#32451, plant#32452, orderDateTime#32453, _extract_code#34145, _extract_internalRefUUID#34146]
Input [7]: [product#32451, plant#32452, orderDateTime#32453, _extract_code#34145, _extract_internalRefUUID#34146, _extract_internalRefUUID#34148, _extract_internalRefUUID#34147]
(2074) Scan parquet
Output [2]: [internalUUID#32465, systemId#32464]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(2075) Project
Output [1]: [internalUUID#32465]
Input [2]: [internalUUID#32465, systemId#32464]
(2076) Exchange
Input [1]: [internalUUID#32465]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120611]
(2077) BroadcastExchange
Input [1]: [internalUUID#32465]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122655]
(2078) BroadcastHashJoin
Left keys [2]: [coalesce(plant#32452, ), isnull(plant#32452)]
Right keys [2]: [coalesce(internalUUID#32465, ), isnull(internalUUID#32465)]
Join type: LeftOuter
Join condition: None
(2079) Project
Output [5]: [product#32451, plant#32452, orderDateTime#32453, _extract_code#34145, _extract_internalRefUUID#34146]
Input [6]: [product#32451, plant#32452, orderDateTime#32453, _extract_code#34145, _extract_internalRefUUID#34146, internalUUID#32465]
(2080) Scan parquet
Output [4]: [internalUUID#32479, baseUnitOfMeasure#32483, unitOfMeasureConversions#32485, systemId#32478]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(2081) Filter
Input [4]: [internalUUID#32479, baseUnitOfMeasure#32483, unitOfMeasureConversions#32485, systemId#32478]
Condition : isnotnull(internalUUID#32479)
(2082) Project
Output [3]: [internalUUID#32479, baseUnitOfMeasure#32483, unitOfMeasureConversions#32485]
Input [4]: [internalUUID#32479, baseUnitOfMeasure#32483, unitOfMeasureConversions#32485, systemId#32478]
(2083) Exchange
Input [3]: [internalUUID#32479, baseUnitOfMeasure#32483, unitOfMeasureConversions#32485]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120617]
(2084) BroadcastExchange
Input [3]: [internalUUID#32479, baseUnitOfMeasure#32483, unitOfMeasureConversions#32485]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122659]
(2085) BroadcastHashJoin
Left keys [1]: [product#32451]
Right keys [1]: [internalUUID#32479]
Join type: LeftOuter
Join condition: None
(2086) Project
Output [4]: [product#32451, plant#32452, orderDateTime#32453, filter(unitOfMeasureConversions#32485, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34145) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34146)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32483.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32483.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32490]
Input [8]: [product#32451, plant#32452, orderDateTime#32453, _extract_code#34145, _extract_internalRefUUID#34146, internalUUID#32479, baseUnitOfMeasure#32483, unitOfMeasureConversions#32485]
(2087) Generate
Input [4]: [product#32451, plant#32452, orderDateTime#32453, filteredUnitOfMeasureConversions#32490]
Arguments: explode(filteredUnitOfMeasureConversions#32490.quantityNumerator), [product#32451, plant#32452, orderDateTime#32453, filteredUnitOfMeasureConversions#32490], true, [quantityNumerator#32491]
(2088) Project
Output [4]: [product#32451, plant#32452, orderDateTime#32453, filteredUnitOfMeasureConversions#32490.quantityDenominator AS _extract_quantityDenominator#33489]
Input [5]: [product#32451, plant#32452, orderDateTime#32453, filteredUnitOfMeasureConversions#32490, quantityNumerator#32491]
(2089) Generate
Input [4]: [product#32451, plant#32452, orderDateTime#32453, _extract_quantityDenominator#33489]
Arguments: explode(_extract_quantityDenominator#33489), [product#32451, plant#32452, orderDateTime#32453], true, [quantityDenominator#32492]
(2090) Project
Output [3]: [product#32451, plant#32452, orderDateTime#32453]
Input [4]: [product#32451, plant#32452, orderDateTime#32453, quantityDenominator#32492]
(2091) Sort
Input [3]: [product#32451, plant#32452, orderDateTime#32453]
Arguments: [product#32451 ASC NULLS FIRST, plant#32452 ASC NULLS FIRST], false, 0
(2092) SortMergeJoin
Left keys [2]: [productUuid#32445, plantUuid#32443]
Right keys [2]: [product#32451, plant#32452]
Join type: Inner
Join condition: (calculationDateTime#32439 <= orderDateTime#32453)
(2093) Project
Output [4]: [plantUuid#32443 AS plant#32495, productUuid#32445 AS product#32496, storageLocId#32446, calculationDateTime#32439]
Input [7]: [plantUuid#32443, productUuid#32445, calculationDateTime#32439, storageLocId#32446, product#32451, plant#32452, orderDateTime#32453]
(2094) Exchange
Input [4]: [plant#32495, product#32496, storageLocId#32446, calculationDateTime#32439]
Arguments: hashpartitioning(coalesce(plant#32495, ), isnull(plant#32495), coalesce(product#32496, ), isnull(product#32496), coalesce(storageLocId#32446, ), isnull(storageLocId#32446), coalesce(calculationDateTime#32439, 1970-01-01 00:00:00), isnull(calculationDateTime#32439), 10), ENSURE_REQUIREMENTS, [plan_id=122732]
(2095) Sort
Input [4]: [plant#32495, product#32496, storageLocId#32446, calculationDateTime#32439]
Arguments: [coalesce(plant#32495, ) ASC NULLS FIRST, isnull(plant#32495) ASC NULLS FIRST, coalesce(product#32496, ) ASC NULLS FIRST, isnull(product#32496) ASC NULLS FIRST, coalesce(storageLocId#32446, ) ASC NULLS FIRST, isnull(storageLocId#32446) ASC NULLS FIRST, coalesce(calculationDateTime#32439, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#32439) ASC NULLS FIRST], false, 0
(2096) Scan parquet
Output [6]: [internalUUID#32498, product#32499, plant#32500, calculationDateTime#32501, stockQuantities#32502, systemId#32497]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(2097) Filter
Input [6]: [internalUUID#32498, product#32499, plant#32500, calculationDateTime#32501, stockQuantities#32502, systemId#32497]
Condition : (isnotnull(plant#32500.internalRefUUID) AND isnotnull(product#32499.internalRefUUID))
(2098) Project
Output [6]: [systemId#32497, internalUUID#32498, product#32499, plant#32500, calculationDateTime#32501, stockQuantities#32502]
Input [6]: [internalUUID#32498, product#32499, plant#32500, calculationDateTime#32501, stockQuantities#32502, systemId#32497]
(2099) Exchange
Input [6]: [systemId#32497, internalUUID#32498, product#32499, plant#32500, calculationDateTime#32501, stockQuantities#32502]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120629]
(2100) BroadcastExchange
Input [6]: [systemId#32497, internalUUID#32498, product#32499, plant#32500, calculationDateTime#32501, stockQuantities#32502]
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=122697]
(2101) Scan parquet
Output [2]: [marketUnit#32503, distributionCenters#32509]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(2102) Filter
Input [2]: [marketUnit#32503, distributionCenters#32509]
Condition : (((marketUnit#32503 <=> DIP_1691) AND (size(distributionCenters#32509, true) > 0)) AND isnotnull(distributionCenters#32509))
(2103) Project
Output [1]: [distributionCenters#32509]
Input [2]: [marketUnit#32503, distributionCenters#32509]
(2104) Exchange
Input [1]: [distributionCenters#32509]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120633]
(2105) Generate
Input [1]: [distributionCenters#32509]
Arguments: explode(distributionCenters#32509), false, [distributionCenters#32525]
(2106) Filter
Input [1]: [distributionCenters#32525]
Condition : (((size(distributionCenters#32525.storageLocations, true) > 0) AND isnotnull(distributionCenters#32525.storageLocations)) AND isnotnull(distributionCenters#32525.internalRefUUID))
(2107) Project
Output [2]: [distributionCenters#32525.internalRefUUID AS _extract_internalRefUUID#33493, distributionCenters#32525.storageLocations AS _extract_storageLocations#33494]
Input [1]: [distributionCenters#32525]
(2108) Generate
Input [2]: [_extract_internalRefUUID#33493, _extract_storageLocations#33494]
Arguments: explode(_extract_storageLocations#33494), [_extract_internalRefUUID#33493], false, [storageLocations#32526]
(2109) Project
Output [3]: [_extract_internalRefUUID#33493 AS plantUuid#32528, storageLocations#32526.id AS storageLocId#32529, storageLocations#32526.internalRefUUID AS storageLocUuid#32530]
Input [2]: [_extract_internalRefUUID#33493, storageLocations#32526]
(2110) BroadcastExchange
Input [3]: [plantUuid#32528, storageLocId#32529, storageLocUuid#32530]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122693]
(2111) Scan parquet
Output [2]: [product#32531, plant#32532]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(2112) Filter
Input [2]: [product#32531, plant#32532]
Condition : isnotnull(plant#32532)
(2113) Exchange
Input [2]: [product#32531, plant#32532]
Arguments: hashpartitioning(product#32531, plant#32532, 10), REPARTITION_BY_NUM, [plan_id=121509]
(2114) Scan parquet
Output [4]: [plant#32537, product#32538, productionAspect#32540, systemId#32535]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(2115) Project
Output [4]: [plant#32537.internalRefUUID AS _extract_internalRefUUID#34152, product#32538.internalRefUUID AS _extract_internalRefUUID#34151, productionAspect#32540.productMovementPlants.unitOfIssue.code AS _extract_code#34149, productionAspect#32540.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34150]
Input [4]: [plant#32537, product#32538, productionAspect#32540, systemId#32535]
(2116) Exchange
Input [4]: [_extract_internalRefUUID#34152, _extract_internalRefUUID#34151, _extract_code#34149, _extract_internalRefUUID#34150]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120645]
(2117) Project
Output [4]: [_extract_code#34149, _extract_internalRefUUID#34150, _extract_internalRefUUID#34151, _extract_internalRefUUID#34152]
Input [4]: [_extract_internalRefUUID#34152, _extract_internalRefUUID#34151, _extract_code#34149, _extract_internalRefUUID#34150]
(2118) BroadcastExchange
Input [4]: [_extract_code#34149, _extract_internalRefUUID#34150, _extract_internalRefUUID#34151, _extract_internalRefUUID#34152]
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=122673]
(2119) BroadcastHashJoin
Left keys [4]: [coalesce(product#32531, ), isnull(product#32531), coalesce(plant#32532, ), isnull(plant#32532)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34151, ), isnull(_extract_internalRefUUID#34151), coalesce(_extract_internalRefUUID#34152, ), isnull(_extract_internalRefUUID#34152)]
Join type: LeftOuter
Join condition: None
(2120) Project
Output [4]: [product#32531, plant#32532, _extract_code#34149, _extract_internalRefUUID#34150]
Input [6]: [product#32531, plant#32532, _extract_code#34149, _extract_internalRefUUID#34150, _extract_internalRefUUID#34151, _extract_internalRefUUID#34152]
(2121) Scan parquet
Output [2]: [internalUUID#32545, systemId#32544]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(2122) Project
Output [1]: [internalUUID#32545]
Input [2]: [internalUUID#32545, systemId#32544]
(2123) Exchange
Input [1]: [internalUUID#32545]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120651]
(2124) BroadcastExchange
Input [1]: [internalUUID#32545]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122677]
(2125) BroadcastHashJoin
Left keys [2]: [coalesce(plant#32532, ), isnull(plant#32532)]
Right keys [2]: [coalesce(internalUUID#32545, ), isnull(internalUUID#32545)]
Join type: LeftOuter
Join condition: None
(2126) Project
Output [4]: [product#32531, plant#32532, _extract_code#34149, _extract_internalRefUUID#34150]
Input [5]: [product#32531, plant#32532, _extract_code#34149, _extract_internalRefUUID#34150, internalUUID#32545]
(2127) Scan parquet
Output [4]: [internalUUID#32559, baseUnitOfMeasure#32563, unitOfMeasureConversions#32565, systemId#32558]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(2128) Filter
Input [4]: [internalUUID#32559, baseUnitOfMeasure#32563, unitOfMeasureConversions#32565, systemId#32558]
Condition : isnotnull(internalUUID#32559)
(2129) Project
Output [3]: [internalUUID#32559, baseUnitOfMeasure#32563, unitOfMeasureConversions#32565]
Input [4]: [internalUUID#32559, baseUnitOfMeasure#32563, unitOfMeasureConversions#32565, systemId#32558]
(2130) Exchange
Input [3]: [internalUUID#32559, baseUnitOfMeasure#32563, unitOfMeasureConversions#32565]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120657]
(2131) BroadcastExchange
Input [3]: [internalUUID#32559, baseUnitOfMeasure#32563, unitOfMeasureConversions#32565]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122681]
(2132) BroadcastHashJoin
Left keys [1]: [product#32531]
Right keys [1]: [internalUUID#32559]
Join type: LeftOuter
Join condition: None
(2133) Project
Output [2]: [plant#32532, filter(unitOfMeasureConversions#32565, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34149) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34150)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32563.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32563.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32570]
Input [7]: [product#32531, plant#32532, _extract_code#34149, _extract_internalRefUUID#34150, internalUUID#32559, baseUnitOfMeasure#32563, unitOfMeasureConversions#32565]
(2134) Generate
Input [2]: [plant#32532, filteredUnitOfMeasureConversions#32570]
Arguments: explode(filteredUnitOfMeasureConversions#32570.quantityNumerator), [plant#32532, filteredUnitOfMeasureConversions#32570], true, [quantityNumerator#32571]
(2135) Project
Output [2]: [plant#32532, filteredUnitOfMeasureConversions#32570.quantityDenominator AS _extract_quantityDenominator#33495]
Input [3]: [plant#32532, filteredUnitOfMeasureConversions#32570, quantityNumerator#32571]
(2136) Generate
Input [2]: [plant#32532, _extract_quantityDenominator#33495]
Arguments: explode(_extract_quantityDenominator#33495), [plant#32532], true, [quantityDenominator#32572]
(2137) Project
Output [1]: [plant#32532]
Input [2]: [plant#32532, quantityDenominator#32572]
(2138) HashAggregate
Input [1]: [plant#32532]
Keys [1]: [plant#32532]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#32532]
(2139) Exchange
Input [1]: [plant#32532]
Arguments: hashpartitioning(plant#32532, 10), ENSURE_REQUIREMENTS, [plan_id=122690]
(2140) HashAggregate
Input [1]: [plant#32532]
Keys [1]: [plant#32532]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#32532]
(2141) BroadcastHashJoin
Left keys [1]: [plantUuid#32528]
Right keys [1]: [plant#32532]
Join type: Inner
Join condition: None
(2142) Project
Output [3]: [plantUuid#32528, storageLocId#32529, storageLocUuid#32530]
Input [4]: [plantUuid#32528, storageLocId#32529, storageLocUuid#32530, plant#32532]
(2143) BroadcastHashJoin
Left keys [2]: [coalesce(plant#32500.internalRefUUID, ), isnull(plant#32500.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#32528, ), isnull(plantUuid#32528)]
Join type: Inner
Join condition: None
(2144) Generate
Input [9]: [systemId#32497, internalUUID#32498, product#32499, plant#32500, calculationDateTime#32501, stockQuantities#32502, plantUuid#32528, storageLocId#32529, storageLocUuid#32530]
Arguments: explode(filter(stockQuantities#32502, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#32530) AND (lambda x#26016.storageLocation.Id = storageLocId#32529)), lambda x#26016, false))), [systemId#32497, internalUUID#32498, product#32499, plant#32500, calculationDateTime#32501, plantUuid#32528], false, [stockQuantity#32575]
(2145) ObjectHashAggregate
Input [7]: [systemId#32497, internalUUID#32498, product#32499, plant#32500, calculationDateTime#32501, plantUuid#32528, stockQuantity#32575]
Keys [5]: [plantUuid#32528, internalUUID#32498, plant#32500, product#32499, systemId#32497]
Functions [2]: [partial_first(calculationDateTime#32501, false), partial_collect_list(stockQuantity#32575, 0, 0)]
Aggregate Attributes [3]: [first#35195, valueSet#35196, buf#35197]
Results [8]: [plantUuid#32528, internalUUID#32498, plant#32500, product#32499, systemId#32497, first#35198, valueSet#35199, buf#35200]
(2146) ObjectHashAggregate
Input [8]: [plantUuid#32528, internalUUID#32498, plant#32500, product#32499, systemId#32497, first#35198, valueSet#35199, buf#35200]
Keys [5]: [plantUuid#32528, internalUUID#32498, plant#32500, product#32499, systemId#32497]
Functions [2]: [first(calculationDateTime#32501, false), collect_list(stockQuantity#32575, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#32501)()#26031, collect_list(stockQuantity#32575, 0, 0)#26032]
Results [4]: [product#32499, plant#32500, first(calculationDateTime#32501)()#26031 AS calculationDateTime#32576, collect_list(stockQuantity#32575, 0, 0)#26032 AS stockQuantities#32577]
(2147) Filter
Input [4]: [product#32499, plant#32500, calculationDateTime#32576, stockQuantities#32577]
Condition : ((size(stockQuantities#32577, true) > 0) AND isnotnull(calculationDateTime#32576))
(2148) Generate
Input [4]: [product#32499, plant#32500, calculationDateTime#32576, stockQuantities#32577]
Arguments: explode(stockQuantities#32577), [product#32499, plant#32500, calculationDateTime#32576], false, [stockQuantity#32578]
(2149) Filter
Input [4]: [product#32499, plant#32500, calculationDateTime#32576, stockQuantity#32578]
Condition : (((isnotnull(stockQuantity#32578.specialStockIndicator.code) AND isnotnull(stockQuantity#32578.stockType.code)) AND (stockQuantity#32578.specialStockIndicator.code = )) AND (stockQuantity#32578.stockType.code = 01))
(2150) Project
Output [4]: [plant#32500.internalRefUUID AS plantUuid#32580, product#32499.internalRefUUID AS productUuid#32582, calculationDateTime#32576, stockQuantity#32578.storagelocation.id AS storageLocId#32583]
Input [4]: [product#32499, plant#32500, calculationDateTime#32576, stockQuantity#32578]
(2151) Exchange
Input [4]: [plantUuid#32580, productUuid#32582, calculationDateTime#32576, storageLocId#32583]
Arguments: hashpartitioning(productUuid#32582, plantUuid#32580, 10), ENSURE_REQUIREMENTS, [plan_id=122723]
(2152) Sort
Input [4]: [plantUuid#32580, productUuid#32582, calculationDateTime#32576, storageLocId#32583]
Arguments: [productUuid#32582 ASC NULLS FIRST, plantUuid#32580 ASC NULLS FIRST], false, 0
(2153) Scan parquet
Output [3]: [product#32588, plant#32589, orderDateTime#32590]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2154) Filter
Input [3]: [product#32588, plant#32589, orderDateTime#32590]
Condition : ((isnotnull(orderDateTime#32590) AND isnotnull(plant#32589)) AND isnotnull(product#32588))
(2155) Exchange
Input [3]: [product#32588, plant#32589, orderDateTime#32590]
Arguments: hashpartitioning(product#32588, plant#32589, 10), REPARTITION_BY_NUM, [plan_id=121532]
(2156) Scan parquet
Output [4]: [plant#32594, product#32595, productionAspect#32597, systemId#32592]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(2157) Project
Output [4]: [plant#32594.internalRefUUID AS _extract_internalRefUUID#34156, product#32595.internalRefUUID AS _extract_internalRefUUID#34153, productionAspect#32597.productMovementPlants.unitOfIssue.code AS _extract_code#34154, productionAspect#32597.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34155]
Input [4]: [plant#32594, product#32595, productionAspect#32597, systemId#32592]
(2158) Exchange
Input [4]: [_extract_internalRefUUID#34156, _extract_internalRefUUID#34153, _extract_code#34154, _extract_internalRefUUID#34155]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120682]
(2159) Project
Output [4]: [_extract_code#34154, _extract_internalRefUUID#34155, _extract_internalRefUUID#34153, _extract_internalRefUUID#34156]
Input [4]: [_extract_internalRefUUID#34156, _extract_internalRefUUID#34153, _extract_code#34154, _extract_internalRefUUID#34155]
(2160) BroadcastExchange
Input [4]: [_extract_code#34154, _extract_internalRefUUID#34155, _extract_internalRefUUID#34153, _extract_internalRefUUID#34156]
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=122706]
(2161) BroadcastHashJoin
Left keys [4]: [coalesce(product#32588, ), isnull(product#32588), coalesce(plant#32589, ), isnull(plant#32589)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34153, ), isnull(_extract_internalRefUUID#34153), coalesce(_extract_internalRefUUID#34156, ), isnull(_extract_internalRefUUID#34156)]
Join type: LeftOuter
Join condition: None
(2162) Project
Output [5]: [product#32588, plant#32589, orderDateTime#32590, _extract_code#34154, _extract_internalRefUUID#34155]
Input [7]: [product#32588, plant#32589, orderDateTime#32590, _extract_code#34154, _extract_internalRefUUID#34155, _extract_internalRefUUID#34153, _extract_internalRefUUID#34156]
(2163) Scan parquet
Output [2]: [internalUUID#32602, systemId#32601]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(2164) Project
Output [1]: [internalUUID#32602]
Input [2]: [internalUUID#32602, systemId#32601]
(2165) Exchange
Input [1]: [internalUUID#32602]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120688]
(2166) BroadcastExchange
Input [1]: [internalUUID#32602]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122710]
(2167) BroadcastHashJoin
Left keys [2]: [coalesce(plant#32589, ), isnull(plant#32589)]
Right keys [2]: [coalesce(internalUUID#32602, ), isnull(internalUUID#32602)]
Join type: LeftOuter
Join condition: None
(2168) Project
Output [5]: [product#32588, plant#32589, orderDateTime#32590, _extract_code#34154, _extract_internalRefUUID#34155]
Input [6]: [product#32588, plant#32589, orderDateTime#32590, _extract_code#34154, _extract_internalRefUUID#34155, internalUUID#32602]
(2169) Scan parquet
Output [4]: [internalUUID#32616, baseUnitOfMeasure#32620, unitOfMeasureConversions#32622, systemId#32615]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(2170) Filter
Input [4]: [internalUUID#32616, baseUnitOfMeasure#32620, unitOfMeasureConversions#32622, systemId#32615]
Condition : isnotnull(internalUUID#32616)
(2171) Project
Output [3]: [internalUUID#32616, baseUnitOfMeasure#32620, unitOfMeasureConversions#32622]
Input [4]: [internalUUID#32616, baseUnitOfMeasure#32620, unitOfMeasureConversions#32622, systemId#32615]
(2172) Exchange
Input [3]: [internalUUID#32616, baseUnitOfMeasure#32620, unitOfMeasureConversions#32622]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120694]
(2173) BroadcastExchange
Input [3]: [internalUUID#32616, baseUnitOfMeasure#32620, unitOfMeasureConversions#32622]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122714]
(2174) BroadcastHashJoin
Left keys [1]: [product#32588]
Right keys [1]: [internalUUID#32616]
Join type: LeftOuter
Join condition: None
(2175) Project
Output [4]: [product#32588, plant#32589, orderDateTime#32590, filter(unitOfMeasureConversions#32622, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34154) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34155)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32620.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32620.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32627]
Input [8]: [product#32588, plant#32589, orderDateTime#32590, _extract_code#34154, _extract_internalRefUUID#34155, internalUUID#32616, baseUnitOfMeasure#32620, unitOfMeasureConversions#32622]
(2176) Generate
Input [4]: [product#32588, plant#32589, orderDateTime#32590, filteredUnitOfMeasureConversions#32627]
Arguments: explode(filteredUnitOfMeasureConversions#32627.quantityNumerator), [product#32588, plant#32589, orderDateTime#32590, filteredUnitOfMeasureConversions#32627], true, [quantityNumerator#32628]
(2177) Project
Output [4]: [product#32588, plant#32589, orderDateTime#32590, filteredUnitOfMeasureConversions#32627.quantityDenominator AS _extract_quantityDenominator#33499]
Input [5]: [product#32588, plant#32589, orderDateTime#32590, filteredUnitOfMeasureConversions#32627, quantityNumerator#32628]
(2178) Generate
Input [4]: [product#32588, plant#32589, orderDateTime#32590, _extract_quantityDenominator#33499]
Arguments: explode(_extract_quantityDenominator#33499), [product#32588, plant#32589, orderDateTime#32590], true, [quantityDenominator#32629]
(2179) Project
Output [3]: [product#32588, plant#32589, orderDateTime#32590]
Input [4]: [product#32588, plant#32589, orderDateTime#32590, quantityDenominator#32629]
(2180) Sort
Input [3]: [product#32588, plant#32589, orderDateTime#32590]
Arguments: [product#32588 ASC NULLS FIRST, plant#32589 ASC NULLS FIRST], false, 0
(2181) SortMergeJoin
Left keys [2]: [productUuid#32582, plantUuid#32580]
Right keys [2]: [product#32588, plant#32589]
Join type: Inner
Join condition: (calculationDateTime#32576 <= orderDateTime#32590)
(2182) Project
Output [4]: [plantUuid#32580 AS plant#32632, productUuid#32582 AS product#32633, storageLocId#32583, calculationDateTime#32576]
Input [7]: [plantUuid#32580, productUuid#32582, calculationDateTime#32576, storageLocId#32583, product#32588, plant#32589, orderDateTime#32590]
(2183) HashAggregate
Input [4]: [plant#32632, product#32633, storageLocId#32583, calculationDateTime#32576]
Keys [3]: [plant#32632, product#32633, storageLocId#32583]
Functions [1]: [partial_max(calculationDateTime#32576)]
Aggregate Attributes [1]: [max#35193]
Results [4]: [plant#32632, product#32633, storageLocId#32583, max#35194]
(2184) HashAggregate
Input [4]: [plant#32632, product#32633, storageLocId#32583, max#35194]
Keys [3]: [plant#32632, product#32633, storageLocId#32583]
Functions [1]: [max(calculationDateTime#32576)]
Aggregate Attributes [1]: [max(calculationDateTime#32576)#26109]
Results [4]: [plant#32632, product#32633, storageLocId#32583, max(calculationDateTime#32576)#26109 AS max_calc_datetime#32634]
(2185) Exchange
Input [4]: [plant#32632, product#32633, storageLocId#32583, max_calc_datetime#32634]
Arguments: hashpartitioning(coalesce(plant#32632, ), isnull(plant#32632), coalesce(product#32633, ), isnull(product#32633), coalesce(storageLocId#32583, ), isnull(storageLocId#32583), coalesce(max_calc_datetime#32634, 1970-01-01 00:00:00), isnull(max_calc_datetime#32634), 10), ENSURE_REQUIREMENTS, [plan_id=122733]
(2186) Sort
Input [4]: [plant#32632, product#32633, storageLocId#32583, max_calc_datetime#32634]
Arguments: [coalesce(plant#32632, ) ASC NULLS FIRST, isnull(plant#32632) ASC NULLS FIRST, coalesce(product#32633, ) ASC NULLS FIRST, isnull(product#32633) ASC NULLS FIRST, coalesce(storageLocId#32583, ) ASC NULLS FIRST, isnull(storageLocId#32583) ASC NULLS FIRST, coalesce(max_calc_datetime#32634, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#32634) ASC NULLS FIRST], false, 0
(2187) SortMergeJoin
Left keys [8]: [coalesce(plant#32495, ), isnull(plant#32495), coalesce(product#32496, ), isnull(product#32496), coalesce(storageLocId#32446, ), isnull(storageLocId#32446), coalesce(calculationDateTime#32439, 1970-01-01 00:00:00), isnull(calculationDateTime#32439)]
Right keys [8]: [coalesce(plant#32632, ), isnull(plant#32632), coalesce(product#32633, ), isnull(product#32633), coalesce(storageLocId#32583, ), isnull(storageLocId#32583), coalesce(max_calc_datetime#32634, 1970-01-01 00:00:00), isnull(max_calc_datetime#32634)]
Join type: Inner
Join condition: None
(2188) Project
Output [3]: [plant#32495, product#32496, calculationDateTime#32439]
Input [8]: [plant#32495, product#32496, storageLocId#32446, calculationDateTime#32439, plant#32632, product#32633, storageLocId#32583, max_calc_datetime#32634]
(2189) HashAggregate
Input [3]: [plant#32495, product#32496, calculationDateTime#32439]
Keys [2]: [product#32496, plant#32495]
Functions [1]: [partial_min(calculationDateTime#32439)]
Aggregate Attributes [1]: [min#35185]
Results [3]: [product#32496, plant#32495, min#35186]
(2190) Exchange
Input [3]: [product#32496, plant#32495, min#35186]
Arguments: hashpartitioning(product#32496, plant#32495, 10), ENSURE_REQUIREMENTS, [plan_id=122740]
(2191) HashAggregate
Input [3]: [product#32496, plant#32495, min#35186]
Keys [2]: [product#32496, plant#32495]
Functions [1]: [min(calculationDateTime#32439)]
Aggregate Attributes [1]: [min(calculationDateTime#32439)#26265]
Results [3]: [product#32496, plant#32495, min(calculationDateTime#32439)#26265 AS minCalculationDateTime#32636]
(2192) Sort
Input [3]: [product#32496, plant#32495, minCalculationDateTime#32636]
Arguments: [product#32496 ASC NULLS FIRST, plant#32495 ASC NULLS FIRST], false, 0
(2193) SortMergeJoin
Left keys [2]: [product#32316, plant#32317]
Right keys [2]: [product#32496, plant#32495]
Join type: LeftOuter
Join condition: None
(2194) Project
Output [3]: [product#32316, plant#32317, CASE WHEN isnotnull(minCalculationDateTime#32636) THEN minCalculationDateTime#32636 ELSE orderDateTime#32318 END AS stockDatetime#32638]
Input [6]: [product#32316, plant#32317, orderDateTime#32318, product#32496, plant#32495, minCalculationDateTime#32636]
(2195) Exchange
Input [3]: [product#32316, plant#32317, stockDatetime#32638]
Arguments: hashpartitioning(coalesce(plant#32317, ), isnull(plant#32317), coalesce(product#32316, ), isnull(product#32316), 10), ENSURE_REQUIREMENTS, [plan_id=122904]
(2196) Sort
Input [3]: [product#32316, plant#32317, stockDatetime#32638]
Arguments: [coalesce(plant#32317, ) ASC NULLS FIRST, isnull(plant#32317) ASC NULLS FIRST, coalesce(product#32316, ) ASC NULLS FIRST, isnull(product#32316) ASC NULLS FIRST], false, 0
(2197) Scan parquet
Output [3]: [product#32641, plant#32642, orderDateTime#32643]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2198) Exchange
Input [3]: [product#32641, plant#32642, orderDateTime#32643]
Arguments: hashpartitioning(product#32641, plant#32642, 10), REPARTITION_BY_NUM, [plan_id=120712]
(2199) Scan parquet
Output [8]: [internalUUID#32646, plant#32647, product#32648, blockedForReplenishmentStartingFrom#32649, productionAspect#32650, salesPlant#32651, listing#32652, systemId#32645]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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,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>>>
(2200) Project
Output [8]: [systemId#32645, internalUUID#32646, plant#32647, product#32648, blockedForReplenishmentStartingFrom#32649, productionAspect#32650, salesPlant#32651, listing#32652]
Input [8]: [internalUUID#32646, plant#32647, product#32648, blockedForReplenishmentStartingFrom#32649, productionAspect#32650, salesPlant#32651, listing#32652, systemId#32645]
(2201) Exchange
Input [8]: [systemId#32645, internalUUID#32646, plant#32647, product#32648, blockedForReplenishmentStartingFrom#32649, productionAspect#32650, salesPlant#32651, listing#32652]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120715]
(2202) Project
Output [1]: [struct(systemId, systemId#32645, internalUUID, internalUUID#32646, plant, plant#32647, product, product#32648, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#32649, productionAspect, productionAspect#32650, salesPlant, salesPlant#32651, listing, listing#32652) AS productPlant#32653]
Input [8]: [systemId#32645, internalUUID#32646, plant#32647, product#32648, blockedForReplenishmentStartingFrom#32649, productionAspect#32650, salesPlant#32651, listing#32652]
(2203) BroadcastExchange
Input [1]: [productPlant#32653]
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,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,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,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,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=122748]
(2204) BroadcastHashJoin
Left keys [4]: [coalesce(product#32641, ), isnull(product#32641), coalesce(plant#32642, ), isnull(plant#32642)]
Right keys [4]: [coalesce(productPlant#32653.product.internalRefUUID, ), isnull(productPlant#32653.product.internalRefUUID), coalesce(productPlant#32653.plant.internalRefUUID, ), isnull(productPlant#32653.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(2205) Scan parquet
Output [3]: [internalUUID#32655, address#32661, systemId#32654]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(2206) Project
Output [2]: [internalUUID#32655, address#32661.timeZone.code AS timezonecode#32666]
Input [3]: [internalUUID#32655, address#32661, systemId#32654]
(2207) Exchange
Input [2]: [internalUUID#32655, timezonecode#32666]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120720]
(2208) BroadcastExchange
Input [2]: [internalUUID#32655, timezonecode#32666]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122751]
(2209) BroadcastHashJoin
Left keys [2]: [coalesce(plant#32642, ), isnull(plant#32642)]
Right keys [2]: [coalesce(internalUUID#32655, ), isnull(internalUUID#32655)]
Join type: LeftOuter
Join condition: None
(2210) Project
Output [5]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, CASE WHEN isnotnull(timezonecode#32666) THEN timezonecode#32666 ELSE UTC END AS timezonecode#32667]
Input [6]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, internalUUID#32655, timezonecode#32666]
(2211) Scan parquet
Output [4]: [internalUUID#32669, baseUnitOfMeasure#32673, unitOfMeasureConversions#32675, systemId#32668]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(2212) Filter
Input [4]: [internalUUID#32669, baseUnitOfMeasure#32673, unitOfMeasureConversions#32675, systemId#32668]
Condition : isnotnull(internalUUID#32669)
(2213) Project
Output [3]: [internalUUID#32669, baseUnitOfMeasure#32673, unitOfMeasureConversions#32675]
Input [4]: [internalUUID#32669, baseUnitOfMeasure#32673, unitOfMeasureConversions#32675, systemId#32668]
(2214) Exchange
Input [3]: [internalUUID#32669, baseUnitOfMeasure#32673, unitOfMeasureConversions#32675]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120726]
(2215) BroadcastExchange
Input [3]: [internalUUID#32669, baseUnitOfMeasure#32673, unitOfMeasureConversions#32675]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122755]
(2216) BroadcastHashJoin
Left keys [1]: [product#32641]
Right keys [1]: [internalUUID#32669]
Join type: LeftOuter
Join condition: None
(2217) Project
Output [6]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, filter(unitOfMeasureConversions#32675, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#32653.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#32653.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32673.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32673.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32680]
Input [8]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, internalUUID#32669, baseUnitOfMeasure#32673, unitOfMeasureConversions#32675]
(2218) Project
Output [7]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, filteredUnitOfMeasureConversions#32680.quantityDenominator AS _extract_quantityDenominator#33727, filteredUnitOfMeasureConversions#32680.quantityNumerator AS _extract_quantityNumerator#33728]
Input [6]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, filteredUnitOfMeasureConversions#32680]
(2219) Generate
Input [7]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, _extract_quantityDenominator#33727, _extract_quantityNumerator#33728]
Arguments: explode(_extract_quantityNumerator#33728), [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, _extract_quantityDenominator#33727], true, [quantityNumerator#32681]
(2220) Generate
Input [7]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, _extract_quantityDenominator#33727, quantityNumerator#32681]
Arguments: explode(_extract_quantityDenominator#33727), [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, quantityNumerator#32681], true, [quantityDenominator#32682]
(2221) Project
Output [6]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, (cast(quantityNumerator#32681 as double) / cast(quantityDenominator#32682 as double)) AS outboundUnit#32683]
Input [7]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, quantityNumerator#32681, quantityDenominator#32682]
(2222) Project
Output [6]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, CASE WHEN (isnull(outboundUnit#32683) OR (outboundUnit#32683 <= 0.0)) THEN 1.0 ELSE outboundUnit#32683 END AS outboundUnit#32684]
Input [6]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32683]
(2223) Sort
Input [6]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32684]
Arguments: [product#32641 ASC NULLS FIRST, plant#32642 ASC NULLS FIRST], false, 0
(2224) Scan parquet
Output [6]: [internalUUID#32686, product#32687, plant#32688, calculationDateTime#32689, stockQuantities#32690, systemId#32685]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(2225) Filter
Input [6]: [internalUUID#32686, product#32687, plant#32688, calculationDateTime#32689, stockQuantities#32690, systemId#32685]
Condition : (isnotnull(plant#32688.internalRefUUID) AND isnotnull(product#32687.internalRefUUID))
(2226) Project
Output [6]: [systemId#32685, internalUUID#32686, product#32687, plant#32688, calculationDateTime#32689, stockQuantities#32690]
Input [6]: [internalUUID#32686, product#32687, plant#32688, calculationDateTime#32689, stockQuantities#32690, systemId#32685]
(2227) Exchange
Input [6]: [systemId#32685, internalUUID#32686, product#32687, plant#32688, calculationDateTime#32689, stockQuantities#32690]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120737]
(2228) BroadcastExchange
Input [6]: [systemId#32685, internalUUID#32686, product#32687, plant#32688, calculationDateTime#32689, stockQuantities#32690]
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=122787]
(2229) Scan parquet
Output [2]: [marketUnit#32691, distributionCenters#32697]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(2230) Filter
Input [2]: [marketUnit#32691, distributionCenters#32697]
Condition : (((marketUnit#32691 <=> DIP_1691) AND (size(distributionCenters#32697, true) > 0)) AND isnotnull(distributionCenters#32697))
(2231) Project
Output [1]: [distributionCenters#32697]
Input [2]: [marketUnit#32691, distributionCenters#32697]
(2232) Exchange
Input [1]: [distributionCenters#32697]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120741]
(2233) Generate
Input [1]: [distributionCenters#32697]
Arguments: explode(distributionCenters#32697), false, [distributionCenters#32713]
(2234) Filter
Input [1]: [distributionCenters#32713]
Condition : (((size(distributionCenters#32713.storageLocations, true) > 0) AND isnotnull(distributionCenters#32713.storageLocations)) AND isnotnull(distributionCenters#32713.internalRefUUID))
(2235) Project
Output [2]: [distributionCenters#32713.internalRefUUID AS _extract_internalRefUUID#33505, distributionCenters#32713.storageLocations AS _extract_storageLocations#33506]
Input [1]: [distributionCenters#32713]
(2236) Generate
Input [2]: [_extract_internalRefUUID#33505, _extract_storageLocations#33506]
Arguments: explode(_extract_storageLocations#33506), [_extract_internalRefUUID#33505], false, [storageLocations#32714]
(2237) Project
Output [3]: [_extract_internalRefUUID#33505 AS plantUuid#32716, storageLocations#32714.id AS storageLocId#32717, storageLocations#32714.internalRefUUID AS storageLocUuid#32718]
Input [2]: [_extract_internalRefUUID#33505, storageLocations#32714]
(2238) BroadcastExchange
Input [3]: [plantUuid#32716, storageLocId#32717, storageLocUuid#32718]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122783]
(2239) Scan parquet
Output [2]: [product#32719, plant#32720]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(2240) Filter
Input [2]: [product#32719, plant#32720]
Condition : isnotnull(plant#32720)
(2241) Exchange
Input [2]: [product#32719, plant#32720]
Arguments: hashpartitioning(product#32719, plant#32720, 10), REPARTITION_BY_NUM, [plan_id=121553]
(2242) Scan parquet
Output [4]: [plant#32725, product#32726, productionAspect#32728, systemId#32723]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(2243) Project
Output [4]: [plant#32725.internalRefUUID AS _extract_internalRefUUID#34158, product#32726.internalRefUUID AS _extract_internalRefUUID#34157, productionAspect#32728.productMovementPlants.unitOfIssue.code AS _extract_code#34159, productionAspect#32728.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34160]
Input [4]: [plant#32725, product#32726, productionAspect#32728, systemId#32723]
(2244) Exchange
Input [4]: [_extract_internalRefUUID#34158, _extract_internalRefUUID#34157, _extract_code#34159, _extract_internalRefUUID#34160]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120753]
(2245) Project
Output [4]: [_extract_code#34159, _extract_internalRefUUID#34160, _extract_internalRefUUID#34157, _extract_internalRefUUID#34158]
Input [4]: [_extract_internalRefUUID#34158, _extract_internalRefUUID#34157, _extract_code#34159, _extract_internalRefUUID#34160]
(2246) BroadcastExchange
Input [4]: [_extract_code#34159, _extract_internalRefUUID#34160, _extract_internalRefUUID#34157, _extract_internalRefUUID#34158]
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=122763]
(2247) BroadcastHashJoin
Left keys [4]: [coalesce(product#32719, ), isnull(product#32719), coalesce(plant#32720, ), isnull(plant#32720)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34157, ), isnull(_extract_internalRefUUID#34157), coalesce(_extract_internalRefUUID#34158, ), isnull(_extract_internalRefUUID#34158)]
Join type: LeftOuter
Join condition: None
(2248) Project
Output [4]: [product#32719, plant#32720, _extract_code#34159, _extract_internalRefUUID#34160]
Input [6]: [product#32719, plant#32720, _extract_code#34159, _extract_internalRefUUID#34160, _extract_internalRefUUID#34157, _extract_internalRefUUID#34158]
(2249) Scan parquet
Output [2]: [internalUUID#32733, systemId#32732]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(2250) Project
Output [1]: [internalUUID#32733]
Input [2]: [internalUUID#32733, systemId#32732]
(2251) Exchange
Input [1]: [internalUUID#32733]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120759]
(2252) BroadcastExchange
Input [1]: [internalUUID#32733]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122767]
(2253) BroadcastHashJoin
Left keys [2]: [coalesce(plant#32720, ), isnull(plant#32720)]
Right keys [2]: [coalesce(internalUUID#32733, ), isnull(internalUUID#32733)]
Join type: LeftOuter
Join condition: None
(2254) Project
Output [4]: [product#32719, plant#32720, _extract_code#34159, _extract_internalRefUUID#34160]
Input [5]: [product#32719, plant#32720, _extract_code#34159, _extract_internalRefUUID#34160, internalUUID#32733]
(2255) Scan parquet
Output [4]: [internalUUID#32747, baseUnitOfMeasure#32751, unitOfMeasureConversions#32753, systemId#32746]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(2256) Filter
Input [4]: [internalUUID#32747, baseUnitOfMeasure#32751, unitOfMeasureConversions#32753, systemId#32746]
Condition : isnotnull(internalUUID#32747)
(2257) Project
Output [3]: [internalUUID#32747, baseUnitOfMeasure#32751, unitOfMeasureConversions#32753]
Input [4]: [internalUUID#32747, baseUnitOfMeasure#32751, unitOfMeasureConversions#32753, systemId#32746]
(2258) Exchange
Input [3]: [internalUUID#32747, baseUnitOfMeasure#32751, unitOfMeasureConversions#32753]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120765]
(2259) BroadcastExchange
Input [3]: [internalUUID#32747, baseUnitOfMeasure#32751, unitOfMeasureConversions#32753]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122771]
(2260) BroadcastHashJoin
Left keys [1]: [product#32719]
Right keys [1]: [internalUUID#32747]
Join type: LeftOuter
Join condition: None
(2261) Project
Output [2]: [plant#32720, filter(unitOfMeasureConversions#32753, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34159) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34160)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32751.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32751.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32758]
Input [7]: [product#32719, plant#32720, _extract_code#34159, _extract_internalRefUUID#34160, internalUUID#32747, baseUnitOfMeasure#32751, unitOfMeasureConversions#32753]
(2262) Generate
Input [2]: [plant#32720, filteredUnitOfMeasureConversions#32758]
Arguments: explode(filteredUnitOfMeasureConversions#32758.quantityNumerator), [plant#32720, filteredUnitOfMeasureConversions#32758], true, [quantityNumerator#32759]
(2263) Project
Output [2]: [plant#32720, filteredUnitOfMeasureConversions#32758.quantityDenominator AS _extract_quantityDenominator#33507]
Input [3]: [plant#32720, filteredUnitOfMeasureConversions#32758, quantityNumerator#32759]
(2264) Generate
Input [2]: [plant#32720, _extract_quantityDenominator#33507]
Arguments: explode(_extract_quantityDenominator#33507), [plant#32720], true, [quantityDenominator#32760]
(2265) Project
Output [1]: [plant#32720]
Input [2]: [plant#32720, quantityDenominator#32760]
(2266) HashAggregate
Input [1]: [plant#32720]
Keys [1]: [plant#32720]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#32720]
(2267) Exchange
Input [1]: [plant#32720]
Arguments: hashpartitioning(plant#32720, 10), ENSURE_REQUIREMENTS, [plan_id=122780]
(2268) HashAggregate
Input [1]: [plant#32720]
Keys [1]: [plant#32720]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#32720]
(2269) BroadcastHashJoin
Left keys [1]: [plantUuid#32716]
Right keys [1]: [plant#32720]
Join type: Inner
Join condition: None
(2270) Project
Output [3]: [plantUuid#32716, storageLocId#32717, storageLocUuid#32718]
Input [4]: [plantUuid#32716, storageLocId#32717, storageLocUuid#32718, plant#32720]
(2271) BroadcastHashJoin
Left keys [2]: [coalesce(plant#32688.internalRefUUID, ), isnull(plant#32688.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#32716, ), isnull(plantUuid#32716)]
Join type: Inner
Join condition: None
(2272) Generate
Input [9]: [systemId#32685, internalUUID#32686, product#32687, plant#32688, calculationDateTime#32689, stockQuantities#32690, plantUuid#32716, storageLocId#32717, storageLocUuid#32718]
Arguments: explode(filter(stockQuantities#32690, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#32718) AND (lambda x#26016.storageLocation.Id = storageLocId#32717)), lambda x#26016, false))), [systemId#32685, internalUUID#32686, product#32687, plant#32688, calculationDateTime#32689, plantUuid#32716], false, [stockQuantity#32763]
(2273) ObjectHashAggregate
Input [7]: [systemId#32685, internalUUID#32686, product#32687, plant#32688, calculationDateTime#32689, plantUuid#32716, stockQuantity#32763]
Keys [5]: [plantUuid#32716, internalUUID#32686, plant#32688, product#32687, systemId#32685]
Functions [2]: [partial_first(calculationDateTime#32689, false), partial_collect_list(stockQuantity#32763, 0, 0)]
Aggregate Attributes [3]: [first#35209, valueSet#35210, buf#35211]
Results [8]: [plantUuid#32716, internalUUID#32686, plant#32688, product#32687, systemId#32685, first#35212, valueSet#35213, buf#35214]
(2274) ObjectHashAggregate
Input [8]: [plantUuid#32716, internalUUID#32686, plant#32688, product#32687, systemId#32685, first#35212, valueSet#35213, buf#35214]
Keys [5]: [plantUuid#32716, internalUUID#32686, plant#32688, product#32687, systemId#32685]
Functions [2]: [first(calculationDateTime#32689, false), collect_list(stockQuantity#32763, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#32689)()#26031, collect_list(stockQuantity#32763, 0, 0)#26032]
Results [4]: [product#32687, plant#32688, first(calculationDateTime#32689)()#26031 AS calculationDateTime#32764, collect_list(stockQuantity#32763, 0, 0)#26032 AS stockQuantities#32765]
(2275) Filter
Input [4]: [product#32687, plant#32688, calculationDateTime#32764, stockQuantities#32765]
Condition : ((size(stockQuantities#32765, true) > 0) AND isnotnull(calculationDateTime#32764))
(2276) Generate
Input [4]: [product#32687, plant#32688, calculationDateTime#32764, stockQuantities#32765]
Arguments: explode(stockQuantities#32765), [product#32687, plant#32688, calculationDateTime#32764], false, [stockQuantity#32766]
(2277) Filter
Input [4]: [product#32687, plant#32688, calculationDateTime#32764, stockQuantity#32766]
Condition : (((isnotnull(stockQuantity#32766.specialStockIndicator.code) AND isnotnull(stockQuantity#32766.stockType.code)) AND (stockQuantity#32766.specialStockIndicator.code = )) AND (stockQuantity#32766.stockType.code = 01))
(2278) Project
Output [5]: [plant#32688.internalRefUUID AS plantUuid#32768, product#32687.internalRefUUID AS productUuid#32770, calculationDateTime#32764, stockQuantity#32766.storagelocation.id AS storageLocId#32771, stockQuantity#32766.quantity.measure AS quantity#32773]
Input [4]: [product#32687, plant#32688, calculationDateTime#32764, stockQuantity#32766]
(2279) Exchange
Input [5]: [plantUuid#32768, productUuid#32770, calculationDateTime#32764, storageLocId#32771, quantity#32773]
Arguments: hashpartitioning(productUuid#32770, plantUuid#32768, 10), ENSURE_REQUIREMENTS, [plan_id=122813]
(2280) Sort
Input [5]: [plantUuid#32768, productUuid#32770, calculationDateTime#32764, storageLocId#32771, quantity#32773]
Arguments: [productUuid#32770 ASC NULLS FIRST, plantUuid#32768 ASC NULLS FIRST], false, 0
(2281) Scan parquet
Output [3]: [product#32776, plant#32777, orderDateTime#32778]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2282) Filter
Input [3]: [product#32776, plant#32777, orderDateTime#32778]
Condition : ((isnotnull(orderDateTime#32778) AND isnotnull(plant#32777)) AND isnotnull(product#32776))
(2283) Exchange
Input [3]: [product#32776, plant#32777, orderDateTime#32778]
Arguments: hashpartitioning(product#32776, plant#32777, 10), REPARTITION_BY_NUM, [plan_id=121576]
(2284) Scan parquet
Output [4]: [plant#32782, product#32783, productionAspect#32785, systemId#32780]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(2285) Project
Output [4]: [plant#32782.internalRefUUID AS _extract_internalRefUUID#34164, product#32783.internalRefUUID AS _extract_internalRefUUID#34161, productionAspect#32785.productMovementPlants.unitOfIssue.code AS _extract_code#34162, productionAspect#32785.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34163]
Input [4]: [plant#32782, product#32783, productionAspect#32785, systemId#32780]
(2286) Exchange
Input [4]: [_extract_internalRefUUID#34164, _extract_internalRefUUID#34161, _extract_code#34162, _extract_internalRefUUID#34163]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120790]
(2287) Project
Output [4]: [_extract_code#34162, _extract_internalRefUUID#34163, _extract_internalRefUUID#34161, _extract_internalRefUUID#34164]
Input [4]: [_extract_internalRefUUID#34164, _extract_internalRefUUID#34161, _extract_code#34162, _extract_internalRefUUID#34163]
(2288) BroadcastExchange
Input [4]: [_extract_code#34162, _extract_internalRefUUID#34163, _extract_internalRefUUID#34161, _extract_internalRefUUID#34164]
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=122796]
(2289) BroadcastHashJoin
Left keys [4]: [coalesce(product#32776, ), isnull(product#32776), coalesce(plant#32777, ), isnull(plant#32777)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34161, ), isnull(_extract_internalRefUUID#34161), coalesce(_extract_internalRefUUID#34164, ), isnull(_extract_internalRefUUID#34164)]
Join type: LeftOuter
Join condition: None
(2290) Project
Output [5]: [product#32776, plant#32777, orderDateTime#32778, _extract_code#34162, _extract_internalRefUUID#34163]
Input [7]: [product#32776, plant#32777, orderDateTime#32778, _extract_code#34162, _extract_internalRefUUID#34163, _extract_internalRefUUID#34161, _extract_internalRefUUID#34164]
(2291) Scan parquet
Output [2]: [internalUUID#32790, systemId#32789]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(2292) Project
Output [1]: [internalUUID#32790]
Input [2]: [internalUUID#32790, systemId#32789]
(2293) Exchange
Input [1]: [internalUUID#32790]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120796]
(2294) BroadcastExchange
Input [1]: [internalUUID#32790]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122800]
(2295) BroadcastHashJoin
Left keys [2]: [coalesce(plant#32777, ), isnull(plant#32777)]
Right keys [2]: [coalesce(internalUUID#32790, ), isnull(internalUUID#32790)]
Join type: LeftOuter
Join condition: None
(2296) Project
Output [5]: [product#32776, plant#32777, orderDateTime#32778, _extract_code#34162, _extract_internalRefUUID#34163]
Input [6]: [product#32776, plant#32777, orderDateTime#32778, _extract_code#34162, _extract_internalRefUUID#34163, internalUUID#32790]
(2297) Scan parquet
Output [4]: [internalUUID#32804, baseUnitOfMeasure#32808, unitOfMeasureConversions#32810, systemId#32803]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(2298) Filter
Input [4]: [internalUUID#32804, baseUnitOfMeasure#32808, unitOfMeasureConversions#32810, systemId#32803]
Condition : isnotnull(internalUUID#32804)
(2299) Project
Output [3]: [internalUUID#32804, baseUnitOfMeasure#32808, unitOfMeasureConversions#32810]
Input [4]: [internalUUID#32804, baseUnitOfMeasure#32808, unitOfMeasureConversions#32810, systemId#32803]
(2300) Exchange
Input [3]: [internalUUID#32804, baseUnitOfMeasure#32808, unitOfMeasureConversions#32810]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120802]
(2301) BroadcastExchange
Input [3]: [internalUUID#32804, baseUnitOfMeasure#32808, unitOfMeasureConversions#32810]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122804]
(2302) BroadcastHashJoin
Left keys [1]: [product#32776]
Right keys [1]: [internalUUID#32804]
Join type: LeftOuter
Join condition: None
(2303) Project
Output [4]: [product#32776, plant#32777, orderDateTime#32778, filter(unitOfMeasureConversions#32810, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34162) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34163)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32808.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32808.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32815]
Input [8]: [product#32776, plant#32777, orderDateTime#32778, _extract_code#34162, _extract_internalRefUUID#34163, internalUUID#32804, baseUnitOfMeasure#32808, unitOfMeasureConversions#32810]
(2304) Generate
Input [4]: [product#32776, plant#32777, orderDateTime#32778, filteredUnitOfMeasureConversions#32815]
Arguments: explode(filteredUnitOfMeasureConversions#32815.quantityNumerator), [product#32776, plant#32777, orderDateTime#32778, filteredUnitOfMeasureConversions#32815], true, [quantityNumerator#32816]
(2305) Project
Output [4]: [product#32776, plant#32777, orderDateTime#32778, filteredUnitOfMeasureConversions#32815.quantityDenominator AS _extract_quantityDenominator#33511]
Input [5]: [product#32776, plant#32777, orderDateTime#32778, filteredUnitOfMeasureConversions#32815, quantityNumerator#32816]
(2306) Generate
Input [4]: [product#32776, plant#32777, orderDateTime#32778, _extract_quantityDenominator#33511]
Arguments: explode(_extract_quantityDenominator#33511), [product#32776, plant#32777, orderDateTime#32778], true, [quantityDenominator#32817]
(2307) Project
Output [3]: [product#32776, plant#32777, orderDateTime#32778]
Input [4]: [product#32776, plant#32777, orderDateTime#32778, quantityDenominator#32817]
(2308) Sort
Input [3]: [product#32776, plant#32777, orderDateTime#32778]
Arguments: [product#32776 ASC NULLS FIRST, plant#32777 ASC NULLS FIRST], false, 0
(2309) SortMergeJoin
Left keys [2]: [productUuid#32770, plantUuid#32768]
Right keys [2]: [product#32776, plant#32777]
Join type: Inner
Join condition: (calculationDateTime#32764 <= orderDateTime#32778)
(2310) Project
Output [5]: [plantUuid#32768 AS plant#32820, productUuid#32770 AS product#32821, storageLocId#32771, calculationDateTime#32764, quantity#32773]
Input [8]: [plantUuid#32768, productUuid#32770, calculationDateTime#32764, storageLocId#32771, quantity#32773, product#32776, plant#32777, orderDateTime#32778]
(2311) Exchange
Input [5]: [plant#32820, product#32821, storageLocId#32771, calculationDateTime#32764, quantity#32773]
Arguments: hashpartitioning(coalesce(plant#32820, ), isnull(plant#32820), coalesce(product#32821, ), isnull(product#32821), coalesce(storageLocId#32771, ), isnull(storageLocId#32771), coalesce(calculationDateTime#32764, 1970-01-01 00:00:00), isnull(calculationDateTime#32764), 10), ENSURE_REQUIREMENTS, [plan_id=122877]
(2312) Sort
Input [5]: [plant#32820, product#32821, storageLocId#32771, calculationDateTime#32764, quantity#32773]
Arguments: [coalesce(plant#32820, ) ASC NULLS FIRST, isnull(plant#32820) ASC NULLS FIRST, coalesce(product#32821, ) ASC NULLS FIRST, isnull(product#32821) ASC NULLS FIRST, coalesce(storageLocId#32771, ) ASC NULLS FIRST, isnull(storageLocId#32771) ASC NULLS FIRST, coalesce(calculationDateTime#32764, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#32764) ASC NULLS FIRST], false, 0
(2313) Scan parquet
Output [6]: [internalUUID#32823, product#32824, plant#32825, calculationDateTime#32826, stockQuantities#32827, systemId#32822]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(2314) Filter
Input [6]: [internalUUID#32823, product#32824, plant#32825, calculationDateTime#32826, stockQuantities#32827, systemId#32822]
Condition : (isnotnull(plant#32825.internalRefUUID) AND isnotnull(product#32824.internalRefUUID))
(2315) Project
Output [6]: [systemId#32822, internalUUID#32823, product#32824, plant#32825, calculationDateTime#32826, stockQuantities#32827]
Input [6]: [internalUUID#32823, product#32824, plant#32825, calculationDateTime#32826, stockQuantities#32827, systemId#32822]
(2316) Exchange
Input [6]: [systemId#32822, internalUUID#32823, product#32824, plant#32825, calculationDateTime#32826, stockQuantities#32827]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120814]
(2317) BroadcastExchange
Input [6]: [systemId#32822, internalUUID#32823, product#32824, plant#32825, calculationDateTime#32826, stockQuantities#32827]
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=122842]
(2318) Scan parquet
Output [2]: [marketUnit#32828, distributionCenters#32834]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(2319) Filter
Input [2]: [marketUnit#32828, distributionCenters#32834]
Condition : (((marketUnit#32828 <=> DIP_1691) AND (size(distributionCenters#32834, true) > 0)) AND isnotnull(distributionCenters#32834))
(2320) Project
Output [1]: [distributionCenters#32834]
Input [2]: [marketUnit#32828, distributionCenters#32834]
(2321) Exchange
Input [1]: [distributionCenters#32834]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120818]
(2322) Generate
Input [1]: [distributionCenters#32834]
Arguments: explode(distributionCenters#32834), false, [distributionCenters#32850]
(2323) Filter
Input [1]: [distributionCenters#32850]
Condition : (((size(distributionCenters#32850.storageLocations, true) > 0) AND isnotnull(distributionCenters#32850.storageLocations)) AND isnotnull(distributionCenters#32850.internalRefUUID))
(2324) Project
Output [2]: [distributionCenters#32850.internalRefUUID AS _extract_internalRefUUID#33515, distributionCenters#32850.storageLocations AS _extract_storageLocations#33516]
Input [1]: [distributionCenters#32850]
(2325) Generate
Input [2]: [_extract_internalRefUUID#33515, _extract_storageLocations#33516]
Arguments: explode(_extract_storageLocations#33516), [_extract_internalRefUUID#33515], false, [storageLocations#32851]
(2326) Project
Output [3]: [_extract_internalRefUUID#33515 AS plantUuid#32853, storageLocations#32851.id AS storageLocId#32854, storageLocations#32851.internalRefUUID AS storageLocUuid#32855]
Input [2]: [_extract_internalRefUUID#33515, storageLocations#32851]
(2327) BroadcastExchange
Input [3]: [plantUuid#32853, storageLocId#32854, storageLocUuid#32855]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122838]
(2328) Scan parquet
Output [2]: [product#32856, plant#32857]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(2329) Filter
Input [2]: [product#32856, plant#32857]
Condition : isnotnull(plant#32857)
(2330) Exchange
Input [2]: [product#32856, plant#32857]
Arguments: hashpartitioning(product#32856, plant#32857, 10), REPARTITION_BY_NUM, [plan_id=121589]
(2331) Scan parquet
Output [4]: [plant#32862, product#32863, productionAspect#32865, systemId#32860]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(2332) Project
Output [4]: [plant#32862.internalRefUUID AS _extract_internalRefUUID#34168, product#32863.internalRefUUID AS _extract_internalRefUUID#34165, productionAspect#32865.productMovementPlants.unitOfIssue.code AS _extract_code#34166, productionAspect#32865.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34167]
Input [4]: [plant#32862, product#32863, productionAspect#32865, systemId#32860]
(2333) Exchange
Input [4]: [_extract_internalRefUUID#34168, _extract_internalRefUUID#34165, _extract_code#34166, _extract_internalRefUUID#34167]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120830]
(2334) Project
Output [4]: [_extract_code#34166, _extract_internalRefUUID#34167, _extract_internalRefUUID#34165, _extract_internalRefUUID#34168]
Input [4]: [_extract_internalRefUUID#34168, _extract_internalRefUUID#34165, _extract_code#34166, _extract_internalRefUUID#34167]
(2335) BroadcastExchange
Input [4]: [_extract_code#34166, _extract_internalRefUUID#34167, _extract_internalRefUUID#34165, _extract_internalRefUUID#34168]
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=122818]
(2336) BroadcastHashJoin
Left keys [4]: [coalesce(product#32856, ), isnull(product#32856), coalesce(plant#32857, ), isnull(plant#32857)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34165, ), isnull(_extract_internalRefUUID#34165), coalesce(_extract_internalRefUUID#34168, ), isnull(_extract_internalRefUUID#34168)]
Join type: LeftOuter
Join condition: None
(2337) Project
Output [4]: [product#32856, plant#32857, _extract_code#34166, _extract_internalRefUUID#34167]
Input [6]: [product#32856, plant#32857, _extract_code#34166, _extract_internalRefUUID#34167, _extract_internalRefUUID#34165, _extract_internalRefUUID#34168]
(2338) Scan parquet
Output [2]: [internalUUID#32870, systemId#32869]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(2339) Project
Output [1]: [internalUUID#32870]
Input [2]: [internalUUID#32870, systemId#32869]
(2340) Exchange
Input [1]: [internalUUID#32870]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120836]
(2341) BroadcastExchange
Input [1]: [internalUUID#32870]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122822]
(2342) BroadcastHashJoin
Left keys [2]: [coalesce(plant#32857, ), isnull(plant#32857)]
Right keys [2]: [coalesce(internalUUID#32870, ), isnull(internalUUID#32870)]
Join type: LeftOuter
Join condition: None
(2343) Project
Output [4]: [product#32856, plant#32857, _extract_code#34166, _extract_internalRefUUID#34167]
Input [5]: [product#32856, plant#32857, _extract_code#34166, _extract_internalRefUUID#34167, internalUUID#32870]
(2344) Scan parquet
Output [4]: [internalUUID#32884, baseUnitOfMeasure#32888, unitOfMeasureConversions#32890, systemId#32883]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(2345) Filter
Input [4]: [internalUUID#32884, baseUnitOfMeasure#32888, unitOfMeasureConversions#32890, systemId#32883]
Condition : isnotnull(internalUUID#32884)
(2346) Project
Output [3]: [internalUUID#32884, baseUnitOfMeasure#32888, unitOfMeasureConversions#32890]
Input [4]: [internalUUID#32884, baseUnitOfMeasure#32888, unitOfMeasureConversions#32890, systemId#32883]
(2347) Exchange
Input [3]: [internalUUID#32884, baseUnitOfMeasure#32888, unitOfMeasureConversions#32890]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120842]
(2348) BroadcastExchange
Input [3]: [internalUUID#32884, baseUnitOfMeasure#32888, unitOfMeasureConversions#32890]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122826]
(2349) BroadcastHashJoin
Left keys [1]: [product#32856]
Right keys [1]: [internalUUID#32884]
Join type: LeftOuter
Join condition: None
(2350) Project
Output [2]: [plant#32857, filter(unitOfMeasureConversions#32890, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34166) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34167)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32888.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32888.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32895]
Input [7]: [product#32856, plant#32857, _extract_code#34166, _extract_internalRefUUID#34167, internalUUID#32884, baseUnitOfMeasure#32888, unitOfMeasureConversions#32890]
(2351) Generate
Input [2]: [plant#32857, filteredUnitOfMeasureConversions#32895]
Arguments: explode(filteredUnitOfMeasureConversions#32895.quantityNumerator), [plant#32857, filteredUnitOfMeasureConversions#32895], true, [quantityNumerator#32896]
(2352) Project
Output [2]: [plant#32857, filteredUnitOfMeasureConversions#32895.quantityDenominator AS _extract_quantityDenominator#33517]
Input [3]: [plant#32857, filteredUnitOfMeasureConversions#32895, quantityNumerator#32896]
(2353) Generate
Input [2]: [plant#32857, _extract_quantityDenominator#33517]
Arguments: explode(_extract_quantityDenominator#33517), [plant#32857], true, [quantityDenominator#32897]
(2354) Project
Output [1]: [plant#32857]
Input [2]: [plant#32857, quantityDenominator#32897]
(2355) HashAggregate
Input [1]: [plant#32857]
Keys [1]: [plant#32857]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#32857]
(2356) Exchange
Input [1]: [plant#32857]
Arguments: hashpartitioning(plant#32857, 10), ENSURE_REQUIREMENTS, [plan_id=122835]
(2357) HashAggregate
Input [1]: [plant#32857]
Keys [1]: [plant#32857]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#32857]
(2358) BroadcastHashJoin
Left keys [1]: [plantUuid#32853]
Right keys [1]: [plant#32857]
Join type: Inner
Join condition: None
(2359) Project
Output [3]: [plantUuid#32853, storageLocId#32854, storageLocUuid#32855]
Input [4]: [plantUuid#32853, storageLocId#32854, storageLocUuid#32855, plant#32857]
(2360) BroadcastHashJoin
Left keys [2]: [coalesce(plant#32825.internalRefUUID, ), isnull(plant#32825.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#32853, ), isnull(plantUuid#32853)]
Join type: Inner
Join condition: None
(2361) Generate
Input [9]: [systemId#32822, internalUUID#32823, product#32824, plant#32825, calculationDateTime#32826, stockQuantities#32827, plantUuid#32853, storageLocId#32854, storageLocUuid#32855]
Arguments: explode(filter(stockQuantities#32827, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#32855) AND (lambda x#26016.storageLocation.Id = storageLocId#32854)), lambda x#26016, false))), [systemId#32822, internalUUID#32823, product#32824, plant#32825, calculationDateTime#32826, plantUuid#32853], false, [stockQuantity#32900]
(2362) ObjectHashAggregate
Input [7]: [systemId#32822, internalUUID#32823, product#32824, plant#32825, calculationDateTime#32826, plantUuid#32853, stockQuantity#32900]
Keys [5]: [plantUuid#32853, internalUUID#32823, plant#32825, product#32824, systemId#32822]
Functions [2]: [partial_first(calculationDateTime#32826, false), partial_collect_list(stockQuantity#32900, 0, 0)]
Aggregate Attributes [3]: [first#35217, valueSet#35218, buf#35219]
Results [8]: [plantUuid#32853, internalUUID#32823, plant#32825, product#32824, systemId#32822, first#35220, valueSet#35221, buf#35222]
(2363) ObjectHashAggregate
Input [8]: [plantUuid#32853, internalUUID#32823, plant#32825, product#32824, systemId#32822, first#35220, valueSet#35221, buf#35222]
Keys [5]: [plantUuid#32853, internalUUID#32823, plant#32825, product#32824, systemId#32822]
Functions [2]: [first(calculationDateTime#32826, false), collect_list(stockQuantity#32900, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#32826)()#26031, collect_list(stockQuantity#32900, 0, 0)#26032]
Results [4]: [product#32824, plant#32825, first(calculationDateTime#32826)()#26031 AS calculationDateTime#32901, collect_list(stockQuantity#32900, 0, 0)#26032 AS stockQuantities#32902]
(2364) Filter
Input [4]: [product#32824, plant#32825, calculationDateTime#32901, stockQuantities#32902]
Condition : ((size(stockQuantities#32902, true) > 0) AND isnotnull(calculationDateTime#32901))
(2365) Generate
Input [4]: [product#32824, plant#32825, calculationDateTime#32901, stockQuantities#32902]
Arguments: explode(stockQuantities#32902), [product#32824, plant#32825, calculationDateTime#32901], false, [stockQuantity#32903]
(2366) Filter
Input [4]: [product#32824, plant#32825, calculationDateTime#32901, stockQuantity#32903]
Condition : (((isnotnull(stockQuantity#32903.specialStockIndicator.code) AND isnotnull(stockQuantity#32903.stockType.code)) AND (stockQuantity#32903.specialStockIndicator.code = )) AND (stockQuantity#32903.stockType.code = 01))
(2367) Project
Output [4]: [plant#32825.internalRefUUID AS plantUuid#32905, product#32824.internalRefUUID AS productUuid#32907, calculationDateTime#32901, stockQuantity#32903.storagelocation.id AS storageLocId#32908]
Input [4]: [product#32824, plant#32825, calculationDateTime#32901, stockQuantity#32903]
(2368) Exchange
Input [4]: [plantUuid#32905, productUuid#32907, calculationDateTime#32901, storageLocId#32908]
Arguments: hashpartitioning(productUuid#32907, plantUuid#32905, 10), ENSURE_REQUIREMENTS, [plan_id=122868]
(2369) Sort
Input [4]: [plantUuid#32905, productUuid#32907, calculationDateTime#32901, storageLocId#32908]
Arguments: [productUuid#32907 ASC NULLS FIRST, plantUuid#32905 ASC NULLS FIRST], false, 0
(2370) Scan parquet
Output [3]: [product#32913, plant#32914, orderDateTime#32915]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2371) Filter
Input [3]: [product#32913, plant#32914, orderDateTime#32915]
Condition : ((isnotnull(orderDateTime#32915) AND isnotnull(plant#32914)) AND isnotnull(product#32913))
(2372) Exchange
Input [3]: [product#32913, plant#32914, orderDateTime#32915]
Arguments: hashpartitioning(product#32913, plant#32914, 10), REPARTITION_BY_NUM, [plan_id=121612]
(2373) Scan parquet
Output [4]: [plant#32919, product#32920, productionAspect#32922, systemId#32917]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(2374) Project
Output [4]: [plant#32919.internalRefUUID AS _extract_internalRefUUID#34169, product#32920.internalRefUUID AS _extract_internalRefUUID#34172, productionAspect#32922.productMovementPlants.unitOfIssue.code AS _extract_code#34170, productionAspect#32922.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#34171]
Input [4]: [plant#32919, product#32920, productionAspect#32922, systemId#32917]
(2375) Exchange
Input [4]: [_extract_internalRefUUID#34169, _extract_internalRefUUID#34172, _extract_code#34170, _extract_internalRefUUID#34171]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120867]
(2376) Project
Output [4]: [_extract_code#34170, _extract_internalRefUUID#34171, _extract_internalRefUUID#34172, _extract_internalRefUUID#34169]
Input [4]: [_extract_internalRefUUID#34169, _extract_internalRefUUID#34172, _extract_code#34170, _extract_internalRefUUID#34171]
(2377) BroadcastExchange
Input [4]: [_extract_code#34170, _extract_internalRefUUID#34171, _extract_internalRefUUID#34172, _extract_internalRefUUID#34169]
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=122851]
(2378) BroadcastHashJoin
Left keys [4]: [coalesce(product#32913, ), isnull(product#32913), coalesce(plant#32914, ), isnull(plant#32914)]
Right keys [4]: [coalesce(_extract_internalRefUUID#34172, ), isnull(_extract_internalRefUUID#34172), coalesce(_extract_internalRefUUID#34169, ), isnull(_extract_internalRefUUID#34169)]
Join type: LeftOuter
Join condition: None
(2379) Project
Output [5]: [product#32913, plant#32914, orderDateTime#32915, _extract_code#34170, _extract_internalRefUUID#34171]
Input [7]: [product#32913, plant#32914, orderDateTime#32915, _extract_code#34170, _extract_internalRefUUID#34171, _extract_internalRefUUID#34172, _extract_internalRefUUID#34169]
(2380) Scan parquet
Output [2]: [internalUUID#32927, systemId#32926]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(2381) Project
Output [1]: [internalUUID#32927]
Input [2]: [internalUUID#32927, systemId#32926]
(2382) Exchange
Input [1]: [internalUUID#32927]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120873]
(2383) BroadcastExchange
Input [1]: [internalUUID#32927]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=122855]
(2384) BroadcastHashJoin
Left keys [2]: [coalesce(plant#32914, ), isnull(plant#32914)]
Right keys [2]: [coalesce(internalUUID#32927, ), isnull(internalUUID#32927)]
Join type: LeftOuter
Join condition: None
(2385) Project
Output [5]: [product#32913, plant#32914, orderDateTime#32915, _extract_code#34170, _extract_internalRefUUID#34171]
Input [6]: [product#32913, plant#32914, orderDateTime#32915, _extract_code#34170, _extract_internalRefUUID#34171, internalUUID#32927]
(2386) Scan parquet
Output [4]: [internalUUID#32941, baseUnitOfMeasure#32945, unitOfMeasureConversions#32947, systemId#32940]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(2387) Filter
Input [4]: [internalUUID#32941, baseUnitOfMeasure#32945, unitOfMeasureConversions#32947, systemId#32940]
Condition : isnotnull(internalUUID#32941)
(2388) Project
Output [3]: [internalUUID#32941, baseUnitOfMeasure#32945, unitOfMeasureConversions#32947]
Input [4]: [internalUUID#32941, baseUnitOfMeasure#32945, unitOfMeasureConversions#32947, systemId#32940]
(2389) Exchange
Input [3]: [internalUUID#32941, baseUnitOfMeasure#32945, unitOfMeasureConversions#32947]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120879]
(2390) BroadcastExchange
Input [3]: [internalUUID#32941, baseUnitOfMeasure#32945, unitOfMeasureConversions#32947]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=122859]
(2391) BroadcastHashJoin
Left keys [1]: [product#32913]
Right keys [1]: [internalUUID#32941]
Join type: LeftOuter
Join condition: None
(2392) Project
Output [4]: [product#32913, plant#32914, orderDateTime#32915, filter(unitOfMeasureConversions#32947, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#34170) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#34171)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32945.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32945.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32952]
Input [8]: [product#32913, plant#32914, orderDateTime#32915, _extract_code#34170, _extract_internalRefUUID#34171, internalUUID#32941, baseUnitOfMeasure#32945, unitOfMeasureConversions#32947]
(2393) Generate
Input [4]: [product#32913, plant#32914, orderDateTime#32915, filteredUnitOfMeasureConversions#32952]
Arguments: explode(filteredUnitOfMeasureConversions#32952.quantityNumerator), [product#32913, plant#32914, orderDateTime#32915, filteredUnitOfMeasureConversions#32952], true, [quantityNumerator#32953]
(2394) Project
Output [4]: [product#32913, plant#32914, orderDateTime#32915, filteredUnitOfMeasureConversions#32952.quantityDenominator AS _extract_quantityDenominator#33521]
Input [5]: [product#32913, plant#32914, orderDateTime#32915, filteredUnitOfMeasureConversions#32952, quantityNumerator#32953]
(2395) Generate
Input [4]: [product#32913, plant#32914, orderDateTime#32915, _extract_quantityDenominator#33521]
Arguments: explode(_extract_quantityDenominator#33521), [product#32913, plant#32914, orderDateTime#32915], true, [quantityDenominator#32954]
(2396) Project
Output [3]: [product#32913, plant#32914, orderDateTime#32915]
Input [4]: [product#32913, plant#32914, orderDateTime#32915, quantityDenominator#32954]
(2397) Sort
Input [3]: [product#32913, plant#32914, orderDateTime#32915]
Arguments: [product#32913 ASC NULLS FIRST, plant#32914 ASC NULLS FIRST], false, 0
(2398) SortMergeJoin
Left keys [2]: [productUuid#32907, plantUuid#32905]
Right keys [2]: [product#32913, plant#32914]
Join type: Inner
Join condition: (calculationDateTime#32901 <= orderDateTime#32915)
(2399) Project
Output [4]: [plantUuid#32905 AS plant#32957, productUuid#32907 AS product#32958, storageLocId#32908, calculationDateTime#32901]
Input [7]: [plantUuid#32905, productUuid#32907, calculationDateTime#32901, storageLocId#32908, product#32913, plant#32914, orderDateTime#32915]
(2400) HashAggregate
Input [4]: [plant#32957, product#32958, storageLocId#32908, calculationDateTime#32901]
Keys [3]: [plant#32957, product#32958, storageLocId#32908]
Functions [1]: [partial_max(calculationDateTime#32901)]
Aggregate Attributes [1]: [max#35215]
Results [4]: [plant#32957, product#32958, storageLocId#32908, max#35216]
(2401) HashAggregate
Input [4]: [plant#32957, product#32958, storageLocId#32908, max#35216]
Keys [3]: [plant#32957, product#32958, storageLocId#32908]
Functions [1]: [max(calculationDateTime#32901)]
Aggregate Attributes [1]: [max(calculationDateTime#32901)#26109]
Results [4]: [plant#32957, product#32958, storageLocId#32908, max(calculationDateTime#32901)#26109 AS max_calc_datetime#32959]
(2402) Exchange
Input [4]: [plant#32957, product#32958, storageLocId#32908, max_calc_datetime#32959]
Arguments: hashpartitioning(coalesce(plant#32957, ), isnull(plant#32957), coalesce(product#32958, ), isnull(product#32958), coalesce(storageLocId#32908, ), isnull(storageLocId#32908), coalesce(max_calc_datetime#32959, 1970-01-01 00:00:00), isnull(max_calc_datetime#32959), 10), ENSURE_REQUIREMENTS, [plan_id=122878]
(2403) Sort
Input [4]: [plant#32957, product#32958, storageLocId#32908, max_calc_datetime#32959]
Arguments: [coalesce(plant#32957, ) ASC NULLS FIRST, isnull(plant#32957) ASC NULLS FIRST, coalesce(product#32958, ) ASC NULLS FIRST, isnull(product#32958) ASC NULLS FIRST, coalesce(storageLocId#32908, ) ASC NULLS FIRST, isnull(storageLocId#32908) ASC NULLS FIRST, coalesce(max_calc_datetime#32959, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#32959) ASC NULLS FIRST], false, 0
(2404) SortMergeJoin
Left keys [8]: [coalesce(plant#32820, ), isnull(plant#32820), coalesce(product#32821, ), isnull(product#32821), coalesce(storageLocId#32771, ), isnull(storageLocId#32771), coalesce(calculationDateTime#32764, 1970-01-01 00:00:00), isnull(calculationDateTime#32764)]
Right keys [8]: [coalesce(plant#32957, ), isnull(plant#32957), coalesce(product#32958, ), isnull(product#32958), coalesce(storageLocId#32908, ), isnull(storageLocId#32908), coalesce(max_calc_datetime#32959, 1970-01-01 00:00:00), isnull(max_calc_datetime#32959)]
Join type: Inner
Join condition: None
(2405) Project
Output [4]: [plant#32820, product#32821, calculationDateTime#32764, quantity#32773]
Input [9]: [plant#32820, product#32821, storageLocId#32771, calculationDateTime#32764, quantity#32773, plant#32957, product#32958, storageLocId#32908, max_calc_datetime#32959]
(2406) HashAggregate
Input [4]: [plant#32820, product#32821, calculationDateTime#32764, quantity#32773]
Keys [2]: [product#32821, plant#32820]
Functions [2]: [partial_min(calculationDateTime#32764), partial_sum(quantity#32773)]
Aggregate Attributes [2]: [min#35205, sum#35206]
Results [4]: [product#32821, plant#32820, min#35207, sum#35208]
(2407) Exchange
Input [4]: [product#32821, plant#32820, min#35207, sum#35208]
Arguments: hashpartitioning(product#32821, plant#32820, 10), ENSURE_REQUIREMENTS, [plan_id=122885]
(2408) HashAggregate
Input [4]: [product#32821, plant#32820, min#35207, sum#35208]
Keys [2]: [product#32821, plant#32820]
Functions [2]: [min(calculationDateTime#32764), sum(quantity#32773)]
Aggregate Attributes [2]: [min(calculationDateTime#32764)#26265, sum(quantity#32773)#26264]
Results [4]: [product#32821, plant#32820, min(calculationDateTime#32764)#26265 AS minCalculationDateTime#32961, round(sum(quantity#32773)#26264, 0) AS roundedQuantitySum#32962]
(2409) Sort
Input [4]: [product#32821, plant#32820, minCalculationDateTime#32961, roundedQuantitySum#32962]
Arguments: [product#32821 ASC NULLS FIRST, plant#32820 ASC NULLS FIRST], false, 0
(2410) SortMergeJoin
Left keys [2]: [product#32641, plant#32642]
Right keys [2]: [product#32821, plant#32820]
Join type: LeftOuter
Join condition: None
(2411) Project
Output [8]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32684, CASE WHEN isnotnull(minCalculationDateTime#32961) THEN minCalculationDateTime#32961 ELSE orderDateTime#32643 END AS stockDatetime#32963, CASE WHEN isnotnull(roundedQuantitySum#32962) THEN array(roundedQuantitySum#32962) ELSE [0.0] END AS stockBatchQuantities#32964]
Input [10]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32684, product#32821, plant#32820, minCalculationDateTime#32961, roundedQuantitySum#32962]
(2412) Scan parquet
Output [9]: [product#32966, plant#32967, demandChannel#32968, demandStream#32969, considerVariance#32970, demandTimeBuckets#32971, demandPointInTimeStart#32972, demandPointInTimeEnd#32973, demandPointInTime#32974]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000005/0_1_10000000005]
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>>>
(2413) Filter
Input [9]: [product#32966, plant#32967, demandChannel#32968, demandStream#32969, considerVariance#32970, demandTimeBuckets#32971, demandPointInTimeStart#32972, demandPointInTimeEnd#32973, demandPointInTime#32974]
Condition : (isnotnull(product#32966) AND isnotnull(plant#32967))
(2414) BroadcastExchange
Input [9]: [product#32966, plant#32967, demandChannel#32968, demandStream#32969, considerVariance#32970, demandTimeBuckets#32971, demandPointInTimeStart#32972, demandPointInTimeEnd#32973, demandPointInTime#32974]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=122894]
(2415) BroadcastHashJoin
Left keys [2]: [product#32641, plant#32642]
Right keys [2]: [product#32966, plant#32967]
Join type: LeftOuter
Join condition: None
(2416) Project
Output [9]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32684, stockDatetime#32963, stockBatchQuantities#32964, CASE WHEN isnotnull(product#32966) THEN struct(demandChannel, demandChannel#32968, demandStream, demandStream#32969, considerVariance, considerVariance#32970, demandTimeBuckets, demandTimeBuckets#32971, demandPointInTimeStart, demandPointInTimeStart#32972, demandPointInTimeEnd, demandPointInTimeEnd#32973, demandPointInTime, demandPointInTime#32974) END AS rawDemands#32975]
Input [17]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32684, stockDatetime#32963, stockBatchQuantities#32964, product#32966, plant#32967, demandChannel#32968, demandStream#32969, considerVariance#32970, demandTimeBuckets#32971, demandPointInTimeStart#32972, demandPointInTimeEnd#32973, demandPointInTime#32974]
(2417) ObjectHashAggregate
Input [9]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32684, stockDatetime#32963, stockBatchQuantities#32964, rawDemands#32975]
Keys [9]: [product#32641, plant#32642, orderDateTime#32643, knownfloatingpointnormalized(if (isnull(productPlant#32653)) null else named_struct(systemId, productPlant#32653.systemId, internalUUID, productPlant#32653.internalUUID, plant, productPlant#32653.plant, product, productPlant#32653.product, blockedForReplenishmentStartingFrom, productPlant#32653.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#32653.productionAspect)) null else named_struct(productMovementPlants, productPlant#32653.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#32653.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#32653.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#32653.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#32653.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#32653.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#32653.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#32653.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#32653.salesPlant, listing, productPlant#32653.listing)) AS productPlant#32653, timezonecode#32667, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#32684)) AS outboundUnit#32684, stockDatetime#32963, knownfloatingpointnormalized(transform(stockBatchQuantities#32964, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#35202)), lambda arg#35202, false))) AS stockBatchQuantities#32964, [7226582400000000] AS [7226582400000000]#35201]
Functions [1]: [partial_collect_list(rawDemands#32975, 0, 0)]
Aggregate Attributes [1]: [buf#35203]
Results [10]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32684, stockDatetime#32963, stockBatchQuantities#32964, [7226582400000000]#35201, buf#35204]
(2418) ObjectHashAggregate
Input [10]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32684, stockDatetime#32963, stockBatchQuantities#32964, [7226582400000000]#35201, buf#35204]
Keys [9]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32684, stockDatetime#32963, stockBatchQuantities#32964, [7226582400000000]#35201]
Functions [1]: [collect_list(rawDemands#32975, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#32975, 0, 0)#26357]
Results [10]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32684, stockDatetime#32963, stockBatchQuantities#32964, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#32965, collect_list(rawDemands#32975, 0, 0)#26357 AS rawDemands#32976]
(2419) DeserializeToObject
Input [10]: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32684, stockDatetime#32963, stockBatchQuantities#32964, stockBatchShelfLifeEndDatetimes#32965, rawDemands#32976]
Arguments: createexternalrow(invoke(product#32641.toString()), invoke(plant#32642.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#32643)), if (isnull(productPlant#32653)) null else createexternalrow(invoke(productPlant#32653.systemId.toString()), invoke(productPlant#32653.internalUUID.toString()), if (isnull(productPlant#32653.plant)) null else createexternalrow(invoke(productPlant#32653.plant.internalRefUUID.toString()), invoke(productPlant#32653.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#32653.product)) null else createexternalrow(invoke(productPlant#32653.product.internalRefUUID.toString()), invoke(productPlant#32653.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#32653.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#32653.productionAspect)) null else createexternalrow(if (isnull(productPlant#32653.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#32653.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#32653.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#32653.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#32653.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#32653.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#32653.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#32653.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#32653.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#32653.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#32653.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#32653.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#32653.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#32653.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#32653.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#32653.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#32653.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#32653.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#32653.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#32653.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#32653.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(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(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#32653.salesPlant)) null else createexternalrow(if (isnull(productPlant#32653.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#32653.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#32653.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#32653.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(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#32667.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#32684)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#32963)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#32964, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#32965, 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#32976, 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(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#26378: org.apache.spark.sql.Row
(2420) MapElements
Input [1]: [obj#26378]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@5081ce9e, obj#26383: org.apache.spark.sql.Row
(2421) SerializeFromObject
Input [1]: [obj#26383]
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#32977, 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#32978]
(2422) Exchange
Input [2]: [product#32977, plant#32978]
Arguments: hashpartitioning(coalesce(plant#32978, ), isnull(plant#32978), coalesce(product#32977, ), isnull(product#32977), 10), ENSURE_REQUIREMENTS, [plan_id=122905]
(2423) Sort
Input [2]: [product#32977, plant#32978]
Arguments: [coalesce(plant#32978, ) ASC NULLS FIRST, isnull(plant#32978) ASC NULLS FIRST, coalesce(product#32977, ) ASC NULLS FIRST, isnull(product#32977) ASC NULLS FIRST], false, 0
(2424) SortMergeJoin
Left keys [4]: [coalesce(plant#32317, ), isnull(plant#32317), coalesce(product#32316, ), isnull(product#32316)]
Right keys [4]: [coalesce(plant#32978, ), isnull(plant#32978), coalesce(product#32977, ), isnull(product#32977)]
Join type: LeftOuter
Join condition: None
(2425) Project
Output [3]: [product#32316, plant#32317, stockDatetime#32638]
Input [5]: [product#32316, plant#32317, stockDatetime#32638, product#32977, plant#32978]
(2426) Scan parquet
Output [6]: [internalUUID#32982, id#32983, supplier#32985, isMarkedForDeletion#32988, items#32989, systemId#32981]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(2427) Filter
Input [6]: [internalUUID#32982, id#32983, supplier#32985, isMarkedForDeletion#32988, items#32989, systemId#32981]
Condition : (((isnotnull(isMarkedForDeletion#32988) AND NOT isMarkedForDeletion#32988) AND (size(items#32989, true) > 0)) AND isnotnull(items#32989))
(2428) Project
Output [4]: [internalUUID#32982, id#32983, supplier#32985, items#32989]
Input [6]: [internalUUID#32982, id#32983, supplier#32985, isMarkedForDeletion#32988, items#32989, systemId#32981]
(2429) Exchange
Input [4]: [internalUUID#32982, id#32983, supplier#32985, items#32989]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=120911]
(2430) Generate
Input [4]: [internalUUID#32982, id#32983, supplier#32985, items#32989]
Arguments: explode(items#32989), [internalUUID#32982, id#32983, supplier#32985], false, [item#32990]
(2431) Filter
Input [4]: [internalUUID#32982, id#32983, supplier#32985, item#32990]
Condition : ((((isnotnull(item#32990.deletionIndicator) AND isnotnull(item#32990.completeIndicator)) AND isnotnull(item#32990.returnIndicator)) AND ((NOT item#32990.deletionIndicator AND NOT item#32990.completeIndicator) AND NOT item#32990.returnIndicator)) AND isnotnull(item#32990.product.internalRefUUID))
(2432) Project
Output [9]: [id#32983, internalUUID#32982, supplier#32985.internalRefUUID AS supplierUuid#32991, item#32990.product.internalRefUUID AS product#32993, item#32990.quantityUnit.code AS quantityUom#32995, item#32990.quantityUnit.internalRefUUID AS quantityUomUuid#32996, item#32990.quantityNumerator AS quantityNumerator#32997, item#32990.quantityDenominator AS quantityDenominator#32998, item#32990.scheduleLines AS scheduleLines#32999]
Input [4]: [internalUUID#32982, id#32983, supplier#32985, item#32990]
(2433) BroadcastExchange
Input [9]: [id#32983, internalUUID#32982, supplierUuid#32991, product#32993, quantityUom#32995, quantityUomUuid#32996, quantityNumerator#32997, quantityDenominator#32998, scheduleLines#32999]
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=122911]
(2434) BroadcastHashJoin
Left keys [4]: [coalesce(product#32316, ), isnull(product#32316), coalesce(plant#32317, ), isnull(plant#32317)]
Right keys [4]: [coalesce(product#32993, ), isnull(product#32993), coalesce(supplierUuid#32991, ), isnull(supplierUuid#32991)]
Join type: Inner
Join condition: None
(2435) Project
Output [3]: [product#32993, plant#32317, filter(transform(filter(transform(scheduleLines#32999, lambdafunction(struct(openQty, (greatest((lambda x_16#29113.quantity - coalesce(lambda x_16#29113.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_16#29113.productAvailabilityDateTime, lambda x_16#29113.deliveryAt)), lambda x_16#29113, false)), lambdafunction((lambda x_17#29114.availabilityDatetime < stockDatetime#32638), lambda x_17#29114, false)), lambdafunction(struct(documentId, id#32983, documentUuid, internalUUID#32982, openQty, lambda x_18#29115.openQty, openQtyInBaseUnit, ((lambda x_18#29115.openQty * quantityNumerator#32997) / quantityDenominator#32998), qtyUom, quantityUom#32995, qtyUomUuid, quantityUomUuid#32996, availabilityDatetime, lambda x_18#29115.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_18#29115, false)), lambdafunction(NOT (lambda x_19#29116.openQty = 0.0), lambda x_19#29116, false)) AS openGoodsMovements#33001]
Input [12]: [product#32316, plant#32317, stockDatetime#32638, id#32983, internalUUID#32982, supplierUuid#32991, product#32993, quantityUom#32995, quantityUomUuid#32996, quantityNumerator#32997, quantityDenominator#32998, scheduleLines#32999]
(2436) ObjectHashAggregate
Input [3]: [product#32993, plant#32317, openGoodsMovements#33001]
Keys [2]: [product#32993, plant#32317]
Functions [1]: [partial_collect_list(openGoodsMovements#33001, 0, 0)]
Aggregate Attributes [1]: [buf#35183]
Results [3]: [product#32993, plant#32317, buf#35184]
(2437) Exchange
Input [3]: [product#32993, plant#32317, buf#35184]
Arguments: hashpartitioning(product#32993, plant#32317, 10), ENSURE_REQUIREMENTS, [plan_id=122916]
(2438) ObjectHashAggregate
Input [3]: [product#32993, plant#32317, buf#35184]
Keys [2]: [product#32993, plant#32317]
Functions [1]: [collect_list(openGoodsMovements#33001, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#33001, 0, 0)#29132]
Results [3]: [product#32993, plant#32317, flatten(collect_list(openGoodsMovements#33001, 0, 0)#29132) AS openGoodsMovements#33002]
(2439) Filter
Input [3]: [product#32993, plant#32317, openGoodsMovements#33002]
Condition : (size(openGoodsMovements#33002, false) > 0)
(2440) Union
(2441) ObjectHashAggregate
Input [3]: [product#32304, plant#32303, openGoodsMovements#32315]
Keys [2]: [product#32304, plant#32303]
Functions [1]: [partial_collect_list(openGoodsMovements#32315, 0, 0)]
Aggregate Attributes [1]: [buf#35181]
Results [3]: [product#32304, plant#32303, buf#35182]
(2442) Exchange
Input [3]: [product#32304, plant#32303, buf#35182]
Arguments: hashpartitioning(product#32304, plant#32303, 10), ENSURE_REQUIREMENTS, [plan_id=122922]
(2443) ObjectHashAggregate
Input [3]: [product#32304, plant#32303, buf#35182]
Keys [2]: [product#32304, plant#32303]
Functions [1]: [collect_list(openGoodsMovements#32315, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#32315, 0, 0)#29872]
Results [3]: [product#32304, plant#32303, flatten(collect_list(openGoodsMovements#32315, 0, 0)#29872) AS openGoodsMovements#33003]
(2444) Project
Output [5]: [product#32304, plant#32303, openGoodsMovements#33003.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#33642, openGoodsMovements#33003.availabilityDatetime AS _extract_availabilityDatetime#33643, openGoodsMovements#33003.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#33644]
Input [3]: [product#32304, plant#32303, openGoodsMovements#33003]
(2445) Sort
Input [5]: [product#32304, plant#32303, _extract_openQtyInBaseUnit#33642, _extract_availabilityDatetime#33643, _extract_shelfLifeEndDatetime#33644]
Arguments: [product#32304 ASC NULLS FIRST, plant#32303 ASC NULLS FIRST], false, 0
(2446) SortMergeJoin
Left keys [2]: [product#30889, plant#30890]
Right keys [2]: [product#32304, plant#32303]
Join type: LeftOuter
Join condition: None
(2447) Project
Output [16]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#31213, dayBucketDemands#31552, pointInTimeDemands#31553, coalesce(_extract_openQtyInBaseUnit#33642, []) AS openGoodsMovementQuantities#33004, coalesce(_extract_availabilityDatetime#33643, []) AS openGoodsMovementAvailabilityDatetimes#33005, coalesce(_extract_shelfLifeEndDatetime#33644, []) AS openGoodsMovementShelfLifeEndDatetimes#33006, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#33007, array_sort(filter(CASE WHEN isnotnull(productPlant#30901.listing) THEN productPlant#30901.listing ELSE [] END, lambdafunction(lambda listing#30833.isListed, lambda listing#30833, false)), lambdafunction(if ((isnull(lambda left#30835) AND isnull(lambda right#30836))) 0 else if (isnull(lambda left#30835)) 1 else if (isnull(lambda right#30836)) -1 else if ((lambda left#30835 < lambda right#30836)) -1 else if ((lambda left#30835 > lambda right#30836)) 1 else 0, lambda left#30835, lambda right#30836, false), false) AS listing#30834]
Input [15]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, dayBucketDemands#31552, pointInTimeDemands#31553, product#32304, plant#32303, _extract_openQtyInBaseUnit#33642, _extract_availabilityDatetime#33643, _extract_shelfLifeEndDatetime#33644]
(2448) DeserializeToObject
Input [16]: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, stockBatchShelfLifeEndDatetimes#31213, dayBucketDemands#31552, pointInTimeDemands#31553, openGoodsMovementQuantities#33004, openGoodsMovementAvailabilityDatetimes#33005, openGoodsMovementShelfLifeEndDatetimes#33006, configuration#33007, listing#30834]
Arguments: createexternalrow(invoke(product#30889.toString()), invoke(plant#30890.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#30891)), if (isnull(productPlant#30901)) null else createexternalrow(invoke(productPlant#30901.systemId.toString()), invoke(productPlant#30901.internalUUID.toString()), if (isnull(productPlant#30901.plant)) null else createexternalrow(invoke(productPlant#30901.plant.internalRefUUID.toString()), invoke(productPlant#30901.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#30901.product)) null else createexternalrow(invoke(productPlant#30901.product.internalRefUUID.toString()), invoke(productPlant#30901.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#30901.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#30901.productionAspect)) null else createexternalrow(if (isnull(productPlant#30901.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#30901.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#30901.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#30901.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#30901.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#30901.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#30901.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#30901.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#30901.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#30901.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#30901.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#30901.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#30901.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#30901.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#30901.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#30901.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#30901.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#30901.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#30901.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#30901.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#30901.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(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(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#30901.salesPlant)) null else createexternalrow(if (isnull(productPlant#30901.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#30901.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#30901.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, -21), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#30901.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(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#30915.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#30932)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#31211)), mapobjects(lambdavariable(MapObject, DoubleType, true, -22), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -22))), stockBatchQuantities#31212, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -23), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -23))), stockBatchShelfLifeEndDatetimes#31213, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, 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, -24), createexternalrow(invoke(lambdavariable(MapObject, 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, -24).demandChannel.toString()), invoke(lambdavariable(MapObject, 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, -24).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, 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, -24).considerVariance)), mapobjects(lambdavariable(MapObject, DoubleType, false, -25), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, false, -25))), lambdavariable(MapObject, 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, -24).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -26), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -26))), lambdavariable(MapObject, 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, -24).demandVariances, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -27), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -27))), lambdavariable(MapObject, 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, -24).anchorDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StringType, false, -28), invoke(lambdavariable(MapObject, StringType, false, -28).toString()), lambdavariable(MapObject, 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, -24).anchorWeekdays, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, IntegerType, false, -29), static_invoke(java.lang.Integer.valueOf(lambdavariable(MapObject, IntegerType, false, -29))), lambdavariable(MapObject, 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, -24).anchorIndices, Some(class scala.collection.mutable.ArraySeq)), 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)), dayBucketDemands#31552, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, 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, -30), createexternalrow(invoke(lambdavariable(MapObject, 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, -30).demandChannel.toString()), invoke(lambdavariable(MapObject, 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, -30).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, 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, -30).considerVariance)), mapobjects(lambdavariable(MapObject, TimestampType, false, -31), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -31))), lambdavariable(MapObject, 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, -30).demandDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, false, -32), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, false, -32))), lambdavariable(MapObject, 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, -30).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -33), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -33))), lambdavariable(MapObject, 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, -30).demandVariances, 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(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, -30).horizonStartDatetime)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, 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, -30).horizonEndDatetime)), 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)), pointInTimeDemands#31553, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -34), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -34))), openGoodsMovementQuantities#33004, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, -35), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, true, -35))), openGoodsMovementAvailabilityDatetimes#33005, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -36), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -36))), openGoodsMovementShelfLifeEndDatetimes#33006, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37), createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37).configurationValidityDatetime)), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37).configurationName.toString()), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37).configurationValue.toString()), StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false)), configuration#33007, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), listing#30834, 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(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), ... 7 more fields), obj#30869: org.apache.spark.sql.Row
(2449) MapElements
Input [1]: [obj#30869]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.ListingSnapshotEnhancementImpl$$Lambda/0x0000000801f6de40@134cd86f, obj#30876: org.apache.spark.sql.Row
(2450) SerializeFromObject
Input [1]: [obj#30876]
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#30883, 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#30884, mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -17), static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -17), StringType, ObjectType(class java.lang.String)))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 2, timeDependentSettingsName), ArrayType(StringType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsName#30885, mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -18), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -18), TimestampType, ObjectType(class java.sql.Timestamp)))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 3, timeDependentSettingsStartDatetime), ArrayType(TimestampType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsStartDatetime#30886, mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -19), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -19), TimestampType, ObjectType(class java.sql.Timestamp)))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 4, timeDependentSettingsEndDatetime), ArrayType(TimestampType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsEndDatetime#30887, if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, timeDependentSettingsValue), ArrayType(DoubleType,true), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, timeDependentSettingsValue), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -20), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -20), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, timeDependentSettingsValue), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsValue#30888]
(2451) Filter
Input [6]: [product#30883, plant#30884, timeDependentSettingsName#30885, timeDependentSettingsStartDatetime#30886, timeDependentSettingsEndDatetime#30887, timeDependentSettingsValue#30888]
Condition : (isnotnull(product#30883) AND isnotnull(plant#30884))
(2452) Exchange
Input [6]: [product#30883, plant#30884, timeDependentSettingsName#30885, timeDependentSettingsStartDatetime#30886, timeDependentSettingsEndDatetime#30887, timeDependentSettingsValue#30888]
Arguments: hashpartitioning(product#30883, plant#30884, 10), ENSURE_REQUIREMENTS, [plan_id=122938]
(2453) Sort
Input [6]: [product#30883, plant#30884, timeDependentSettingsName#30885, timeDependentSettingsStartDatetime#30886, timeDependentSettingsEndDatetime#30887, timeDependentSettingsValue#30888]
Arguments: [product#30883 ASC NULLS FIRST, plant#30884 ASC NULLS FIRST], false, 0
(2454) SortMergeJoin
Left keys [2]: [product#25911, plant#25912]
Right keys [2]: [product#30883, plant#30884]
Join type: LeftOuter
Join condition: None
(2455) Project
Output [16]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#26317, dayBucketDemands#26390, pointInTimeDemands#26391, openGoodsMovementQuantities#30587, openGoodsMovementAvailabilityDatetimes#30588, openGoodsMovementShelfLifeEndDatetimes#30589, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#30690, CASE WHEN isnotnull(timeDependentSettingsName#30885) THEN timeDependentSettingsName#30885 ELSE [] END AS timeDependentSettingsName#33162, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#30886) THEN timeDependentSettingsStartDatetime#30886 ELSE [] END AS timeDependentSettingsStartDatetime#33163, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#30887) THEN timeDependentSettingsEndDatetime#30887 ELSE [] END AS timeDependentSettingsEndDatetime#33164, CASE WHEN isnotnull(timeDependentSettingsValue#30888) THEN timeDependentSettingsValue#30888 ELSE [] END AS timeDependentSettingsValue#33165]
Input [16]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, dayBucketDemands#26390, pointInTimeDemands#26391, openGoodsMovementQuantities#30587, openGoodsMovementAvailabilityDatetimes#30588, openGoodsMovementShelfLifeEndDatetimes#30589, product#30883, plant#30884, timeDependentSettingsName#30885, timeDependentSettingsStartDatetime#30886, timeDependentSettingsEndDatetime#30887, timeDependentSettingsValue#30888]
(2456) AdaptiveSparkPlan
Output [16]: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, stockBatchShelfLifeEndDatetimes#26317, dayBucketDemands#26390, pointInTimeDemands#26391, openGoodsMovementQuantities#30587, openGoodsMovementAvailabilityDatetimes#30588, openGoodsMovementShelfLifeEndDatetimes#30589, configuration#30690, timeDependentSettingsName#33162, timeDependentSettingsStartDatetime#33163, timeDependentSettingsEndDatetime#33164, timeDependentSettingsValue#33165]
Arguments: isFinalPlan=false