== 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 BuildLeft (177)
: : :- BroadcastQueryStage (128), Statistics(sizeInBytes=2.0 MiB, rowCount=40)
: : : +- BroadcastExchange (127)
: : : +- 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)
: : +- AQEShuffleRead (176)
: : +- ShuffleQueryStage (175), Statistics(sizeInBytes=4.4 KiB, rowCount=40)
: : +- Exchange (174)
: : +- * HashAggregate (173)
: : +- * HashAggregate (172)
: : +- * Project (171)
: : +- * BroadcastHashJoin Inner BuildLeft (170)
: : :- BroadcastQueryStage (151), Statistics(sizeInBytes=2.0 MiB, rowCount=390)
: : : +- BroadcastExchange (150)
: : : +- AQEShuffleRead (149)
: : : +- ShuffleQueryStage (148), Statistics(sizeInBytes=42.7 KiB, rowCount=390)
: : : +- Exchange (147)
: : : +- * Project (146)
: : : +- * Filter (145)
: : : +- * Generate (144)
: : : +- * Filter (143)
: : : +- ObjectHashAggregate (142)
: : : +- ObjectHashAggregate (141)
: : : +- Generate (140)
: : : +- * BroadcastHashJoin Inner BuildLeft (139)
: : : :- BroadcastQueryStage (130), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : +- ReusedExchange (129)
: : : +- * Project (138)
: : : +- * BroadcastHashJoin Inner BuildLeft (137)
: : : :- BroadcastQueryStage (132), Statistics(sizeInBytes=2.0 MiB, rowCount=9)
: : : : +- ReusedExchange (131)
: : : +- * HashAggregate (136)
: : : +- AQEShuffleRead (135)
: : : +- ShuffleQueryStage (134), Statistics(sizeInBytes=4.1 KiB, rowCount=87)
: : : +- ReusedExchange (133)
: : +- * Project (169)
: : +- * Generate (168)
: : +- * Project (167)
: : +- * Generate (166)
: : +- Project (165)
: : +- * BroadcastHashJoin LeftOuter BuildRight (164)
: : :- * Project (161)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (160)
: : : :- * Project (157)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (156)
: : : : :- ShuffleQueryStage (153), Statistics(sizeInBytes=18.3 KiB, rowCount=195)
: : : : : +- ReusedExchange (152)
: : : : +- BroadcastQueryStage (155), Statistics(sizeInBytes=2.1 MiB, rowCount=1.52E+3)
: : : : +- ReusedExchange (154)
: : : +- BroadcastQueryStage (159), Statistics(sizeInBytes=2.0 MiB, rowCount=27)
: : : +- ReusedExchange (158)
: : +- BroadcastQueryStage (163), Statistics(sizeInBytes=2.0 MiB, rowCount=150)
: : +- ReusedExchange (162)
: +- 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#1102, plant#1103, orderDateTime#1104]
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/10000000004/shardId=0_1_10000000004]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2) ColumnarToRow [codegen id : 1]
Input [3]: [product#1102, plant#1103, orderDateTime#1104]
(3) Exchange
Input [3]: [product#1102, plant#1103, orderDateTime#1104]
Arguments: hashpartitioning(product#1102, plant#1103, 10), REPARTITION_BY_NUM, [plan_id=11731]
(4) ShuffleQueryStage
Output [3]: [product#1102, plant#1103, orderDateTime#1104]
Arguments: 0
(5) Scan parquet
Output [4]: [plant#1109, product#1110, productionAspect#1112, systemId#1107]
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#1109, product#1110, productionAspect#1112, systemId#1107]
(7) Project [codegen id : 2]
Output [4]: [plant#1109.internalRefUUID AS _extract_internalRefUUID#9249, product#1110.internalRefUUID AS _extract_internalRefUUID#9246, productionAspect#1112.productMovementPlants.unitOfIssue.code AS _extract_code#9247, productionAspect#1112.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9248]
Input [4]: [plant#1109, product#1110, productionAspect#1112, systemId#1107]
(8) Exchange
Input [4]: [_extract_internalRefUUID#9249, _extract_internalRefUUID#9246, _extract_code#9247, _extract_internalRefUUID#9248]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=11745]
(9) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#9249, _extract_internalRefUUID#9246, _extract_code#9247, _extract_internalRefUUID#9248]
Arguments: 1
(10) Project [codegen id : 199]
Output [4]: [_extract_code#9247, _extract_internalRefUUID#9248, _extract_internalRefUUID#9246, _extract_internalRefUUID#9249]
Input [4]: [_extract_internalRefUUID#9249, _extract_internalRefUUID#9246, _extract_code#9247, _extract_internalRefUUID#9248]
(11) BroadcastExchange
Input [4]: [_extract_code#9247, _extract_internalRefUUID#9248, _extract_internalRefUUID#9246, _extract_internalRefUUID#9249]
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=55679]
(12) BroadcastQueryStage
Output [4]: [_extract_code#9247, _extract_internalRefUUID#9248, _extract_internalRefUUID#9246, _extract_internalRefUUID#9249]
Arguments: 385
(13) BroadcastHashJoin [codegen id : 373]
Left keys [4]: [coalesce(product#1102, ), isnull(product#1102), coalesce(plant#1103, ), isnull(plant#1103)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9246, ), isnull(_extract_internalRefUUID#9246), coalesce(_extract_internalRefUUID#9249, ), isnull(_extract_internalRefUUID#9249)]
Join type: LeftOuter
Join condition: None
(14) Project [codegen id : 373]
Output [5]: [product#1102, plant#1103, orderDateTime#1104, _extract_code#9247, _extract_internalRefUUID#9248]
Input [7]: [product#1102, plant#1103, orderDateTime#1104, _extract_code#9247, _extract_internalRefUUID#9248, _extract_internalRefUUID#9246, _extract_internalRefUUID#9249]
(15) Scan parquet
Output [2]: [internalUUID#1120, systemId#1119]
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#1120, systemId#1119]
(17) Project [codegen id : 3]
Output [1]: [internalUUID#1120]
Input [2]: [internalUUID#1120, systemId#1119]
(18) Exchange
Input [1]: [internalUUID#1120]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=11764]
(19) ShuffleQueryStage
Output [1]: [internalUUID#1120]
Arguments: 2
(20) BroadcastExchange
Input [1]: [internalUUID#1120]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=11772]
(21) BroadcastQueryStage
Output [1]: [internalUUID#1120]
Arguments: 386
(22) BroadcastHashJoin [codegen id : 373]
Left keys [2]: [coalesce(plant#1103, ), isnull(plant#1103)]
Right keys [2]: [coalesce(internalUUID#1120, ), isnull(internalUUID#1120)]
Join type: LeftOuter
Join condition: None
(23) Project [codegen id : 373]
Output [5]: [product#1102, plant#1103, orderDateTime#1104, _extract_code#9247, _extract_internalRefUUID#9248]
Input [6]: [product#1102, plant#1103, orderDateTime#1104, _extract_code#9247, _extract_internalRefUUID#9248, internalUUID#1120]
(24) Scan parquet
Output [4]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142, systemId#1135]
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#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142, systemId#1135]
(26) Filter [codegen id : 4]
Input [4]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142, systemId#1135]
Condition : isnotnull(internalUUID#1136)
(27) Project [codegen id : 4]
Output [3]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142]
Input [4]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142, systemId#1135]
(28) Exchange
Input [3]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=11784]
(29) ShuffleQueryStage
Output [3]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142]
Arguments: 3
(30) BroadcastExchange
Input [3]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=11794]
(31) BroadcastQueryStage
Output [3]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142]
Arguments: 387
(32) BroadcastHashJoin [codegen id : 373]
Left keys [1]: [product#1102]
Right keys [1]: [internalUUID#1136]
Join type: LeftOuter
Join condition: None
(33) Project
Output [4]: [product#1102, plant#1103, orderDateTime#1104, filter(unitOfMeasureConversions#1142, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9247) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9248)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1140.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1140.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1148]
Input [8]: [product#1102, plant#1103, orderDateTime#1104, _extract_code#9247, _extract_internalRefUUID#9248, internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142]
(34) Project [codegen id : 374]
Output [5]: [product#1102, plant#1103, orderDateTime#1104, filteredUnitOfMeasureConversions#1148.quantityDenominator AS _extract_quantityDenominator#8741, filteredUnitOfMeasureConversions#1148.quantityNumerator AS _extract_quantityNumerator#8742]
Input [4]: [product#1102, plant#1103, orderDateTime#1104, filteredUnitOfMeasureConversions#1148]
(35) Generate [codegen id : 374]
Input [5]: [product#1102, plant#1103, orderDateTime#1104, _extract_quantityDenominator#8741, _extract_quantityNumerator#8742]
Arguments: explode(_extract_quantityNumerator#8742), [product#1102, plant#1103, orderDateTime#1104, _extract_quantityDenominator#8741], true, [quantityNumerator#1156]
(36) Generate [codegen id : 374]
Input [5]: [product#1102, plant#1103, orderDateTime#1104, _extract_quantityDenominator#8741, quantityNumerator#1156]
Arguments: explode(_extract_quantityDenominator#8741), [product#1102, plant#1103, orderDateTime#1104, quantityNumerator#1156], true, [quantityDenominator#1159]
(37) Project [codegen id : 374]
Output [4]: [product#1102, plant#1103, orderDateTime#1104, (cast(quantityNumerator#1156 as double) / cast(quantityDenominator#1159 as double)) AS outboundUnit#1160]
Input [5]: [product#1102, plant#1103, orderDateTime#1104, quantityNumerator#1156, quantityDenominator#1159]
(38) Project [codegen id : 374]
Output [4]: [product#1102, plant#1103, orderDateTime#1104, CASE WHEN (isnull(outboundUnit#1160) OR (outboundUnit#1160 <= 0.0)) THEN 1.0 ELSE outboundUnit#1160 END AS outboundUnit#1161]
Input [4]: [product#1102, plant#1103, orderDateTime#1104, outboundUnit#1160]
(39) Scan parquet
Output [6]: [internalUUID#1199, product#1200, plant#1201, calculationDateTime#1202, stockQuantities#1203, systemId#1198]
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#1199, product#1200, plant#1201, calculationDateTime#1202, stockQuantities#1203, systemId#1198]
(41) Filter [codegen id : 5]
Input [6]: [internalUUID#1199, product#1200, plant#1201, calculationDateTime#1202, stockQuantities#1203, systemId#1198]
Condition : (isnotnull(plant#1201.internalRefUUID) AND isnotnull(product#1200.internalRefUUID))
(42) Project [codegen id : 5]
Output [6]: [systemId#1198, internalUUID#1199, product#1200, plant#1201, calculationDateTime#1202, stockQuantities#1203]
Input [6]: [internalUUID#1199, product#1200, plant#1201, calculationDateTime#1202, stockQuantities#1203, systemId#1198]
(43) Exchange
Input [6]: [systemId#1198, internalUUID#1199, product#1200, plant#1201, calculationDateTime#1202, stockQuantities#1203]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=11812]
(44) ShuffleQueryStage
Output [6]: [systemId#1198, internalUUID#1199, product#1200, plant#1201, calculationDateTime#1202, stockQuantities#1203]
Arguments: 4
(45) BroadcastExchange
Input [6]: [systemId#1198, internalUUID#1199, product#1200, plant#1201, calculationDateTime#1202, stockQuantities#1203]
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=11822]
(46) BroadcastQueryStage
Output [6]: [systemId#1198, internalUUID#1199, product#1200, plant#1201, calculationDateTime#1202, stockQuantities#1203]
Arguments: 388
(47) Scan parquet
Output [2]: [marketUnit#1162, distributionCenters#1168]
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#1162, distributionCenters#1168]
(49) Filter [codegen id : 6]
Input [2]: [marketUnit#1162, distributionCenters#1168]
Condition : (((marketUnit#1162 <=> DIP_1691) AND (size(distributionCenters#1168, true) > 0)) AND isnotnull(distributionCenters#1168))
(50) Project [codegen id : 6]
Output [1]: [distributionCenters#1168]
Input [2]: [marketUnit#1162, distributionCenters#1168]
(51) Exchange
Input [1]: [distributionCenters#1168]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=11832]
(52) ShuffleQueryStage
Output [1]: [distributionCenters#1168]
Arguments: 5
(53) Generate [codegen id : 200]
Input [1]: [distributionCenters#1168]
Arguments: explode(distributionCenters#1168), false, [distributionCenters#1186]
(54) Filter [codegen id : 200]
Input [1]: [distributionCenters#1186]
Condition : (((size(distributionCenters#1186.storageLocations, true) > 0) AND isnotnull(distributionCenters#1186.storageLocations)) AND isnotnull(distributionCenters#1186.internalRefUUID))
(55) Project [codegen id : 200]
Output [2]: [distributionCenters#1186.internalRefUUID AS _extract_internalRefUUID#8560, distributionCenters#1186.storageLocations AS _extract_storageLocations#8561]
Input [1]: [distributionCenters#1186]
(56) Generate [codegen id : 200]
Input [2]: [_extract_internalRefUUID#8560, _extract_storageLocations#8561]
Arguments: explode(_extract_storageLocations#8561), [_extract_internalRefUUID#8560], false, [storageLocations#1193]
(57) Project [codegen id : 200]
Output [3]: [_extract_internalRefUUID#8560 AS plantUuid#1188, storageLocations#1193.id AS storageLocId#1194, storageLocations#1193.internalRefUUID AS storageLocUuid#1195]
Input [2]: [_extract_internalRefUUID#8560, storageLocations#1193]
(58) BroadcastExchange
Input [3]: [plantUuid#1188, storageLocId#1194, storageLocUuid#1195]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=55708]
(59) BroadcastQueryStage
Output [3]: [plantUuid#1188, storageLocId#1194, storageLocUuid#1195]
Arguments: 389
(60) Scan parquet
Output [2]: [product#1458, plant#1459]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(61) ColumnarToRow [codegen id : 7]
Input [2]: [product#1458, plant#1459]
(62) Filter [codegen id : 7]
Input [2]: [product#1458, plant#1459]
Condition : isnotnull(plant#1459)
(63) Exchange
Input [2]: [product#1458, plant#1459]
Arguments: hashpartitioning(product#1458, plant#1459, 10), REPARTITION_BY_NUM, [plan_id=11855]
(64) ShuffleQueryStage
Output [2]: [product#1458, plant#1459]
Arguments: 6
(65) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#9250, _extract_internalRefUUID#9251, _extract_internalRefUUID#9253, _extract_internalRefUUID#9252]
(66) BroadcastQueryStage
Output [4]: [_extract_code#9250, _extract_internalRefUUID#9251, _extract_internalRefUUID#9253, _extract_internalRefUUID#9252]
Arguments: 391
(67) BroadcastHashJoin [codegen id : 257]
Left keys [4]: [coalesce(product#1458, ), isnull(product#1458), coalesce(plant#1459, ), isnull(plant#1459)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9253, ), isnull(_extract_internalRefUUID#9253), coalesce(_extract_internalRefUUID#9252, ), isnull(_extract_internalRefUUID#9252)]
Join type: LeftOuter
Join condition: None
(68) Project [codegen id : 257]
Output [4]: [product#1458, plant#1459, _extract_code#9250, _extract_internalRefUUID#9251]
Input [6]: [product#1458, plant#1459, _extract_code#9250, _extract_internalRefUUID#9251, _extract_internalRefUUID#9253, _extract_internalRefUUID#9252]
(69) ReusedExchange [Reuses operator id: 20]
Output [1]: [internalUUID#1472]
(70) BroadcastQueryStage
Output [1]: [internalUUID#1472]
Arguments: 392
(71) BroadcastHashJoin [codegen id : 257]
Left keys [2]: [coalesce(plant#1459, ), isnull(plant#1459)]
Right keys [2]: [coalesce(internalUUID#1472, ), isnull(internalUUID#1472)]
Join type: LeftOuter
Join condition: None
(72) Project [codegen id : 257]
Output [4]: [product#1458, plant#1459, _extract_code#9250, _extract_internalRefUUID#9251]
Input [5]: [product#1458, plant#1459, _extract_code#9250, _extract_internalRefUUID#9251, internalUUID#1472]
(73) ReusedExchange [Reuses operator id: 30]
Output [3]: [internalUUID#1486, baseUnitOfMeasure#1490, unitOfMeasureConversions#1492]
(74) BroadcastQueryStage
Output [3]: [internalUUID#1486, baseUnitOfMeasure#1490, unitOfMeasureConversions#1492]
Arguments: 393
(75) BroadcastHashJoin [codegen id : 257]
Left keys [1]: [product#1458]
Right keys [1]: [internalUUID#1486]
Join type: LeftOuter
Join condition: None
(76) Project
Output [2]: [plant#1459, filter(unitOfMeasureConversions#1492, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9250) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9251)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1490.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1490.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1497]
Input [7]: [product#1458, plant#1459, _extract_code#9250, _extract_internalRefUUID#9251, internalUUID#1486, baseUnitOfMeasure#1490, unitOfMeasureConversions#1492]
(77) Generate [codegen id : 258]
Input [2]: [plant#1459, filteredUnitOfMeasureConversions#1497]
Arguments: explode(filteredUnitOfMeasureConversions#1497.quantityNumerator), [plant#1459, filteredUnitOfMeasureConversions#1497], true, [quantityNumerator#1498]
(78) Project [codegen id : 258]
Output [2]: [plant#1459, filteredUnitOfMeasureConversions#1497.quantityDenominator AS _extract_quantityDenominator#8562]
Input [3]: [plant#1459, filteredUnitOfMeasureConversions#1497, quantityNumerator#1498]
(79) Generate [codegen id : 258]
Input [2]: [plant#1459, _extract_quantityDenominator#8562]
Arguments: explode(_extract_quantityDenominator#8562), [plant#1459], true, [quantityDenominator#1499]
(80) Project [codegen id : 258]
Output [1]: [plant#1459]
Input [2]: [plant#1459, quantityDenominator#1499]
(81) HashAggregate [codegen id : 258]
Input [1]: [plant#1459]
Keys [1]: [plant#1459]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1459]
(82) Exchange
Input [1]: [plant#1459]
Arguments: hashpartitioning(plant#1459, 10), ENSURE_REQUIREMENTS, [plan_id=67975]
(83) ShuffleQueryStage
Output [1]: [plant#1459]
Arguments: 593
(84) AQEShuffleRead
Input [1]: [plant#1459]
Arguments: coalesced
(85) HashAggregate
Input [1]: [plant#1459]
Keys [1]: [plant#1459]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1459]
(86) BroadcastHashJoin
Left keys [1]: [plantUuid#1188]
Right keys [1]: [plant#1459]
Join type: Inner
Join condition: None
(87) Project
Output [3]: [plantUuid#1188, storageLocId#1194, storageLocUuid#1195]
Input [4]: [plantUuid#1188, storageLocId#1194, storageLocUuid#1195, plant#1459]
(88) BroadcastHashJoin [codegen id : 289]
Left keys [2]: [coalesce(plant#1201.internalRefUUID, ), isnull(plant#1201.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1188, ), isnull(plantUuid#1188)]
Join type: Inner
Join condition: None
(89) Generate
Input [9]: [systemId#1198, internalUUID#1199, product#1200, plant#1201, calculationDateTime#1202, stockQuantities#1203, plantUuid#1188, storageLocId#1194, storageLocUuid#1195]
Arguments: explode(filter(stockQuantities#1203, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#1195) AND (lambda x#1207.storageLocation.Id = storageLocId#1194)), lambda x#1207, false))), [systemId#1198, internalUUID#1199, product#1200, plant#1201, calculationDateTime#1202, plantUuid#1188], false, [stockQuantity#1208]
(90) ObjectHashAggregate
Input [7]: [systemId#1198, internalUUID#1199, product#1200, plant#1201, calculationDateTime#1202, plantUuid#1188, stockQuantity#1208]
Keys [5]: [plantUuid#1188, internalUUID#1199, plant#1201, product#1200, systemId#1198]
Functions [2]: [partial_first(calculationDateTime#1202, false), partial_collect_list(stockQuantity#1208, 0, 0)]
Aggregate Attributes [3]: [first#10296, valueSet#10297, buf#10298]
Results [8]: [plantUuid#1188, internalUUID#1199, plant#1201, product#1200, systemId#1198, first#10299, valueSet#10300, buf#10301]
(91) ObjectHashAggregate
Input [8]: [plantUuid#1188, internalUUID#1199, plant#1201, product#1200, systemId#1198, first#10299, valueSet#10300, buf#10301]
Keys [5]: [plantUuid#1188, internalUUID#1199, plant#1201, product#1200, systemId#1198]
Functions [2]: [first(calculationDateTime#1202, false), collect_list(stockQuantity#1208, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1202)()#1222, collect_list(stockQuantity#1208, 0, 0)#1223]
Results [4]: [product#1200, plant#1201, first(calculationDateTime#1202)()#1222 AS calculationDateTime#1209, collect_list(stockQuantity#1208, 0, 0)#1223 AS stockQuantities#1210]
(92) Filter [codegen id : 290]
Input [4]: [product#1200, plant#1201, calculationDateTime#1209, stockQuantities#1210]
Condition : ((size(stockQuantities#1210, true) > 0) AND isnotnull(calculationDateTime#1209))
(93) Generate [codegen id : 290]
Input [4]: [product#1200, plant#1201, calculationDateTime#1209, stockQuantities#1210]
Arguments: explode(stockQuantities#1210), [product#1200, plant#1201, calculationDateTime#1209], false, [stockQuantity#1225]
(94) Filter [codegen id : 290]
Input [4]: [product#1200, plant#1201, calculationDateTime#1209, stockQuantity#1225]
Condition : (((isnotnull(stockQuantity#1225.specialStockIndicator.code) AND isnotnull(stockQuantity#1225.stockType.code)) AND (stockQuantity#1225.specialStockIndicator.code = )) AND (stockQuantity#1225.stockType.code = 01))
(95) Project [codegen id : 290]
Output [5]: [plant#1201.internalRefUUID AS plantUuid#1227, product#1200.internalRefUUID AS productUuid#1229, calculationDateTime#1209, stockQuantity#1225.storagelocation.id AS storageLocId#1230, stockQuantity#1225.quantity.measure AS quantity#1232]
Input [4]: [product#1200, plant#1201, calculationDateTime#1209, stockQuantity#1225]
(96) Exchange
Input [5]: [plantUuid#1227, productUuid#1229, calculationDateTime#1209, storageLocId#1230, quantity#1232]
Arguments: hashpartitioning(productUuid#1229, plantUuid#1227, 10), ENSURE_REQUIREMENTS, [plan_id=76977]
(97) ShuffleQueryStage
Output [5]: [plantUuid#1227, productUuid#1229, calculationDateTime#1209, storageLocId#1230, quantity#1232]
Arguments: 624
(98) AQEShuffleRead
Input [5]: [plantUuid#1227, productUuid#1229, calculationDateTime#1209, storageLocId#1230, quantity#1232]
Arguments: local
(99) BroadcastExchange
Input [5]: [plantUuid#1227, productUuid#1229, calculationDateTime#1209, storageLocId#1230, quantity#1232]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=86993]
(100) BroadcastQueryStage
Output [5]: [plantUuid#1227, productUuid#1229, calculationDateTime#1209, storageLocId#1230, quantity#1232]
Arguments: 673
(101) Scan parquet
Output [3]: [product#1244, plant#1245, orderDateTime#1246]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(102) ColumnarToRow [codegen id : 11]
Input [3]: [product#1244, plant#1245, orderDateTime#1246]
(103) Filter [codegen id : 11]
Input [3]: [product#1244, plant#1245, orderDateTime#1246]
Condition : ((isnotnull(orderDateTime#1246) AND isnotnull(plant#1245)) AND isnotnull(product#1244))
(104) Exchange
Input [3]: [product#1244, plant#1245, orderDateTime#1246]
Arguments: hashpartitioning(product#1244, plant#1245, 10), REPARTITION_BY_NUM, [plan_id=11955]
(105) ShuffleQueryStage
Output [3]: [product#1244, plant#1245, orderDateTime#1246]
Arguments: 13
(106) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#9254, _extract_internalRefUUID#9255, _extract_internalRefUUID#9256, _extract_internalRefUUID#9257]
(107) BroadcastQueryStage
Output [4]: [_extract_code#9254, _extract_internalRefUUID#9255, _extract_internalRefUUID#9256, _extract_internalRefUUID#9257]
Arguments: 395
(108) BroadcastHashJoin [codegen id : 341]
Left keys [4]: [coalesce(product#1244, ), isnull(product#1244), coalesce(plant#1245, ), isnull(plant#1245)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9256, ), isnull(_extract_internalRefUUID#9256), coalesce(_extract_internalRefUUID#9257, ), isnull(_extract_internalRefUUID#9257)]
Join type: LeftOuter
Join condition: None
(109) Project [codegen id : 341]
Output [5]: [product#1244, plant#1245, orderDateTime#1246, _extract_code#9254, _extract_internalRefUUID#9255]
Input [7]: [product#1244, plant#1245, orderDateTime#1246, _extract_code#9254, _extract_internalRefUUID#9255, _extract_internalRefUUID#9256, _extract_internalRefUUID#9257]
(110) ReusedExchange [Reuses operator id: 20]
Output [1]: [internalUUID#1258]
(111) BroadcastQueryStage
Output [1]: [internalUUID#1258]
Arguments: 396
(112) BroadcastHashJoin [codegen id : 341]
Left keys [2]: [coalesce(plant#1245, ), isnull(plant#1245)]
Right keys [2]: [coalesce(internalUUID#1258, ), isnull(internalUUID#1258)]
Join type: LeftOuter
Join condition: None
(113) Project [codegen id : 341]
Output [5]: [product#1244, plant#1245, orderDateTime#1246, _extract_code#9254, _extract_internalRefUUID#9255]
Input [6]: [product#1244, plant#1245, orderDateTime#1246, _extract_code#9254, _extract_internalRefUUID#9255, internalUUID#1258]
(114) ReusedExchange [Reuses operator id: 30]
Output [3]: [internalUUID#1272, baseUnitOfMeasure#1276, unitOfMeasureConversions#1278]
(115) BroadcastQueryStage
Output [3]: [internalUUID#1272, baseUnitOfMeasure#1276, unitOfMeasureConversions#1278]
Arguments: 397
(116) BroadcastHashJoin [codegen id : 341]
Left keys [1]: [product#1244]
Right keys [1]: [internalUUID#1272]
Join type: LeftOuter
Join condition: None
(117) Project
Output [4]: [product#1244, plant#1245, orderDateTime#1246, filter(unitOfMeasureConversions#1278, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9254) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9255)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1276.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1276.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1283]
Input [8]: [product#1244, plant#1245, orderDateTime#1246, _extract_code#9254, _extract_internalRefUUID#9255, internalUUID#1272, baseUnitOfMeasure#1276, unitOfMeasureConversions#1278]
(118) Generate
Input [4]: [product#1244, plant#1245, orderDateTime#1246, filteredUnitOfMeasureConversions#1283]
Arguments: explode(filteredUnitOfMeasureConversions#1283.quantityNumerator), [product#1244, plant#1245, orderDateTime#1246, filteredUnitOfMeasureConversions#1283], true, [quantityNumerator#1284]
(119) Project
Output [4]: [product#1244, plant#1245, orderDateTime#1246, filteredUnitOfMeasureConversions#1283.quantityDenominator AS _extract_quantityDenominator#8566]
Input [5]: [product#1244, plant#1245, orderDateTime#1246, filteredUnitOfMeasureConversions#1283, quantityNumerator#1284]
(120) Generate
Input [4]: [product#1244, plant#1245, orderDateTime#1246, _extract_quantityDenominator#8566]
Arguments: explode(_extract_quantityDenominator#8566), [product#1244, plant#1245, orderDateTime#1246], true, [quantityDenominator#1285]
(121) Project
Output [3]: [product#1244, plant#1245, orderDateTime#1246]
Input [4]: [product#1244, plant#1245, orderDateTime#1246, quantityDenominator#1285]
(122) BroadcastHashJoin [codegen id : 342]
Left keys [2]: [plantUuid#1227, productUuid#1229]
Right keys [2]: [plant#1245, product#1244]
Join type: Inner
Join condition: (calculationDateTime#1209 <= orderDateTime#1246)
(123) Project [codegen id : 342]
Output [5]: [plantUuid#1227 AS plant#1292, productUuid#1229 AS product#1293, storageLocId#1230, calculationDateTime#1209, quantity#1232]
Input [8]: [plantUuid#1227, productUuid#1229, calculationDateTime#1209, storageLocId#1230, quantity#1232, product#1244, plant#1245, orderDateTime#1246]
(124) Exchange
Input [5]: [plant#1292, product#1293, storageLocId#1230, calculationDateTime#1209, quantity#1232]
Arguments: hashpartitioning(coalesce(plant#1292, ), isnull(plant#1292), coalesce(product#1293, ), isnull(product#1293), coalesce(storageLocId#1230, ), isnull(storageLocId#1230), coalesce(calculationDateTime#1209, 1970-01-01 00:00:00), isnull(calculationDateTime#1209), 10), ENSURE_REQUIREMENTS, [plan_id=92689]
(125) ShuffleQueryStage
Output [5]: [plant#1292, product#1293, storageLocId#1230, calculationDateTime#1209, quantity#1232]
Arguments: 702
(126) AQEShuffleRead
Input [5]: [plant#1292, product#1293, storageLocId#1230, calculationDateTime#1209, quantity#1232]
Arguments: local
(127) BroadcastExchange
Input [5]: [plant#1292, product#1293, storageLocId#1230, calculationDateTime#1209, quantity#1232]
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=96107]
(128) BroadcastQueryStage
Output [5]: [plant#1292, product#1293, storageLocId#1230, calculationDateTime#1209, quantity#1232]
Arguments: 716
(129) ReusedExchange [Reuses operator id: 45]
Output [6]: [systemId#1301, internalUUID#1302, product#1303, plant#1304, calculationDateTime#1305, stockQuantities#1306]
(130) BroadcastQueryStage
Output [6]: [systemId#1301, internalUUID#1302, product#1303, plant#1304, calculationDateTime#1305, stockQuantities#1306]
Arguments: 398
(131) ReusedExchange [Reuses operator id: 58]
Output [3]: [plantUuid#1332, storageLocId#1333, storageLocUuid#1334]
(132) BroadcastQueryStage
Output [3]: [plantUuid#1332, storageLocId#1333, storageLocUuid#1334]
Arguments: 400
(133) ReusedExchange [Reuses operator id: 82]
Output [1]: [plant#1336]
(134) ShuffleQueryStage
Output [1]: [plant#1336]
Arguments: 595
(135) AQEShuffleRead
Input [1]: [plant#1336]
Arguments: coalesced
(136) HashAggregate
Input [1]: [plant#1336]
Keys [1]: [plant#1336]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1336]
(137) BroadcastHashJoin
Left keys [1]: [plantUuid#1332]
Right keys [1]: [plant#1336]
Join type: Inner
Join condition: None
(138) Project
Output [3]: [plantUuid#1332, storageLocId#1333, storageLocUuid#1334]
Input [4]: [plantUuid#1332, storageLocId#1333, storageLocUuid#1334, plant#1336]
(139) BroadcastHashJoin [codegen id : 291]
Left keys [2]: [coalesce(plant#1304.internalRefUUID, ), isnull(plant#1304.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1332, ), isnull(plantUuid#1332)]
Join type: Inner
Join condition: None
(140) Generate
Input [9]: [systemId#1301, internalUUID#1302, product#1303, plant#1304, calculationDateTime#1305, stockQuantities#1306, plantUuid#1332, storageLocId#1333, storageLocUuid#1334]
Arguments: explode(filter(stockQuantities#1306, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#1334) AND (lambda x#1207.storageLocation.Id = storageLocId#1333)), lambda x#1207, false))), [systemId#1301, internalUUID#1302, product#1303, plant#1304, calculationDateTime#1305, plantUuid#1332], false, [stockQuantity#1379]
(141) ObjectHashAggregate
Input [7]: [systemId#1301, internalUUID#1302, product#1303, plant#1304, calculationDateTime#1305, plantUuid#1332, stockQuantity#1379]
Keys [5]: [plantUuid#1332, internalUUID#1302, plant#1304, product#1303, systemId#1301]
Functions [2]: [partial_first(calculationDateTime#1305, false), partial_collect_list(stockQuantity#1379, 0, 0)]
Aggregate Attributes [3]: [first#10304, valueSet#10305, buf#10306]
Results [8]: [plantUuid#1332, internalUUID#1302, plant#1304, product#1303, systemId#1301, first#10307, valueSet#10308, buf#10309]
(142) ObjectHashAggregate
Input [8]: [plantUuid#1332, internalUUID#1302, plant#1304, product#1303, systemId#1301, first#10307, valueSet#10308, buf#10309]
Keys [5]: [plantUuid#1332, internalUUID#1302, plant#1304, product#1303, systemId#1301]
Functions [2]: [first(calculationDateTime#1305, false), collect_list(stockQuantity#1379, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1305)()#1222, collect_list(stockQuantity#1379, 0, 0)#1223]
Results [4]: [product#1303, plant#1304, first(calculationDateTime#1305)()#1222 AS calculationDateTime#1380, collect_list(stockQuantity#1379, 0, 0)#1223 AS stockQuantities#1381]
(143) Filter [codegen id : 292]
Input [4]: [product#1303, plant#1304, calculationDateTime#1380, stockQuantities#1381]
Condition : ((size(stockQuantities#1381, true) > 0) AND isnotnull(calculationDateTime#1380))
(144) Generate [codegen id : 292]
Input [4]: [product#1303, plant#1304, calculationDateTime#1380, stockQuantities#1381]
Arguments: explode(stockQuantities#1381), [product#1303, plant#1304, calculationDateTime#1380], false, [stockQuantity#1382]
(145) Filter [codegen id : 292]
Input [4]: [product#1303, plant#1304, calculationDateTime#1380, stockQuantity#1382]
Condition : (((isnotnull(stockQuantity#1382.specialStockIndicator.code) AND isnotnull(stockQuantity#1382.stockType.code)) AND (stockQuantity#1382.specialStockIndicator.code = )) AND (stockQuantity#1382.stockType.code = 01))
(146) Project [codegen id : 292]
Output [4]: [plant#1304.internalRefUUID AS plantUuid#1384, product#1303.internalRefUUID AS productUuid#1386, calculationDateTime#1380, stockQuantity#1382.storagelocation.id AS storageLocId#1387]
Input [4]: [product#1303, plant#1304, calculationDateTime#1380, stockQuantity#1382]
(147) Exchange
Input [4]: [plantUuid#1384, productUuid#1386, calculationDateTime#1380, storageLocId#1387]
Arguments: hashpartitioning(productUuid#1386, plantUuid#1384, 10), ENSURE_REQUIREMENTS, [plan_id=77045]
(148) ShuffleQueryStage
Output [4]: [plantUuid#1384, productUuid#1386, calculationDateTime#1380, storageLocId#1387]
Arguments: 625
(149) AQEShuffleRead
Input [4]: [plantUuid#1384, productUuid#1386, calculationDateTime#1380, storageLocId#1387]
Arguments: local
(150) BroadcastExchange
Input [4]: [plantUuid#1384, productUuid#1386, calculationDateTime#1380, storageLocId#1387]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=84039]
(151) BroadcastQueryStage
Output [4]: [plantUuid#1384, productUuid#1386, calculationDateTime#1380, storageLocId#1387]
Arguments: 654
(152) ReusedExchange [Reuses operator id: 104]
Output [3]: [product#1392, plant#1393, orderDateTime#1394]
(153) ShuffleQueryStage
Output [3]: [product#1392, plant#1393, orderDateTime#1394]
Arguments: 33
(154) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#9263, _extract_internalRefUUID#9264, _extract_internalRefUUID#9262, _extract_internalRefUUID#9265]
(155) BroadcastQueryStage
Output [4]: [_extract_code#9263, _extract_internalRefUUID#9264, _extract_internalRefUUID#9262, _extract_internalRefUUID#9265]
Arguments: 406
(156) BroadcastHashJoin [codegen id : 321]
Left keys [4]: [coalesce(product#1392, ), isnull(product#1392), coalesce(plant#1393, ), isnull(plant#1393)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9262, ), isnull(_extract_internalRefUUID#9262), coalesce(_extract_internalRefUUID#9265, ), isnull(_extract_internalRefUUID#9265)]
Join type: LeftOuter
Join condition: None
(157) Project [codegen id : 321]
Output [5]: [product#1392, plant#1393, orderDateTime#1394, _extract_code#9263, _extract_internalRefUUID#9264]
Input [7]: [product#1392, plant#1393, orderDateTime#1394, _extract_code#9263, _extract_internalRefUUID#9264, _extract_internalRefUUID#9262, _extract_internalRefUUID#9265]
(158) ReusedExchange [Reuses operator id: 20]
Output [1]: [internalUUID#1406]
(159) BroadcastQueryStage
Output [1]: [internalUUID#1406]
Arguments: 407
(160) BroadcastHashJoin [codegen id : 321]
Left keys [2]: [coalesce(plant#1393, ), isnull(plant#1393)]
Right keys [2]: [coalesce(internalUUID#1406, ), isnull(internalUUID#1406)]
Join type: LeftOuter
Join condition: None
(161) Project [codegen id : 321]
Output [5]: [product#1392, plant#1393, orderDateTime#1394, _extract_code#9263, _extract_internalRefUUID#9264]
Input [6]: [product#1392, plant#1393, orderDateTime#1394, _extract_code#9263, _extract_internalRefUUID#9264, internalUUID#1406]
(162) ReusedExchange [Reuses operator id: 30]
Output [3]: [internalUUID#1420, baseUnitOfMeasure#1424, unitOfMeasureConversions#1426]
(163) BroadcastQueryStage
Output [3]: [internalUUID#1420, baseUnitOfMeasure#1424, unitOfMeasureConversions#1426]
Arguments: 408
(164) BroadcastHashJoin [codegen id : 321]
Left keys [1]: [product#1392]
Right keys [1]: [internalUUID#1420]
Join type: LeftOuter
Join condition: None
(165) Project
Output [4]: [product#1392, plant#1393, orderDateTime#1394, filter(unitOfMeasureConversions#1426, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9263) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9264)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1424.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1424.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1431]
Input [8]: [product#1392, plant#1393, orderDateTime#1394, _extract_code#9263, _extract_internalRefUUID#9264, internalUUID#1420, baseUnitOfMeasure#1424, unitOfMeasureConversions#1426]
(166) Generate
Input [4]: [product#1392, plant#1393, orderDateTime#1394, filteredUnitOfMeasureConversions#1431]
Arguments: explode(filteredUnitOfMeasureConversions#1431.quantityNumerator), [product#1392, plant#1393, orderDateTime#1394, filteredUnitOfMeasureConversions#1431], true, [quantityNumerator#1432]
(167) Project
Output [4]: [product#1392, plant#1393, orderDateTime#1394, filteredUnitOfMeasureConversions#1431.quantityDenominator AS _extract_quantityDenominator#8576]
Input [5]: [product#1392, plant#1393, orderDateTime#1394, filteredUnitOfMeasureConversions#1431, quantityNumerator#1432]
(168) Generate
Input [4]: [product#1392, plant#1393, orderDateTime#1394, _extract_quantityDenominator#8576]
Arguments: explode(_extract_quantityDenominator#8576), [product#1392, plant#1393, orderDateTime#1394], true, [quantityDenominator#1433]
(169) Project
Output [3]: [product#1392, plant#1393, orderDateTime#1394]
Input [4]: [product#1392, plant#1393, orderDateTime#1394, quantityDenominator#1433]
(170) BroadcastHashJoin [codegen id : 322]
Left keys [2]: [plantUuid#1384, productUuid#1386]
Right keys [2]: [plant#1393, product#1392]
Join type: Inner
Join condition: (calculationDateTime#1380 <= orderDateTime#1394)
(171) Project [codegen id : 322]
Output [4]: [plantUuid#1384 AS plant#1436, productUuid#1386 AS product#1437, storageLocId#1387, calculationDateTime#1380]
Input [7]: [plantUuid#1384, productUuid#1386, calculationDateTime#1380, storageLocId#1387, product#1392, plant#1393, orderDateTime#1394]
(172) HashAggregate [codegen id : 322]
Input [4]: [plant#1436, product#1437, storageLocId#1387, calculationDateTime#1380]
Keys [3]: [plant#1436, product#1437, storageLocId#1387]
Functions [1]: [partial_max(calculationDateTime#1380)]
Aggregate Attributes [1]: [max#10302]
Results [4]: [plant#1436, product#1437, storageLocId#1387, max#10303]
(173) HashAggregate [codegen id : 322]
Input [4]: [plant#1436, product#1437, storageLocId#1387, max#10303]
Keys [3]: [plant#1436, product#1437, storageLocId#1387]
Functions [1]: [max(calculationDateTime#1380)]
Aggregate Attributes [1]: [max(calculationDateTime#1380)#1300]
Results [4]: [plant#1436, product#1437, storageLocId#1387, max(calculationDateTime#1380)#1300 AS max_calc_datetime#1294]
(174) Exchange
Input [4]: [plant#1436, product#1437, storageLocId#1387, max_calc_datetime#1294]
Arguments: hashpartitioning(coalesce(plant#1436, ), isnull(plant#1436), coalesce(product#1437, ), isnull(product#1437), coalesce(storageLocId#1387, ), isnull(storageLocId#1387), coalesce(max_calc_datetime#1294, 1970-01-01 00:00:00), isnull(max_calc_datetime#1294), 10), ENSURE_REQUIREMENTS, [plan_id=89837]
(175) ShuffleQueryStage
Output [4]: [plant#1436, product#1437, storageLocId#1387, max_calc_datetime#1294]
Arguments: 684
(176) AQEShuffleRead
Input [4]: [plant#1436, product#1437, storageLocId#1387, max_calc_datetime#1294]
Arguments: local
(177) BroadcastHashJoin [codegen id : 355]
Left keys [8]: [coalesce(plant#1292, ), isnull(plant#1292), coalesce(product#1293, ), isnull(product#1293), coalesce(storageLocId#1230, ), isnull(storageLocId#1230), coalesce(calculationDateTime#1209, 1970-01-01 00:00:00), isnull(calculationDateTime#1209)]
Right keys [8]: [coalesce(plant#1436, ), isnull(plant#1436), coalesce(product#1437, ), isnull(product#1437), coalesce(storageLocId#1387, ), isnull(storageLocId#1387), coalesce(max_calc_datetime#1294, 1970-01-01 00:00:00), isnull(max_calc_datetime#1294)]
Join type: Inner
Join condition: None
(178) Project [codegen id : 355]
Output [4]: [plant#1292, product#1293, calculationDateTime#1209, quantity#1232]
Input [9]: [plant#1292, product#1293, storageLocId#1230, calculationDateTime#1209, quantity#1232, plant#1436, product#1437, storageLocId#1387, max_calc_datetime#1294]
(179) HashAggregate [codegen id : 355]
Input [4]: [plant#1292, product#1293, calculationDateTime#1209, quantity#1232]
Keys [2]: [product#1293, plant#1292]
Functions [2]: [partial_min(calculationDateTime#1209), partial_sum(quantity#1232)]
Aggregate Attributes [2]: [min#10292, sum#10293]
Results [4]: [product#1293, plant#1292, min#10294, sum#10295]
(180) Exchange
Input [4]: [product#1293, plant#1292, min#10294, sum#10295]
Arguments: hashpartitioning(product#1293, plant#1292, 10), ENSURE_REQUIREMENTS, [plan_id=99022]
(181) ShuffleQueryStage
Output [4]: [product#1293, plant#1292, min#10294, sum#10295]
Arguments: 730
(182) AQEShuffleRead
Input [4]: [product#1293, plant#1292, min#10294, sum#10295]
Arguments: coalesced
(183) HashAggregate [codegen id : 363]
Input [4]: [product#1293, plant#1292, min#10294, sum#10295]
Keys [2]: [product#1293, plant#1292]
Functions [2]: [min(calculationDateTime#1209), sum(quantity#1232)]
Aggregate Attributes [2]: [min(calculationDateTime#1209)#1456, sum(quantity#1232)#1455]
Results [4]: [product#1293, plant#1292, min(calculationDateTime#1209)#1456 AS minCalculationDateTime#1449, round(sum(quantity#1232)#1455, 0) AS roundedQuantitySum#1457]
(184) BroadcastExchange
Input [4]: [product#1293, plant#1292, minCalculationDateTime#1449, roundedQuantitySum#1457]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=101625]
(185) BroadcastQueryStage
Output [4]: [product#1293, plant#1292, minCalculationDateTime#1449, roundedQuantitySum#1457]
Arguments: 744
(186) BroadcastHashJoin [codegen id : 374]
Left keys [2]: [plant#1103, product#1102]
Right keys [2]: [plant#1292, product#1293]
Join type: LeftOuter
Join condition: None
(187) Project [codegen id : 374]
Output [5]: [product#1102, plant#1103, outboundUnit#1161, CASE WHEN isnotnull(minCalculationDateTime#1449) THEN minCalculationDateTime#1449 ELSE orderDateTime#1104 END AS stockDatetime#1506, CASE WHEN isnotnull(roundedQuantitySum#1457) THEN array(roundedQuantitySum#1457) ELSE [0.0] END AS stockBatchQuantities#1507]
Input [8]: [product#1102, plant#1103, orderDateTime#1104, outboundUnit#1161, product#1293, plant#1292, minCalculationDateTime#1449, roundedQuantitySum#1457]
(188) Exchange
Input [5]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507]
Arguments: hashpartitioning(coalesce(plant#1103, ), isnull(plant#1103), coalesce(product#1102, ), isnull(product#1102), 10), ENSURE_REQUIREMENTS, [plan_id=103916]
(189) ShuffleQueryStage
Output [5]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507]
Arguments: 758
(190) AQEShuffleRead
Input [5]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507]
Arguments: local
(191) ReusedExchange [Reuses operator id: 3]
Output [3]: [product#1583, plant#1584, orderDateTime#1585]
(192) ShuffleQueryStage
Output [3]: [product#1583, plant#1584, orderDateTime#1585]
Arguments: 41
(193) Scan parquet
Output [8]: [internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594, systemId#1587]
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#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594, systemId#1587]
(195) Project [codegen id : 26]
Output [8]: [systemId#1587, internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594]
Input [8]: [internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594, systemId#1587]
(196) Exchange
Input [8]: [systemId#1587, internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=12314]
(197) ShuffleQueryStage
Output [8]: [systemId#1587, internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594]
Arguments: 42
(198) Project [codegen id : 206]
Output [1]: [struct(systemId, systemId#1587, internalUUID, internalUUID#1588, plant, plant#1589, product, product#1590, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1591, productionAspect, productionAspect#1592, salesPlant, salesPlant#1593, listing, listing#1594) AS productPlant#1595]
Input [8]: [systemId#1587, internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594]
(199) BroadcastExchange
Input [1]: [productPlant#1595]
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=55908]
(200) BroadcastQueryStage
Output [1]: [productPlant#1595]
Arguments: 409
(201) BroadcastHashJoin [codegen id : 375]
Left keys [4]: [coalesce(product#1583, ), isnull(product#1583), coalesce(plant#1584, ), isnull(plant#1584)]
Right keys [4]: [coalesce(productPlant#1595.product.internalRefUUID, ), isnull(productPlant#1595.product.internalRefUUID), coalesce(productPlant#1595.plant.internalRefUUID, ), isnull(productPlant#1595.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(202) Scan parquet
Output [3]: [internalUUID#1597, address#1603, systemId#1596]
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#1597, address#1603, systemId#1596]
(204) Project [codegen id : 27]
Output [2]: [internalUUID#1597, address#1603.timeZone.code AS timezonecode#1608]
Input [3]: [internalUUID#1597, address#1603, systemId#1596]
(205) Exchange
Input [2]: [internalUUID#1597, timezonecode#1608]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=12332]
(206) ShuffleQueryStage
Output [2]: [internalUUID#1597, timezonecode#1608]
Arguments: 43
(207) BroadcastExchange
Input [2]: [internalUUID#1597, timezonecode#1608]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=12340]
(208) BroadcastQueryStage
Output [2]: [internalUUID#1597, timezonecode#1608]
Arguments: 410
(209) BroadcastHashJoin [codegen id : 375]
Left keys [2]: [coalesce(plant#1584, ), isnull(plant#1584)]
Right keys [2]: [coalesce(internalUUID#1597, ), isnull(internalUUID#1597)]
Join type: LeftOuter
Join condition: None
(210) Project [codegen id : 375]
Output [5]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, CASE WHEN isnotnull(timezonecode#1608) THEN timezonecode#1608 ELSE UTC END AS timezonecode#1609]
Input [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, internalUUID#1597, timezonecode#1608]
(211) ReusedExchange [Reuses operator id: 30]
Output [3]: [internalUUID#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617]
(212) BroadcastQueryStage
Output [3]: [internalUUID#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617]
Arguments: 411
(213) BroadcastHashJoin [codegen id : 375]
Left keys [1]: [product#1583]
Right keys [1]: [internalUUID#1611]
Join type: LeftOuter
Join condition: None
(214) Project
Output [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, filter(unitOfMeasureConversions#1617, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#1595.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#1595.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1615.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1615.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1622]
Input [8]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, internalUUID#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617]
(215) Project [codegen id : 376]
Output [7]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, filteredUnitOfMeasureConversions#1622.quantityDenominator AS _extract_quantityDenominator#8773, filteredUnitOfMeasureConversions#1622.quantityNumerator AS _extract_quantityNumerator#8774]
Input [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, filteredUnitOfMeasureConversions#1622]
(216) Generate [codegen id : 376]
Input [7]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, _extract_quantityDenominator#8773, _extract_quantityNumerator#8774]
Arguments: explode(_extract_quantityNumerator#8774), [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, _extract_quantityDenominator#8773], true, [quantityNumerator#1623]
(217) Generate [codegen id : 376]
Input [7]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, _extract_quantityDenominator#8773, quantityNumerator#1623]
Arguments: explode(_extract_quantityDenominator#8773), [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, quantityNumerator#1623], true, [quantityDenominator#1624]
(218) Project [codegen id : 376]
Output [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, (cast(quantityNumerator#1623 as double) / cast(quantityDenominator#1624 as double)) AS outboundUnit#1625]
Input [7]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, quantityNumerator#1623, quantityDenominator#1624]
(219) Project [codegen id : 376]
Output [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, CASE WHEN (isnull(outboundUnit#1625) OR (outboundUnit#1625 <= 0.0)) THEN 1.0 ELSE outboundUnit#1625 END AS outboundUnit#1626]
Input [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1625]
(220) ReusedExchange [Reuses operator id: 184]
Output [4]: [product#1763, plant#1762, minCalculationDateTime#1903, roundedQuantitySum#1904]
(221) BroadcastQueryStage
Output [4]: [product#1763, plant#1762, minCalculationDateTime#1903, roundedQuantitySum#1904]
Arguments: 746
(222) BroadcastHashJoin [codegen id : 376]
Left keys [2]: [plant#1584, product#1583]
Right keys [2]: [plant#1762, product#1763]
Join type: LeftOuter
Join condition: None
(223) Project [codegen id : 376]
Output [8]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, CASE WHEN isnotnull(minCalculationDateTime#1903) THEN minCalculationDateTime#1903 ELSE orderDateTime#1585 END AS stockDatetime#1905, CASE WHEN isnotnull(roundedQuantitySum#1904) THEN array(roundedQuantitySum#1904) ELSE [0.0] END AS stockBatchQuantities#1906]
Input [10]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, product#1763, plant#1762, minCalculationDateTime#1903, roundedQuantitySum#1904]
(224) Scan parquet
Output [9]: [product#1509, plant#1510, demandChannel#1511, demandStream#1512, considerVariance#1513, demandTimeBuckets#1514, demandPointInTimeStart#1515, demandPointInTimeEnd#1516, demandPointInTime#1517]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000004/0_1_10000000004]
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#1509, plant#1510, demandChannel#1511, demandStream#1512, considerVariance#1513, demandTimeBuckets#1514, demandPointInTimeStart#1515, demandPointInTimeEnd#1516, demandPointInTime#1517]
(226) Filter [codegen id : 49]
Input [9]: [product#1509, plant#1510, demandChannel#1511, demandStream#1512, considerVariance#1513, demandTimeBuckets#1514, demandPointInTimeStart#1515, demandPointInTimeEnd#1516, demandPointInTime#1517]
Condition : (isnotnull(product#1509) AND isnotnull(plant#1510))
(227) BroadcastExchange
Input [9]: [product#1509, plant#1510, demandChannel#1511, demandStream#1512, considerVariance#1513, demandTimeBuckets#1514, demandPointInTimeStart#1515, demandPointInTimeEnd#1516, demandPointInTime#1517]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=12876]
(228) BroadcastQueryStage
Output [9]: [product#1509, plant#1510, demandChannel#1511, demandStream#1512, considerVariance#1513, demandTimeBuckets#1514, demandPointInTimeStart#1515, demandPointInTimeEnd#1516, demandPointInTime#1517]
Arguments: 86
(229) BroadcastHashJoin [codegen id : 376]
Left keys [2]: [product#1583, plant#1584]
Right keys [2]: [product#1509, plant#1510]
Join type: LeftOuter
Join condition: None
(230) Project [codegen id : 376]
Output [9]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, CASE WHEN isnotnull(product#1509) THEN struct(demandChannel, demandChannel#1511, demandStream, demandStream#1512, considerVariance, considerVariance#1513, demandTimeBuckets, demandTimeBuckets#1514, demandPointInTimeStart, demandPointInTimeStart#1515, demandPointInTimeEnd, demandPointInTimeEnd#1516, demandPointInTime, demandPointInTime#1517) END AS rawDemands#1529]
Input [17]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, product#1509, plant#1510, demandChannel#1511, demandStream#1512, considerVariance#1513, demandTimeBuckets#1514, demandPointInTimeStart#1515, demandPointInTimeEnd#1516, demandPointInTime#1517]
(231) ObjectHashAggregate
Input [9]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, rawDemands#1529]
Keys [9]: [product#1583, plant#1584, orderDateTime#1585, knownfloatingpointnormalized(if (isnull(productPlant#1595)) null else named_struct(systemId, productPlant#1595.systemId, internalUUID, productPlant#1595.internalUUID, plant, productPlant#1595.plant, product, productPlant#1595.product, blockedForReplenishmentStartingFrom, productPlant#1595.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#1595.productionAspect)) null else named_struct(productMovementPlants, productPlant#1595.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#1595.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#1595.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#1595.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#1595.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#1595.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#1595.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#1595.salesPlant, listing, productPlant#1595.listing)) AS productPlant#1595, timezonecode#1609, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#1626)) AS outboundUnit#1626, stockDatetime#1905, knownfloatingpointnormalized(transform(stockBatchQuantities#1906, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#13721)), lambda arg#13721, false))) AS stockBatchQuantities#1906, [7226582400000000] AS [7226582400000000]#13720]
Functions [1]: [partial_collect_list(rawDemands#1529, 0, 0)]
Aggregate Attributes [1]: [buf#4282]
Results [10]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, [7226582400000000]#13720, buf#4283]
(232) ObjectHashAggregate
Input [10]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, [7226582400000000]#13720, buf#4283]
Keys [9]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, [7226582400000000]#13720]
Functions [1]: [collect_list(rawDemands#1529, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#1529, 0, 0)#1548]
Results [10]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1907, collect_list(rawDemands#1529, 0, 0)#1548 AS rawDemands#1530]
(233) DeserializeToObject [codegen id : 377]
Input [10]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, stockBatchShelfLifeEndDatetimes#1907, rawDemands#1530]
Arguments: createexternalrow(invoke(product#1583.toString()), invoke(plant#1584.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1585)), if (isnull(productPlant#1595)) null else createexternalrow(invoke(productPlant#1595.systemId.toString()), invoke(productPlant#1595.internalUUID.toString()), if (isnull(productPlant#1595.plant)) null else createexternalrow(invoke(productPlant#1595.plant.internalRefUUID.toString()), invoke(productPlant#1595.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1595.product)) null else createexternalrow(invoke(productPlant#1595.product.internalRefUUID.toString()), invoke(productPlant#1595.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1595.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1595.productionAspect)) null else createexternalrow(if (isnull(productPlant#1595.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1595.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1595.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#1595.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1595.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1595.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1595.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#1595.salesPlant)) null else createexternalrow(if (isnull(productPlant#1595.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1595.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1595.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#1595.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#1609.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#1626)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1905)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#1906, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#1907, 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#1530, 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#1569: org.apache.spark.sql.Row
(234) MapElements [codegen id : 377]
Input [1]: [obj#1569]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@762840b4, obj#1574: org.apache.spark.sql.Row
(235) SerializeFromObject [codegen id : 377]
Input [1]: [obj#1574]
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#1579, 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#1580, 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#1581, 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#1582]
(236) Exchange
Input [4]: [product#1579, plant#1580, dayBucketDemands#1581, pointInTimeDemands#1582]
Arguments: hashpartitioning(coalesce(plant#1580, ), isnull(plant#1580), coalesce(product#1579, ), isnull(product#1579), 10), ENSURE_REQUIREMENTS, [plan_id=103985]
(237) ShuffleQueryStage
Output [4]: [product#1579, plant#1580, dayBucketDemands#1581, pointInTimeDemands#1582]
Arguments: 759
(238) AQEShuffleRead
Input [4]: [product#1579, plant#1580, dayBucketDemands#1581, pointInTimeDemands#1582]
Arguments: local
(239) BroadcastExchange
Input [4]: [product#1579, plant#1580, dayBucketDemands#1581, pointInTimeDemands#1582]
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=106021]
(240) BroadcastQueryStage
Output [4]: [product#1579, plant#1580, dayBucketDemands#1581, pointInTimeDemands#1582]
Arguments: 769
(241) BroadcastHashJoin [codegen id : 391]
Left keys [4]: [coalesce(plant#1103, ), isnull(plant#1103), coalesce(product#1102, ), isnull(product#1102)]
Right keys [4]: [coalesce(plant#1580, ), isnull(plant#1580), coalesce(product#1579, ), isnull(product#1579)]
Join type: LeftOuter
Join condition: None
(242) Project [codegen id : 391]
Output [7]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, dayBucketDemands#1581, pointInTimeDemands#1582]
Input [9]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, product#1579, plant#1580, dayBucketDemands#1581, pointInTimeDemands#1582]
(243) Exchange
Input [7]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, dayBucketDemands#1581, pointInTimeDemands#1582]
Arguments: hashpartitioning(product#1102, plant#1103, 10), ENSURE_REQUIREMENTS, [plan_id=106560]
(244) ShuffleQueryStage
Output [7]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, dayBucketDemands#1581, pointInTimeDemands#1582]
Arguments: 775
(245) AQEShuffleRead
Input [7]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, dayBucketDemands#1581, pointInTimeDemands#1582]
Arguments: coalesced
(246) Project [codegen id : 397]
Output [12]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, dayBucketDemands#1581, pointInTimeDemands#1582, cast(null as string) AS product#1950, cast(null as string) AS plant#1949, cast(null as array<double>) AS _extract_openQtyInBaseUnit#8738, cast(null as array<timestamp>) AS _extract_availabilityDatetime#8739, cast(null as array<timestamp>) AS _extract_shelfLifeEndDatetime#8740]
Input [7]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, dayBucketDemands#1581, pointInTimeDemands#1582]
(247) Project [codegen id : 397]
Output [10]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, dayBucketDemands#1581, pointInTimeDemands#1582, coalesce(_extract_openQtyInBaseUnit#8738, []) AS openGoodsMovementQuantities#5800, coalesce(_extract_availabilityDatetime#8739, []) AS openGoodsMovementAvailabilityDatetimes#5801, coalesce(_extract_shelfLifeEndDatetime#8740, []) AS openGoodsMovementShelfLifeEndDatetimes#5802]
Input [12]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, dayBucketDemands#1581, pointInTimeDemands#1582, product#1950, plant#1949, _extract_openQtyInBaseUnit#8738, _extract_availabilityDatetime#8739, _extract_shelfLifeEndDatetime#8740]
(248) ReusedExchange [Reuses operator id: 3]
Output [3]: [product#6102, plant#6103, orderDateTime#6104]
(249) ShuffleQueryStage
Output [3]: [product#6102, plant#6103, orderDateTime#6104]
Arguments: 187
(250) ReusedExchange [Reuses operator id: 199]
Output [1]: [productPlant#6114]
(251) BroadcastQueryStage
Output [1]: [productPlant#6114]
Arguments: 487
(252) BroadcastHashJoin [codegen id : 381]
Left keys [4]: [coalesce(product#6102, ), isnull(product#6102), coalesce(plant#6103, ), isnull(plant#6103)]
Right keys [4]: [coalesce(productPlant#6114.product.internalRefUUID, ), isnull(productPlant#6114.product.internalRefUUID), coalesce(productPlant#6114.plant.internalRefUUID, ), isnull(productPlant#6114.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(253) ReusedExchange [Reuses operator id: 207]
Output [2]: [internalUUID#6116, timezonecode#6127]
(254) BroadcastQueryStage
Output [2]: [internalUUID#6116, timezonecode#6127]
Arguments: 488
(255) BroadcastHashJoin [codegen id : 381]
Left keys [2]: [coalesce(plant#6103, ), isnull(plant#6103)]
Right keys [2]: [coalesce(internalUUID#6116, ), isnull(internalUUID#6116)]
Join type: LeftOuter
Join condition: None
(256) Project [codegen id : 381]
Output [5]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, CASE WHEN isnotnull(timezonecode#6127) THEN timezonecode#6127 ELSE UTC END AS timezonecode#6128]
Input [6]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, internalUUID#6116, timezonecode#6127]
(257) ReusedExchange [Reuses operator id: 30]
Output [3]: [internalUUID#6130, baseUnitOfMeasure#6134, unitOfMeasureConversions#6136]
(258) BroadcastQueryStage
Output [3]: [internalUUID#6130, baseUnitOfMeasure#6134, unitOfMeasureConversions#6136]
Arguments: 489
(259) BroadcastHashJoin [codegen id : 381]
Left keys [1]: [product#6102]
Right keys [1]: [internalUUID#6130]
Join type: LeftOuter
Join condition: None
(260) Project
Output [6]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, filter(unitOfMeasureConversions#6136, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#6114.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#6114.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6134.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6134.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6141]
Input [8]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, internalUUID#6130, baseUnitOfMeasure#6134, unitOfMeasureConversions#6136]
(261) Project [codegen id : 382]
Output [7]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, filteredUnitOfMeasureConversions#6141.quantityDenominator AS _extract_quantityDenominator#8858, filteredUnitOfMeasureConversions#6141.quantityNumerator AS _extract_quantityNumerator#8859]
Input [6]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, filteredUnitOfMeasureConversions#6141]
(262) Generate [codegen id : 382]
Input [7]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, _extract_quantityDenominator#8858, _extract_quantityNumerator#8859]
Arguments: explode(_extract_quantityNumerator#8859), [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, _extract_quantityDenominator#8858], true, [quantityNumerator#6142]
(263) Generate [codegen id : 382]
Input [7]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, _extract_quantityDenominator#8858, quantityNumerator#6142]
Arguments: explode(_extract_quantityDenominator#8858), [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, quantityNumerator#6142], true, [quantityDenominator#6143]
(264) Project [codegen id : 382]
Output [6]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, (cast(quantityNumerator#6142 as double) / cast(quantityDenominator#6143 as double)) AS outboundUnit#6144]
Input [7]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, quantityNumerator#6142, quantityDenominator#6143]
(265) Project [codegen id : 382]
Output [6]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, CASE WHEN (isnull(outboundUnit#6144) OR (outboundUnit#6144 <= 0.0)) THEN 1.0 ELSE outboundUnit#6144 END AS outboundUnit#6145]
Input [6]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6144]
(266) ReusedExchange [Reuses operator id: 184]
Output [4]: [product#6282, plant#6281, minCalculationDateTime#6422, roundedQuantitySum#6423]
(267) BroadcastQueryStage
Output [4]: [product#6282, plant#6281, minCalculationDateTime#6422, roundedQuantitySum#6423]
Arguments: 750
(268) BroadcastHashJoin [codegen id : 382]
Left keys [2]: [plant#6103, product#6102]
Right keys [2]: [plant#6281, product#6282]
Join type: LeftOuter
Join condition: None
(269) Project [codegen id : 382]
Output [8]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, CASE WHEN isnotnull(minCalculationDateTime#6422) THEN minCalculationDateTime#6422 ELSE orderDateTime#6104 END AS stockDatetime#6424, CASE WHEN isnotnull(roundedQuantitySum#6423) THEN array(roundedQuantitySum#6423) ELSE [0.0] END AS stockBatchQuantities#6425]
Input [10]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, product#6282, plant#6281, minCalculationDateTime#6422, roundedQuantitySum#6423]
(270) Exchange
Input [8]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425]
Arguments: hashpartitioning(coalesce(plant#6103, ), isnull(plant#6103), coalesce(product#6102, ), isnull(product#6102), 10), ENSURE_REQUIREMENTS, [plan_id=104391]
(271) ShuffleQueryStage
Output [8]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425]
Arguments: 761
(272) AQEShuffleRead
Input [8]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425]
Arguments: local
(273) ReusedExchange [Reuses operator id: 239]
Output [4]: [product#6763, plant#6764, dayBucketDemands#6765, pointInTimeDemands#6766]
(274) BroadcastQueryStage
Output [4]: [product#6763, plant#6764, dayBucketDemands#6765, pointInTimeDemands#6766]
Arguments: 771
(275) BroadcastHashJoin [codegen id : 392]
Left keys [4]: [coalesce(plant#6103, ), isnull(plant#6103), coalesce(product#6102, ), isnull(product#6102)]
Right keys [4]: [coalesce(plant#6764, ), isnull(plant#6764), coalesce(product#6763, ), isnull(product#6763)]
Join type: LeftOuter
Join condition: None
(276) Project [codegen id : 392]
Output [10]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, dayBucketDemands#6765, pointInTimeDemands#6766]
Input [12]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, product#6763, plant#6764, dayBucketDemands#6765, pointInTimeDemands#6766]
(277) Exchange
Input [10]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, dayBucketDemands#6765, pointInTimeDemands#6766]
Arguments: hashpartitioning(product#6102, plant#6103, 10), ENSURE_REQUIREMENTS, [plan_id=106625]
(278) ShuffleQueryStage
Output [10]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, dayBucketDemands#6765, pointInTimeDemands#6766]
Arguments: 776
(279) AQEShuffleRead
Input [10]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, dayBucketDemands#6765, pointInTimeDemands#6766]
Arguments: coalesced
(280) Project [codegen id : 395]
Output [15]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, dayBucketDemands#6765, pointInTimeDemands#6766, cast(null as string) AS product#7517, cast(null as string) AS plant#7516, cast(null as array<double>) AS _extract_openQtyInBaseUnit#8855, cast(null as array<timestamp>) AS _extract_availabilityDatetime#8856, cast(null as array<timestamp>) AS _extract_shelfLifeEndDatetime#8857]
Input [10]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, dayBucketDemands#6765, pointInTimeDemands#6766]
(281) Project
Output [16]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#6426, dayBucketDemands#6765, pointInTimeDemands#6766, coalesce(_extract_openQtyInBaseUnit#8855, []) AS openGoodsMovementQuantities#8217, coalesce(_extract_availabilityDatetime#8856, []) AS openGoodsMovementAvailabilityDatetimes#8218, coalesce(_extract_shelfLifeEndDatetime#8857, []) AS openGoodsMovementShelfLifeEndDatetimes#8219, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#8220, array_sort(filter(CASE WHEN isnotnull(productPlant#6114.listing) THEN productPlant#6114.listing ELSE [] END, lambdafunction(lambda listing#6046.isListed, lambda listing#6046, false)), lambdafunction(if ((isnull(lambda left#6048) AND isnull(lambda right#6049))) 0 else if (isnull(lambda left#6048)) 1 else if (isnull(lambda right#6049)) -1 else if ((lambda left#6048 < lambda right#6049)) -1 else if ((lambda left#6048 > lambda right#6049)) 1 else 0, lambda left#6048, lambda right#6049, false), false) AS listing#6047]
Input [15]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, dayBucketDemands#6765, pointInTimeDemands#6766, product#7517, plant#7516, _extract_openQtyInBaseUnit#8855, _extract_availabilityDatetime#8856, _extract_shelfLifeEndDatetime#8857]
(282) DeserializeToObject [codegen id : 396]
Input [16]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, stockBatchShelfLifeEndDatetimes#6426, dayBucketDemands#6765, pointInTimeDemands#6766, openGoodsMovementQuantities#8217, openGoodsMovementAvailabilityDatetimes#8218, openGoodsMovementShelfLifeEndDatetimes#8219, configuration#8220, listing#6047]
Arguments: createexternalrow(invoke(product#6102.toString()), invoke(plant#6103.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#6104)), if (isnull(productPlant#6114)) null else createexternalrow(invoke(productPlant#6114.systemId.toString()), invoke(productPlant#6114.internalUUID.toString()), if (isnull(productPlant#6114.plant)) null else createexternalrow(invoke(productPlant#6114.plant.internalRefUUID.toString()), invoke(productPlant#6114.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#6114.product)) null else createexternalrow(invoke(productPlant#6114.product.internalRefUUID.toString()), invoke(productPlant#6114.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#6114.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#6114.productionAspect)) null else createexternalrow(if (isnull(productPlant#6114.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#6114.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#6114.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#6114.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#6114.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#6114.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#6114.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#6114.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#6114.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#6114.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#6114.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#6114.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#6114.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#6114.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#6114.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#6114.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#6114.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#6114.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#6114.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#6114.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#6114.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#6114.salesPlant)) null else createexternalrow(if (isnull(productPlant#6114.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#6114.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#6114.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#6114.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#6128.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#6145)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#6424)), mapobjects(lambdavariable(MapObject, DoubleType, true, -22), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -22))), stockBatchQuantities#6425, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -23), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -23))), stockBatchShelfLifeEndDatetimes#6426, 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#6765, 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#6766, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -34), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -34))), openGoodsMovementQuantities#8217, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, -35), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, true, -35))), openGoodsMovementAvailabilityDatetimes#8218, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -36), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -36))), openGoodsMovementShelfLifeEndDatetimes#8219, 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#8220, 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#6047, 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#6082: org.apache.spark.sql.Row
(283) MapElements [codegen id : 396]
Input [1]: [obj#6082]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.ListingSnapshotEnhancementImpl$$Lambda/0x0000000801f6de40@134cd86f, obj#6089: org.apache.spark.sql.Row
(284) SerializeFromObject [codegen id : 396]
Input [1]: [obj#6089]
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#6096, 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#6097, 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#6098, 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#6099, 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#6100, 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#6101]
(285) Filter [codegen id : 396]
Input [6]: [product#6096, plant#6097, timeDependentSettingsName#6098, timeDependentSettingsStartDatetime#6099, timeDependentSettingsEndDatetime#6100, timeDependentSettingsValue#6101]
Condition : (isnotnull(product#6096) AND isnotnull(plant#6097))
(286) BroadcastExchange
Input [6]: [product#6096, plant#6097, timeDependentSettingsName#6098, timeDependentSettingsStartDatetime#6099, timeDependentSettingsEndDatetime#6100, timeDependentSettingsValue#6101]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=107074]
(287) BroadcastQueryStage
Output [6]: [product#6096, plant#6097, timeDependentSettingsName#6098, timeDependentSettingsStartDatetime#6099, timeDependentSettingsEndDatetime#6100, timeDependentSettingsValue#6101]
Arguments: 779
(288) BroadcastHashJoin [codegen id : 397]
Left keys [2]: [product#1102, plant#1103]
Right keys [2]: [product#6096, plant#6097]
Join type: LeftOuter
Join condition: None
(289) Project [codegen id : 397]
Output [16]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1508, dayBucketDemands#1581, pointInTimeDemands#1582, openGoodsMovementQuantities#5800, openGoodsMovementAvailabilityDatetimes#5801, openGoodsMovementShelfLifeEndDatetimes#5802, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#5903, CASE WHEN isnotnull(timeDependentSettingsName#6098) THEN timeDependentSettingsName#6098 ELSE [] END AS timeDependentSettingsName#8375, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#6099) THEN timeDependentSettingsStartDatetime#6099 ELSE [] END AS timeDependentSettingsStartDatetime#8376, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#6100) THEN timeDependentSettingsEndDatetime#6100 ELSE [] END AS timeDependentSettingsEndDatetime#8377, CASE WHEN isnotnull(timeDependentSettingsValue#6101) THEN timeDependentSettingsValue#6101 ELSE [] END AS timeDependentSettingsValue#8378]
Input [16]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, dayBucketDemands#1581, pointInTimeDemands#1582, openGoodsMovementQuantities#5800, openGoodsMovementAvailabilityDatetimes#5801, openGoodsMovementShelfLifeEndDatetimes#5802, product#6096, plant#6097, timeDependentSettingsName#6098, timeDependentSettingsStartDatetime#6099, timeDependentSettingsEndDatetime#6100, timeDependentSettingsValue#6101]
(290) ResultQueryStage
Output [16]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, stockBatchShelfLifeEndDatetimes#1508, dayBucketDemands#1581, pointInTimeDemands#1582, openGoodsMovementQuantities#5800, openGoodsMovementAvailabilityDatetimes#5801, openGoodsMovementShelfLifeEndDatetimes#5802, configuration#5903, timeDependentSettingsName#8375, timeDependentSettingsStartDatetime#8376, timeDependentSettingsEndDatetime#8377, timeDependentSettingsValue#8378]
Arguments: 781
(291) Exchange
Input [3]: [product#1102, plant#1103, orderDateTime#1104]
Arguments: hashpartitioning(product#1102, plant#1103, 10), REPARTITION_BY_NUM, [plan_id=7367]
(292) Project
Output [4]: [plant#1109.internalRefUUID AS _extract_internalRefUUID#9249, product#1110.internalRefUUID AS _extract_internalRefUUID#9246, productionAspect#1112.productMovementPlants.unitOfIssue.code AS _extract_code#9247, productionAspect#1112.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9248]
Input [4]: [plant#1109, product#1110, productionAspect#1112, systemId#1107]
(293) Exchange
Input [4]: [_extract_internalRefUUID#9249, _extract_internalRefUUID#9246, _extract_code#9247, _extract_internalRefUUID#9248]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7370]
(294) Project
Output [4]: [_extract_code#9247, _extract_internalRefUUID#9248, _extract_internalRefUUID#9246, _extract_internalRefUUID#9249]
Input [4]: [_extract_internalRefUUID#9249, _extract_internalRefUUID#9246, _extract_code#9247, _extract_internalRefUUID#9248]
(295) BroadcastExchange
Input [4]: [_extract_code#9247, _extract_internalRefUUID#9248, _extract_internalRefUUID#9246, _extract_internalRefUUID#9249]
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=9672]
(296) BroadcastHashJoin
Left keys [4]: [coalesce(product#1102, ), isnull(product#1102), coalesce(plant#1103, ), isnull(plant#1103)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9246, ), isnull(_extract_internalRefUUID#9246), coalesce(_extract_internalRefUUID#9249, ), isnull(_extract_internalRefUUID#9249)]
Join type: LeftOuter
Join condition: None
(297) Project
Output [5]: [product#1102, plant#1103, orderDateTime#1104, _extract_code#9247, _extract_internalRefUUID#9248]
Input [7]: [product#1102, plant#1103, orderDateTime#1104, _extract_code#9247, _extract_internalRefUUID#9248, _extract_internalRefUUID#9246, _extract_internalRefUUID#9249]
(298) Project
Output [1]: [internalUUID#1120]
Input [2]: [internalUUID#1120, systemId#1119]
(299) Exchange
Input [1]: [internalUUID#1120]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7376]
(300) BroadcastExchange
Input [1]: [internalUUID#1120]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=9676]
(301) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1103, ), isnull(plant#1103)]
Right keys [2]: [coalesce(internalUUID#1120, ), isnull(internalUUID#1120)]
Join type: LeftOuter
Join condition: None
(302) Project
Output [5]: [product#1102, plant#1103, orderDateTime#1104, _extract_code#9247, _extract_internalRefUUID#9248]
Input [6]: [product#1102, plant#1103, orderDateTime#1104, _extract_code#9247, _extract_internalRefUUID#9248, internalUUID#1120]
(303) Filter
Input [4]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142, systemId#1135]
Condition : isnotnull(internalUUID#1136)
(304) Project
Output [3]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142]
Input [4]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142, systemId#1135]
(305) Exchange
Input [3]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7382]
(306) BroadcastExchange
Input [3]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=9680]
(307) BroadcastHashJoin
Left keys [1]: [product#1102]
Right keys [1]: [internalUUID#1136]
Join type: LeftOuter
Join condition: None
(308) Project
Output [4]: [product#1102, plant#1103, orderDateTime#1104, filter(unitOfMeasureConversions#1142, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9247) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9248)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1140.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1140.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1148]
Input [8]: [product#1102, plant#1103, orderDateTime#1104, _extract_code#9247, _extract_internalRefUUID#9248, internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142]
(309) Project
Output [5]: [product#1102, plant#1103, orderDateTime#1104, filteredUnitOfMeasureConversions#1148.quantityDenominator AS _extract_quantityDenominator#8741, filteredUnitOfMeasureConversions#1148.quantityNumerator AS _extract_quantityNumerator#8742]
Input [4]: [product#1102, plant#1103, orderDateTime#1104, filteredUnitOfMeasureConversions#1148]
(310) Generate
Input [5]: [product#1102, plant#1103, orderDateTime#1104, _extract_quantityDenominator#8741, _extract_quantityNumerator#8742]
Arguments: explode(_extract_quantityNumerator#8742), [product#1102, plant#1103, orderDateTime#1104, _extract_quantityDenominator#8741], true, [quantityNumerator#1156]
(311) Generate
Input [5]: [product#1102, plant#1103, orderDateTime#1104, _extract_quantityDenominator#8741, quantityNumerator#1156]
Arguments: explode(_extract_quantityDenominator#8741), [product#1102, plant#1103, orderDateTime#1104, quantityNumerator#1156], true, [quantityDenominator#1159]
(312) Project
Output [4]: [product#1102, plant#1103, orderDateTime#1104, (cast(quantityNumerator#1156 as double) / cast(quantityDenominator#1159 as double)) AS outboundUnit#1160]
Input [5]: [product#1102, plant#1103, orderDateTime#1104, quantityNumerator#1156, quantityDenominator#1159]
(313) Project
Output [4]: [product#1102, plant#1103, orderDateTime#1104, CASE WHEN (isnull(outboundUnit#1160) OR (outboundUnit#1160 <= 0.0)) THEN 1.0 ELSE outboundUnit#1160 END AS outboundUnit#1161]
Input [4]: [product#1102, plant#1103, orderDateTime#1104, outboundUnit#1160]
(314) Sort
Input [4]: [product#1102, plant#1103, orderDateTime#1104, outboundUnit#1161]
Arguments: [product#1102 ASC NULLS FIRST, plant#1103 ASC NULLS FIRST], false, 0
(315) Filter
Input [6]: [internalUUID#1199, product#1200, plant#1201, calculationDateTime#1202, stockQuantities#1203, systemId#1198]
Condition : (isnotnull(plant#1201.internalRefUUID) AND isnotnull(product#1200.internalRefUUID))
(316) Project
Output [6]: [systemId#1198, internalUUID#1199, product#1200, plant#1201, calculationDateTime#1202, stockQuantities#1203]
Input [6]: [internalUUID#1199, product#1200, plant#1201, calculationDateTime#1202, stockQuantities#1203, systemId#1198]
(317) Exchange
Input [6]: [systemId#1198, internalUUID#1199, product#1200, plant#1201, calculationDateTime#1202, stockQuantities#1203]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7393]
(318) BroadcastExchange
Input [6]: [systemId#1198, internalUUID#1199, product#1200, plant#1201, calculationDateTime#1202, stockQuantities#1203]
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=9712]
(319) Filter
Input [2]: [marketUnit#1162, distributionCenters#1168]
Condition : (((marketUnit#1162 <=> DIP_1691) AND (size(distributionCenters#1168, true) > 0)) AND isnotnull(distributionCenters#1168))
(320) Project
Output [1]: [distributionCenters#1168]
Input [2]: [marketUnit#1162, distributionCenters#1168]
(321) Exchange
Input [1]: [distributionCenters#1168]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7397]
(322) Generate
Input [1]: [distributionCenters#1168]
Arguments: explode(distributionCenters#1168), false, [distributionCenters#1186]
(323) Filter
Input [1]: [distributionCenters#1186]
Condition : (((size(distributionCenters#1186.storageLocations, true) > 0) AND isnotnull(distributionCenters#1186.storageLocations)) AND isnotnull(distributionCenters#1186.internalRefUUID))
(324) Project
Output [2]: [distributionCenters#1186.internalRefUUID AS _extract_internalRefUUID#8560, distributionCenters#1186.storageLocations AS _extract_storageLocations#8561]
Input [1]: [distributionCenters#1186]
(325) Generate
Input [2]: [_extract_internalRefUUID#8560, _extract_storageLocations#8561]
Arguments: explode(_extract_storageLocations#8561), [_extract_internalRefUUID#8560], false, [storageLocations#1193]
(326) Project
Output [3]: [_extract_internalRefUUID#8560 AS plantUuid#1188, storageLocations#1193.id AS storageLocId#1194, storageLocations#1193.internalRefUUID AS storageLocUuid#1195]
Input [2]: [_extract_internalRefUUID#8560, storageLocations#1193]
(327) BroadcastExchange
Input [3]: [plantUuid#1188, storageLocId#1194, storageLocUuid#1195]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=9708]
(328) Filter
Input [2]: [product#1458, plant#1459]
Condition : isnotnull(plant#1459)
(329) Exchange
Input [2]: [product#1458, plant#1459]
Arguments: hashpartitioning(product#1458, plant#1459, 10), REPARTITION_BY_NUM, [plan_id=8946]
(330) Scan parquet
Output [4]: [plant#1464, product#1465, productionAspect#1467, systemId#1462]
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#1464.internalRefUUID AS _extract_internalRefUUID#9252, product#1465.internalRefUUID AS _extract_internalRefUUID#9253, productionAspect#1467.productMovementPlants.unitOfIssue.code AS _extract_code#9250, productionAspect#1467.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9251]
Input [4]: [plant#1464, product#1465, productionAspect#1467, systemId#1462]
(332) Exchange
Input [4]: [_extract_internalRefUUID#9252, _extract_internalRefUUID#9253, _extract_code#9250, _extract_internalRefUUID#9251]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7409]
(333) Project
Output [4]: [_extract_code#9250, _extract_internalRefUUID#9251, _extract_internalRefUUID#9253, _extract_internalRefUUID#9252]
Input [4]: [_extract_internalRefUUID#9252, _extract_internalRefUUID#9253, _extract_code#9250, _extract_internalRefUUID#9251]
(334) BroadcastExchange
Input [4]: [_extract_code#9250, _extract_internalRefUUID#9251, _extract_internalRefUUID#9253, _extract_internalRefUUID#9252]
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=9688]
(335) BroadcastHashJoin
Left keys [4]: [coalesce(product#1458, ), isnull(product#1458), coalesce(plant#1459, ), isnull(plant#1459)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9253, ), isnull(_extract_internalRefUUID#9253), coalesce(_extract_internalRefUUID#9252, ), isnull(_extract_internalRefUUID#9252)]
Join type: LeftOuter
Join condition: None
(336) Project
Output [4]: [product#1458, plant#1459, _extract_code#9250, _extract_internalRefUUID#9251]
Input [6]: [product#1458, plant#1459, _extract_code#9250, _extract_internalRefUUID#9251, _extract_internalRefUUID#9253, _extract_internalRefUUID#9252]
(337) Scan parquet
Output [2]: [internalUUID#1472, systemId#1471]
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#1472]
Input [2]: [internalUUID#1472, systemId#1471]
(339) Exchange
Input [1]: [internalUUID#1472]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7415]
(340) BroadcastExchange
Input [1]: [internalUUID#1472]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=9692]
(341) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1459, ), isnull(plant#1459)]
Right keys [2]: [coalesce(internalUUID#1472, ), isnull(internalUUID#1472)]
Join type: LeftOuter
Join condition: None
(342) Project
Output [4]: [product#1458, plant#1459, _extract_code#9250, _extract_internalRefUUID#9251]
Input [5]: [product#1458, plant#1459, _extract_code#9250, _extract_internalRefUUID#9251, internalUUID#1472]
(343) Scan parquet
Output [4]: [internalUUID#1486, baseUnitOfMeasure#1490, unitOfMeasureConversions#1492, systemId#1485]
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#1486, baseUnitOfMeasure#1490, unitOfMeasureConversions#1492, systemId#1485]
Condition : isnotnull(internalUUID#1486)
(345) Project
Output [3]: [internalUUID#1486, baseUnitOfMeasure#1490, unitOfMeasureConversions#1492]
Input [4]: [internalUUID#1486, baseUnitOfMeasure#1490, unitOfMeasureConversions#1492, systemId#1485]
(346) Exchange
Input [3]: [internalUUID#1486, baseUnitOfMeasure#1490, unitOfMeasureConversions#1492]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7421]
(347) BroadcastExchange
Input [3]: [internalUUID#1486, baseUnitOfMeasure#1490, unitOfMeasureConversions#1492]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=9696]
(348) BroadcastHashJoin
Left keys [1]: [product#1458]
Right keys [1]: [internalUUID#1486]
Join type: LeftOuter
Join condition: None
(349) Project
Output [2]: [plant#1459, filter(unitOfMeasureConversions#1492, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9250) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9251)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1490.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1490.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1497]
Input [7]: [product#1458, plant#1459, _extract_code#9250, _extract_internalRefUUID#9251, internalUUID#1486, baseUnitOfMeasure#1490, unitOfMeasureConversions#1492]
(350) Generate
Input [2]: [plant#1459, filteredUnitOfMeasureConversions#1497]
Arguments: explode(filteredUnitOfMeasureConversions#1497.quantityNumerator), [plant#1459, filteredUnitOfMeasureConversions#1497], true, [quantityNumerator#1498]
(351) Project
Output [2]: [plant#1459, filteredUnitOfMeasureConversions#1497.quantityDenominator AS _extract_quantityDenominator#8562]
Input [3]: [plant#1459, filteredUnitOfMeasureConversions#1497, quantityNumerator#1498]
(352) Generate
Input [2]: [plant#1459, _extract_quantityDenominator#8562]
Arguments: explode(_extract_quantityDenominator#8562), [plant#1459], true, [quantityDenominator#1499]
(353) Project
Output [1]: [plant#1459]
Input [2]: [plant#1459, quantityDenominator#1499]
(354) HashAggregate
Input [1]: [plant#1459]
Keys [1]: [plant#1459]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1459]
(355) Exchange
Input [1]: [plant#1459]
Arguments: hashpartitioning(plant#1459, 10), ENSURE_REQUIREMENTS, [plan_id=9705]
(356) HashAggregate
Input [1]: [plant#1459]
Keys [1]: [plant#1459]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1459]
(357) BroadcastHashJoin
Left keys [1]: [plantUuid#1188]
Right keys [1]: [plant#1459]
Join type: Inner
Join condition: None
(358) Project
Output [3]: [plantUuid#1188, storageLocId#1194, storageLocUuid#1195]
Input [4]: [plantUuid#1188, storageLocId#1194, storageLocUuid#1195, plant#1459]
(359) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1201.internalRefUUID, ), isnull(plant#1201.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1188, ), isnull(plantUuid#1188)]
Join type: Inner
Join condition: None
(360) Generate
Input [9]: [systemId#1198, internalUUID#1199, product#1200, plant#1201, calculationDateTime#1202, stockQuantities#1203, plantUuid#1188, storageLocId#1194, storageLocUuid#1195]
Arguments: explode(filter(stockQuantities#1203, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#1195) AND (lambda x#1207.storageLocation.Id = storageLocId#1194)), lambda x#1207, false))), [systemId#1198, internalUUID#1199, product#1200, plant#1201, calculationDateTime#1202, plantUuid#1188], false, [stockQuantity#1208]
(361) ObjectHashAggregate
Input [7]: [systemId#1198, internalUUID#1199, product#1200, plant#1201, calculationDateTime#1202, plantUuid#1188, stockQuantity#1208]
Keys [5]: [plantUuid#1188, internalUUID#1199, plant#1201, product#1200, systemId#1198]
Functions [2]: [partial_first(calculationDateTime#1202, false), partial_collect_list(stockQuantity#1208, 0, 0)]
Aggregate Attributes [3]: [first#10296, valueSet#10297, buf#10298]
Results [8]: [plantUuid#1188, internalUUID#1199, plant#1201, product#1200, systemId#1198, first#10299, valueSet#10300, buf#10301]
(362) ObjectHashAggregate
Input [8]: [plantUuid#1188, internalUUID#1199, plant#1201, product#1200, systemId#1198, first#10299, valueSet#10300, buf#10301]
Keys [5]: [plantUuid#1188, internalUUID#1199, plant#1201, product#1200, systemId#1198]
Functions [2]: [first(calculationDateTime#1202, false), collect_list(stockQuantity#1208, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1202)()#1222, collect_list(stockQuantity#1208, 0, 0)#1223]
Results [4]: [product#1200, plant#1201, first(calculationDateTime#1202)()#1222 AS calculationDateTime#1209, collect_list(stockQuantity#1208, 0, 0)#1223 AS stockQuantities#1210]
(363) Filter
Input [4]: [product#1200, plant#1201, calculationDateTime#1209, stockQuantities#1210]
Condition : ((size(stockQuantities#1210, true) > 0) AND isnotnull(calculationDateTime#1209))
(364) Generate
Input [4]: [product#1200, plant#1201, calculationDateTime#1209, stockQuantities#1210]
Arguments: explode(stockQuantities#1210), [product#1200, plant#1201, calculationDateTime#1209], false, [stockQuantity#1225]
(365) Filter
Input [4]: [product#1200, plant#1201, calculationDateTime#1209, stockQuantity#1225]
Condition : (((isnotnull(stockQuantity#1225.specialStockIndicator.code) AND isnotnull(stockQuantity#1225.stockType.code)) AND (stockQuantity#1225.specialStockIndicator.code = )) AND (stockQuantity#1225.stockType.code = 01))
(366) Project
Output [5]: [plant#1201.internalRefUUID AS plantUuid#1227, product#1200.internalRefUUID AS productUuid#1229, calculationDateTime#1209, stockQuantity#1225.storagelocation.id AS storageLocId#1230, stockQuantity#1225.quantity.measure AS quantity#1232]
Input [4]: [product#1200, plant#1201, calculationDateTime#1209, stockQuantity#1225]
(367) Exchange
Input [5]: [plantUuid#1227, productUuid#1229, calculationDateTime#1209, storageLocId#1230, quantity#1232]
Arguments: hashpartitioning(productUuid#1229, plantUuid#1227, 10), ENSURE_REQUIREMENTS, [plan_id=9738]
(368) Sort
Input [5]: [plantUuid#1227, productUuid#1229, calculationDateTime#1209, storageLocId#1230, quantity#1232]
Arguments: [productUuid#1229 ASC NULLS FIRST, plantUuid#1227 ASC NULLS FIRST], false, 0
(369) Filter
Input [3]: [product#1244, plant#1245, orderDateTime#1246]
Condition : ((isnotnull(orderDateTime#1246) AND isnotnull(plant#1245)) AND isnotnull(product#1244))
(370) Exchange
Input [3]: [product#1244, plant#1245, orderDateTime#1246]
Arguments: hashpartitioning(product#1244, plant#1245, 10), REPARTITION_BY_NUM, [plan_id=8969]
(371) Scan parquet
Output [4]: [plant#1250, product#1251, productionAspect#1253, systemId#1248]
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#1250.internalRefUUID AS _extract_internalRefUUID#9257, product#1251.internalRefUUID AS _extract_internalRefUUID#9256, productionAspect#1253.productMovementPlants.unitOfIssue.code AS _extract_code#9254, productionAspect#1253.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9255]
Input [4]: [plant#1250, product#1251, productionAspect#1253, systemId#1248]
(373) Exchange
Input [4]: [_extract_internalRefUUID#9257, _extract_internalRefUUID#9256, _extract_code#9254, _extract_internalRefUUID#9255]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7446]
(374) Project
Output [4]: [_extract_code#9254, _extract_internalRefUUID#9255, _extract_internalRefUUID#9256, _extract_internalRefUUID#9257]
Input [4]: [_extract_internalRefUUID#9257, _extract_internalRefUUID#9256, _extract_code#9254, _extract_internalRefUUID#9255]
(375) BroadcastExchange
Input [4]: [_extract_code#9254, _extract_internalRefUUID#9255, _extract_internalRefUUID#9256, _extract_internalRefUUID#9257]
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=9721]
(376) BroadcastHashJoin
Left keys [4]: [coalesce(product#1244, ), isnull(product#1244), coalesce(plant#1245, ), isnull(plant#1245)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9256, ), isnull(_extract_internalRefUUID#9256), coalesce(_extract_internalRefUUID#9257, ), isnull(_extract_internalRefUUID#9257)]
Join type: LeftOuter
Join condition: None
(377) Project
Output [5]: [product#1244, plant#1245, orderDateTime#1246, _extract_code#9254, _extract_internalRefUUID#9255]
Input [7]: [product#1244, plant#1245, orderDateTime#1246, _extract_code#9254, _extract_internalRefUUID#9255, _extract_internalRefUUID#9256, _extract_internalRefUUID#9257]
(378) Scan parquet
Output [2]: [internalUUID#1258, systemId#1257]
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#1258]
Input [2]: [internalUUID#1258, systemId#1257]
(380) Exchange
Input [1]: [internalUUID#1258]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7452]
(381) BroadcastExchange
Input [1]: [internalUUID#1258]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=9725]
(382) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1245, ), isnull(plant#1245)]
Right keys [2]: [coalesce(internalUUID#1258, ), isnull(internalUUID#1258)]
Join type: LeftOuter
Join condition: None
(383) Project
Output [5]: [product#1244, plant#1245, orderDateTime#1246, _extract_code#9254, _extract_internalRefUUID#9255]
Input [6]: [product#1244, plant#1245, orderDateTime#1246, _extract_code#9254, _extract_internalRefUUID#9255, internalUUID#1258]
(384) Scan parquet
Output [4]: [internalUUID#1272, baseUnitOfMeasure#1276, unitOfMeasureConversions#1278, systemId#1271]
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#1272, baseUnitOfMeasure#1276, unitOfMeasureConversions#1278, systemId#1271]
Condition : isnotnull(internalUUID#1272)
(386) Project
Output [3]: [internalUUID#1272, baseUnitOfMeasure#1276, unitOfMeasureConversions#1278]
Input [4]: [internalUUID#1272, baseUnitOfMeasure#1276, unitOfMeasureConversions#1278, systemId#1271]
(387) Exchange
Input [3]: [internalUUID#1272, baseUnitOfMeasure#1276, unitOfMeasureConversions#1278]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7458]
(388) BroadcastExchange
Input [3]: [internalUUID#1272, baseUnitOfMeasure#1276, unitOfMeasureConversions#1278]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=9729]
(389) BroadcastHashJoin
Left keys [1]: [product#1244]
Right keys [1]: [internalUUID#1272]
Join type: LeftOuter
Join condition: None
(390) Project
Output [4]: [product#1244, plant#1245, orderDateTime#1246, filter(unitOfMeasureConversions#1278, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9254) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9255)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1276.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1276.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1283]
Input [8]: [product#1244, plant#1245, orderDateTime#1246, _extract_code#9254, _extract_internalRefUUID#9255, internalUUID#1272, baseUnitOfMeasure#1276, unitOfMeasureConversions#1278]
(391) Generate
Input [4]: [product#1244, plant#1245, orderDateTime#1246, filteredUnitOfMeasureConversions#1283]
Arguments: explode(filteredUnitOfMeasureConversions#1283.quantityNumerator), [product#1244, plant#1245, orderDateTime#1246, filteredUnitOfMeasureConversions#1283], true, [quantityNumerator#1284]
(392) Project
Output [4]: [product#1244, plant#1245, orderDateTime#1246, filteredUnitOfMeasureConversions#1283.quantityDenominator AS _extract_quantityDenominator#8566]
Input [5]: [product#1244, plant#1245, orderDateTime#1246, filteredUnitOfMeasureConversions#1283, quantityNumerator#1284]
(393) Generate
Input [4]: [product#1244, plant#1245, orderDateTime#1246, _extract_quantityDenominator#8566]
Arguments: explode(_extract_quantityDenominator#8566), [product#1244, plant#1245, orderDateTime#1246], true, [quantityDenominator#1285]
(394) Project
Output [3]: [product#1244, plant#1245, orderDateTime#1246]
Input [4]: [product#1244, plant#1245, orderDateTime#1246, quantityDenominator#1285]
(395) Sort
Input [3]: [product#1244, plant#1245, orderDateTime#1246]
Arguments: [product#1244 ASC NULLS FIRST, plant#1245 ASC NULLS FIRST], false, 0
(396) SortMergeJoin
Left keys [2]: [productUuid#1229, plantUuid#1227]
Right keys [2]: [product#1244, plant#1245]
Join type: Inner
Join condition: (calculationDateTime#1209 <= orderDateTime#1246)
(397) Project
Output [5]: [plantUuid#1227 AS plant#1292, productUuid#1229 AS product#1293, storageLocId#1230, calculationDateTime#1209, quantity#1232]
Input [8]: [plantUuid#1227, productUuid#1229, calculationDateTime#1209, storageLocId#1230, quantity#1232, product#1244, plant#1245, orderDateTime#1246]
(398) Exchange
Input [5]: [plant#1292, product#1293, storageLocId#1230, calculationDateTime#1209, quantity#1232]
Arguments: hashpartitioning(coalesce(plant#1292, ), isnull(plant#1292), coalesce(product#1293, ), isnull(product#1293), coalesce(storageLocId#1230, ), isnull(storageLocId#1230), coalesce(calculationDateTime#1209, 1970-01-01 00:00:00), isnull(calculationDateTime#1209), 10), ENSURE_REQUIREMENTS, [plan_id=9802]
(399) Sort
Input [5]: [plant#1292, product#1293, storageLocId#1230, calculationDateTime#1209, quantity#1232]
Arguments: [coalesce(plant#1292, ) ASC NULLS FIRST, isnull(plant#1292) ASC NULLS FIRST, coalesce(product#1293, ) ASC NULLS FIRST, isnull(product#1293) ASC NULLS FIRST, coalesce(storageLocId#1230, ) ASC NULLS FIRST, isnull(storageLocId#1230) ASC NULLS FIRST, coalesce(calculationDateTime#1209, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#1209) ASC NULLS FIRST], false, 0
(400) Scan parquet
Output [6]: [internalUUID#1302, product#1303, plant#1304, calculationDateTime#1305, stockQuantities#1306, systemId#1301]
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#1302, product#1303, plant#1304, calculationDateTime#1305, stockQuantities#1306, systemId#1301]
Condition : (isnotnull(plant#1304.internalRefUUID) AND isnotnull(product#1303.internalRefUUID))
(402) Project
Output [6]: [systemId#1301, internalUUID#1302, product#1303, plant#1304, calculationDateTime#1305, stockQuantities#1306]
Input [6]: [internalUUID#1302, product#1303, plant#1304, calculationDateTime#1305, stockQuantities#1306, systemId#1301]
(403) Exchange
Input [6]: [systemId#1301, internalUUID#1302, product#1303, plant#1304, calculationDateTime#1305, stockQuantities#1306]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7470]
(404) BroadcastExchange
Input [6]: [systemId#1301, internalUUID#1302, product#1303, plant#1304, calculationDateTime#1305, stockQuantities#1306]
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=9767]
(405) Scan parquet
Output [2]: [marketUnit#1307, distributionCenters#1313]
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#1307, distributionCenters#1313]
Condition : (((marketUnit#1307 <=> DIP_1691) AND (size(distributionCenters#1313, true) > 0)) AND isnotnull(distributionCenters#1313))
(407) Project
Output [1]: [distributionCenters#1313]
Input [2]: [marketUnit#1307, distributionCenters#1313]
(408) Exchange
Input [1]: [distributionCenters#1313]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7474]
(409) Generate
Input [1]: [distributionCenters#1313]
Arguments: explode(distributionCenters#1313), false, [distributionCenters#1329]
(410) Filter
Input [1]: [distributionCenters#1329]
Condition : (((size(distributionCenters#1329.storageLocations, true) > 0) AND isnotnull(distributionCenters#1329.storageLocations)) AND isnotnull(distributionCenters#1329.internalRefUUID))
(411) Project
Output [2]: [distributionCenters#1329.internalRefUUID AS _extract_internalRefUUID#8570, distributionCenters#1329.storageLocations AS _extract_storageLocations#8571]
Input [1]: [distributionCenters#1329]
(412) Generate
Input [2]: [_extract_internalRefUUID#8570, _extract_storageLocations#8571]
Arguments: explode(_extract_storageLocations#8571), [_extract_internalRefUUID#8570], false, [storageLocations#1330]
(413) Project
Output [3]: [_extract_internalRefUUID#8570 AS plantUuid#1332, storageLocations#1330.id AS storageLocId#1333, storageLocations#1330.internalRefUUID AS storageLocUuid#1334]
Input [2]: [_extract_internalRefUUID#8570, storageLocations#1330]
(414) BroadcastExchange
Input [3]: [plantUuid#1332, storageLocId#1333, storageLocUuid#1334]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=9763]
(415) Scan parquet
Output [2]: [product#1335, plant#1336]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(416) Filter
Input [2]: [product#1335, plant#1336]
Condition : isnotnull(plant#1336)
(417) Exchange
Input [2]: [product#1335, plant#1336]
Arguments: hashpartitioning(product#1335, plant#1336, 10), REPARTITION_BY_NUM, [plan_id=8982]
(418) Scan parquet
Output [4]: [plant#1341, product#1342, productionAspect#1344, systemId#1339]
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#1341.internalRefUUID AS _extract_internalRefUUID#9258, product#1342.internalRefUUID AS _extract_internalRefUUID#9261, productionAspect#1344.productMovementPlants.unitOfIssue.code AS _extract_code#9259, productionAspect#1344.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9260]
Input [4]: [plant#1341, product#1342, productionAspect#1344, systemId#1339]
(420) Exchange
Input [4]: [_extract_internalRefUUID#9258, _extract_internalRefUUID#9261, _extract_code#9259, _extract_internalRefUUID#9260]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7486]
(421) Project
Output [4]: [_extract_code#9259, _extract_internalRefUUID#9260, _extract_internalRefUUID#9261, _extract_internalRefUUID#9258]
Input [4]: [_extract_internalRefUUID#9258, _extract_internalRefUUID#9261, _extract_code#9259, _extract_internalRefUUID#9260]
(422) BroadcastExchange
Input [4]: [_extract_code#9259, _extract_internalRefUUID#9260, _extract_internalRefUUID#9261, _extract_internalRefUUID#9258]
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=9743]
(423) BroadcastHashJoin
Left keys [4]: [coalesce(product#1335, ), isnull(product#1335), coalesce(plant#1336, ), isnull(plant#1336)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9261, ), isnull(_extract_internalRefUUID#9261), coalesce(_extract_internalRefUUID#9258, ), isnull(_extract_internalRefUUID#9258)]
Join type: LeftOuter
Join condition: None
(424) Project
Output [4]: [product#1335, plant#1336, _extract_code#9259, _extract_internalRefUUID#9260]
Input [6]: [product#1335, plant#1336, _extract_code#9259, _extract_internalRefUUID#9260, _extract_internalRefUUID#9261, _extract_internalRefUUID#9258]
(425) Scan parquet
Output [2]: [internalUUID#1349, systemId#1348]
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#1349]
Input [2]: [internalUUID#1349, systemId#1348]
(427) Exchange
Input [1]: [internalUUID#1349]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7492]
(428) BroadcastExchange
Input [1]: [internalUUID#1349]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=9747]
(429) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1336, ), isnull(plant#1336)]
Right keys [2]: [coalesce(internalUUID#1349, ), isnull(internalUUID#1349)]
Join type: LeftOuter
Join condition: None
(430) Project
Output [4]: [product#1335, plant#1336, _extract_code#9259, _extract_internalRefUUID#9260]
Input [5]: [product#1335, plant#1336, _extract_code#9259, _extract_internalRefUUID#9260, internalUUID#1349]
(431) Scan parquet
Output [4]: [internalUUID#1363, baseUnitOfMeasure#1367, unitOfMeasureConversions#1369, systemId#1362]
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#1363, baseUnitOfMeasure#1367, unitOfMeasureConversions#1369, systemId#1362]
Condition : isnotnull(internalUUID#1363)
(433) Project
Output [3]: [internalUUID#1363, baseUnitOfMeasure#1367, unitOfMeasureConversions#1369]
Input [4]: [internalUUID#1363, baseUnitOfMeasure#1367, unitOfMeasureConversions#1369, systemId#1362]
(434) Exchange
Input [3]: [internalUUID#1363, baseUnitOfMeasure#1367, unitOfMeasureConversions#1369]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7498]
(435) BroadcastExchange
Input [3]: [internalUUID#1363, baseUnitOfMeasure#1367, unitOfMeasureConversions#1369]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=9751]
(436) BroadcastHashJoin
Left keys [1]: [product#1335]
Right keys [1]: [internalUUID#1363]
Join type: LeftOuter
Join condition: None
(437) Project
Output [2]: [plant#1336, filter(unitOfMeasureConversions#1369, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9259) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9260)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1367.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1367.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1374]
Input [7]: [product#1335, plant#1336, _extract_code#9259, _extract_internalRefUUID#9260, internalUUID#1363, baseUnitOfMeasure#1367, unitOfMeasureConversions#1369]
(438) Generate
Input [2]: [plant#1336, filteredUnitOfMeasureConversions#1374]
Arguments: explode(filteredUnitOfMeasureConversions#1374.quantityNumerator), [plant#1336, filteredUnitOfMeasureConversions#1374], true, [quantityNumerator#1375]
(439) Project
Output [2]: [plant#1336, filteredUnitOfMeasureConversions#1374.quantityDenominator AS _extract_quantityDenominator#8572]
Input [3]: [plant#1336, filteredUnitOfMeasureConversions#1374, quantityNumerator#1375]
(440) Generate
Input [2]: [plant#1336, _extract_quantityDenominator#8572]
Arguments: explode(_extract_quantityDenominator#8572), [plant#1336], true, [quantityDenominator#1376]
(441) Project
Output [1]: [plant#1336]
Input [2]: [plant#1336, quantityDenominator#1376]
(442) HashAggregate
Input [1]: [plant#1336]
Keys [1]: [plant#1336]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1336]
(443) Exchange
Input [1]: [plant#1336]
Arguments: hashpartitioning(plant#1336, 10), ENSURE_REQUIREMENTS, [plan_id=9760]
(444) HashAggregate
Input [1]: [plant#1336]
Keys [1]: [plant#1336]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1336]
(445) BroadcastHashJoin
Left keys [1]: [plantUuid#1332]
Right keys [1]: [plant#1336]
Join type: Inner
Join condition: None
(446) Project
Output [3]: [plantUuid#1332, storageLocId#1333, storageLocUuid#1334]
Input [4]: [plantUuid#1332, storageLocId#1333, storageLocUuid#1334, plant#1336]
(447) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1304.internalRefUUID, ), isnull(plant#1304.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1332, ), isnull(plantUuid#1332)]
Join type: Inner
Join condition: None
(448) Generate
Input [9]: [systemId#1301, internalUUID#1302, product#1303, plant#1304, calculationDateTime#1305, stockQuantities#1306, plantUuid#1332, storageLocId#1333, storageLocUuid#1334]
Arguments: explode(filter(stockQuantities#1306, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#1334) AND (lambda x#1207.storageLocation.Id = storageLocId#1333)), lambda x#1207, false))), [systemId#1301, internalUUID#1302, product#1303, plant#1304, calculationDateTime#1305, plantUuid#1332], false, [stockQuantity#1379]
(449) ObjectHashAggregate
Input [7]: [systemId#1301, internalUUID#1302, product#1303, plant#1304, calculationDateTime#1305, plantUuid#1332, stockQuantity#1379]
Keys [5]: [plantUuid#1332, internalUUID#1302, plant#1304, product#1303, systemId#1301]
Functions [2]: [partial_first(calculationDateTime#1305, false), partial_collect_list(stockQuantity#1379, 0, 0)]
Aggregate Attributes [3]: [first#10304, valueSet#10305, buf#10306]
Results [8]: [plantUuid#1332, internalUUID#1302, plant#1304, product#1303, systemId#1301, first#10307, valueSet#10308, buf#10309]
(450) ObjectHashAggregate
Input [8]: [plantUuid#1332, internalUUID#1302, plant#1304, product#1303, systemId#1301, first#10307, valueSet#10308, buf#10309]
Keys [5]: [plantUuid#1332, internalUUID#1302, plant#1304, product#1303, systemId#1301]
Functions [2]: [first(calculationDateTime#1305, false), collect_list(stockQuantity#1379, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1305)()#1222, collect_list(stockQuantity#1379, 0, 0)#1223]
Results [4]: [product#1303, plant#1304, first(calculationDateTime#1305)()#1222 AS calculationDateTime#1380, collect_list(stockQuantity#1379, 0, 0)#1223 AS stockQuantities#1381]
(451) Filter
Input [4]: [product#1303, plant#1304, calculationDateTime#1380, stockQuantities#1381]
Condition : ((size(stockQuantities#1381, true) > 0) AND isnotnull(calculationDateTime#1380))
(452) Generate
Input [4]: [product#1303, plant#1304, calculationDateTime#1380, stockQuantities#1381]
Arguments: explode(stockQuantities#1381), [product#1303, plant#1304, calculationDateTime#1380], false, [stockQuantity#1382]
(453) Filter
Input [4]: [product#1303, plant#1304, calculationDateTime#1380, stockQuantity#1382]
Condition : (((isnotnull(stockQuantity#1382.specialStockIndicator.code) AND isnotnull(stockQuantity#1382.stockType.code)) AND (stockQuantity#1382.specialStockIndicator.code = )) AND (stockQuantity#1382.stockType.code = 01))
(454) Project
Output [4]: [plant#1304.internalRefUUID AS plantUuid#1384, product#1303.internalRefUUID AS productUuid#1386, calculationDateTime#1380, stockQuantity#1382.storagelocation.id AS storageLocId#1387]
Input [4]: [product#1303, plant#1304, calculationDateTime#1380, stockQuantity#1382]
(455) Exchange
Input [4]: [plantUuid#1384, productUuid#1386, calculationDateTime#1380, storageLocId#1387]
Arguments: hashpartitioning(productUuid#1386, plantUuid#1384, 10), ENSURE_REQUIREMENTS, [plan_id=9793]
(456) Sort
Input [4]: [plantUuid#1384, productUuid#1386, calculationDateTime#1380, storageLocId#1387]
Arguments: [productUuid#1386 ASC NULLS FIRST, plantUuid#1384 ASC NULLS FIRST], false, 0
(457) Scan parquet
Output [3]: [product#1392, plant#1393, orderDateTime#1394]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(458) Filter
Input [3]: [product#1392, plant#1393, orderDateTime#1394]
Condition : ((isnotnull(orderDateTime#1394) AND isnotnull(plant#1393)) AND isnotnull(product#1392))
(459) Exchange
Input [3]: [product#1392, plant#1393, orderDateTime#1394]
Arguments: hashpartitioning(product#1392, plant#1393, 10), REPARTITION_BY_NUM, [plan_id=9005]
(460) Scan parquet
Output [4]: [plant#1398, product#1399, productionAspect#1401, systemId#1396]
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#1398.internalRefUUID AS _extract_internalRefUUID#9265, product#1399.internalRefUUID AS _extract_internalRefUUID#9262, productionAspect#1401.productMovementPlants.unitOfIssue.code AS _extract_code#9263, productionAspect#1401.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9264]
Input [4]: [plant#1398, product#1399, productionAspect#1401, systemId#1396]
(462) Exchange
Input [4]: [_extract_internalRefUUID#9265, _extract_internalRefUUID#9262, _extract_code#9263, _extract_internalRefUUID#9264]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7523]
(463) Project
Output [4]: [_extract_code#9263, _extract_internalRefUUID#9264, _extract_internalRefUUID#9262, _extract_internalRefUUID#9265]
Input [4]: [_extract_internalRefUUID#9265, _extract_internalRefUUID#9262, _extract_code#9263, _extract_internalRefUUID#9264]
(464) BroadcastExchange
Input [4]: [_extract_code#9263, _extract_internalRefUUID#9264, _extract_internalRefUUID#9262, _extract_internalRefUUID#9265]
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=9776]
(465) BroadcastHashJoin
Left keys [4]: [coalesce(product#1392, ), isnull(product#1392), coalesce(plant#1393, ), isnull(plant#1393)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9262, ), isnull(_extract_internalRefUUID#9262), coalesce(_extract_internalRefUUID#9265, ), isnull(_extract_internalRefUUID#9265)]
Join type: LeftOuter
Join condition: None
(466) Project
Output [5]: [product#1392, plant#1393, orderDateTime#1394, _extract_code#9263, _extract_internalRefUUID#9264]
Input [7]: [product#1392, plant#1393, orderDateTime#1394, _extract_code#9263, _extract_internalRefUUID#9264, _extract_internalRefUUID#9262, _extract_internalRefUUID#9265]
(467) Scan parquet
Output [2]: [internalUUID#1406, systemId#1405]
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#1406]
Input [2]: [internalUUID#1406, systemId#1405]
(469) Exchange
Input [1]: [internalUUID#1406]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7529]
(470) BroadcastExchange
Input [1]: [internalUUID#1406]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=9780]
(471) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1393, ), isnull(plant#1393)]
Right keys [2]: [coalesce(internalUUID#1406, ), isnull(internalUUID#1406)]
Join type: LeftOuter
Join condition: None
(472) Project
Output [5]: [product#1392, plant#1393, orderDateTime#1394, _extract_code#9263, _extract_internalRefUUID#9264]
Input [6]: [product#1392, plant#1393, orderDateTime#1394, _extract_code#9263, _extract_internalRefUUID#9264, internalUUID#1406]
(473) Scan parquet
Output [4]: [internalUUID#1420, baseUnitOfMeasure#1424, unitOfMeasureConversions#1426, systemId#1419]
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#1420, baseUnitOfMeasure#1424, unitOfMeasureConversions#1426, systemId#1419]
Condition : isnotnull(internalUUID#1420)
(475) Project
Output [3]: [internalUUID#1420, baseUnitOfMeasure#1424, unitOfMeasureConversions#1426]
Input [4]: [internalUUID#1420, baseUnitOfMeasure#1424, unitOfMeasureConversions#1426, systemId#1419]
(476) Exchange
Input [3]: [internalUUID#1420, baseUnitOfMeasure#1424, unitOfMeasureConversions#1426]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7535]
(477) BroadcastExchange
Input [3]: [internalUUID#1420, baseUnitOfMeasure#1424, unitOfMeasureConversions#1426]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=9784]
(478) BroadcastHashJoin
Left keys [1]: [product#1392]
Right keys [1]: [internalUUID#1420]
Join type: LeftOuter
Join condition: None
(479) Project
Output [4]: [product#1392, plant#1393, orderDateTime#1394, filter(unitOfMeasureConversions#1426, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9263) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9264)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1424.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1424.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1431]
Input [8]: [product#1392, plant#1393, orderDateTime#1394, _extract_code#9263, _extract_internalRefUUID#9264, internalUUID#1420, baseUnitOfMeasure#1424, unitOfMeasureConversions#1426]
(480) Generate
Input [4]: [product#1392, plant#1393, orderDateTime#1394, filteredUnitOfMeasureConversions#1431]
Arguments: explode(filteredUnitOfMeasureConversions#1431.quantityNumerator), [product#1392, plant#1393, orderDateTime#1394, filteredUnitOfMeasureConversions#1431], true, [quantityNumerator#1432]
(481) Project
Output [4]: [product#1392, plant#1393, orderDateTime#1394, filteredUnitOfMeasureConversions#1431.quantityDenominator AS _extract_quantityDenominator#8576]
Input [5]: [product#1392, plant#1393, orderDateTime#1394, filteredUnitOfMeasureConversions#1431, quantityNumerator#1432]
(482) Generate
Input [4]: [product#1392, plant#1393, orderDateTime#1394, _extract_quantityDenominator#8576]
Arguments: explode(_extract_quantityDenominator#8576), [product#1392, plant#1393, orderDateTime#1394], true, [quantityDenominator#1433]
(483) Project
Output [3]: [product#1392, plant#1393, orderDateTime#1394]
Input [4]: [product#1392, plant#1393, orderDateTime#1394, quantityDenominator#1433]
(484) Sort
Input [3]: [product#1392, plant#1393, orderDateTime#1394]
Arguments: [product#1392 ASC NULLS FIRST, plant#1393 ASC NULLS FIRST], false, 0
(485) SortMergeJoin
Left keys [2]: [productUuid#1386, plantUuid#1384]
Right keys [2]: [product#1392, plant#1393]
Join type: Inner
Join condition: (calculationDateTime#1380 <= orderDateTime#1394)
(486) Project
Output [4]: [plantUuid#1384 AS plant#1436, productUuid#1386 AS product#1437, storageLocId#1387, calculationDateTime#1380]
Input [7]: [plantUuid#1384, productUuid#1386, calculationDateTime#1380, storageLocId#1387, product#1392, plant#1393, orderDateTime#1394]
(487) HashAggregate
Input [4]: [plant#1436, product#1437, storageLocId#1387, calculationDateTime#1380]
Keys [3]: [plant#1436, product#1437, storageLocId#1387]
Functions [1]: [partial_max(calculationDateTime#1380)]
Aggregate Attributes [1]: [max#10302]
Results [4]: [plant#1436, product#1437, storageLocId#1387, max#10303]
(488) HashAggregate
Input [4]: [plant#1436, product#1437, storageLocId#1387, max#10303]
Keys [3]: [plant#1436, product#1437, storageLocId#1387]
Functions [1]: [max(calculationDateTime#1380)]
Aggregate Attributes [1]: [max(calculationDateTime#1380)#1300]
Results [4]: [plant#1436, product#1437, storageLocId#1387, max(calculationDateTime#1380)#1300 AS max_calc_datetime#1294]
(489) Exchange
Input [4]: [plant#1436, product#1437, storageLocId#1387, max_calc_datetime#1294]
Arguments: hashpartitioning(coalesce(plant#1436, ), isnull(plant#1436), coalesce(product#1437, ), isnull(product#1437), coalesce(storageLocId#1387, ), isnull(storageLocId#1387), coalesce(max_calc_datetime#1294, 1970-01-01 00:00:00), isnull(max_calc_datetime#1294), 10), ENSURE_REQUIREMENTS, [plan_id=9803]
(490) Sort
Input [4]: [plant#1436, product#1437, storageLocId#1387, max_calc_datetime#1294]
Arguments: [coalesce(plant#1436, ) ASC NULLS FIRST, isnull(plant#1436) ASC NULLS FIRST, coalesce(product#1437, ) ASC NULLS FIRST, isnull(product#1437) ASC NULLS FIRST, coalesce(storageLocId#1387, ) ASC NULLS FIRST, isnull(storageLocId#1387) ASC NULLS FIRST, coalesce(max_calc_datetime#1294, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#1294) ASC NULLS FIRST], false, 0
(491) SortMergeJoin
Left keys [8]: [coalesce(plant#1292, ), isnull(plant#1292), coalesce(product#1293, ), isnull(product#1293), coalesce(storageLocId#1230, ), isnull(storageLocId#1230), coalesce(calculationDateTime#1209, 1970-01-01 00:00:00), isnull(calculationDateTime#1209)]
Right keys [8]: [coalesce(plant#1436, ), isnull(plant#1436), coalesce(product#1437, ), isnull(product#1437), coalesce(storageLocId#1387, ), isnull(storageLocId#1387), coalesce(max_calc_datetime#1294, 1970-01-01 00:00:00), isnull(max_calc_datetime#1294)]
Join type: Inner
Join condition: None
(492) Project
Output [4]: [plant#1292, product#1293, calculationDateTime#1209, quantity#1232]
Input [9]: [plant#1292, product#1293, storageLocId#1230, calculationDateTime#1209, quantity#1232, plant#1436, product#1437, storageLocId#1387, max_calc_datetime#1294]
(493) HashAggregate
Input [4]: [plant#1292, product#1293, calculationDateTime#1209, quantity#1232]
Keys [2]: [product#1293, plant#1292]
Functions [2]: [partial_min(calculationDateTime#1209), partial_sum(quantity#1232)]
Aggregate Attributes [2]: [min#10292, sum#10293]
Results [4]: [product#1293, plant#1292, min#10294, sum#10295]
(494) Exchange
Input [4]: [product#1293, plant#1292, min#10294, sum#10295]
Arguments: hashpartitioning(product#1293, plant#1292, 10), ENSURE_REQUIREMENTS, [plan_id=9810]
(495) HashAggregate
Input [4]: [product#1293, plant#1292, min#10294, sum#10295]
Keys [2]: [product#1293, plant#1292]
Functions [2]: [min(calculationDateTime#1209), sum(quantity#1232)]
Aggregate Attributes [2]: [min(calculationDateTime#1209)#1456, sum(quantity#1232)#1455]
Results [4]: [product#1293, plant#1292, min(calculationDateTime#1209)#1456 AS minCalculationDateTime#1449, round(sum(quantity#1232)#1455, 0) AS roundedQuantitySum#1457]
(496) Sort
Input [4]: [product#1293, plant#1292, minCalculationDateTime#1449, roundedQuantitySum#1457]
Arguments: [product#1293 ASC NULLS FIRST, plant#1292 ASC NULLS FIRST], false, 0
(497) SortMergeJoin
Left keys [2]: [product#1102, plant#1103]
Right keys [2]: [product#1293, plant#1292]
Join type: LeftOuter
Join condition: None
(498) Project
Output [5]: [product#1102, plant#1103, outboundUnit#1161, CASE WHEN isnotnull(minCalculationDateTime#1449) THEN minCalculationDateTime#1449 ELSE orderDateTime#1104 END AS stockDatetime#1506, CASE WHEN isnotnull(roundedQuantitySum#1457) THEN array(roundedQuantitySum#1457) ELSE [0.0] END AS stockBatchQuantities#1507]
Input [8]: [product#1102, plant#1103, orderDateTime#1104, outboundUnit#1161, product#1293, plant#1292, minCalculationDateTime#1449, roundedQuantitySum#1457]
(499) Exchange
Input [5]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507]
Arguments: hashpartitioning(coalesce(plant#1103, ), isnull(plant#1103), coalesce(product#1102, ), isnull(product#1102), 10), ENSURE_REQUIREMENTS, [plan_id=9974]
(500) Sort
Input [5]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507]
Arguments: [coalesce(plant#1103, ) ASC NULLS FIRST, isnull(plant#1103) ASC NULLS FIRST, coalesce(product#1102, ) ASC NULLS FIRST, isnull(product#1102) ASC NULLS FIRST], false, 0
(501) Scan parquet
Output [3]: [product#1583, plant#1584, orderDateTime#1585]
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/10000000004/shardId=0_1_10000000004]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(502) Exchange
Input [3]: [product#1583, plant#1584, orderDateTime#1585]
Arguments: hashpartitioning(product#1583, plant#1584, 10), REPARTITION_BY_NUM, [plan_id=7553]
(503) Project
Output [8]: [systemId#1587, internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594]
Input [8]: [internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594, systemId#1587]
(504) Exchange
Input [8]: [systemId#1587, internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7556]
(505) Project
Output [1]: [struct(systemId, systemId#1587, internalUUID, internalUUID#1588, plant, plant#1589, product, product#1590, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1591, productionAspect, productionAspect#1592, salesPlant, salesPlant#1593, listing, listing#1594) AS productPlant#1595]
Input [8]: [systemId#1587, internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594]
(506) BroadcastExchange
Input [1]: [productPlant#1595]
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=9818]
(507) BroadcastHashJoin
Left keys [4]: [coalesce(product#1583, ), isnull(product#1583), coalesce(plant#1584, ), isnull(plant#1584)]
Right keys [4]: [coalesce(productPlant#1595.product.internalRefUUID, ), isnull(productPlant#1595.product.internalRefUUID), coalesce(productPlant#1595.plant.internalRefUUID, ), isnull(productPlant#1595.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(508) Project
Output [2]: [internalUUID#1597, address#1603.timeZone.code AS timezonecode#1608]
Input [3]: [internalUUID#1597, address#1603, systemId#1596]
(509) Exchange
Input [2]: [internalUUID#1597, timezonecode#1608]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7561]
(510) BroadcastExchange
Input [2]: [internalUUID#1597, timezonecode#1608]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=9821]
(511) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1584, ), isnull(plant#1584)]
Right keys [2]: [coalesce(internalUUID#1597, ), isnull(internalUUID#1597)]
Join type: LeftOuter
Join condition: None
(512) Project
Output [5]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, CASE WHEN isnotnull(timezonecode#1608) THEN timezonecode#1608 ELSE UTC END AS timezonecode#1609]
Input [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, internalUUID#1597, timezonecode#1608]
(513) Scan parquet
Output [4]: [internalUUID#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617, systemId#1610]
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#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617, systemId#1610]
Condition : isnotnull(internalUUID#1611)
(515) Project
Output [3]: [internalUUID#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617]
Input [4]: [internalUUID#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617, systemId#1610]
(516) Exchange
Input [3]: [internalUUID#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7567]
(517) BroadcastExchange
Input [3]: [internalUUID#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=9825]
(518) BroadcastHashJoin
Left keys [1]: [product#1583]
Right keys [1]: [internalUUID#1611]
Join type: LeftOuter
Join condition: None
(519) Project
Output [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, filter(unitOfMeasureConversions#1617, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#1595.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#1595.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1615.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1615.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1622]
Input [8]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, internalUUID#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617]
(520) Project
Output [7]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, filteredUnitOfMeasureConversions#1622.quantityDenominator AS _extract_quantityDenominator#8773, filteredUnitOfMeasureConversions#1622.quantityNumerator AS _extract_quantityNumerator#8774]
Input [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, filteredUnitOfMeasureConversions#1622]
(521) Generate
Input [7]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, _extract_quantityDenominator#8773, _extract_quantityNumerator#8774]
Arguments: explode(_extract_quantityNumerator#8774), [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, _extract_quantityDenominator#8773], true, [quantityNumerator#1623]
(522) Generate
Input [7]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, _extract_quantityDenominator#8773, quantityNumerator#1623]
Arguments: explode(_extract_quantityDenominator#8773), [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, quantityNumerator#1623], true, [quantityDenominator#1624]
(523) Project
Output [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, (cast(quantityNumerator#1623 as double) / cast(quantityDenominator#1624 as double)) AS outboundUnit#1625]
Input [7]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, quantityNumerator#1623, quantityDenominator#1624]
(524) Project
Output [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, CASE WHEN (isnull(outboundUnit#1625) OR (outboundUnit#1625 <= 0.0)) THEN 1.0 ELSE outboundUnit#1625 END AS outboundUnit#1626]
Input [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1625]
(525) Sort
Input [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626]
Arguments: [product#1583 ASC NULLS FIRST, plant#1584 ASC NULLS FIRST], false, 0
(526) Scan parquet
Output [6]: [internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632, systemId#1627]
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#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632, systemId#1627]
Condition : (isnotnull(plant#1630.internalRefUUID) AND isnotnull(product#1629.internalRefUUID))
(528) Project
Output [6]: [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632]
Input [6]: [internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632, systemId#1627]
(529) Exchange
Input [6]: [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7578]
(530) BroadcastExchange
Input [6]: [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632]
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=9857]
(531) Scan parquet
Output [2]: [marketUnit#1633, distributionCenters#1639]
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#1633, distributionCenters#1639]
Condition : (((marketUnit#1633 <=> DIP_1691) AND (size(distributionCenters#1639, true) > 0)) AND isnotnull(distributionCenters#1639))
(533) Project
Output [1]: [distributionCenters#1639]
Input [2]: [marketUnit#1633, distributionCenters#1639]
(534) Exchange
Input [1]: [distributionCenters#1639]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7582]
(535) Generate
Input [1]: [distributionCenters#1639]
Arguments: explode(distributionCenters#1639), false, [distributionCenters#1655]
(536) Filter
Input [1]: [distributionCenters#1655]
Condition : (((size(distributionCenters#1655.storageLocations, true) > 0) AND isnotnull(distributionCenters#1655.storageLocations)) AND isnotnull(distributionCenters#1655.internalRefUUID))
(537) Project
Output [2]: [distributionCenters#1655.internalRefUUID AS _extract_internalRefUUID#8582, distributionCenters#1655.storageLocations AS _extract_storageLocations#8583]
Input [1]: [distributionCenters#1655]
(538) Generate
Input [2]: [_extract_internalRefUUID#8582, _extract_storageLocations#8583]
Arguments: explode(_extract_storageLocations#8583), [_extract_internalRefUUID#8582], false, [storageLocations#1656]
(539) Project
Output [3]: [_extract_internalRefUUID#8582 AS plantUuid#1658, storageLocations#1656.id AS storageLocId#1659, storageLocations#1656.internalRefUUID AS storageLocUuid#1660]
Input [2]: [_extract_internalRefUUID#8582, storageLocations#1656]
(540) BroadcastExchange
Input [3]: [plantUuid#1658, storageLocId#1659, storageLocUuid#1660]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=9853]
(541) Scan parquet
Output [2]: [product#1661, plant#1662]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(542) Filter
Input [2]: [product#1661, plant#1662]
Condition : isnotnull(plant#1662)
(543) Exchange
Input [2]: [product#1661, plant#1662]
Arguments: hashpartitioning(product#1661, plant#1662, 10), REPARTITION_BY_NUM, [plan_id=9026]
(544) Scan parquet
Output [4]: [plant#1667, product#1668, productionAspect#1670, systemId#1665]
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#1667.internalRefUUID AS _extract_internalRefUUID#9269, product#1668.internalRefUUID AS _extract_internalRefUUID#9268, productionAspect#1670.productMovementPlants.unitOfIssue.code AS _extract_code#9266, productionAspect#1670.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9267]
Input [4]: [plant#1667, product#1668, productionAspect#1670, systemId#1665]
(546) Exchange
Input [4]: [_extract_internalRefUUID#9269, _extract_internalRefUUID#9268, _extract_code#9266, _extract_internalRefUUID#9267]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7594]
(547) Project
Output [4]: [_extract_code#9266, _extract_internalRefUUID#9267, _extract_internalRefUUID#9268, _extract_internalRefUUID#9269]
Input [4]: [_extract_internalRefUUID#9269, _extract_internalRefUUID#9268, _extract_code#9266, _extract_internalRefUUID#9267]
(548) BroadcastExchange
Input [4]: [_extract_code#9266, _extract_internalRefUUID#9267, _extract_internalRefUUID#9268, _extract_internalRefUUID#9269]
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=9833]
(549) BroadcastHashJoin
Left keys [4]: [coalesce(product#1661, ), isnull(product#1661), coalesce(plant#1662, ), isnull(plant#1662)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9268, ), isnull(_extract_internalRefUUID#9268), coalesce(_extract_internalRefUUID#9269, ), isnull(_extract_internalRefUUID#9269)]
Join type: LeftOuter
Join condition: None
(550) Project
Output [4]: [product#1661, plant#1662, _extract_code#9266, _extract_internalRefUUID#9267]
Input [6]: [product#1661, plant#1662, _extract_code#9266, _extract_internalRefUUID#9267, _extract_internalRefUUID#9268, _extract_internalRefUUID#9269]
(551) Scan parquet
Output [2]: [internalUUID#1675, systemId#1674]
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#1675]
Input [2]: [internalUUID#1675, systemId#1674]
(553) Exchange
Input [1]: [internalUUID#1675]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7600]
(554) BroadcastExchange
Input [1]: [internalUUID#1675]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=9837]
(555) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1662, ), isnull(plant#1662)]
Right keys [2]: [coalesce(internalUUID#1675, ), isnull(internalUUID#1675)]
Join type: LeftOuter
Join condition: None
(556) Project
Output [4]: [product#1661, plant#1662, _extract_code#9266, _extract_internalRefUUID#9267]
Input [5]: [product#1661, plant#1662, _extract_code#9266, _extract_internalRefUUID#9267, internalUUID#1675]
(557) Scan parquet
Output [4]: [internalUUID#1689, baseUnitOfMeasure#1693, unitOfMeasureConversions#1695, systemId#1688]
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#1689, baseUnitOfMeasure#1693, unitOfMeasureConversions#1695, systemId#1688]
Condition : isnotnull(internalUUID#1689)
(559) Project
Output [3]: [internalUUID#1689, baseUnitOfMeasure#1693, unitOfMeasureConversions#1695]
Input [4]: [internalUUID#1689, baseUnitOfMeasure#1693, unitOfMeasureConversions#1695, systemId#1688]
(560) Exchange
Input [3]: [internalUUID#1689, baseUnitOfMeasure#1693, unitOfMeasureConversions#1695]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7606]
(561) BroadcastExchange
Input [3]: [internalUUID#1689, baseUnitOfMeasure#1693, unitOfMeasureConversions#1695]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=9841]
(562) BroadcastHashJoin
Left keys [1]: [product#1661]
Right keys [1]: [internalUUID#1689]
Join type: LeftOuter
Join condition: None
(563) Project
Output [2]: [plant#1662, filter(unitOfMeasureConversions#1695, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9266) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9267)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1693.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1693.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1700]
Input [7]: [product#1661, plant#1662, _extract_code#9266, _extract_internalRefUUID#9267, internalUUID#1689, baseUnitOfMeasure#1693, unitOfMeasureConversions#1695]
(564) Generate
Input [2]: [plant#1662, filteredUnitOfMeasureConversions#1700]
Arguments: explode(filteredUnitOfMeasureConversions#1700.quantityNumerator), [plant#1662, filteredUnitOfMeasureConversions#1700], true, [quantityNumerator#1701]
(565) Project
Output [2]: [plant#1662, filteredUnitOfMeasureConversions#1700.quantityDenominator AS _extract_quantityDenominator#8584]
Input [3]: [plant#1662, filteredUnitOfMeasureConversions#1700, quantityNumerator#1701]
(566) Generate
Input [2]: [plant#1662, _extract_quantityDenominator#8584]
Arguments: explode(_extract_quantityDenominator#8584), [plant#1662], true, [quantityDenominator#1702]
(567) Project
Output [1]: [plant#1662]
Input [2]: [plant#1662, quantityDenominator#1702]
(568) HashAggregate
Input [1]: [plant#1662]
Keys [1]: [plant#1662]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1662]
(569) Exchange
Input [1]: [plant#1662]
Arguments: hashpartitioning(plant#1662, 10), ENSURE_REQUIREMENTS, [plan_id=9850]
(570) HashAggregate
Input [1]: [plant#1662]
Keys [1]: [plant#1662]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1662]
(571) BroadcastHashJoin
Left keys [1]: [plantUuid#1658]
Right keys [1]: [plant#1662]
Join type: Inner
Join condition: None
(572) Project
Output [3]: [plantUuid#1658, storageLocId#1659, storageLocUuid#1660]
Input [4]: [plantUuid#1658, storageLocId#1659, storageLocUuid#1660, plant#1662]
(573) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1630.internalRefUUID, ), isnull(plant#1630.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1658, ), isnull(plantUuid#1658)]
Join type: Inner
Join condition: None
(574) Generate
Input [9]: [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632, plantUuid#1658, storageLocId#1659, storageLocUuid#1660]
Arguments: explode(filter(stockQuantities#1632, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#1660) AND (lambda x#1207.storageLocation.Id = storageLocId#1659)), lambda x#1207, false))), [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, plantUuid#1658], false, [stockQuantity#1705]
(575) ObjectHashAggregate
Input [7]: [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, plantUuid#1658, stockQuantity#1705]
Keys [5]: [plantUuid#1658, internalUUID#1628, plant#1630, product#1629, systemId#1627]
Functions [2]: [partial_first(calculationDateTime#1631, false), partial_collect_list(stockQuantity#1705, 0, 0)]
Aggregate Attributes [3]: [first#4288, valueSet#4289, buf#4290]
Results [8]: [plantUuid#1658, internalUUID#1628, plant#1630, product#1629, systemId#1627, first#4291, valueSet#4292, buf#4293]
(576) ObjectHashAggregate
Input [8]: [plantUuid#1658, internalUUID#1628, plant#1630, product#1629, systemId#1627, first#4291, valueSet#4292, buf#4293]
Keys [5]: [plantUuid#1658, internalUUID#1628, plant#1630, product#1629, systemId#1627]
Functions [2]: [first(calculationDateTime#1631, false), collect_list(stockQuantity#1705, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1631)()#1222, collect_list(stockQuantity#1705, 0, 0)#1223]
Results [4]: [product#1629, plant#1630, first(calculationDateTime#1631)()#1222 AS calculationDateTime#1706, collect_list(stockQuantity#1705, 0, 0)#1223 AS stockQuantities#1707]
(577) Filter
Input [4]: [product#1629, plant#1630, calculationDateTime#1706, stockQuantities#1707]
Condition : ((size(stockQuantities#1707, true) > 0) AND isnotnull(calculationDateTime#1706))
(578) Generate
Input [4]: [product#1629, plant#1630, calculationDateTime#1706, stockQuantities#1707]
Arguments: explode(stockQuantities#1707), [product#1629, plant#1630, calculationDateTime#1706], false, [stockQuantity#1708]
(579) Filter
Input [4]: [product#1629, plant#1630, calculationDateTime#1706, stockQuantity#1708]
Condition : (((isnotnull(stockQuantity#1708.specialStockIndicator.code) AND isnotnull(stockQuantity#1708.stockType.code)) AND (stockQuantity#1708.specialStockIndicator.code = )) AND (stockQuantity#1708.stockType.code = 01))
(580) Project
Output [5]: [plant#1630.internalRefUUID AS plantUuid#1710, product#1629.internalRefUUID AS productUuid#1712, calculationDateTime#1706, stockQuantity#1708.storagelocation.id AS storageLocId#1713, stockQuantity#1708.quantity.measure AS quantity#1715]
Input [4]: [product#1629, plant#1630, calculationDateTime#1706, stockQuantity#1708]
(581) Exchange
Input [5]: [plantUuid#1710, productUuid#1712, calculationDateTime#1706, storageLocId#1713, quantity#1715]
Arguments: hashpartitioning(productUuid#1712, plantUuid#1710, 10), ENSURE_REQUIREMENTS, [plan_id=9883]
(582) Sort
Input [5]: [plantUuid#1710, productUuid#1712, calculationDateTime#1706, storageLocId#1713, quantity#1715]
Arguments: [productUuid#1712 ASC NULLS FIRST, plantUuid#1710 ASC NULLS FIRST], false, 0
(583) Scan parquet
Output [3]: [product#1718, plant#1719, orderDateTime#1720]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(584) Filter
Input [3]: [product#1718, plant#1719, orderDateTime#1720]
Condition : ((isnotnull(orderDateTime#1720) AND isnotnull(plant#1719)) AND isnotnull(product#1718))
(585) Exchange
Input [3]: [product#1718, plant#1719, orderDateTime#1720]
Arguments: hashpartitioning(product#1718, plant#1719, 10), REPARTITION_BY_NUM, [plan_id=9049]
(586) Scan parquet
Output [4]: [plant#1724, product#1725, productionAspect#1727, systemId#1722]
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#1724.internalRefUUID AS _extract_internalRefUUID#9270, product#1725.internalRefUUID AS _extract_internalRefUUID#9273, productionAspect#1727.productMovementPlants.unitOfIssue.code AS _extract_code#9271, productionAspect#1727.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9272]
Input [4]: [plant#1724, product#1725, productionAspect#1727, systemId#1722]
(588) Exchange
Input [4]: [_extract_internalRefUUID#9270, _extract_internalRefUUID#9273, _extract_code#9271, _extract_internalRefUUID#9272]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7631]
(589) Project
Output [4]: [_extract_code#9271, _extract_internalRefUUID#9272, _extract_internalRefUUID#9273, _extract_internalRefUUID#9270]
Input [4]: [_extract_internalRefUUID#9270, _extract_internalRefUUID#9273, _extract_code#9271, _extract_internalRefUUID#9272]
(590) BroadcastExchange
Input [4]: [_extract_code#9271, _extract_internalRefUUID#9272, _extract_internalRefUUID#9273, _extract_internalRefUUID#9270]
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=9866]
(591) BroadcastHashJoin
Left keys [4]: [coalesce(product#1718, ), isnull(product#1718), coalesce(plant#1719, ), isnull(plant#1719)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9273, ), isnull(_extract_internalRefUUID#9273), coalesce(_extract_internalRefUUID#9270, ), isnull(_extract_internalRefUUID#9270)]
Join type: LeftOuter
Join condition: None
(592) Project
Output [5]: [product#1718, plant#1719, orderDateTime#1720, _extract_code#9271, _extract_internalRefUUID#9272]
Input [7]: [product#1718, plant#1719, orderDateTime#1720, _extract_code#9271, _extract_internalRefUUID#9272, _extract_internalRefUUID#9273, _extract_internalRefUUID#9270]
(593) Scan parquet
Output [2]: [internalUUID#1732, systemId#1731]
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#1732]
Input [2]: [internalUUID#1732, systemId#1731]
(595) Exchange
Input [1]: [internalUUID#1732]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7637]
(596) BroadcastExchange
Input [1]: [internalUUID#1732]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=9870]
(597) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1719, ), isnull(plant#1719)]
Right keys [2]: [coalesce(internalUUID#1732, ), isnull(internalUUID#1732)]
Join type: LeftOuter
Join condition: None
(598) Project
Output [5]: [product#1718, plant#1719, orderDateTime#1720, _extract_code#9271, _extract_internalRefUUID#9272]
Input [6]: [product#1718, plant#1719, orderDateTime#1720, _extract_code#9271, _extract_internalRefUUID#9272, internalUUID#1732]
(599) Scan parquet
Output [4]: [internalUUID#1746, baseUnitOfMeasure#1750, unitOfMeasureConversions#1752, systemId#1745]
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#1746, baseUnitOfMeasure#1750, unitOfMeasureConversions#1752, systemId#1745]
Condition : isnotnull(internalUUID#1746)
(601) Project
Output [3]: [internalUUID#1746, baseUnitOfMeasure#1750, unitOfMeasureConversions#1752]
Input [4]: [internalUUID#1746, baseUnitOfMeasure#1750, unitOfMeasureConversions#1752, systemId#1745]
(602) Exchange
Input [3]: [internalUUID#1746, baseUnitOfMeasure#1750, unitOfMeasureConversions#1752]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7643]
(603) BroadcastExchange
Input [3]: [internalUUID#1746, baseUnitOfMeasure#1750, unitOfMeasureConversions#1752]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=9874]
(604) BroadcastHashJoin
Left keys [1]: [product#1718]
Right keys [1]: [internalUUID#1746]
Join type: LeftOuter
Join condition: None
(605) Project
Output [4]: [product#1718, plant#1719, orderDateTime#1720, filter(unitOfMeasureConversions#1752, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9271) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9272)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1750.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1750.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1757]
Input [8]: [product#1718, plant#1719, orderDateTime#1720, _extract_code#9271, _extract_internalRefUUID#9272, internalUUID#1746, baseUnitOfMeasure#1750, unitOfMeasureConversions#1752]
(606) Generate
Input [4]: [product#1718, plant#1719, orderDateTime#1720, filteredUnitOfMeasureConversions#1757]
Arguments: explode(filteredUnitOfMeasureConversions#1757.quantityNumerator), [product#1718, plant#1719, orderDateTime#1720, filteredUnitOfMeasureConversions#1757], true, [quantityNumerator#1758]
(607) Project
Output [4]: [product#1718, plant#1719, orderDateTime#1720, filteredUnitOfMeasureConversions#1757.quantityDenominator AS _extract_quantityDenominator#8588]
Input [5]: [product#1718, plant#1719, orderDateTime#1720, filteredUnitOfMeasureConversions#1757, quantityNumerator#1758]
(608) Generate
Input [4]: [product#1718, plant#1719, orderDateTime#1720, _extract_quantityDenominator#8588]
Arguments: explode(_extract_quantityDenominator#8588), [product#1718, plant#1719, orderDateTime#1720], true, [quantityDenominator#1759]
(609) Project
Output [3]: [product#1718, plant#1719, orderDateTime#1720]
Input [4]: [product#1718, plant#1719, orderDateTime#1720, quantityDenominator#1759]
(610) Sort
Input [3]: [product#1718, plant#1719, orderDateTime#1720]
Arguments: [product#1718 ASC NULLS FIRST, plant#1719 ASC NULLS FIRST], false, 0
(611) SortMergeJoin
Left keys [2]: [productUuid#1712, plantUuid#1710]
Right keys [2]: [product#1718, plant#1719]
Join type: Inner
Join condition: (calculationDateTime#1706 <= orderDateTime#1720)
(612) Project
Output [5]: [plantUuid#1710 AS plant#1762, productUuid#1712 AS product#1763, storageLocId#1713, calculationDateTime#1706, quantity#1715]
Input [8]: [plantUuid#1710, productUuid#1712, calculationDateTime#1706, storageLocId#1713, quantity#1715, product#1718, plant#1719, orderDateTime#1720]
(613) Exchange
Input [5]: [plant#1762, product#1763, storageLocId#1713, calculationDateTime#1706, quantity#1715]
Arguments: hashpartitioning(coalesce(plant#1762, ), isnull(plant#1762), coalesce(product#1763, ), isnull(product#1763), coalesce(storageLocId#1713, ), isnull(storageLocId#1713), coalesce(calculationDateTime#1706, 1970-01-01 00:00:00), isnull(calculationDateTime#1706), 10), ENSURE_REQUIREMENTS, [plan_id=9947]
(614) Sort
Input [5]: [plant#1762, product#1763, storageLocId#1713, calculationDateTime#1706, quantity#1715]
Arguments: [coalesce(plant#1762, ) ASC NULLS FIRST, isnull(plant#1762) ASC NULLS FIRST, coalesce(product#1763, ) ASC NULLS FIRST, isnull(product#1763) ASC NULLS FIRST, coalesce(storageLocId#1713, ) ASC NULLS FIRST, isnull(storageLocId#1713) ASC NULLS FIRST, coalesce(calculationDateTime#1706, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#1706) ASC NULLS FIRST], false, 0
(615) Scan parquet
Output [6]: [internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769, systemId#1764]
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#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769, systemId#1764]
Condition : (isnotnull(plant#1767.internalRefUUID) AND isnotnull(product#1766.internalRefUUID))
(617) Project
Output [6]: [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769]
Input [6]: [internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769, systemId#1764]
(618) Exchange
Input [6]: [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7655]
(619) BroadcastExchange
Input [6]: [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769]
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=9912]
(620) Scan parquet
Output [2]: [marketUnit#1770, distributionCenters#1776]
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#1770, distributionCenters#1776]
Condition : (((marketUnit#1770 <=> DIP_1691) AND (size(distributionCenters#1776, true) > 0)) AND isnotnull(distributionCenters#1776))
(622) Project
Output [1]: [distributionCenters#1776]
Input [2]: [marketUnit#1770, distributionCenters#1776]
(623) Exchange
Input [1]: [distributionCenters#1776]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7659]
(624) Generate
Input [1]: [distributionCenters#1776]
Arguments: explode(distributionCenters#1776), false, [distributionCenters#1792]
(625) Filter
Input [1]: [distributionCenters#1792]
Condition : (((size(distributionCenters#1792.storageLocations, true) > 0) AND isnotnull(distributionCenters#1792.storageLocations)) AND isnotnull(distributionCenters#1792.internalRefUUID))
(626) Project
Output [2]: [distributionCenters#1792.internalRefUUID AS _extract_internalRefUUID#8592, distributionCenters#1792.storageLocations AS _extract_storageLocations#8593]
Input [1]: [distributionCenters#1792]
(627) Generate
Input [2]: [_extract_internalRefUUID#8592, _extract_storageLocations#8593]
Arguments: explode(_extract_storageLocations#8593), [_extract_internalRefUUID#8592], false, [storageLocations#1793]
(628) Project
Output [3]: [_extract_internalRefUUID#8592 AS plantUuid#1795, storageLocations#1793.id AS storageLocId#1796, storageLocations#1793.internalRefUUID AS storageLocUuid#1797]
Input [2]: [_extract_internalRefUUID#8592, storageLocations#1793]
(629) BroadcastExchange
Input [3]: [plantUuid#1795, storageLocId#1796, storageLocUuid#1797]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=9908]
(630) Scan parquet
Output [2]: [product#1798, plant#1799]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(631) Filter
Input [2]: [product#1798, plant#1799]
Condition : isnotnull(plant#1799)
(632) Exchange
Input [2]: [product#1798, plant#1799]
Arguments: hashpartitioning(product#1798, plant#1799, 10), REPARTITION_BY_NUM, [plan_id=9062]
(633) Scan parquet
Output [4]: [plant#1804, product#1805, productionAspect#1807, systemId#1802]
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#1804.internalRefUUID AS _extract_internalRefUUID#9277, product#1805.internalRefUUID AS _extract_internalRefUUID#9276, productionAspect#1807.productMovementPlants.unitOfIssue.code AS _extract_code#9274, productionAspect#1807.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9275]
Input [4]: [plant#1804, product#1805, productionAspect#1807, systemId#1802]
(635) Exchange
Input [4]: [_extract_internalRefUUID#9277, _extract_internalRefUUID#9276, _extract_code#9274, _extract_internalRefUUID#9275]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7671]
(636) Project
Output [4]: [_extract_code#9274, _extract_internalRefUUID#9275, _extract_internalRefUUID#9276, _extract_internalRefUUID#9277]
Input [4]: [_extract_internalRefUUID#9277, _extract_internalRefUUID#9276, _extract_code#9274, _extract_internalRefUUID#9275]
(637) BroadcastExchange
Input [4]: [_extract_code#9274, _extract_internalRefUUID#9275, _extract_internalRefUUID#9276, _extract_internalRefUUID#9277]
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=9888]
(638) BroadcastHashJoin
Left keys [4]: [coalesce(product#1798, ), isnull(product#1798), coalesce(plant#1799, ), isnull(plant#1799)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9276, ), isnull(_extract_internalRefUUID#9276), coalesce(_extract_internalRefUUID#9277, ), isnull(_extract_internalRefUUID#9277)]
Join type: LeftOuter
Join condition: None
(639) Project
Output [4]: [product#1798, plant#1799, _extract_code#9274, _extract_internalRefUUID#9275]
Input [6]: [product#1798, plant#1799, _extract_code#9274, _extract_internalRefUUID#9275, _extract_internalRefUUID#9276, _extract_internalRefUUID#9277]
(640) Scan parquet
Output [2]: [internalUUID#1812, systemId#1811]
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#1812]
Input [2]: [internalUUID#1812, systemId#1811]
(642) Exchange
Input [1]: [internalUUID#1812]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7677]
(643) BroadcastExchange
Input [1]: [internalUUID#1812]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=9892]
(644) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1799, ), isnull(plant#1799)]
Right keys [2]: [coalesce(internalUUID#1812, ), isnull(internalUUID#1812)]
Join type: LeftOuter
Join condition: None
(645) Project
Output [4]: [product#1798, plant#1799, _extract_code#9274, _extract_internalRefUUID#9275]
Input [5]: [product#1798, plant#1799, _extract_code#9274, _extract_internalRefUUID#9275, internalUUID#1812]
(646) Scan parquet
Output [4]: [internalUUID#1826, baseUnitOfMeasure#1830, unitOfMeasureConversions#1832, systemId#1825]
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#1826, baseUnitOfMeasure#1830, unitOfMeasureConversions#1832, systemId#1825]
Condition : isnotnull(internalUUID#1826)
(648) Project
Output [3]: [internalUUID#1826, baseUnitOfMeasure#1830, unitOfMeasureConversions#1832]
Input [4]: [internalUUID#1826, baseUnitOfMeasure#1830, unitOfMeasureConversions#1832, systemId#1825]
(649) Exchange
Input [3]: [internalUUID#1826, baseUnitOfMeasure#1830, unitOfMeasureConversions#1832]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7683]
(650) BroadcastExchange
Input [3]: [internalUUID#1826, baseUnitOfMeasure#1830, unitOfMeasureConversions#1832]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=9896]
(651) BroadcastHashJoin
Left keys [1]: [product#1798]
Right keys [1]: [internalUUID#1826]
Join type: LeftOuter
Join condition: None
(652) Project
Output [2]: [plant#1799, filter(unitOfMeasureConversions#1832, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9274) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9275)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1830.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1830.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1837]
Input [7]: [product#1798, plant#1799, _extract_code#9274, _extract_internalRefUUID#9275, internalUUID#1826, baseUnitOfMeasure#1830, unitOfMeasureConversions#1832]
(653) Generate
Input [2]: [plant#1799, filteredUnitOfMeasureConversions#1837]
Arguments: explode(filteredUnitOfMeasureConversions#1837.quantityNumerator), [plant#1799, filteredUnitOfMeasureConversions#1837], true, [quantityNumerator#1838]
(654) Project
Output [2]: [plant#1799, filteredUnitOfMeasureConversions#1837.quantityDenominator AS _extract_quantityDenominator#8594]
Input [3]: [plant#1799, filteredUnitOfMeasureConversions#1837, quantityNumerator#1838]
(655) Generate
Input [2]: [plant#1799, _extract_quantityDenominator#8594]
Arguments: explode(_extract_quantityDenominator#8594), [plant#1799], true, [quantityDenominator#1839]
(656) Project
Output [1]: [plant#1799]
Input [2]: [plant#1799, quantityDenominator#1839]
(657) HashAggregate
Input [1]: [plant#1799]
Keys [1]: [plant#1799]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1799]
(658) Exchange
Input [1]: [plant#1799]
Arguments: hashpartitioning(plant#1799, 10), ENSURE_REQUIREMENTS, [plan_id=9905]
(659) HashAggregate
Input [1]: [plant#1799]
Keys [1]: [plant#1799]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1799]
(660) BroadcastHashJoin
Left keys [1]: [plantUuid#1795]
Right keys [1]: [plant#1799]
Join type: Inner
Join condition: None
(661) Project
Output [3]: [plantUuid#1795, storageLocId#1796, storageLocUuid#1797]
Input [4]: [plantUuid#1795, storageLocId#1796, storageLocUuid#1797, plant#1799]
(662) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1767.internalRefUUID, ), isnull(plant#1767.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1795, ), isnull(plantUuid#1795)]
Join type: Inner
Join condition: None
(663) Generate
Input [9]: [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769, plantUuid#1795, storageLocId#1796, storageLocUuid#1797]
Arguments: explode(filter(stockQuantities#1769, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#1797) AND (lambda x#1207.storageLocation.Id = storageLocId#1796)), lambda x#1207, false))), [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, plantUuid#1795], false, [stockQuantity#1842]
(664) ObjectHashAggregate
Input [7]: [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, plantUuid#1795, stockQuantity#1842]
Keys [5]: [plantUuid#1795, internalUUID#1765, plant#1767, product#1766, systemId#1764]
Functions [2]: [partial_first(calculationDateTime#1768, false), partial_collect_list(stockQuantity#1842, 0, 0)]
Aggregate Attributes [3]: [first#4296, valueSet#4297, buf#4298]
Results [8]: [plantUuid#1795, internalUUID#1765, plant#1767, product#1766, systemId#1764, first#4299, valueSet#4300, buf#4301]
(665) ObjectHashAggregate
Input [8]: [plantUuid#1795, internalUUID#1765, plant#1767, product#1766, systemId#1764, first#4299, valueSet#4300, buf#4301]
Keys [5]: [plantUuid#1795, internalUUID#1765, plant#1767, product#1766, systemId#1764]
Functions [2]: [first(calculationDateTime#1768, false), collect_list(stockQuantity#1842, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1768)()#1222, collect_list(stockQuantity#1842, 0, 0)#1223]
Results [4]: [product#1766, plant#1767, first(calculationDateTime#1768)()#1222 AS calculationDateTime#1843, collect_list(stockQuantity#1842, 0, 0)#1223 AS stockQuantities#1844]
(666) Filter
Input [4]: [product#1766, plant#1767, calculationDateTime#1843, stockQuantities#1844]
Condition : ((size(stockQuantities#1844, true) > 0) AND isnotnull(calculationDateTime#1843))
(667) Generate
Input [4]: [product#1766, plant#1767, calculationDateTime#1843, stockQuantities#1844]
Arguments: explode(stockQuantities#1844), [product#1766, plant#1767, calculationDateTime#1843], false, [stockQuantity#1845]
(668) Filter
Input [4]: [product#1766, plant#1767, calculationDateTime#1843, stockQuantity#1845]
Condition : (((isnotnull(stockQuantity#1845.specialStockIndicator.code) AND isnotnull(stockQuantity#1845.stockType.code)) AND (stockQuantity#1845.specialStockIndicator.code = )) AND (stockQuantity#1845.stockType.code = 01))
(669) Project
Output [4]: [plant#1767.internalRefUUID AS plantUuid#1847, product#1766.internalRefUUID AS productUuid#1849, calculationDateTime#1843, stockQuantity#1845.storagelocation.id AS storageLocId#1850]
Input [4]: [product#1766, plant#1767, calculationDateTime#1843, stockQuantity#1845]
(670) Exchange
Input [4]: [plantUuid#1847, productUuid#1849, calculationDateTime#1843, storageLocId#1850]
Arguments: hashpartitioning(productUuid#1849, plantUuid#1847, 10), ENSURE_REQUIREMENTS, [plan_id=9938]
(671) Sort
Input [4]: [plantUuid#1847, productUuid#1849, calculationDateTime#1843, storageLocId#1850]
Arguments: [productUuid#1849 ASC NULLS FIRST, plantUuid#1847 ASC NULLS FIRST], false, 0
(672) Scan parquet
Output [3]: [product#1855, plant#1856, orderDateTime#1857]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(673) Filter
Input [3]: [product#1855, plant#1856, orderDateTime#1857]
Condition : ((isnotnull(orderDateTime#1857) AND isnotnull(plant#1856)) AND isnotnull(product#1855))
(674) Exchange
Input [3]: [product#1855, plant#1856, orderDateTime#1857]
Arguments: hashpartitioning(product#1855, plant#1856, 10), REPARTITION_BY_NUM, [plan_id=9085]
(675) Scan parquet
Output [4]: [plant#1861, product#1862, productionAspect#1864, systemId#1859]
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#1861.internalRefUUID AS _extract_internalRefUUID#9278, product#1862.internalRefUUID AS _extract_internalRefUUID#9281, productionAspect#1864.productMovementPlants.unitOfIssue.code AS _extract_code#9279, productionAspect#1864.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9280]
Input [4]: [plant#1861, product#1862, productionAspect#1864, systemId#1859]
(677) Exchange
Input [4]: [_extract_internalRefUUID#9278, _extract_internalRefUUID#9281, _extract_code#9279, _extract_internalRefUUID#9280]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7708]
(678) Project
Output [4]: [_extract_code#9279, _extract_internalRefUUID#9280, _extract_internalRefUUID#9281, _extract_internalRefUUID#9278]
Input [4]: [_extract_internalRefUUID#9278, _extract_internalRefUUID#9281, _extract_code#9279, _extract_internalRefUUID#9280]
(679) BroadcastExchange
Input [4]: [_extract_code#9279, _extract_internalRefUUID#9280, _extract_internalRefUUID#9281, _extract_internalRefUUID#9278]
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=9921]
(680) BroadcastHashJoin
Left keys [4]: [coalesce(product#1855, ), isnull(product#1855), coalesce(plant#1856, ), isnull(plant#1856)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9281, ), isnull(_extract_internalRefUUID#9281), coalesce(_extract_internalRefUUID#9278, ), isnull(_extract_internalRefUUID#9278)]
Join type: LeftOuter
Join condition: None
(681) Project
Output [5]: [product#1855, plant#1856, orderDateTime#1857, _extract_code#9279, _extract_internalRefUUID#9280]
Input [7]: [product#1855, plant#1856, orderDateTime#1857, _extract_code#9279, _extract_internalRefUUID#9280, _extract_internalRefUUID#9281, _extract_internalRefUUID#9278]
(682) Scan parquet
Output [2]: [internalUUID#1869, systemId#1868]
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#1869]
Input [2]: [internalUUID#1869, systemId#1868]
(684) Exchange
Input [1]: [internalUUID#1869]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7714]
(685) BroadcastExchange
Input [1]: [internalUUID#1869]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=9925]
(686) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1856, ), isnull(plant#1856)]
Right keys [2]: [coalesce(internalUUID#1869, ), isnull(internalUUID#1869)]
Join type: LeftOuter
Join condition: None
(687) Project
Output [5]: [product#1855, plant#1856, orderDateTime#1857, _extract_code#9279, _extract_internalRefUUID#9280]
Input [6]: [product#1855, plant#1856, orderDateTime#1857, _extract_code#9279, _extract_internalRefUUID#9280, internalUUID#1869]
(688) Scan parquet
Output [4]: [internalUUID#1883, baseUnitOfMeasure#1887, unitOfMeasureConversions#1889, systemId#1882]
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#1883, baseUnitOfMeasure#1887, unitOfMeasureConversions#1889, systemId#1882]
Condition : isnotnull(internalUUID#1883)
(690) Project
Output [3]: [internalUUID#1883, baseUnitOfMeasure#1887, unitOfMeasureConversions#1889]
Input [4]: [internalUUID#1883, baseUnitOfMeasure#1887, unitOfMeasureConversions#1889, systemId#1882]
(691) Exchange
Input [3]: [internalUUID#1883, baseUnitOfMeasure#1887, unitOfMeasureConversions#1889]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7720]
(692) BroadcastExchange
Input [3]: [internalUUID#1883, baseUnitOfMeasure#1887, unitOfMeasureConversions#1889]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=9929]
(693) BroadcastHashJoin
Left keys [1]: [product#1855]
Right keys [1]: [internalUUID#1883]
Join type: LeftOuter
Join condition: None
(694) Project
Output [4]: [product#1855, plant#1856, orderDateTime#1857, filter(unitOfMeasureConversions#1889, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9279) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9280)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1887.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1887.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1894]
Input [8]: [product#1855, plant#1856, orderDateTime#1857, _extract_code#9279, _extract_internalRefUUID#9280, internalUUID#1883, baseUnitOfMeasure#1887, unitOfMeasureConversions#1889]
(695) Generate
Input [4]: [product#1855, plant#1856, orderDateTime#1857, filteredUnitOfMeasureConversions#1894]
Arguments: explode(filteredUnitOfMeasureConversions#1894.quantityNumerator), [product#1855, plant#1856, orderDateTime#1857, filteredUnitOfMeasureConversions#1894], true, [quantityNumerator#1895]
(696) Project
Output [4]: [product#1855, plant#1856, orderDateTime#1857, filteredUnitOfMeasureConversions#1894.quantityDenominator AS _extract_quantityDenominator#8598]
Input [5]: [product#1855, plant#1856, orderDateTime#1857, filteredUnitOfMeasureConversions#1894, quantityNumerator#1895]
(697) Generate
Input [4]: [product#1855, plant#1856, orderDateTime#1857, _extract_quantityDenominator#8598]
Arguments: explode(_extract_quantityDenominator#8598), [product#1855, plant#1856, orderDateTime#1857], true, [quantityDenominator#1896]
(698) Project
Output [3]: [product#1855, plant#1856, orderDateTime#1857]
Input [4]: [product#1855, plant#1856, orderDateTime#1857, quantityDenominator#1896]
(699) Sort
Input [3]: [product#1855, plant#1856, orderDateTime#1857]
Arguments: [product#1855 ASC NULLS FIRST, plant#1856 ASC NULLS FIRST], false, 0
(700) SortMergeJoin
Left keys [2]: [productUuid#1849, plantUuid#1847]
Right keys [2]: [product#1855, plant#1856]
Join type: Inner
Join condition: (calculationDateTime#1843 <= orderDateTime#1857)
(701) Project
Output [4]: [plantUuid#1847 AS plant#1899, productUuid#1849 AS product#1900, storageLocId#1850, calculationDateTime#1843]
Input [7]: [plantUuid#1847, productUuid#1849, calculationDateTime#1843, storageLocId#1850, product#1855, plant#1856, orderDateTime#1857]
(702) HashAggregate
Input [4]: [plant#1899, product#1900, storageLocId#1850, calculationDateTime#1843]
Keys [3]: [plant#1899, product#1900, storageLocId#1850]
Functions [1]: [partial_max(calculationDateTime#1843)]
Aggregate Attributes [1]: [max#4294]
Results [4]: [plant#1899, product#1900, storageLocId#1850, max#4295]
(703) HashAggregate
Input [4]: [plant#1899, product#1900, storageLocId#1850, max#4295]
Keys [3]: [plant#1899, product#1900, storageLocId#1850]
Functions [1]: [max(calculationDateTime#1843)]
Aggregate Attributes [1]: [max(calculationDateTime#1843)#1300]
Results [4]: [plant#1899, product#1900, storageLocId#1850, max(calculationDateTime#1843)#1300 AS max_calc_datetime#1901]
(704) Exchange
Input [4]: [plant#1899, product#1900, storageLocId#1850, max_calc_datetime#1901]
Arguments: hashpartitioning(coalesce(plant#1899, ), isnull(plant#1899), coalesce(product#1900, ), isnull(product#1900), coalesce(storageLocId#1850, ), isnull(storageLocId#1850), coalesce(max_calc_datetime#1901, 1970-01-01 00:00:00), isnull(max_calc_datetime#1901), 10), ENSURE_REQUIREMENTS, [plan_id=9948]
(705) Sort
Input [4]: [plant#1899, product#1900, storageLocId#1850, max_calc_datetime#1901]
Arguments: [coalesce(plant#1899, ) ASC NULLS FIRST, isnull(plant#1899) ASC NULLS FIRST, coalesce(product#1900, ) ASC NULLS FIRST, isnull(product#1900) ASC NULLS FIRST, coalesce(storageLocId#1850, ) ASC NULLS FIRST, isnull(storageLocId#1850) ASC NULLS FIRST, coalesce(max_calc_datetime#1901, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#1901) ASC NULLS FIRST], false, 0
(706) SortMergeJoin
Left keys [8]: [coalesce(plant#1762, ), isnull(plant#1762), coalesce(product#1763, ), isnull(product#1763), coalesce(storageLocId#1713, ), isnull(storageLocId#1713), coalesce(calculationDateTime#1706, 1970-01-01 00:00:00), isnull(calculationDateTime#1706)]
Right keys [8]: [coalesce(plant#1899, ), isnull(plant#1899), coalesce(product#1900, ), isnull(product#1900), coalesce(storageLocId#1850, ), isnull(storageLocId#1850), coalesce(max_calc_datetime#1901, 1970-01-01 00:00:00), isnull(max_calc_datetime#1901)]
Join type: Inner
Join condition: None
(707) Project
Output [4]: [plant#1762, product#1763, calculationDateTime#1706, quantity#1715]
Input [9]: [plant#1762, product#1763, storageLocId#1713, calculationDateTime#1706, quantity#1715, plant#1899, product#1900, storageLocId#1850, max_calc_datetime#1901]
(708) HashAggregate
Input [4]: [plant#1762, product#1763, calculationDateTime#1706, quantity#1715]
Keys [2]: [product#1763, plant#1762]
Functions [2]: [partial_min(calculationDateTime#1706), partial_sum(quantity#1715)]
Aggregate Attributes [2]: [min#4284, sum#4285]
Results [4]: [product#1763, plant#1762, min#4286, sum#4287]
(709) Exchange
Input [4]: [product#1763, plant#1762, min#4286, sum#4287]
Arguments: hashpartitioning(product#1763, plant#1762, 10), ENSURE_REQUIREMENTS, [plan_id=9955]
(710) HashAggregate
Input [4]: [product#1763, plant#1762, min#4286, sum#4287]
Keys [2]: [product#1763, plant#1762]
Functions [2]: [min(calculationDateTime#1706), sum(quantity#1715)]
Aggregate Attributes [2]: [min(calculationDateTime#1706)#1456, sum(quantity#1715)#1455]
Results [4]: [product#1763, plant#1762, min(calculationDateTime#1706)#1456 AS minCalculationDateTime#1903, round(sum(quantity#1715)#1455, 0) AS roundedQuantitySum#1904]
(711) Sort
Input [4]: [product#1763, plant#1762, minCalculationDateTime#1903, roundedQuantitySum#1904]
Arguments: [product#1763 ASC NULLS FIRST, plant#1762 ASC NULLS FIRST], false, 0
(712) SortMergeJoin
Left keys [2]: [product#1583, plant#1584]
Right keys [2]: [product#1763, plant#1762]
Join type: LeftOuter
Join condition: None
(713) Project
Output [8]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, CASE WHEN isnotnull(minCalculationDateTime#1903) THEN minCalculationDateTime#1903 ELSE orderDateTime#1585 END AS stockDatetime#1905, CASE WHEN isnotnull(roundedQuantitySum#1904) THEN array(roundedQuantitySum#1904) ELSE [0.0] END AS stockBatchQuantities#1906]
Input [10]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, product#1763, plant#1762, minCalculationDateTime#1903, roundedQuantitySum#1904]
(714) Filter
Input [9]: [product#1509, plant#1510, demandChannel#1511, demandStream#1512, considerVariance#1513, demandTimeBuckets#1514, demandPointInTimeStart#1515, demandPointInTimeEnd#1516, demandPointInTime#1517]
Condition : (isnotnull(product#1509) AND isnotnull(plant#1510))
(715) BroadcastExchange
Input [9]: [product#1509, plant#1510, demandChannel#1511, demandStream#1512, considerVariance#1513, demandTimeBuckets#1514, demandPointInTimeStart#1515, demandPointInTimeEnd#1516, demandPointInTime#1517]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=9964]
(716) BroadcastHashJoin
Left keys [2]: [product#1583, plant#1584]
Right keys [2]: [product#1509, plant#1510]
Join type: LeftOuter
Join condition: None
(717) Project
Output [9]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, CASE WHEN isnotnull(product#1509) THEN struct(demandChannel, demandChannel#1511, demandStream, demandStream#1512, considerVariance, considerVariance#1513, demandTimeBuckets, demandTimeBuckets#1514, demandPointInTimeStart, demandPointInTimeStart#1515, demandPointInTimeEnd, demandPointInTimeEnd#1516, demandPointInTime, demandPointInTime#1517) END AS rawDemands#1529]
Input [17]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, product#1509, plant#1510, demandChannel#1511, demandStream#1512, considerVariance#1513, demandTimeBuckets#1514, demandPointInTimeStart#1515, demandPointInTimeEnd#1516, demandPointInTime#1517]
(718) ObjectHashAggregate
Input [9]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, rawDemands#1529]
Keys [9]: [product#1583, plant#1584, orderDateTime#1585, knownfloatingpointnormalized(if (isnull(productPlant#1595)) null else named_struct(systemId, productPlant#1595.systemId, internalUUID, productPlant#1595.internalUUID, plant, productPlant#1595.plant, product, productPlant#1595.product, blockedForReplenishmentStartingFrom, productPlant#1595.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#1595.productionAspect)) null else named_struct(productMovementPlants, productPlant#1595.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#1595.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#1595.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#1595.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#1595.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#1595.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#1595.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#1595.salesPlant, listing, productPlant#1595.listing)) AS productPlant#1595, timezonecode#1609, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#1626)) AS outboundUnit#1626, stockDatetime#1905, knownfloatingpointnormalized(transform(stockBatchQuantities#1906, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#10311)), lambda arg#10311, false))) AS stockBatchQuantities#1906, [7226582400000000] AS [7226582400000000]#10310]
Functions [1]: [partial_collect_list(rawDemands#1529, 0, 0)]
Aggregate Attributes [1]: [buf#4282]
Results [10]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, [7226582400000000]#10310, buf#4283]
(719) ObjectHashAggregate
Input [10]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, [7226582400000000]#10310, buf#4283]
Keys [9]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, [7226582400000000]#10310]
Functions [1]: [collect_list(rawDemands#1529, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#1529, 0, 0)#1548]
Results [10]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1907, collect_list(rawDemands#1529, 0, 0)#1548 AS rawDemands#1530]
(720) DeserializeToObject
Input [10]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, stockBatchShelfLifeEndDatetimes#1907, rawDemands#1530]
Arguments: createexternalrow(invoke(product#1583.toString()), invoke(plant#1584.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1585)), if (isnull(productPlant#1595)) null else createexternalrow(invoke(productPlant#1595.systemId.toString()), invoke(productPlant#1595.internalUUID.toString()), if (isnull(productPlant#1595.plant)) null else createexternalrow(invoke(productPlant#1595.plant.internalRefUUID.toString()), invoke(productPlant#1595.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1595.product)) null else createexternalrow(invoke(productPlant#1595.product.internalRefUUID.toString()), invoke(productPlant#1595.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1595.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1595.productionAspect)) null else createexternalrow(if (isnull(productPlant#1595.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1595.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1595.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#1595.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1595.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1595.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1595.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#1595.salesPlant)) null else createexternalrow(if (isnull(productPlant#1595.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1595.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1595.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#1595.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#1609.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#1626)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1905)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#1906, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#1907, 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#1530, 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#1569: org.apache.spark.sql.Row
(721) MapElements
Input [1]: [obj#1569]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@762840b4, obj#1574: org.apache.spark.sql.Row
(722) SerializeFromObject
Input [1]: [obj#1574]
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#1579, 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#1580, 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#1581, 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#1582]
(723) Exchange
Input [4]: [product#1579, plant#1580, dayBucketDemands#1581, pointInTimeDemands#1582]
Arguments: hashpartitioning(coalesce(plant#1580, ), isnull(plant#1580), coalesce(product#1579, ), isnull(product#1579), 10), ENSURE_REQUIREMENTS, [plan_id=9975]
(724) Sort
Input [4]: [product#1579, plant#1580, dayBucketDemands#1581, pointInTimeDemands#1582]
Arguments: [coalesce(plant#1580, ) ASC NULLS FIRST, isnull(plant#1580) ASC NULLS FIRST, coalesce(product#1579, ) ASC NULLS FIRST, isnull(product#1579) ASC NULLS FIRST], false, 0
(725) SortMergeJoin
Left keys [4]: [coalesce(plant#1103, ), isnull(plant#1103), coalesce(product#1102, ), isnull(product#1102)]
Right keys [4]: [coalesce(plant#1580, ), isnull(plant#1580), coalesce(product#1579, ), isnull(product#1579)]
Join type: LeftOuter
Join condition: None
(726) Project
Output [7]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, dayBucketDemands#1581, pointInTimeDemands#1582]
Input [9]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, product#1579, plant#1580, dayBucketDemands#1581, pointInTimeDemands#1582]
(727) Exchange
Input [7]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, dayBucketDemands#1581, pointInTimeDemands#1582]
Arguments: hashpartitioning(product#1102, plant#1103, 10), ENSURE_REQUIREMENTS, [plan_id=10304]
(728) Sort
Input [7]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, dayBucketDemands#1581, pointInTimeDemands#1582]
Arguments: [product#1102 ASC NULLS FIRST, plant#1103 ASC NULLS FIRST], false, 0
(729) InMemoryTableScan
Output [3]: [product#1950, plant#1949, openGoodsMovements#2331]
Arguments: [product#1950, plant#1949, openGoodsMovements#2331], [isnotnull(product#1950), isnotnull(plant#1949)]
(730) InMemoryRelation
Arguments: [product#1950, plant#1949, openGoodsMovements#2331], StorageLevel(disk, memory, 2 replicas)
(731) EmptyRelation
Output [3]: [product#1950, plant#1949, openGoodsMovements#2331]
Arguments: [plan_id=50862]
(732) ResultQueryStage
Output [3]: [product#1950, plant#1949, openGoodsMovements#2331]
Arguments: 110
(733) Scan parquet
Output [2]: [product#1102, plant#1103]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string>
(734) Filter
Input [2]: [product#1102, plant#1103]
Condition : (isnotnull(plant#1103) AND isnotnull(product#1102))
(735) Exchange
Input [2]: [product#1102, plant#1103]
Arguments: hashpartitioning(product#1102, plant#1103, 10), REPARTITION_BY_NUM, [plan_id=2680]
(736) Scan parquet
Output [4]: [plant#1109, product#1110, productionAspect#1112, systemId#1107]
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#1109.internalRefUUID AS _extract_internalRefUUID#2489, product#1110.internalRefUUID AS _extract_internalRefUUID#2486, productionAspect#1112.productMovementPlants.unitOfIssue.code AS _extract_code#2487, productionAspect#1112.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#2488]
Input [4]: [plant#1109, product#1110, productionAspect#1112, systemId#1107]
(738) Exchange
Input [4]: [_extract_internalRefUUID#2489, _extract_internalRefUUID#2486, _extract_code#2487, _extract_internalRefUUID#2488]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2408]
(739) Project
Output [4]: [_extract_code#2487, _extract_internalRefUUID#2488, _extract_internalRefUUID#2486, _extract_internalRefUUID#2489]
Input [4]: [_extract_internalRefUUID#2489, _extract_internalRefUUID#2486, _extract_code#2487, _extract_internalRefUUID#2488]
(740) BroadcastExchange
Input [4]: [_extract_code#2487, _extract_internalRefUUID#2488, _extract_internalRefUUID#2486, _extract_internalRefUUID#2489]
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=2804]
(741) BroadcastHashJoin
Left keys [4]: [coalesce(product#1102, ), isnull(product#1102), coalesce(plant#1103, ), isnull(plant#1103)]
Right keys [4]: [coalesce(_extract_internalRefUUID#2486, ), isnull(_extract_internalRefUUID#2486), coalesce(_extract_internalRefUUID#2489, ), isnull(_extract_internalRefUUID#2489)]
Join type: LeftOuter
Join condition: None
(742) Project
Output [4]: [product#1102, plant#1103, _extract_code#2487, _extract_internalRefUUID#2488]
Input [6]: [product#1102, plant#1103, _extract_code#2487, _extract_internalRefUUID#2488, _extract_internalRefUUID#2486, _extract_internalRefUUID#2489]
(743) Scan parquet
Output [2]: [internalUUID#1120, systemId#1119]
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#1120]
Input [2]: [internalUUID#1120, systemId#1119]
(745) Exchange
Input [1]: [internalUUID#1120]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2414]
(746) BroadcastExchange
Input [1]: [internalUUID#1120]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=2808]
(747) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1103, ), isnull(plant#1103)]
Right keys [2]: [coalesce(internalUUID#1120, ), isnull(internalUUID#1120)]
Join type: LeftOuter
Join condition: None
(748) Project
Output [4]: [product#1102, plant#1103, _extract_code#2487, _extract_internalRefUUID#2488]
Input [5]: [product#1102, plant#1103, _extract_code#2487, _extract_internalRefUUID#2488, internalUUID#1120]
(749) Scan parquet
Output [4]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142, systemId#1135]
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#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142, systemId#1135]
Condition : isnotnull(internalUUID#1136)
(751) Project
Output [3]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142]
Input [4]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142, systemId#1135]
(752) Exchange
Input [3]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2420]
(753) BroadcastExchange
Input [3]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=2812]
(754) BroadcastHashJoin
Left keys [1]: [product#1102]
Right keys [1]: [internalUUID#1136]
Join type: LeftOuter
Join condition: None
(755) Project
Output [3]: [product#1102, plant#1103, filter(unitOfMeasureConversions#1142, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#2487) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#2488)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1140.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1140.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1148]
Input [7]: [product#1102, plant#1103, _extract_code#2487, _extract_internalRefUUID#2488, internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142]
(756) Generate
Input [3]: [product#1102, plant#1103, filteredUnitOfMeasureConversions#1148]
Arguments: explode(filteredUnitOfMeasureConversions#1148.quantityNumerator), [product#1102, plant#1103, filteredUnitOfMeasureConversions#1148], true, [quantityNumerator#1156]
(757) Project
Output [3]: [product#1102, plant#1103, filteredUnitOfMeasureConversions#1148.quantityDenominator AS _extract_quantityDenominator#2348]
Input [4]: [product#1102, plant#1103, filteredUnitOfMeasureConversions#1148, quantityNumerator#1156]
(758) Generate
Input [3]: [product#1102, plant#1103, _extract_quantityDenominator#2348]
Arguments: explode(_extract_quantityDenominator#2348), [product#1102, plant#1103], true, [quantityDenominator#1159]
(759) Project
Output [2]: [product#1102, plant#1103]
Input [3]: [product#1102, plant#1103, quantityDenominator#1159]
(760) Exchange
Input [2]: [product#1102, plant#1103]
Arguments: hashpartitioning(coalesce(plant#1103, ), isnull(plant#1103), coalesce(product#1102, ), isnull(product#1102), 10), ENSURE_REQUIREMENTS, [plan_id=2975]
(761) Sort
Input [2]: [product#1102, plant#1103]
Arguments: [coalesce(plant#1103, ) ASC NULLS FIRST, isnull(plant#1103) ASC NULLS FIRST, coalesce(product#1102, ) ASC NULLS FIRST, isnull(product#1102) ASC NULLS FIRST], false, 0
(762) Scan parquet
Output [3]: [product#1583, plant#1584, orderDateTime#1585]
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/10000000004/shardId=0_1_10000000004]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(763) Exchange
Input [3]: [product#1583, plant#1584, orderDateTime#1585]
Arguments: hashpartitioning(product#1583, plant#1584, 10), REPARTITION_BY_NUM, [plan_id=2428]
(764) Scan parquet
Output [8]: [internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594, systemId#1587]
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#1587, internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594]
Input [8]: [internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594, systemId#1587]
(766) Exchange
Input [8]: [systemId#1587, internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2431]
(767) Project
Output [1]: [struct(systemId, systemId#1587, internalUUID, internalUUID#1588, plant, plant#1589, product, product#1590, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1591, productionAspect, productionAspect#1592, salesPlant, salesPlant#1593, listing, listing#1594) AS productPlant#1595]
Input [8]: [systemId#1587, internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594]
(768) BroadcastExchange
Input [1]: [productPlant#1595]
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=2819]
(769) BroadcastHashJoin
Left keys [4]: [coalesce(product#1583, ), isnull(product#1583), coalesce(plant#1584, ), isnull(plant#1584)]
Right keys [4]: [coalesce(productPlant#1595.product.internalRefUUID, ), isnull(productPlant#1595.product.internalRefUUID), coalesce(productPlant#1595.plant.internalRefUUID, ), isnull(productPlant#1595.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(770) Scan parquet
Output [3]: [internalUUID#1597, address#1603, systemId#1596]
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#1597, address#1603.timeZone.code AS timezonecode#1608]
Input [3]: [internalUUID#1597, address#1603, systemId#1596]
(772) Exchange
Input [2]: [internalUUID#1597, timezonecode#1608]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2436]
(773) BroadcastExchange
Input [2]: [internalUUID#1597, timezonecode#1608]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=2822]
(774) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1584, ), isnull(plant#1584)]
Right keys [2]: [coalesce(internalUUID#1597, ), isnull(internalUUID#1597)]
Join type: LeftOuter
Join condition: None
(775) Project
Output [5]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, CASE WHEN isnotnull(timezonecode#1608) THEN timezonecode#1608 ELSE UTC END AS timezonecode#1609]
Input [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, internalUUID#1597, timezonecode#1608]
(776) Scan parquet
Output [4]: [internalUUID#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617, systemId#1610]
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#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617, systemId#1610]
Condition : isnotnull(internalUUID#1611)
(778) Project
Output [3]: [internalUUID#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617]
Input [4]: [internalUUID#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617, systemId#1610]
(779) Exchange
Input [3]: [internalUUID#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2442]
(780) BroadcastExchange
Input [3]: [internalUUID#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=2826]
(781) BroadcastHashJoin
Left keys [1]: [product#1583]
Right keys [1]: [internalUUID#1611]
Join type: LeftOuter
Join condition: None
(782) Project
Output [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, filter(unitOfMeasureConversions#1617, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#1595.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#1595.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1615.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1615.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1622]
Input [8]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, internalUUID#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617]
(783) Project
Output [7]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, filteredUnitOfMeasureConversions#1622.quantityDenominator AS _extract_quantityDenominator#2406, filteredUnitOfMeasureConversions#1622.quantityNumerator AS _extract_quantityNumerator#2407]
Input [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, filteredUnitOfMeasureConversions#1622]
(784) Generate
Input [7]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, _extract_quantityDenominator#2406, _extract_quantityNumerator#2407]
Arguments: explode(_extract_quantityNumerator#2407), [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, _extract_quantityDenominator#2406], true, [quantityNumerator#1623]
(785) Generate
Input [7]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, _extract_quantityDenominator#2406, quantityNumerator#1623]
Arguments: explode(_extract_quantityDenominator#2406), [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, quantityNumerator#1623], true, [quantityDenominator#1624]
(786) Project
Output [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, (cast(quantityNumerator#1623 as double) / cast(quantityDenominator#1624 as double)) AS outboundUnit#1625]
Input [7]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, quantityNumerator#1623, quantityDenominator#1624]
(787) Project
Output [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, CASE WHEN (isnull(outboundUnit#1625) OR (outboundUnit#1625 <= 0.0)) THEN 1.0 ELSE outboundUnit#1625 END AS outboundUnit#1626]
Input [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1625]
(788) Sort
Input [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626]
Arguments: [product#1583 ASC NULLS FIRST, plant#1584 ASC NULLS FIRST], false, 0
(789) Scan parquet
Output [6]: [internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632, systemId#1627]
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#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632, systemId#1627]
Condition : (isnotnull(plant#1630.internalRefUUID) AND isnotnull(product#1629.internalRefUUID))
(791) Project
Output [6]: [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632]
Input [6]: [internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632, systemId#1627]
(792) Exchange
Input [6]: [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2453]
(793) BroadcastExchange
Input [6]: [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632]
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=2858]
(794) Scan parquet
Output [2]: [marketUnit#1633, distributionCenters#1639]
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#1633, distributionCenters#1639]
Condition : (((marketUnit#1633 <=> DIP_1691) AND (size(distributionCenters#1639, true) > 0)) AND isnotnull(distributionCenters#1639))
(796) Project
Output [1]: [distributionCenters#1639]
Input [2]: [marketUnit#1633, distributionCenters#1639]
(797) Exchange
Input [1]: [distributionCenters#1639]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2457]
(798) Generate
Input [1]: [distributionCenters#1639]
Arguments: explode(distributionCenters#1639), false, [distributionCenters#1655]
(799) Filter
Input [1]: [distributionCenters#1655]
Condition : (((size(distributionCenters#1655.storageLocations, true) > 0) AND isnotnull(distributionCenters#1655.storageLocations)) AND isnotnull(distributionCenters#1655.internalRefUUID))
(800) Project
Output [2]: [distributionCenters#1655.internalRefUUID AS _extract_internalRefUUID#2374, distributionCenters#1655.storageLocations AS _extract_storageLocations#2375]
Input [1]: [distributionCenters#1655]
(801) Generate
Input [2]: [_extract_internalRefUUID#2374, _extract_storageLocations#2375]
Arguments: explode(_extract_storageLocations#2375), [_extract_internalRefUUID#2374], false, [storageLocations#1656]
(802) Project
Output [3]: [_extract_internalRefUUID#2374 AS plantUuid#1658, storageLocations#1656.id AS storageLocId#1659, storageLocations#1656.internalRefUUID AS storageLocUuid#1660]
Input [2]: [_extract_internalRefUUID#2374, storageLocations#1656]
(803) BroadcastExchange
Input [3]: [plantUuid#1658, storageLocId#1659, storageLocUuid#1660]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=2854]
(804) Scan parquet
Output [2]: [product#1661, plant#1662]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(805) Filter
Input [2]: [product#1661, plant#1662]
Condition : isnotnull(plant#1662)
(806) Exchange
Input [2]: [product#1661, plant#1662]
Arguments: hashpartitioning(product#1661, plant#1662, 10), REPARTITION_BY_NUM, [plan_id=2691]
(807) Scan parquet
Output [4]: [plant#1667, product#1668, productionAspect#1670, systemId#1665]
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#1667.internalRefUUID AS _extract_internalRefUUID#2493, product#1668.internalRefUUID AS _extract_internalRefUUID#2492, productionAspect#1670.productMovementPlants.unitOfIssue.code AS _extract_code#2490, productionAspect#1670.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#2491]
Input [4]: [plant#1667, product#1668, productionAspect#1670, systemId#1665]
(809) Exchange
Input [4]: [_extract_internalRefUUID#2493, _extract_internalRefUUID#2492, _extract_code#2490, _extract_internalRefUUID#2491]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2469]
(810) Project
Output [4]: [_extract_code#2490, _extract_internalRefUUID#2491, _extract_internalRefUUID#2492, _extract_internalRefUUID#2493]
Input [4]: [_extract_internalRefUUID#2493, _extract_internalRefUUID#2492, _extract_code#2490, _extract_internalRefUUID#2491]
(811) BroadcastExchange
Input [4]: [_extract_code#2490, _extract_internalRefUUID#2491, _extract_internalRefUUID#2492, _extract_internalRefUUID#2493]
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=2834]
(812) BroadcastHashJoin
Left keys [4]: [coalesce(product#1661, ), isnull(product#1661), coalesce(plant#1662, ), isnull(plant#1662)]
Right keys [4]: [coalesce(_extract_internalRefUUID#2492, ), isnull(_extract_internalRefUUID#2492), coalesce(_extract_internalRefUUID#2493, ), isnull(_extract_internalRefUUID#2493)]
Join type: LeftOuter
Join condition: None
(813) Project
Output [4]: [product#1661, plant#1662, _extract_code#2490, _extract_internalRefUUID#2491]
Input [6]: [product#1661, plant#1662, _extract_code#2490, _extract_internalRefUUID#2491, _extract_internalRefUUID#2492, _extract_internalRefUUID#2493]
(814) Scan parquet
Output [2]: [internalUUID#1675, systemId#1674]
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#1675]
Input [2]: [internalUUID#1675, systemId#1674]
(816) Exchange
Input [1]: [internalUUID#1675]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2475]
(817) BroadcastExchange
Input [1]: [internalUUID#1675]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=2838]
(818) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1662, ), isnull(plant#1662)]
Right keys [2]: [coalesce(internalUUID#1675, ), isnull(internalUUID#1675)]
Join type: LeftOuter
Join condition: None
(819) Project
Output [4]: [product#1661, plant#1662, _extract_code#2490, _extract_internalRefUUID#2491]
Input [5]: [product#1661, plant#1662, _extract_code#2490, _extract_internalRefUUID#2491, internalUUID#1675]
(820) Scan parquet
Output [4]: [internalUUID#1689, baseUnitOfMeasure#1693, unitOfMeasureConversions#1695, systemId#1688]
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#1689, baseUnitOfMeasure#1693, unitOfMeasureConversions#1695, systemId#1688]
Condition : isnotnull(internalUUID#1689)
(822) Project
Output [3]: [internalUUID#1689, baseUnitOfMeasure#1693, unitOfMeasureConversions#1695]
Input [4]: [internalUUID#1689, baseUnitOfMeasure#1693, unitOfMeasureConversions#1695, systemId#1688]
(823) Exchange
Input [3]: [internalUUID#1689, baseUnitOfMeasure#1693, unitOfMeasureConversions#1695]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2481]
(824) BroadcastExchange
Input [3]: [internalUUID#1689, baseUnitOfMeasure#1693, unitOfMeasureConversions#1695]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=2842]
(825) BroadcastHashJoin
Left keys [1]: [product#1661]
Right keys [1]: [internalUUID#1689]
Join type: LeftOuter
Join condition: None
(826) Project
Output [2]: [plant#1662, filter(unitOfMeasureConversions#1695, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#2490) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#2491)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1693.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1693.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1700]
Input [7]: [product#1661, plant#1662, _extract_code#2490, _extract_internalRefUUID#2491, internalUUID#1689, baseUnitOfMeasure#1693, unitOfMeasureConversions#1695]
(827) Generate
Input [2]: [plant#1662, filteredUnitOfMeasureConversions#1700]
Arguments: explode(filteredUnitOfMeasureConversions#1700.quantityNumerator), [plant#1662, filteredUnitOfMeasureConversions#1700], true, [quantityNumerator#1701]
(828) Project
Output [2]: [plant#1662, filteredUnitOfMeasureConversions#1700.quantityDenominator AS _extract_quantityDenominator#2376]
Input [3]: [plant#1662, filteredUnitOfMeasureConversions#1700, quantityNumerator#1701]
(829) Generate
Input [2]: [plant#1662, _extract_quantityDenominator#2376]
Arguments: explode(_extract_quantityDenominator#2376), [plant#1662], true, [quantityDenominator#1702]
(830) Project
Output [1]: [plant#1662]
Input [2]: [plant#1662, quantityDenominator#1702]
(831) HashAggregate
Input [1]: [plant#1662]
Keys [1]: [plant#1662]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1662]
(832) Exchange
Input [1]: [plant#1662]
Arguments: hashpartitioning(plant#1662, 10), ENSURE_REQUIREMENTS, [plan_id=2851]
(833) HashAggregate
Input [1]: [plant#1662]
Keys [1]: [plant#1662]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1662]
(834) BroadcastHashJoin
Left keys [1]: [plantUuid#1658]
Right keys [1]: [plant#1662]
Join type: Inner
Join condition: None
(835) Project
Output [3]: [plantUuid#1658, storageLocId#1659, storageLocUuid#1660]
Input [4]: [plantUuid#1658, storageLocId#1659, storageLocUuid#1660, plant#1662]
(836) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1630.internalRefUUID, ), isnull(plant#1630.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1658, ), isnull(plantUuid#1658)]
Join type: Inner
Join condition: None
(837) Generate
Input [9]: [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632, plantUuid#1658, storageLocId#1659, storageLocUuid#1660]
Arguments: explode(filter(stockQuantities#1632, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#1660) AND (lambda x#1207.storageLocation.Id = storageLocId#1659)), lambda x#1207, false))), [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, plantUuid#1658], false, [stockQuantity#1705]
(838) ObjectHashAggregate
Input [7]: [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, plantUuid#1658, stockQuantity#1705]
Keys [5]: [plantUuid#1658, internalUUID#1628, plant#1630, product#1629, systemId#1627]
Functions [2]: [partial_first(calculationDateTime#1631, false), partial_collect_list(stockQuantity#1705, 0, 0)]
Aggregate Attributes [3]: [first#4288, valueSet#4289, buf#4290]
Results [8]: [plantUuid#1658, internalUUID#1628, plant#1630, product#1629, systemId#1627, first#4291, valueSet#4292, buf#4293]
(839) ObjectHashAggregate
Input [8]: [plantUuid#1658, internalUUID#1628, plant#1630, product#1629, systemId#1627, first#4291, valueSet#4292, buf#4293]
Keys [5]: [plantUuid#1658, internalUUID#1628, plant#1630, product#1629, systemId#1627]
Functions [2]: [first(calculationDateTime#1631, false), collect_list(stockQuantity#1705, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1631)()#1222, collect_list(stockQuantity#1705, 0, 0)#1223]
Results [4]: [product#1629, plant#1630, first(calculationDateTime#1631)()#1222 AS calculationDateTime#1706, collect_list(stockQuantity#1705, 0, 0)#1223 AS stockQuantities#1707]
(840) Filter
Input [4]: [product#1629, plant#1630, calculationDateTime#1706, stockQuantities#1707]
Condition : ((size(stockQuantities#1707, true) > 0) AND isnotnull(calculationDateTime#1706))
(841) Generate
Input [4]: [product#1629, plant#1630, calculationDateTime#1706, stockQuantities#1707]
Arguments: explode(stockQuantities#1707), [product#1629, plant#1630, calculationDateTime#1706], false, [stockQuantity#1708]
(842) Filter
Input [4]: [product#1629, plant#1630, calculationDateTime#1706, stockQuantity#1708]
Condition : (((isnotnull(stockQuantity#1708.specialStockIndicator.code) AND isnotnull(stockQuantity#1708.stockType.code)) AND (stockQuantity#1708.specialStockIndicator.code = )) AND (stockQuantity#1708.stockType.code = 01))
(843) Project
Output [5]: [plant#1630.internalRefUUID AS plantUuid#1710, product#1629.internalRefUUID AS productUuid#1712, calculationDateTime#1706, stockQuantity#1708.storagelocation.id AS storageLocId#1713, stockQuantity#1708.quantity.measure AS quantity#1715]
Input [4]: [product#1629, plant#1630, calculationDateTime#1706, stockQuantity#1708]
(844) Exchange
Input [5]: [plantUuid#1710, productUuid#1712, calculationDateTime#1706, storageLocId#1713, quantity#1715]
Arguments: hashpartitioning(productUuid#1712, plantUuid#1710, 10), ENSURE_REQUIREMENTS, [plan_id=2884]
(845) Sort
Input [5]: [plantUuid#1710, productUuid#1712, calculationDateTime#1706, storageLocId#1713, quantity#1715]
Arguments: [productUuid#1712 ASC NULLS FIRST, plantUuid#1710 ASC NULLS FIRST], false, 0
(846) Scan parquet
Output [3]: [product#1718, plant#1719, orderDateTime#1720]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(847) Filter
Input [3]: [product#1718, plant#1719, orderDateTime#1720]
Condition : ((isnotnull(orderDateTime#1720) AND isnotnull(plant#1719)) AND isnotnull(product#1718))
(848) Exchange
Input [3]: [product#1718, plant#1719, orderDateTime#1720]
Arguments: hashpartitioning(product#1718, plant#1719, 10), REPARTITION_BY_NUM, [plan_id=2714]
(849) Scan parquet
Output [4]: [plant#1724, product#1725, productionAspect#1727, systemId#1722]
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#1724.internalRefUUID AS _extract_internalRefUUID#2494, product#1725.internalRefUUID AS _extract_internalRefUUID#2497, productionAspect#1727.productMovementPlants.unitOfIssue.code AS _extract_code#2495, productionAspect#1727.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#2496]
Input [4]: [plant#1724, product#1725, productionAspect#1727, systemId#1722]
(851) Exchange
Input [4]: [_extract_internalRefUUID#2494, _extract_internalRefUUID#2497, _extract_code#2495, _extract_internalRefUUID#2496]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2506]
(852) Project
Output [4]: [_extract_code#2495, _extract_internalRefUUID#2496, _extract_internalRefUUID#2497, _extract_internalRefUUID#2494]
Input [4]: [_extract_internalRefUUID#2494, _extract_internalRefUUID#2497, _extract_code#2495, _extract_internalRefUUID#2496]
(853) BroadcastExchange
Input [4]: [_extract_code#2495, _extract_internalRefUUID#2496, _extract_internalRefUUID#2497, _extract_internalRefUUID#2494]
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=2867]
(854) BroadcastHashJoin
Left keys [4]: [coalesce(product#1718, ), isnull(product#1718), coalesce(plant#1719, ), isnull(plant#1719)]
Right keys [4]: [coalesce(_extract_internalRefUUID#2497, ), isnull(_extract_internalRefUUID#2497), coalesce(_extract_internalRefUUID#2494, ), isnull(_extract_internalRefUUID#2494)]
Join type: LeftOuter
Join condition: None
(855) Project
Output [5]: [product#1718, plant#1719, orderDateTime#1720, _extract_code#2495, _extract_internalRefUUID#2496]
Input [7]: [product#1718, plant#1719, orderDateTime#1720, _extract_code#2495, _extract_internalRefUUID#2496, _extract_internalRefUUID#2497, _extract_internalRefUUID#2494]
(856) Scan parquet
Output [2]: [internalUUID#1732, systemId#1731]
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#1732]
Input [2]: [internalUUID#1732, systemId#1731]
(858) Exchange
Input [1]: [internalUUID#1732]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2512]
(859) BroadcastExchange
Input [1]: [internalUUID#1732]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=2871]
(860) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1719, ), isnull(plant#1719)]
Right keys [2]: [coalesce(internalUUID#1732, ), isnull(internalUUID#1732)]
Join type: LeftOuter
Join condition: None
(861) Project
Output [5]: [product#1718, plant#1719, orderDateTime#1720, _extract_code#2495, _extract_internalRefUUID#2496]
Input [6]: [product#1718, plant#1719, orderDateTime#1720, _extract_code#2495, _extract_internalRefUUID#2496, internalUUID#1732]
(862) Scan parquet
Output [4]: [internalUUID#1746, baseUnitOfMeasure#1750, unitOfMeasureConversions#1752, systemId#1745]
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#1746, baseUnitOfMeasure#1750, unitOfMeasureConversions#1752, systemId#1745]
Condition : isnotnull(internalUUID#1746)
(864) Project
Output [3]: [internalUUID#1746, baseUnitOfMeasure#1750, unitOfMeasureConversions#1752]
Input [4]: [internalUUID#1746, baseUnitOfMeasure#1750, unitOfMeasureConversions#1752, systemId#1745]
(865) Exchange
Input [3]: [internalUUID#1746, baseUnitOfMeasure#1750, unitOfMeasureConversions#1752]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2518]
(866) BroadcastExchange
Input [3]: [internalUUID#1746, baseUnitOfMeasure#1750, unitOfMeasureConversions#1752]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=2875]
(867) BroadcastHashJoin
Left keys [1]: [product#1718]
Right keys [1]: [internalUUID#1746]
Join type: LeftOuter
Join condition: None
(868) Project
Output [4]: [product#1718, plant#1719, orderDateTime#1720, filter(unitOfMeasureConversions#1752, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#2495) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#2496)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1750.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1750.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1757]
Input [8]: [product#1718, plant#1719, orderDateTime#1720, _extract_code#2495, _extract_internalRefUUID#2496, internalUUID#1746, baseUnitOfMeasure#1750, unitOfMeasureConversions#1752]
(869) Generate
Input [4]: [product#1718, plant#1719, orderDateTime#1720, filteredUnitOfMeasureConversions#1757]
Arguments: explode(filteredUnitOfMeasureConversions#1757.quantityNumerator), [product#1718, plant#1719, orderDateTime#1720, filteredUnitOfMeasureConversions#1757], true, [quantityNumerator#1758]
(870) Project
Output [4]: [product#1718, plant#1719, orderDateTime#1720, filteredUnitOfMeasureConversions#1757.quantityDenominator AS _extract_quantityDenominator#2380]
Input [5]: [product#1718, plant#1719, orderDateTime#1720, filteredUnitOfMeasureConversions#1757, quantityNumerator#1758]
(871) Generate
Input [4]: [product#1718, plant#1719, orderDateTime#1720, _extract_quantityDenominator#2380]
Arguments: explode(_extract_quantityDenominator#2380), [product#1718, plant#1719, orderDateTime#1720], true, [quantityDenominator#1759]
(872) Project
Output [3]: [product#1718, plant#1719, orderDateTime#1720]
Input [4]: [product#1718, plant#1719, orderDateTime#1720, quantityDenominator#1759]
(873) Sort
Input [3]: [product#1718, plant#1719, orderDateTime#1720]
Arguments: [product#1718 ASC NULLS FIRST, plant#1719 ASC NULLS FIRST], false, 0
(874) SortMergeJoin
Left keys [2]: [productUuid#1712, plantUuid#1710]
Right keys [2]: [product#1718, plant#1719]
Join type: Inner
Join condition: (calculationDateTime#1706 <= orderDateTime#1720)
(875) Project
Output [5]: [plantUuid#1710 AS plant#1762, productUuid#1712 AS product#1763, storageLocId#1713, calculationDateTime#1706, quantity#1715]
Input [8]: [plantUuid#1710, productUuid#1712, calculationDateTime#1706, storageLocId#1713, quantity#1715, product#1718, plant#1719, orderDateTime#1720]
(876) Exchange
Input [5]: [plant#1762, product#1763, storageLocId#1713, calculationDateTime#1706, quantity#1715]
Arguments: hashpartitioning(coalesce(plant#1762, ), isnull(plant#1762), coalesce(product#1763, ), isnull(product#1763), coalesce(storageLocId#1713, ), isnull(storageLocId#1713), coalesce(calculationDateTime#1706, 1970-01-01 00:00:00), isnull(calculationDateTime#1706), 10), ENSURE_REQUIREMENTS, [plan_id=2948]
(877) Sort
Input [5]: [plant#1762, product#1763, storageLocId#1713, calculationDateTime#1706, quantity#1715]
Arguments: [coalesce(plant#1762, ) ASC NULLS FIRST, isnull(plant#1762) ASC NULLS FIRST, coalesce(product#1763, ) ASC NULLS FIRST, isnull(product#1763) ASC NULLS FIRST, coalesce(storageLocId#1713, ) ASC NULLS FIRST, isnull(storageLocId#1713) ASC NULLS FIRST, coalesce(calculationDateTime#1706, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#1706) ASC NULLS FIRST], false, 0
(878) Scan parquet
Output [6]: [internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769, systemId#1764]
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#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769, systemId#1764]
Condition : (isnotnull(plant#1767.internalRefUUID) AND isnotnull(product#1766.internalRefUUID))
(880) Project
Output [6]: [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769]
Input [6]: [internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769, systemId#1764]
(881) Exchange
Input [6]: [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2530]
(882) BroadcastExchange
Input [6]: [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769]
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=2913]
(883) Scan parquet
Output [2]: [marketUnit#1770, distributionCenters#1776]
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#1770, distributionCenters#1776]
Condition : (((marketUnit#1770 <=> DIP_1691) AND (size(distributionCenters#1776, true) > 0)) AND isnotnull(distributionCenters#1776))
(885) Project
Output [1]: [distributionCenters#1776]
Input [2]: [marketUnit#1770, distributionCenters#1776]
(886) Exchange
Input [1]: [distributionCenters#1776]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2534]
(887) Generate
Input [1]: [distributionCenters#1776]
Arguments: explode(distributionCenters#1776), false, [distributionCenters#1792]
(888) Filter
Input [1]: [distributionCenters#1792]
Condition : (((size(distributionCenters#1792.storageLocations, true) > 0) AND isnotnull(distributionCenters#1792.storageLocations)) AND isnotnull(distributionCenters#1792.internalRefUUID))
(889) Project
Output [2]: [distributionCenters#1792.internalRefUUID AS _extract_internalRefUUID#2384, distributionCenters#1792.storageLocations AS _extract_storageLocations#2385]
Input [1]: [distributionCenters#1792]
(890) Generate
Input [2]: [_extract_internalRefUUID#2384, _extract_storageLocations#2385]
Arguments: explode(_extract_storageLocations#2385), [_extract_internalRefUUID#2384], false, [storageLocations#1793]
(891) Project
Output [3]: [_extract_internalRefUUID#2384 AS plantUuid#1795, storageLocations#1793.id AS storageLocId#1796, storageLocations#1793.internalRefUUID AS storageLocUuid#1797]
Input [2]: [_extract_internalRefUUID#2384, storageLocations#1793]
(892) BroadcastExchange
Input [3]: [plantUuid#1795, storageLocId#1796, storageLocUuid#1797]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=2909]
(893) Scan parquet
Output [2]: [product#1798, plant#1799]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(894) Filter
Input [2]: [product#1798, plant#1799]
Condition : isnotnull(plant#1799)
(895) Exchange
Input [2]: [product#1798, plant#1799]
Arguments: hashpartitioning(product#1798, plant#1799, 10), REPARTITION_BY_NUM, [plan_id=2727]
(896) Scan parquet
Output [4]: [plant#1804, product#1805, productionAspect#1807, systemId#1802]
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#1804.internalRefUUID AS _extract_internalRefUUID#2501, product#1805.internalRefUUID AS _extract_internalRefUUID#2500, productionAspect#1807.productMovementPlants.unitOfIssue.code AS _extract_code#2498, productionAspect#1807.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#2499]
Input [4]: [plant#1804, product#1805, productionAspect#1807, systemId#1802]
(898) Exchange
Input [4]: [_extract_internalRefUUID#2501, _extract_internalRefUUID#2500, _extract_code#2498, _extract_internalRefUUID#2499]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2546]
(899) Project
Output [4]: [_extract_code#2498, _extract_internalRefUUID#2499, _extract_internalRefUUID#2500, _extract_internalRefUUID#2501]
Input [4]: [_extract_internalRefUUID#2501, _extract_internalRefUUID#2500, _extract_code#2498, _extract_internalRefUUID#2499]
(900) BroadcastExchange
Input [4]: [_extract_code#2498, _extract_internalRefUUID#2499, _extract_internalRefUUID#2500, _extract_internalRefUUID#2501]
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=2889]
(901) BroadcastHashJoin
Left keys [4]: [coalesce(product#1798, ), isnull(product#1798), coalesce(plant#1799, ), isnull(plant#1799)]
Right keys [4]: [coalesce(_extract_internalRefUUID#2500, ), isnull(_extract_internalRefUUID#2500), coalesce(_extract_internalRefUUID#2501, ), isnull(_extract_internalRefUUID#2501)]
Join type: LeftOuter
Join condition: None
(902) Project
Output [4]: [product#1798, plant#1799, _extract_code#2498, _extract_internalRefUUID#2499]
Input [6]: [product#1798, plant#1799, _extract_code#2498, _extract_internalRefUUID#2499, _extract_internalRefUUID#2500, _extract_internalRefUUID#2501]
(903) Scan parquet
Output [2]: [internalUUID#1812, systemId#1811]
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#1812]
Input [2]: [internalUUID#1812, systemId#1811]
(905) Exchange
Input [1]: [internalUUID#1812]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2552]
(906) BroadcastExchange
Input [1]: [internalUUID#1812]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=2893]
(907) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1799, ), isnull(plant#1799)]
Right keys [2]: [coalesce(internalUUID#1812, ), isnull(internalUUID#1812)]
Join type: LeftOuter
Join condition: None
(908) Project
Output [4]: [product#1798, plant#1799, _extract_code#2498, _extract_internalRefUUID#2499]
Input [5]: [product#1798, plant#1799, _extract_code#2498, _extract_internalRefUUID#2499, internalUUID#1812]
(909) Scan parquet
Output [4]: [internalUUID#1826, baseUnitOfMeasure#1830, unitOfMeasureConversions#1832, systemId#1825]
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#1826, baseUnitOfMeasure#1830, unitOfMeasureConversions#1832, systemId#1825]
Condition : isnotnull(internalUUID#1826)
(911) Project
Output [3]: [internalUUID#1826, baseUnitOfMeasure#1830, unitOfMeasureConversions#1832]
Input [4]: [internalUUID#1826, baseUnitOfMeasure#1830, unitOfMeasureConversions#1832, systemId#1825]
(912) Exchange
Input [3]: [internalUUID#1826, baseUnitOfMeasure#1830, unitOfMeasureConversions#1832]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2558]
(913) BroadcastExchange
Input [3]: [internalUUID#1826, baseUnitOfMeasure#1830, unitOfMeasureConversions#1832]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=2897]
(914) BroadcastHashJoin
Left keys [1]: [product#1798]
Right keys [1]: [internalUUID#1826]
Join type: LeftOuter
Join condition: None
(915) Project
Output [2]: [plant#1799, filter(unitOfMeasureConversions#1832, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#2498) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#2499)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1830.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1830.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1837]
Input [7]: [product#1798, plant#1799, _extract_code#2498, _extract_internalRefUUID#2499, internalUUID#1826, baseUnitOfMeasure#1830, unitOfMeasureConversions#1832]
(916) Generate
Input [2]: [plant#1799, filteredUnitOfMeasureConversions#1837]
Arguments: explode(filteredUnitOfMeasureConversions#1837.quantityNumerator), [plant#1799, filteredUnitOfMeasureConversions#1837], true, [quantityNumerator#1838]
(917) Project
Output [2]: [plant#1799, filteredUnitOfMeasureConversions#1837.quantityDenominator AS _extract_quantityDenominator#2386]
Input [3]: [plant#1799, filteredUnitOfMeasureConversions#1837, quantityNumerator#1838]
(918) Generate
Input [2]: [plant#1799, _extract_quantityDenominator#2386]
Arguments: explode(_extract_quantityDenominator#2386), [plant#1799], true, [quantityDenominator#1839]
(919) Project
Output [1]: [plant#1799]
Input [2]: [plant#1799, quantityDenominator#1839]
(920) HashAggregate
Input [1]: [plant#1799]
Keys [1]: [plant#1799]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1799]
(921) Exchange
Input [1]: [plant#1799]
Arguments: hashpartitioning(plant#1799, 10), ENSURE_REQUIREMENTS, [plan_id=2906]
(922) HashAggregate
Input [1]: [plant#1799]
Keys [1]: [plant#1799]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1799]
(923) BroadcastHashJoin
Left keys [1]: [plantUuid#1795]
Right keys [1]: [plant#1799]
Join type: Inner
Join condition: None
(924) Project
Output [3]: [plantUuid#1795, storageLocId#1796, storageLocUuid#1797]
Input [4]: [plantUuid#1795, storageLocId#1796, storageLocUuid#1797, plant#1799]
(925) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1767.internalRefUUID, ), isnull(plant#1767.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1795, ), isnull(plantUuid#1795)]
Join type: Inner
Join condition: None
(926) Generate
Input [9]: [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769, plantUuid#1795, storageLocId#1796, storageLocUuid#1797]
Arguments: explode(filter(stockQuantities#1769, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#1797) AND (lambda x#1207.storageLocation.Id = storageLocId#1796)), lambda x#1207, false))), [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, plantUuid#1795], false, [stockQuantity#1842]
(927) ObjectHashAggregate
Input [7]: [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, plantUuid#1795, stockQuantity#1842]
Keys [5]: [plantUuid#1795, internalUUID#1765, plant#1767, product#1766, systemId#1764]
Functions [2]: [partial_first(calculationDateTime#1768, false), partial_collect_list(stockQuantity#1842, 0, 0)]
Aggregate Attributes [3]: [first#4296, valueSet#4297, buf#4298]
Results [8]: [plantUuid#1795, internalUUID#1765, plant#1767, product#1766, systemId#1764, first#4299, valueSet#4300, buf#4301]
(928) ObjectHashAggregate
Input [8]: [plantUuid#1795, internalUUID#1765, plant#1767, product#1766, systemId#1764, first#4299, valueSet#4300, buf#4301]
Keys [5]: [plantUuid#1795, internalUUID#1765, plant#1767, product#1766, systemId#1764]
Functions [2]: [first(calculationDateTime#1768, false), collect_list(stockQuantity#1842, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1768)()#1222, collect_list(stockQuantity#1842, 0, 0)#1223]
Results [4]: [product#1766, plant#1767, first(calculationDateTime#1768)()#1222 AS calculationDateTime#1843, collect_list(stockQuantity#1842, 0, 0)#1223 AS stockQuantities#1844]
(929) Filter
Input [4]: [product#1766, plant#1767, calculationDateTime#1843, stockQuantities#1844]
Condition : ((size(stockQuantities#1844, true) > 0) AND isnotnull(calculationDateTime#1843))
(930) Generate
Input [4]: [product#1766, plant#1767, calculationDateTime#1843, stockQuantities#1844]
Arguments: explode(stockQuantities#1844), [product#1766, plant#1767, calculationDateTime#1843], false, [stockQuantity#1845]
(931) Filter
Input [4]: [product#1766, plant#1767, calculationDateTime#1843, stockQuantity#1845]
Condition : (((isnotnull(stockQuantity#1845.specialStockIndicator.code) AND isnotnull(stockQuantity#1845.stockType.code)) AND (stockQuantity#1845.specialStockIndicator.code = )) AND (stockQuantity#1845.stockType.code = 01))
(932) Project
Output [4]: [plant#1767.internalRefUUID AS plantUuid#1847, product#1766.internalRefUUID AS productUuid#1849, calculationDateTime#1843, stockQuantity#1845.storagelocation.id AS storageLocId#1850]
Input [4]: [product#1766, plant#1767, calculationDateTime#1843, stockQuantity#1845]
(933) Exchange
Input [4]: [plantUuid#1847, productUuid#1849, calculationDateTime#1843, storageLocId#1850]
Arguments: hashpartitioning(productUuid#1849, plantUuid#1847, 10), ENSURE_REQUIREMENTS, [plan_id=2939]
(934) Sort
Input [4]: [plantUuid#1847, productUuid#1849, calculationDateTime#1843, storageLocId#1850]
Arguments: [productUuid#1849 ASC NULLS FIRST, plantUuid#1847 ASC NULLS FIRST], false, 0
(935) Scan parquet
Output [3]: [product#1855, plant#1856, orderDateTime#1857]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(936) Filter
Input [3]: [product#1855, plant#1856, orderDateTime#1857]
Condition : ((isnotnull(orderDateTime#1857) AND isnotnull(plant#1856)) AND isnotnull(product#1855))
(937) Exchange
Input [3]: [product#1855, plant#1856, orderDateTime#1857]
Arguments: hashpartitioning(product#1855, plant#1856, 10), REPARTITION_BY_NUM, [plan_id=2750]
(938) Scan parquet
Output [4]: [plant#1861, product#1862, productionAspect#1864, systemId#1859]
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#1861.internalRefUUID AS _extract_internalRefUUID#2502, product#1862.internalRefUUID AS _extract_internalRefUUID#2505, productionAspect#1864.productMovementPlants.unitOfIssue.code AS _extract_code#2503, productionAspect#1864.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#2504]
Input [4]: [plant#1861, product#1862, productionAspect#1864, systemId#1859]
(940) Exchange
Input [4]: [_extract_internalRefUUID#2502, _extract_internalRefUUID#2505, _extract_code#2503, _extract_internalRefUUID#2504]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2583]
(941) Project
Output [4]: [_extract_code#2503, _extract_internalRefUUID#2504, _extract_internalRefUUID#2505, _extract_internalRefUUID#2502]
Input [4]: [_extract_internalRefUUID#2502, _extract_internalRefUUID#2505, _extract_code#2503, _extract_internalRefUUID#2504]
(942) BroadcastExchange
Input [4]: [_extract_code#2503, _extract_internalRefUUID#2504, _extract_internalRefUUID#2505, _extract_internalRefUUID#2502]
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=2922]
(943) BroadcastHashJoin
Left keys [4]: [coalesce(product#1855, ), isnull(product#1855), coalesce(plant#1856, ), isnull(plant#1856)]
Right keys [4]: [coalesce(_extract_internalRefUUID#2505, ), isnull(_extract_internalRefUUID#2505), coalesce(_extract_internalRefUUID#2502, ), isnull(_extract_internalRefUUID#2502)]
Join type: LeftOuter
Join condition: None
(944) Project
Output [5]: [product#1855, plant#1856, orderDateTime#1857, _extract_code#2503, _extract_internalRefUUID#2504]
Input [7]: [product#1855, plant#1856, orderDateTime#1857, _extract_code#2503, _extract_internalRefUUID#2504, _extract_internalRefUUID#2505, _extract_internalRefUUID#2502]
(945) Scan parquet
Output [2]: [internalUUID#1869, systemId#1868]
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#1869]
Input [2]: [internalUUID#1869, systemId#1868]
(947) Exchange
Input [1]: [internalUUID#1869]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2589]
(948) BroadcastExchange
Input [1]: [internalUUID#1869]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=2926]
(949) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1856, ), isnull(plant#1856)]
Right keys [2]: [coalesce(internalUUID#1869, ), isnull(internalUUID#1869)]
Join type: LeftOuter
Join condition: None
(950) Project
Output [5]: [product#1855, plant#1856, orderDateTime#1857, _extract_code#2503, _extract_internalRefUUID#2504]
Input [6]: [product#1855, plant#1856, orderDateTime#1857, _extract_code#2503, _extract_internalRefUUID#2504, internalUUID#1869]
(951) Scan parquet
Output [4]: [internalUUID#1883, baseUnitOfMeasure#1887, unitOfMeasureConversions#1889, systemId#1882]
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#1883, baseUnitOfMeasure#1887, unitOfMeasureConversions#1889, systemId#1882]
Condition : isnotnull(internalUUID#1883)
(953) Project
Output [3]: [internalUUID#1883, baseUnitOfMeasure#1887, unitOfMeasureConversions#1889]
Input [4]: [internalUUID#1883, baseUnitOfMeasure#1887, unitOfMeasureConversions#1889, systemId#1882]
(954) Exchange
Input [3]: [internalUUID#1883, baseUnitOfMeasure#1887, unitOfMeasureConversions#1889]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2595]
(955) BroadcastExchange
Input [3]: [internalUUID#1883, baseUnitOfMeasure#1887, unitOfMeasureConversions#1889]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=2930]
(956) BroadcastHashJoin
Left keys [1]: [product#1855]
Right keys [1]: [internalUUID#1883]
Join type: LeftOuter
Join condition: None
(957) Project
Output [4]: [product#1855, plant#1856, orderDateTime#1857, filter(unitOfMeasureConversions#1889, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#2503) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#2504)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1887.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1887.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1894]
Input [8]: [product#1855, plant#1856, orderDateTime#1857, _extract_code#2503, _extract_internalRefUUID#2504, internalUUID#1883, baseUnitOfMeasure#1887, unitOfMeasureConversions#1889]
(958) Generate
Input [4]: [product#1855, plant#1856, orderDateTime#1857, filteredUnitOfMeasureConversions#1894]
Arguments: explode(filteredUnitOfMeasureConversions#1894.quantityNumerator), [product#1855, plant#1856, orderDateTime#1857, filteredUnitOfMeasureConversions#1894], true, [quantityNumerator#1895]
(959) Project
Output [4]: [product#1855, plant#1856, orderDateTime#1857, filteredUnitOfMeasureConversions#1894.quantityDenominator AS _extract_quantityDenominator#2390]
Input [5]: [product#1855, plant#1856, orderDateTime#1857, filteredUnitOfMeasureConversions#1894, quantityNumerator#1895]
(960) Generate
Input [4]: [product#1855, plant#1856, orderDateTime#1857, _extract_quantityDenominator#2390]
Arguments: explode(_extract_quantityDenominator#2390), [product#1855, plant#1856, orderDateTime#1857], true, [quantityDenominator#1896]
(961) Project
Output [3]: [product#1855, plant#1856, orderDateTime#1857]
Input [4]: [product#1855, plant#1856, orderDateTime#1857, quantityDenominator#1896]
(962) Sort
Input [3]: [product#1855, plant#1856, orderDateTime#1857]
Arguments: [product#1855 ASC NULLS FIRST, plant#1856 ASC NULLS FIRST], false, 0
(963) SortMergeJoin
Left keys [2]: [productUuid#1849, plantUuid#1847]
Right keys [2]: [product#1855, plant#1856]
Join type: Inner
Join condition: (calculationDateTime#1843 <= orderDateTime#1857)
(964) Project
Output [4]: [plantUuid#1847 AS plant#1899, productUuid#1849 AS product#1900, storageLocId#1850, calculationDateTime#1843]
Input [7]: [plantUuid#1847, productUuid#1849, calculationDateTime#1843, storageLocId#1850, product#1855, plant#1856, orderDateTime#1857]
(965) HashAggregate
Input [4]: [plant#1899, product#1900, storageLocId#1850, calculationDateTime#1843]
Keys [3]: [plant#1899, product#1900, storageLocId#1850]
Functions [1]: [partial_max(calculationDateTime#1843)]
Aggregate Attributes [1]: [max#4294]
Results [4]: [plant#1899, product#1900, storageLocId#1850, max#4295]
(966) HashAggregate
Input [4]: [plant#1899, product#1900, storageLocId#1850, max#4295]
Keys [3]: [plant#1899, product#1900, storageLocId#1850]
Functions [1]: [max(calculationDateTime#1843)]
Aggregate Attributes [1]: [max(calculationDateTime#1843)#1300]
Results [4]: [plant#1899, product#1900, storageLocId#1850, max(calculationDateTime#1843)#1300 AS max_calc_datetime#1901]
(967) Exchange
Input [4]: [plant#1899, product#1900, storageLocId#1850, max_calc_datetime#1901]
Arguments: hashpartitioning(coalesce(plant#1899, ), isnull(plant#1899), coalesce(product#1900, ), isnull(product#1900), coalesce(storageLocId#1850, ), isnull(storageLocId#1850), coalesce(max_calc_datetime#1901, 1970-01-01 00:00:00), isnull(max_calc_datetime#1901), 10), ENSURE_REQUIREMENTS, [plan_id=2949]
(968) Sort
Input [4]: [plant#1899, product#1900, storageLocId#1850, max_calc_datetime#1901]
Arguments: [coalesce(plant#1899, ) ASC NULLS FIRST, isnull(plant#1899) ASC NULLS FIRST, coalesce(product#1900, ) ASC NULLS FIRST, isnull(product#1900) ASC NULLS FIRST, coalesce(storageLocId#1850, ) ASC NULLS FIRST, isnull(storageLocId#1850) ASC NULLS FIRST, coalesce(max_calc_datetime#1901, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#1901) ASC NULLS FIRST], false, 0
(969) SortMergeJoin
Left keys [8]: [coalesce(plant#1762, ), isnull(plant#1762), coalesce(product#1763, ), isnull(product#1763), coalesce(storageLocId#1713, ), isnull(storageLocId#1713), coalesce(calculationDateTime#1706, 1970-01-01 00:00:00), isnull(calculationDateTime#1706)]
Right keys [8]: [coalesce(plant#1899, ), isnull(plant#1899), coalesce(product#1900, ), isnull(product#1900), coalesce(storageLocId#1850, ), isnull(storageLocId#1850), coalesce(max_calc_datetime#1901, 1970-01-01 00:00:00), isnull(max_calc_datetime#1901)]
Join type: Inner
Join condition: None
(970) Project
Output [4]: [plant#1762, product#1763, calculationDateTime#1706, quantity#1715]
Input [9]: [plant#1762, product#1763, storageLocId#1713, calculationDateTime#1706, quantity#1715, plant#1899, product#1900, storageLocId#1850, max_calc_datetime#1901]
(971) HashAggregate
Input [4]: [plant#1762, product#1763, calculationDateTime#1706, quantity#1715]
Keys [2]: [product#1763, plant#1762]
Functions [2]: [partial_min(calculationDateTime#1706), partial_sum(quantity#1715)]
Aggregate Attributes [2]: [min#4284, sum#4285]
Results [4]: [product#1763, plant#1762, min#4286, sum#4287]
(972) Exchange
Input [4]: [product#1763, plant#1762, min#4286, sum#4287]
Arguments: hashpartitioning(product#1763, plant#1762, 10), ENSURE_REQUIREMENTS, [plan_id=2956]
(973) HashAggregate
Input [4]: [product#1763, plant#1762, min#4286, sum#4287]
Keys [2]: [product#1763, plant#1762]
Functions [2]: [min(calculationDateTime#1706), sum(quantity#1715)]
Aggregate Attributes [2]: [min(calculationDateTime#1706)#1456, sum(quantity#1715)#1455]
Results [4]: [product#1763, plant#1762, min(calculationDateTime#1706)#1456 AS minCalculationDateTime#1903, round(sum(quantity#1715)#1455, 0) AS roundedQuantitySum#1904]
(974) Sort
Input [4]: [product#1763, plant#1762, minCalculationDateTime#1903, roundedQuantitySum#1904]
Arguments: [product#1763 ASC NULLS FIRST, plant#1762 ASC NULLS FIRST], false, 0
(975) SortMergeJoin
Left keys [2]: [product#1583, plant#1584]
Right keys [2]: [product#1763, plant#1762]
Join type: LeftOuter
Join condition: None
(976) Project
Output [8]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, CASE WHEN isnotnull(minCalculationDateTime#1903) THEN minCalculationDateTime#1903 ELSE orderDateTime#1585 END AS stockDatetime#1905, CASE WHEN isnotnull(roundedQuantitySum#1904) THEN array(roundedQuantitySum#1904) ELSE [0.0] END AS stockBatchQuantities#1906]
Input [10]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, product#1763, plant#1762, minCalculationDateTime#1903, roundedQuantitySum#1904]
(977) Scan parquet
Output [9]: [product#1509, plant#1510, demandChannel#1511, demandStream#1512, considerVariance#1513, demandTimeBuckets#1514, demandPointInTimeStart#1515, demandPointInTimeEnd#1516, demandPointInTime#1517]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000004/0_1_10000000004]
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#1509, plant#1510, demandChannel#1511, demandStream#1512, considerVariance#1513, demandTimeBuckets#1514, demandPointInTimeStart#1515, demandPointInTimeEnd#1516, demandPointInTime#1517]
Condition : (isnotnull(product#1509) AND isnotnull(plant#1510))
(979) BroadcastExchange
Input [9]: [product#1509, plant#1510, demandChannel#1511, demandStream#1512, considerVariance#1513, demandTimeBuckets#1514, demandPointInTimeStart#1515, demandPointInTimeEnd#1516, demandPointInTime#1517]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=2965]
(980) BroadcastHashJoin
Left keys [2]: [product#1583, plant#1584]
Right keys [2]: [product#1509, plant#1510]
Join type: LeftOuter
Join condition: None
(981) Project
Output [9]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, CASE WHEN isnotnull(product#1509) THEN struct(demandChannel, demandChannel#1511, demandStream, demandStream#1512, considerVariance, considerVariance#1513, demandTimeBuckets, demandTimeBuckets#1514, demandPointInTimeStart, demandPointInTimeStart#1515, demandPointInTimeEnd, demandPointInTimeEnd#1516, demandPointInTime, demandPointInTime#1517) END AS rawDemands#1529]
Input [17]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, product#1509, plant#1510, demandChannel#1511, demandStream#1512, considerVariance#1513, demandTimeBuckets#1514, demandPointInTimeStart#1515, demandPointInTimeEnd#1516, demandPointInTime#1517]
(982) ObjectHashAggregate
Input [9]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, rawDemands#1529]
Keys [9]: [product#1583, plant#1584, orderDateTime#1585, knownfloatingpointnormalized(if (isnull(productPlant#1595)) null else named_struct(systemId, productPlant#1595.systemId, internalUUID, productPlant#1595.internalUUID, plant, productPlant#1595.plant, product, productPlant#1595.product, blockedForReplenishmentStartingFrom, productPlant#1595.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#1595.productionAspect)) null else named_struct(productMovementPlants, productPlant#1595.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#1595.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#1595.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#1595.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#1595.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#1595.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#1595.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#1595.salesPlant, listing, productPlant#1595.listing)) AS productPlant#1595, timezonecode#1609, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#1626)) AS outboundUnit#1626, stockDatetime#1905, knownfloatingpointnormalized(transform(stockBatchQuantities#1906, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#4281)), lambda arg#4281, false))) AS stockBatchQuantities#1906, [7226582400000000] AS [7226582400000000]#4280]
Functions [1]: [partial_collect_list(rawDemands#1529, 0, 0)]
Aggregate Attributes [1]: [buf#4282]
Results [10]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, [7226582400000000]#4280, buf#4283]
(983) ObjectHashAggregate
Input [10]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, [7226582400000000]#4280, buf#4283]
Keys [9]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, [7226582400000000]#4280]
Functions [1]: [collect_list(rawDemands#1529, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#1529, 0, 0)#1548]
Results [10]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1907, collect_list(rawDemands#1529, 0, 0)#1548 AS rawDemands#1530]
(984) DeserializeToObject
Input [10]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, stockBatchShelfLifeEndDatetimes#1907, rawDemands#1530]
Arguments: createexternalrow(invoke(product#1583.toString()), invoke(plant#1584.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1585)), if (isnull(productPlant#1595)) null else createexternalrow(invoke(productPlant#1595.systemId.toString()), invoke(productPlant#1595.internalUUID.toString()), if (isnull(productPlant#1595.plant)) null else createexternalrow(invoke(productPlant#1595.plant.internalRefUUID.toString()), invoke(productPlant#1595.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1595.product)) null else createexternalrow(invoke(productPlant#1595.product.internalRefUUID.toString()), invoke(productPlant#1595.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1595.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1595.productionAspect)) null else createexternalrow(if (isnull(productPlant#1595.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1595.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1595.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#1595.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1595.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1595.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1595.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#1595.salesPlant)) null else createexternalrow(if (isnull(productPlant#1595.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1595.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1595.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#1595.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#1609.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#1626)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1905)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#1906, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#1907, 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#1530, 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#1569: org.apache.spark.sql.Row
(985) MapElements
Input [1]: [obj#1569]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@762840b4, obj#1574: org.apache.spark.sql.Row
(986) SerializeFromObject
Input [1]: [obj#1574]
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#1579, 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#1580]
(987) Exchange
Input [2]: [product#1579, plant#1580]
Arguments: hashpartitioning(coalesce(plant#1580, ), isnull(plant#1580), coalesce(product#1579, ), isnull(product#1579), 10), ENSURE_REQUIREMENTS, [plan_id=2976]
(988) Sort
Input [2]: [product#1579, plant#1580]
Arguments: [coalesce(plant#1580, ) ASC NULLS FIRST, isnull(plant#1580) ASC NULLS FIRST, coalesce(product#1579, ) ASC NULLS FIRST, isnull(product#1579) ASC NULLS FIRST], false, 0
(989) SortMergeJoin
Left keys [4]: [coalesce(plant#1103, ), isnull(plant#1103), coalesce(product#1102, ), isnull(product#1102)]
Right keys [4]: [coalesce(plant#1580, ), isnull(plant#1580), coalesce(product#1579, ), isnull(product#1579)]
Join type: LeftOuter
Join condition: None
(990) Project
Output [2]: [product#1102, plant#1103]
Input [4]: [product#1102, plant#1103, product#1579, plant#1580]
(991) Exchange
Input [2]: [product#1102, plant#1103]
Arguments: hashpartitioning(plant#1103, 10), ENSURE_REQUIREMENTS, [plan_id=3006]
(992) Sort
Input [2]: [product#1102, plant#1103]
Arguments: [plant#1103 ASC NULLS FIRST], false, 0
(993) Scan parquet
Output [2]: [marketUnit#1968, distributionCenters#1974]
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#1968, distributionCenters#1974]
Condition : (((marketUnit#1968 <=> DIP_1691) AND (size(distributionCenters#1974, true) > 0)) AND isnotnull(distributionCenters#1974))
(995) Project
Output [1]: [distributionCenters#1974]
Input [2]: [marketUnit#1968, distributionCenters#1974]
(996) Exchange
Input [1]: [distributionCenters#1974]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2627]
(997) Generate
Input [1]: [distributionCenters#1974]
Arguments: explode(distributionCenters#1974), false, [distributionCenters#1990]
(998) Filter
Input [1]: [distributionCenters#1990]
Condition : (((size(distributionCenters#1990.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#1990.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#1990.internalRefUUID))
(999) Project
Output [2]: [distributionCenters#1990.internalRefUUID AS _extract_internalRefUUID#2394, distributionCenters#1990.storageLocations.internalRefUUID AS _extract_internalRefUUID#2507]
Input [1]: [distributionCenters#1990]
(1000) Generate
Input [2]: [_extract_internalRefUUID#2394, _extract_internalRefUUID#2507]
Arguments: explode(_extract_internalRefUUID#2507), [_extract_internalRefUUID#2394], false, [storageLocations#1991]
(1001) Filter
Input [2]: [_extract_internalRefUUID#2394, storageLocations#1991]
Condition : isnotnull(storageLocations#1991)
(1002) Project
Output [2]: [_extract_internalRefUUID#2394 AS plantUuid#1993, storageLocations#1991 AS storageLocUuid#1995]
Input [2]: [_extract_internalRefUUID#2394, storageLocations#1991]
(1003) BroadcastExchange
Input [2]: [plantUuid#1993, storageLocUuid#1995]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=3001]
(1004) Scan parquet
Output [2]: [product#1996, plant#1997]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1005) Filter
Input [2]: [product#1996, plant#1997]
Condition : isnotnull(plant#1997)
(1006) Exchange
Input [2]: [product#1996, plant#1997]
Arguments: hashpartitioning(product#1996, plant#1997, 10), REPARTITION_BY_NUM, [plan_id=2780]
(1007) Scan parquet
Output [4]: [plant#2002, product#2003, productionAspect#2005, systemId#2000]
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#2002.internalRefUUID AS _extract_internalRefUUID#2508, product#2003.internalRefUUID AS _extract_internalRefUUID#2511, productionAspect#2005.productMovementPlants.unitOfIssue.code AS _extract_code#2509, productionAspect#2005.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#2510]
Input [4]: [plant#2002, product#2003, productionAspect#2005, systemId#2000]
(1009) Exchange
Input [4]: [_extract_internalRefUUID#2508, _extract_internalRefUUID#2511, _extract_code#2509, _extract_internalRefUUID#2510]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2640]
(1010) Project
Output [4]: [_extract_code#2509, _extract_internalRefUUID#2510, _extract_internalRefUUID#2511, _extract_internalRefUUID#2508]
Input [4]: [_extract_internalRefUUID#2508, _extract_internalRefUUID#2511, _extract_code#2509, _extract_internalRefUUID#2510]
(1011) BroadcastExchange
Input [4]: [_extract_code#2509, _extract_internalRefUUID#2510, _extract_internalRefUUID#2511, _extract_internalRefUUID#2508]
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=2981]
(1012) BroadcastHashJoin
Left keys [4]: [coalesce(product#1996, ), isnull(product#1996), coalesce(plant#1997, ), isnull(plant#1997)]
Right keys [4]: [coalesce(_extract_internalRefUUID#2511, ), isnull(_extract_internalRefUUID#2511), coalesce(_extract_internalRefUUID#2508, ), isnull(_extract_internalRefUUID#2508)]
Join type: LeftOuter
Join condition: None
(1013) Project
Output [4]: [product#1996, plant#1997, _extract_code#2509, _extract_internalRefUUID#2510]
Input [6]: [product#1996, plant#1997, _extract_code#2509, _extract_internalRefUUID#2510, _extract_internalRefUUID#2511, _extract_internalRefUUID#2508]
(1014) Scan parquet
Output [2]: [internalUUID#2010, systemId#2009]
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#2010]
Input [2]: [internalUUID#2010, systemId#2009]
(1016) Exchange
Input [1]: [internalUUID#2010]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2646]
(1017) BroadcastExchange
Input [1]: [internalUUID#2010]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=2985]
(1018) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1997, ), isnull(plant#1997)]
Right keys [2]: [coalesce(internalUUID#2010, ), isnull(internalUUID#2010)]
Join type: LeftOuter
Join condition: None
(1019) Project
Output [4]: [product#1996, plant#1997, _extract_code#2509, _extract_internalRefUUID#2510]
Input [5]: [product#1996, plant#1997, _extract_code#2509, _extract_internalRefUUID#2510, internalUUID#2010]
(1020) Scan parquet
Output [4]: [internalUUID#2024, baseUnitOfMeasure#2028, unitOfMeasureConversions#2030, systemId#2023]
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#2024, baseUnitOfMeasure#2028, unitOfMeasureConversions#2030, systemId#2023]
Condition : isnotnull(internalUUID#2024)
(1022) Project
Output [3]: [internalUUID#2024, baseUnitOfMeasure#2028, unitOfMeasureConversions#2030]
Input [4]: [internalUUID#2024, baseUnitOfMeasure#2028, unitOfMeasureConversions#2030, systemId#2023]
(1023) Exchange
Input [3]: [internalUUID#2024, baseUnitOfMeasure#2028, unitOfMeasureConversions#2030]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2652]
(1024) BroadcastExchange
Input [3]: [internalUUID#2024, baseUnitOfMeasure#2028, unitOfMeasureConversions#2030]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=2989]
(1025) BroadcastHashJoin
Left keys [1]: [product#1996]
Right keys [1]: [internalUUID#2024]
Join type: LeftOuter
Join condition: None
(1026) Project
Output [2]: [plant#1997, filter(unitOfMeasureConversions#2030, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#2509) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#2510)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#2028.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#2028.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#2035]
Input [7]: [product#1996, plant#1997, _extract_code#2509, _extract_internalRefUUID#2510, internalUUID#2024, baseUnitOfMeasure#2028, unitOfMeasureConversions#2030]
(1027) Generate
Input [2]: [plant#1997, filteredUnitOfMeasureConversions#2035]
Arguments: explode(filteredUnitOfMeasureConversions#2035.quantityNumerator), [plant#1997, filteredUnitOfMeasureConversions#2035], true, [quantityNumerator#2036]
(1028) Project
Output [2]: [plant#1997, filteredUnitOfMeasureConversions#2035.quantityDenominator AS _extract_quantityDenominator#2396]
Input [3]: [plant#1997, filteredUnitOfMeasureConversions#2035, quantityNumerator#2036]
(1029) Generate
Input [2]: [plant#1997, _extract_quantityDenominator#2396]
Arguments: explode(_extract_quantityDenominator#2396), [plant#1997], true, [quantityDenominator#2037]
(1030) Project
Output [1]: [plant#1997]
Input [2]: [plant#1997, quantityDenominator#2037]
(1031) HashAggregate
Input [1]: [plant#1997]
Keys [1]: [plant#1997]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1997]
(1032) Exchange
Input [1]: [plant#1997]
Arguments: hashpartitioning(plant#1997, 10), ENSURE_REQUIREMENTS, [plan_id=2998]
(1033) HashAggregate
Input [1]: [plant#1997]
Keys [1]: [plant#1997]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1997]
(1034) BroadcastHashJoin
Left keys [1]: [plantUuid#1993]
Right keys [1]: [plant#1997]
Join type: Inner
Join condition: None
(1035) Project
Output [2]: [plantUuid#1993 AS plant#1967, storageLocUuid#1995]
Input [3]: [plantUuid#1993, storageLocUuid#1995, plant#1997]
(1036) Sort
Input [2]: [plant#1967, storageLocUuid#1995]
Arguments: [plant#1967 ASC NULLS FIRST], false, 0
(1037) SortMergeJoin
Left keys [1]: [plant#1103]
Right keys [1]: [plant#1967]
Join type: Inner
Join condition: None
(1038) Project
Output [3]: [plant#1103, product#1102, storageLocUuid#1995]
Input [4]: [product#1102, plant#1103, plant#1967, storageLocUuid#1995]
(1039) Scan parquet
Output [5]: [internalUUID#1933, id#1934, isMarkedForDeletion#1939, items#1940, systemId#1932]
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#1933, id#1934, isMarkedForDeletion#1939, items#1940, systemId#1932]
Condition : (((isnotnull(isMarkedForDeletion#1939) AND NOT isMarkedForDeletion#1939) AND (size(items#1940, true) > 0)) AND isnotnull(items#1940))
(1041) Project
Output [3]: [internalUUID#1933, id#1934, items#1940]
Input [5]: [internalUUID#1933, id#1934, isMarkedForDeletion#1939, items#1940, systemId#1932]
(1042) Exchange
Input [3]: [internalUUID#1933, id#1934, items#1940]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2668]
(1043) Generate
Input [3]: [internalUUID#1933, id#1934, items#1940]
Arguments: explode(items#1940), [internalUUID#1933, id#1934], false, [item#1944]
(1044) Filter
Input [3]: [internalUUID#1933, id#1934, item#1944]
Condition : ((((isnotnull(item#1944.deletionIndicator) AND isnotnull(item#1944.completeIndicator)) AND isnotnull(item#1944.returnIndicator)) AND ((NOT item#1944.deletionIndicator AND NOT item#1944.completeIndicator) AND NOT item#1944.returnIndicator)) AND ((isnotnull(item#1944.product.internalRefUUID) AND isnotnull(item#1944.plant.internalRefUUID)) AND isnotnull(item#1944.storageLocation.internalRefUUID)))
(1045) Project
Output [11]: [id#1934, internalUUID#1933, item#1944.plant.internalRefUUID AS plant#1949, item#1944.product.internalRefUUID AS product#1950, item#1944.storageLocation.internalRefUUID AS storageLocUuid#1951, item#1944.quantityUnit.code AS quantityUom#1952, item#1944.quantityUnit.internalRefUUID AS quantityUomUuid#1953, item#1944.quantityNumerator AS quantityNumerator#1954, item#1944.quantityDenominator AS quantityDenominator#1955, item#1944.scheduleLines AS scheduleLines#1956, item#1944.confirmations AS confirmations#1957]
Input [3]: [internalUUID#1933, id#1934, item#1944]
(1046) BroadcastExchange
Input [11]: [id#1934, internalUUID#1933, plant#1949, product#1950, storageLocUuid#1951, quantityUom#1952, quantityUomUuid#1953, quantityNumerator#1954, quantityDenominator#1955, scheduleLines#1956, confirmations#1957]
Arguments: HashedRelationBroadcastMode(List(input[3, string, true], input[2, string, true], input[4, string, true]),false), [plan_id=3012]
(1047) BroadcastHashJoin
Left keys [3]: [product#1102, plant#1103, storageLocUuid#1995]
Right keys [3]: [product#1950, plant#1949, storageLocUuid#1951]
Join type: Inner
Join condition: None
(1048) Project
Output [11]: [id#1934, internalUUID#1933, plant#1949, product#1950, quantityUom#1952, quantityUomUuid#1953, quantityNumerator#1954, quantityDenominator#1955, scheduleLines#1956, confirmations#1957, size(filter(confirmations#1957, lambdafunction(((NOT lambda x_2#2322.deletionIndicator AND lambda x_2#2322.isRelevantForConfirmation) AND isnotnull(lambda x_2#2322.confirmedDeliveryAt)), lambda x_2#2322, false)), false) AS _w0#2329]
Input [14]: [plant#1103, product#1102, storageLocUuid#1995, id#1934, internalUUID#1933, plant#1949, product#1950, storageLocUuid#1951, quantityUom#1952, quantityUomUuid#1953, quantityNumerator#1954, quantityDenominator#1955, scheduleLines#1956, confirmations#1957]
(1049) Exchange
Input [11]: [id#1934, internalUUID#1933, plant#1949, product#1950, quantityUom#1952, quantityUomUuid#1953, quantityNumerator#1954, quantityDenominator#1955, scheduleLines#1956, confirmations#1957, _w0#2329]
Arguments: hashpartitioning(internalUUID#1933, 10), ENSURE_REQUIREMENTS, [plan_id=3016]
(1050) Sort
Input [11]: [id#1934, internalUUID#1933, plant#1949, product#1950, quantityUom#1952, quantityUomUuid#1953, quantityNumerator#1954, quantityDenominator#1955, scheduleLines#1956, confirmations#1957, _w0#2329]
Arguments: [internalUUID#1933 ASC NULLS FIRST], false, 0
(1051) Window
Input [11]: [id#1934, internalUUID#1933, plant#1949, product#1950, quantityUom#1952, quantityUomUuid#1953, quantityNumerator#1954, quantityDenominator#1955, scheduleLines#1956, confirmations#1957, _w0#2329]
Arguments: [sum(_w0#2329) windowspecdefinition(internalUUID#1933, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#2330L], [internalUUID#1933]
(1052) Project
Output [3]: [plant#1949, product#1950, filter(transform(CASE WHEN (_we0#2330L > 0) THEN transform(filter(confirmations#1957, lambdafunction(((NOT lambda x_2#2323.deletionIndicator AND lambda x_2#2323.isRelevantForConfirmation) AND isnotnull(lambda x_2#2323.confirmedDeliveryAt)), lambda x_2#2323, false)), lambdafunction(struct(openQty, greatest((lambda x_3#2326.confirmedQuantity - coalesce(lambda x_3#2326.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_3#2326.confirmedDeliveryAt), lambda x_3#2326, false)) ELSE transform(scheduleLines#1956, lambdafunction(struct(openQty, greatest((lambda x_1#2324.quantity - coalesce(lambda x_1#2324.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_1#2324.deliveryAt), lambda x_1#2324, false)) END, lambdafunction(struct(documentId, id#1934, documentUuid, internalUUID#1933, openQty, lambda x_4#2327.openQty, openQtyInBaseUnit, ((lambda x_4#2327.openQty * quantityNumerator#1954) / quantityDenominator#1955), qtyUom, quantityUom#1952, qtyUomUuid, quantityUomUuid#1953, availabilityDatetime, lambda x_4#2327.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_4#2327, false)), lambdafunction(NOT (lambda x_5#2328.openQty = 0.0), lambda x_5#2328, false)) AS openGoodsMovements#2321]
Input [12]: [id#1934, internalUUID#1933, plant#1949, product#1950, quantityUom#1952, quantityUomUuid#1953, quantityNumerator#1954, quantityDenominator#1955, scheduleLines#1956, confirmations#1957, _w0#2329, _we0#2330L]
(1053) ObjectHashAggregate
Input [3]: [plant#1949, product#1950, openGoodsMovements#2321]
Keys [2]: [product#1950, plant#1949]
Functions [1]: [partial_collect_list(openGoodsMovements#2321, 0, 0)]
Aggregate Attributes [1]: [buf#4278]
Results [3]: [product#1950, plant#1949, buf#4279]
(1054) Exchange
Input [3]: [product#1950, plant#1949, buf#4279]
Arguments: hashpartitioning(product#1950, plant#1949, 10), ENSURE_REQUIREMENTS, [plan_id=3022]
(1055) ObjectHashAggregate
Input [3]: [product#1950, plant#1949, buf#4279]
Keys [2]: [product#1950, plant#1949]
Functions [1]: [collect_list(openGoodsMovements#2321, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#2321, 0, 0)#2347]
Results [3]: [product#1950, plant#1949, flatten(collect_list(openGoodsMovements#2321, 0, 0)#2347) AS openGoodsMovements#2331]
(1056) Filter
Input [3]: [product#1950, plant#1949, openGoodsMovements#2331]
Condition : (size(openGoodsMovements#2331, false) > 0)
(1057) AdaptiveSparkPlan
Output [3]: [product#1950, plant#1949, openGoodsMovements#2331]
Arguments: isFinalPlan=true
(1058) Filter
Input [3]: [product#1950, plant#1949, openGoodsMovements#2331]
Condition : (isnotnull(product#1950) AND isnotnull(plant#1949))
(1059) Scan parquet
Output [3]: [product#4346, plant#4347, orderDateTime#4348]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1060) Filter
Input [3]: [product#4346, plant#4347, orderDateTime#4348]
Condition : isnotnull(plant#4347)
(1061) Exchange
Input [3]: [product#4346, plant#4347, orderDateTime#4348]
Arguments: hashpartitioning(product#4346, plant#4347, 10), REPARTITION_BY_NUM, [plan_id=9115]
(1062) Scan parquet
Output [4]: [plant#4352, product#4353, productionAspect#4355, systemId#4350]
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#4352.internalRefUUID AS _extract_internalRefUUID#9284, product#4353.internalRefUUID AS _extract_internalRefUUID#9285, productionAspect#4355.productMovementPlants.unitOfIssue.code AS _extract_code#9282, productionAspect#4355.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9283]
Input [4]: [plant#4352, product#4353, productionAspect#4355, systemId#4350]
(1064) Exchange
Input [4]: [_extract_internalRefUUID#9284, _extract_internalRefUUID#9285, _extract_code#9282, _extract_internalRefUUID#9283]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7757]
(1065) Project
Output [4]: [_extract_code#9282, _extract_internalRefUUID#9283, _extract_internalRefUUID#9285, _extract_internalRefUUID#9284]
Input [4]: [_extract_internalRefUUID#9284, _extract_internalRefUUID#9285, _extract_code#9282, _extract_internalRefUUID#9283]
(1066) BroadcastExchange
Input [4]: [_extract_code#9282, _extract_internalRefUUID#9283, _extract_internalRefUUID#9285, _extract_internalRefUUID#9284]
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=9980]
(1067) BroadcastHashJoin
Left keys [4]: [coalesce(product#4346, ), isnull(product#4346), coalesce(plant#4347, ), isnull(plant#4347)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9285, ), isnull(_extract_internalRefUUID#9285), coalesce(_extract_internalRefUUID#9284, ), isnull(_extract_internalRefUUID#9284)]
Join type: LeftOuter
Join condition: None
(1068) Project
Output [5]: [product#4346, plant#4347, orderDateTime#4348, _extract_code#9282, _extract_internalRefUUID#9283]
Input [7]: [product#4346, plant#4347, orderDateTime#4348, _extract_code#9282, _extract_internalRefUUID#9283, _extract_internalRefUUID#9285, _extract_internalRefUUID#9284]
(1069) Scan parquet
Output [2]: [internalUUID#4360, systemId#4359]
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#4360]
Input [2]: [internalUUID#4360, systemId#4359]
(1071) Exchange
Input [1]: [internalUUID#4360]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7763]
(1072) BroadcastExchange
Input [1]: [internalUUID#4360]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=9984]
(1073) BroadcastHashJoin
Left keys [2]: [coalesce(plant#4347, ), isnull(plant#4347)]
Right keys [2]: [coalesce(internalUUID#4360, ), isnull(internalUUID#4360)]
Join type: LeftOuter
Join condition: None
(1074) Project
Output [5]: [product#4346, plant#4347, orderDateTime#4348, _extract_code#9282, _extract_internalRefUUID#9283]
Input [6]: [product#4346, plant#4347, orderDateTime#4348, _extract_code#9282, _extract_internalRefUUID#9283, internalUUID#4360]
(1075) Scan parquet
Output [4]: [internalUUID#4374, baseUnitOfMeasure#4378, unitOfMeasureConversions#4380, systemId#4373]
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#4374, baseUnitOfMeasure#4378, unitOfMeasureConversions#4380, systemId#4373]
Condition : isnotnull(internalUUID#4374)
(1077) Project
Output [3]: [internalUUID#4374, baseUnitOfMeasure#4378, unitOfMeasureConversions#4380]
Input [4]: [internalUUID#4374, baseUnitOfMeasure#4378, unitOfMeasureConversions#4380, systemId#4373]
(1078) Exchange
Input [3]: [internalUUID#4374, baseUnitOfMeasure#4378, unitOfMeasureConversions#4380]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7769]
(1079) BroadcastExchange
Input [3]: [internalUUID#4374, baseUnitOfMeasure#4378, unitOfMeasureConversions#4380]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=9988]
(1080) BroadcastHashJoin
Left keys [1]: [product#4346]
Right keys [1]: [internalUUID#4374]
Join type: LeftOuter
Join condition: None
(1081) Project
Output [4]: [product#4346, plant#4347, orderDateTime#4348, filter(unitOfMeasureConversions#4380, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9282) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9283)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#4378.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4378.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#4385]
Input [8]: [product#4346, plant#4347, orderDateTime#4348, _extract_code#9282, _extract_internalRefUUID#9283, internalUUID#4374, baseUnitOfMeasure#4378, unitOfMeasureConversions#4380]
(1082) Generate
Input [4]: [product#4346, plant#4347, orderDateTime#4348, filteredUnitOfMeasureConversions#4385]
Arguments: explode(filteredUnitOfMeasureConversions#4385.quantityNumerator), [product#4346, plant#4347, orderDateTime#4348, filteredUnitOfMeasureConversions#4385], true, [quantityNumerator#4386]
(1083) Project
Output [4]: [product#4346, plant#4347, orderDateTime#4348, filteredUnitOfMeasureConversions#4385.quantityDenominator AS _extract_quantityDenominator#8602]
Input [5]: [product#4346, plant#4347, orderDateTime#4348, filteredUnitOfMeasureConversions#4385, quantityNumerator#4386]
(1084) Generate
Input [4]: [product#4346, plant#4347, orderDateTime#4348, _extract_quantityDenominator#8602]
Arguments: explode(_extract_quantityDenominator#8602), [product#4346, plant#4347, orderDateTime#4348], true, [quantityDenominator#4387]
(1085) Project
Output [3]: [product#4346, plant#4347, orderDateTime#4348]
Input [4]: [product#4346, plant#4347, orderDateTime#4348, quantityDenominator#4387]
(1086) Sort
Input [3]: [product#4346, plant#4347, orderDateTime#4348]
Arguments: [product#4346 ASC NULLS FIRST, plant#4347 ASC NULLS FIRST], false, 0
(1087) Scan parquet
Output [6]: [internalUUID#4391, product#4392, plant#4393, calculationDateTime#4394, stockQuantities#4395, systemId#4390]
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#4391, product#4392, plant#4393, calculationDateTime#4394, stockQuantities#4395, systemId#4390]
Condition : (isnotnull(plant#4393.internalRefUUID) AND isnotnull(product#4392.internalRefUUID))
(1089) Project
Output [6]: [systemId#4390, internalUUID#4391, product#4392, plant#4393, calculationDateTime#4394, stockQuantities#4395]
Input [6]: [internalUUID#4391, product#4392, plant#4393, calculationDateTime#4394, stockQuantities#4395, systemId#4390]
(1090) Exchange
Input [6]: [systemId#4390, internalUUID#4391, product#4392, plant#4393, calculationDateTime#4394, stockQuantities#4395]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7779]
(1091) BroadcastExchange
Input [6]: [systemId#4390, internalUUID#4391, product#4392, plant#4393, calculationDateTime#4394, stockQuantities#4395]
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=10019]
(1092) Scan parquet
Output [2]: [marketUnit#4396, distributionCenters#4402]
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#4396, distributionCenters#4402]
Condition : (((marketUnit#4396 <=> DIP_1691) AND (size(distributionCenters#4402, true) > 0)) AND isnotnull(distributionCenters#4402))
(1094) Project
Output [1]: [distributionCenters#4402]
Input [2]: [marketUnit#4396, distributionCenters#4402]
(1095) Exchange
Input [1]: [distributionCenters#4402]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7783]
(1096) Generate
Input [1]: [distributionCenters#4402]
Arguments: explode(distributionCenters#4402), false, [distributionCenters#4418]
(1097) Filter
Input [1]: [distributionCenters#4418]
Condition : (((size(distributionCenters#4418.storageLocations, true) > 0) AND isnotnull(distributionCenters#4418.storageLocations)) AND isnotnull(distributionCenters#4418.internalRefUUID))
(1098) Project
Output [2]: [distributionCenters#4418.internalRefUUID AS _extract_internalRefUUID#8606, distributionCenters#4418.storageLocations AS _extract_storageLocations#8607]
Input [1]: [distributionCenters#4418]
(1099) Generate
Input [2]: [_extract_internalRefUUID#8606, _extract_storageLocations#8607]
Arguments: explode(_extract_storageLocations#8607), [_extract_internalRefUUID#8606], false, [storageLocations#4419]
(1100) Project
Output [3]: [_extract_internalRefUUID#8606 AS plantUuid#4421, storageLocations#4419.id AS storageLocId#4422, storageLocations#4419.internalRefUUID AS storageLocUuid#4423]
Input [2]: [_extract_internalRefUUID#8606, storageLocations#4419]
(1101) BroadcastExchange
Input [3]: [plantUuid#4421, storageLocId#4422, storageLocUuid#4423]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10015]
(1102) Scan parquet
Output [2]: [product#4424, plant#4425]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1103) Filter
Input [2]: [product#4424, plant#4425]
Condition : isnotnull(plant#4425)
(1104) Exchange
Input [2]: [product#4424, plant#4425]
Arguments: hashpartitioning(product#4424, plant#4425, 10), REPARTITION_BY_NUM, [plan_id=9126]
(1105) Scan parquet
Output [4]: [plant#4430, product#4431, productionAspect#4433, systemId#4428]
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#4430.internalRefUUID AS _extract_internalRefUUID#9287, product#4431.internalRefUUID AS _extract_internalRefUUID#9286, productionAspect#4433.productMovementPlants.unitOfIssue.code AS _extract_code#9288, productionAspect#4433.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9289]
Input [4]: [plant#4430, product#4431, productionAspect#4433, systemId#4428]
(1107) Exchange
Input [4]: [_extract_internalRefUUID#9287, _extract_internalRefUUID#9286, _extract_code#9288, _extract_internalRefUUID#9289]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7795]
(1108) Project
Output [4]: [_extract_code#9288, _extract_internalRefUUID#9289, _extract_internalRefUUID#9286, _extract_internalRefUUID#9287]
Input [4]: [_extract_internalRefUUID#9287, _extract_internalRefUUID#9286, _extract_code#9288, _extract_internalRefUUID#9289]
(1109) BroadcastExchange
Input [4]: [_extract_code#9288, _extract_internalRefUUID#9289, _extract_internalRefUUID#9286, _extract_internalRefUUID#9287]
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=9995]
(1110) BroadcastHashJoin
Left keys [4]: [coalesce(product#4424, ), isnull(product#4424), coalesce(plant#4425, ), isnull(plant#4425)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9286, ), isnull(_extract_internalRefUUID#9286), coalesce(_extract_internalRefUUID#9287, ), isnull(_extract_internalRefUUID#9287)]
Join type: LeftOuter
Join condition: None
(1111) Project
Output [4]: [product#4424, plant#4425, _extract_code#9288, _extract_internalRefUUID#9289]
Input [6]: [product#4424, plant#4425, _extract_code#9288, _extract_internalRefUUID#9289, _extract_internalRefUUID#9286, _extract_internalRefUUID#9287]
(1112) Scan parquet
Output [2]: [internalUUID#4438, systemId#4437]
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#4438]
Input [2]: [internalUUID#4438, systemId#4437]
(1114) Exchange
Input [1]: [internalUUID#4438]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7801]
(1115) BroadcastExchange
Input [1]: [internalUUID#4438]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=9999]
(1116) BroadcastHashJoin
Left keys [2]: [coalesce(plant#4425, ), isnull(plant#4425)]
Right keys [2]: [coalesce(internalUUID#4438, ), isnull(internalUUID#4438)]
Join type: LeftOuter
Join condition: None
(1117) Project
Output [4]: [product#4424, plant#4425, _extract_code#9288, _extract_internalRefUUID#9289]
Input [5]: [product#4424, plant#4425, _extract_code#9288, _extract_internalRefUUID#9289, internalUUID#4438]
(1118) Scan parquet
Output [4]: [internalUUID#4452, baseUnitOfMeasure#4456, unitOfMeasureConversions#4458, systemId#4451]
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#4452, baseUnitOfMeasure#4456, unitOfMeasureConversions#4458, systemId#4451]
Condition : isnotnull(internalUUID#4452)
(1120) Project
Output [3]: [internalUUID#4452, baseUnitOfMeasure#4456, unitOfMeasureConversions#4458]
Input [4]: [internalUUID#4452, baseUnitOfMeasure#4456, unitOfMeasureConversions#4458, systemId#4451]
(1121) Exchange
Input [3]: [internalUUID#4452, baseUnitOfMeasure#4456, unitOfMeasureConversions#4458]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7807]
(1122) BroadcastExchange
Input [3]: [internalUUID#4452, baseUnitOfMeasure#4456, unitOfMeasureConversions#4458]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10003]
(1123) BroadcastHashJoin
Left keys [1]: [product#4424]
Right keys [1]: [internalUUID#4452]
Join type: LeftOuter
Join condition: None
(1124) Project
Output [2]: [plant#4425, filter(unitOfMeasureConversions#4458, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9288) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9289)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#4456.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4456.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#4463]
Input [7]: [product#4424, plant#4425, _extract_code#9288, _extract_internalRefUUID#9289, internalUUID#4452, baseUnitOfMeasure#4456, unitOfMeasureConversions#4458]
(1125) Generate
Input [2]: [plant#4425, filteredUnitOfMeasureConversions#4463]
Arguments: explode(filteredUnitOfMeasureConversions#4463.quantityNumerator), [plant#4425, filteredUnitOfMeasureConversions#4463], true, [quantityNumerator#4464]
(1126) Project
Output [2]: [plant#4425, filteredUnitOfMeasureConversions#4463.quantityDenominator AS _extract_quantityDenominator#8608]
Input [3]: [plant#4425, filteredUnitOfMeasureConversions#4463, quantityNumerator#4464]
(1127) Generate
Input [2]: [plant#4425, _extract_quantityDenominator#8608]
Arguments: explode(_extract_quantityDenominator#8608), [plant#4425], true, [quantityDenominator#4465]
(1128) Project
Output [1]: [plant#4425]
Input [2]: [plant#4425, quantityDenominator#4465]
(1129) HashAggregate
Input [1]: [plant#4425]
Keys [1]: [plant#4425]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#4425]
(1130) Exchange
Input [1]: [plant#4425]
Arguments: hashpartitioning(plant#4425, 10), ENSURE_REQUIREMENTS, [plan_id=10012]
(1131) HashAggregate
Input [1]: [plant#4425]
Keys [1]: [plant#4425]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#4425]
(1132) BroadcastHashJoin
Left keys [1]: [plantUuid#4421]
Right keys [1]: [plant#4425]
Join type: Inner
Join condition: None
(1133) Project
Output [3]: [plantUuid#4421, storageLocId#4422, storageLocUuid#4423]
Input [4]: [plantUuid#4421, storageLocId#4422, storageLocUuid#4423, plant#4425]
(1134) BroadcastHashJoin
Left keys [2]: [coalesce(plant#4393.internalRefUUID, ), isnull(plant#4393.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#4421, ), isnull(plantUuid#4421)]
Join type: Inner
Join condition: None
(1135) Generate
Input [9]: [systemId#4390, internalUUID#4391, product#4392, plant#4393, calculationDateTime#4394, stockQuantities#4395, plantUuid#4421, storageLocId#4422, storageLocUuid#4423]
Arguments: explode(filter(stockQuantities#4395, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#4423) AND (lambda x#1207.storageLocation.Id = storageLocId#4422)), lambda x#1207, false))), [systemId#4390, internalUUID#4391, product#4392, plant#4393, calculationDateTime#4394, plantUuid#4421], false, [stockQuantity#4468]
(1136) ObjectHashAggregate
Input [7]: [systemId#4390, internalUUID#4391, product#4392, plant#4393, calculationDateTime#4394, plantUuid#4421, stockQuantity#4468]
Keys [5]: [plantUuid#4421, internalUUID#4391, plant#4393, product#4392, systemId#4390]
Functions [2]: [partial_first(calculationDateTime#4394, false), partial_collect_list(stockQuantity#4468, 0, 0)]
Aggregate Attributes [3]: [first#10318, valueSet#10319, buf#10320]
Results [8]: [plantUuid#4421, internalUUID#4391, plant#4393, product#4392, systemId#4390, first#10321, valueSet#10322, buf#10323]
(1137) ObjectHashAggregate
Input [8]: [plantUuid#4421, internalUUID#4391, plant#4393, product#4392, systemId#4390, first#10321, valueSet#10322, buf#10323]
Keys [5]: [plantUuid#4421, internalUUID#4391, plant#4393, product#4392, systemId#4390]
Functions [2]: [first(calculationDateTime#4394, false), collect_list(stockQuantity#4468, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#4394)()#1222, collect_list(stockQuantity#4468, 0, 0)#1223]
Results [4]: [product#4392, plant#4393, first(calculationDateTime#4394)()#1222 AS calculationDateTime#4469, collect_list(stockQuantity#4468, 0, 0)#1223 AS stockQuantities#4470]
(1138) Filter
Input [4]: [product#4392, plant#4393, calculationDateTime#4469, stockQuantities#4470]
Condition : ((size(stockQuantities#4470, true) > 0) AND isnotnull(calculationDateTime#4469))
(1139) Generate
Input [4]: [product#4392, plant#4393, calculationDateTime#4469, stockQuantities#4470]
Arguments: explode(stockQuantities#4470), [product#4392, plant#4393, calculationDateTime#4469], false, [stockQuantity#4471]
(1140) Filter
Input [4]: [product#4392, plant#4393, calculationDateTime#4469, stockQuantity#4471]
Condition : (((isnotnull(stockQuantity#4471.specialStockIndicator.code) AND isnotnull(stockQuantity#4471.stockType.code)) AND (stockQuantity#4471.specialStockIndicator.code = )) AND (stockQuantity#4471.stockType.code = 01))
(1141) Project
Output [4]: [plant#4393.internalRefUUID AS plantUuid#4473, product#4392.internalRefUUID AS productUuid#4475, calculationDateTime#4469, stockQuantity#4471.storagelocation.id AS storageLocId#4476]
Input [4]: [product#4392, plant#4393, calculationDateTime#4469, stockQuantity#4471]
(1142) Exchange
Input [4]: [plantUuid#4473, productUuid#4475, calculationDateTime#4469, storageLocId#4476]
Arguments: hashpartitioning(productUuid#4475, plantUuid#4473, 10), ENSURE_REQUIREMENTS, [plan_id=10045]
(1143) Sort
Input [4]: [plantUuid#4473, productUuid#4475, calculationDateTime#4469, storageLocId#4476]
Arguments: [productUuid#4475 ASC NULLS FIRST, plantUuid#4473 ASC NULLS FIRST], false, 0
(1144) Scan parquet
Output [3]: [product#4481, plant#4482, orderDateTime#4483]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1145) Filter
Input [3]: [product#4481, plant#4482, orderDateTime#4483]
Condition : ((isnotnull(orderDateTime#4483) AND isnotnull(plant#4482)) AND isnotnull(product#4481))
(1146) Exchange
Input [3]: [product#4481, plant#4482, orderDateTime#4483]
Arguments: hashpartitioning(product#4481, plant#4482, 10), REPARTITION_BY_NUM, [plan_id=9149]
(1147) Scan parquet
Output [4]: [plant#4487, product#4488, productionAspect#4490, systemId#4485]
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#4487.internalRefUUID AS _extract_internalRefUUID#9293, product#4488.internalRefUUID AS _extract_internalRefUUID#9290, productionAspect#4490.productMovementPlants.unitOfIssue.code AS _extract_code#9291, productionAspect#4490.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9292]
Input [4]: [plant#4487, product#4488, productionAspect#4490, systemId#4485]
(1149) Exchange
Input [4]: [_extract_internalRefUUID#9293, _extract_internalRefUUID#9290, _extract_code#9291, _extract_internalRefUUID#9292]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7832]
(1150) Project
Output [4]: [_extract_code#9291, _extract_internalRefUUID#9292, _extract_internalRefUUID#9290, _extract_internalRefUUID#9293]
Input [4]: [_extract_internalRefUUID#9293, _extract_internalRefUUID#9290, _extract_code#9291, _extract_internalRefUUID#9292]
(1151) BroadcastExchange
Input [4]: [_extract_code#9291, _extract_internalRefUUID#9292, _extract_internalRefUUID#9290, _extract_internalRefUUID#9293]
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=10028]
(1152) BroadcastHashJoin
Left keys [4]: [coalesce(product#4481, ), isnull(product#4481), coalesce(plant#4482, ), isnull(plant#4482)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9290, ), isnull(_extract_internalRefUUID#9290), coalesce(_extract_internalRefUUID#9293, ), isnull(_extract_internalRefUUID#9293)]
Join type: LeftOuter
Join condition: None
(1153) Project
Output [5]: [product#4481, plant#4482, orderDateTime#4483, _extract_code#9291, _extract_internalRefUUID#9292]
Input [7]: [product#4481, plant#4482, orderDateTime#4483, _extract_code#9291, _extract_internalRefUUID#9292, _extract_internalRefUUID#9290, _extract_internalRefUUID#9293]
(1154) Scan parquet
Output [2]: [internalUUID#4495, systemId#4494]
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#4495]
Input [2]: [internalUUID#4495, systemId#4494]
(1156) Exchange
Input [1]: [internalUUID#4495]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7838]
(1157) BroadcastExchange
Input [1]: [internalUUID#4495]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10032]
(1158) BroadcastHashJoin
Left keys [2]: [coalesce(plant#4482, ), isnull(plant#4482)]
Right keys [2]: [coalesce(internalUUID#4495, ), isnull(internalUUID#4495)]
Join type: LeftOuter
Join condition: None
(1159) Project
Output [5]: [product#4481, plant#4482, orderDateTime#4483, _extract_code#9291, _extract_internalRefUUID#9292]
Input [6]: [product#4481, plant#4482, orderDateTime#4483, _extract_code#9291, _extract_internalRefUUID#9292, internalUUID#4495]
(1160) Scan parquet
Output [4]: [internalUUID#4509, baseUnitOfMeasure#4513, unitOfMeasureConversions#4515, systemId#4508]
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#4509, baseUnitOfMeasure#4513, unitOfMeasureConversions#4515, systemId#4508]
Condition : isnotnull(internalUUID#4509)
(1162) Project
Output [3]: [internalUUID#4509, baseUnitOfMeasure#4513, unitOfMeasureConversions#4515]
Input [4]: [internalUUID#4509, baseUnitOfMeasure#4513, unitOfMeasureConversions#4515, systemId#4508]
(1163) Exchange
Input [3]: [internalUUID#4509, baseUnitOfMeasure#4513, unitOfMeasureConversions#4515]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7844]
(1164) BroadcastExchange
Input [3]: [internalUUID#4509, baseUnitOfMeasure#4513, unitOfMeasureConversions#4515]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10036]
(1165) BroadcastHashJoin
Left keys [1]: [product#4481]
Right keys [1]: [internalUUID#4509]
Join type: LeftOuter
Join condition: None
(1166) Project
Output [4]: [product#4481, plant#4482, orderDateTime#4483, filter(unitOfMeasureConversions#4515, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9291) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9292)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#4513.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4513.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#4520]
Input [8]: [product#4481, plant#4482, orderDateTime#4483, _extract_code#9291, _extract_internalRefUUID#9292, internalUUID#4509, baseUnitOfMeasure#4513, unitOfMeasureConversions#4515]
(1167) Generate
Input [4]: [product#4481, plant#4482, orderDateTime#4483, filteredUnitOfMeasureConversions#4520]
Arguments: explode(filteredUnitOfMeasureConversions#4520.quantityNumerator), [product#4481, plant#4482, orderDateTime#4483, filteredUnitOfMeasureConversions#4520], true, [quantityNumerator#4521]
(1168) Project
Output [4]: [product#4481, plant#4482, orderDateTime#4483, filteredUnitOfMeasureConversions#4520.quantityDenominator AS _extract_quantityDenominator#8612]
Input [5]: [product#4481, plant#4482, orderDateTime#4483, filteredUnitOfMeasureConversions#4520, quantityNumerator#4521]
(1169) Generate
Input [4]: [product#4481, plant#4482, orderDateTime#4483, _extract_quantityDenominator#8612]
Arguments: explode(_extract_quantityDenominator#8612), [product#4481, plant#4482, orderDateTime#4483], true, [quantityDenominator#4522]
(1170) Project
Output [3]: [product#4481, plant#4482, orderDateTime#4483]
Input [4]: [product#4481, plant#4482, orderDateTime#4483, quantityDenominator#4522]
(1171) Sort
Input [3]: [product#4481, plant#4482, orderDateTime#4483]
Arguments: [product#4481 ASC NULLS FIRST, plant#4482 ASC NULLS FIRST], false, 0
(1172) SortMergeJoin
Left keys [2]: [productUuid#4475, plantUuid#4473]
Right keys [2]: [product#4481, plant#4482]
Join type: Inner
Join condition: (calculationDateTime#4469 <= orderDateTime#4483)
(1173) Project
Output [4]: [plantUuid#4473 AS plant#4525, productUuid#4475 AS product#4526, storageLocId#4476, calculationDateTime#4469]
Input [7]: [plantUuid#4473, productUuid#4475, calculationDateTime#4469, storageLocId#4476, product#4481, plant#4482, orderDateTime#4483]
(1174) Exchange
Input [4]: [plant#4525, product#4526, storageLocId#4476, calculationDateTime#4469]
Arguments: hashpartitioning(coalesce(plant#4525, ), isnull(plant#4525), coalesce(product#4526, ), isnull(product#4526), coalesce(storageLocId#4476, ), isnull(storageLocId#4476), coalesce(calculationDateTime#4469, 1970-01-01 00:00:00), isnull(calculationDateTime#4469), 10), ENSURE_REQUIREMENTS, [plan_id=10109]
(1175) Sort
Input [4]: [plant#4525, product#4526, storageLocId#4476, calculationDateTime#4469]
Arguments: [coalesce(plant#4525, ) ASC NULLS FIRST, isnull(plant#4525) ASC NULLS FIRST, coalesce(product#4526, ) ASC NULLS FIRST, isnull(product#4526) ASC NULLS FIRST, coalesce(storageLocId#4476, ) ASC NULLS FIRST, isnull(storageLocId#4476) ASC NULLS FIRST, coalesce(calculationDateTime#4469, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#4469) ASC NULLS FIRST], false, 0
(1176) Scan parquet
Output [6]: [internalUUID#4528, product#4529, plant#4530, calculationDateTime#4531, stockQuantities#4532, systemId#4527]
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#4528, product#4529, plant#4530, calculationDateTime#4531, stockQuantities#4532, systemId#4527]
Condition : (isnotnull(plant#4530.internalRefUUID) AND isnotnull(product#4529.internalRefUUID))
(1178) Project
Output [6]: [systemId#4527, internalUUID#4528, product#4529, plant#4530, calculationDateTime#4531, stockQuantities#4532]
Input [6]: [internalUUID#4528, product#4529, plant#4530, calculationDateTime#4531, stockQuantities#4532, systemId#4527]
(1179) Exchange
Input [6]: [systemId#4527, internalUUID#4528, product#4529, plant#4530, calculationDateTime#4531, stockQuantities#4532]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7856]
(1180) BroadcastExchange
Input [6]: [systemId#4527, internalUUID#4528, product#4529, plant#4530, calculationDateTime#4531, stockQuantities#4532]
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=10074]
(1181) Scan parquet
Output [2]: [marketUnit#4533, distributionCenters#4539]
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#4533, distributionCenters#4539]
Condition : (((marketUnit#4533 <=> DIP_1691) AND (size(distributionCenters#4539, true) > 0)) AND isnotnull(distributionCenters#4539))
(1183) Project
Output [1]: [distributionCenters#4539]
Input [2]: [marketUnit#4533, distributionCenters#4539]
(1184) Exchange
Input [1]: [distributionCenters#4539]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7860]
(1185) Generate
Input [1]: [distributionCenters#4539]
Arguments: explode(distributionCenters#4539), false, [distributionCenters#4555]
(1186) Filter
Input [1]: [distributionCenters#4555]
Condition : (((size(distributionCenters#4555.storageLocations, true) > 0) AND isnotnull(distributionCenters#4555.storageLocations)) AND isnotnull(distributionCenters#4555.internalRefUUID))
(1187) Project
Output [2]: [distributionCenters#4555.internalRefUUID AS _extract_internalRefUUID#8616, distributionCenters#4555.storageLocations AS _extract_storageLocations#8617]
Input [1]: [distributionCenters#4555]
(1188) Generate
Input [2]: [_extract_internalRefUUID#8616, _extract_storageLocations#8617]
Arguments: explode(_extract_storageLocations#8617), [_extract_internalRefUUID#8616], false, [storageLocations#4556]
(1189) Project
Output [3]: [_extract_internalRefUUID#8616 AS plantUuid#4558, storageLocations#4556.id AS storageLocId#4559, storageLocations#4556.internalRefUUID AS storageLocUuid#4560]
Input [2]: [_extract_internalRefUUID#8616, storageLocations#4556]
(1190) BroadcastExchange
Input [3]: [plantUuid#4558, storageLocId#4559, storageLocUuid#4560]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10070]
(1191) Scan parquet
Output [2]: [product#4561, plant#4562]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1192) Filter
Input [2]: [product#4561, plant#4562]
Condition : isnotnull(plant#4562)
(1193) Exchange
Input [2]: [product#4561, plant#4562]
Arguments: hashpartitioning(product#4561, plant#4562, 10), REPARTITION_BY_NUM, [plan_id=9162]
(1194) Scan parquet
Output [4]: [plant#4567, product#4568, productionAspect#4570, systemId#4565]
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#4567.internalRefUUID AS _extract_internalRefUUID#9297, product#4568.internalRefUUID AS _extract_internalRefUUID#9294, productionAspect#4570.productMovementPlants.unitOfIssue.code AS _extract_code#9295, productionAspect#4570.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9296]
Input [4]: [plant#4567, product#4568, productionAspect#4570, systemId#4565]
(1196) Exchange
Input [4]: [_extract_internalRefUUID#9297, _extract_internalRefUUID#9294, _extract_code#9295, _extract_internalRefUUID#9296]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7872]
(1197) Project
Output [4]: [_extract_code#9295, _extract_internalRefUUID#9296, _extract_internalRefUUID#9294, _extract_internalRefUUID#9297]
Input [4]: [_extract_internalRefUUID#9297, _extract_internalRefUUID#9294, _extract_code#9295, _extract_internalRefUUID#9296]
(1198) BroadcastExchange
Input [4]: [_extract_code#9295, _extract_internalRefUUID#9296, _extract_internalRefUUID#9294, _extract_internalRefUUID#9297]
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=10050]
(1199) BroadcastHashJoin
Left keys [4]: [coalesce(product#4561, ), isnull(product#4561), coalesce(plant#4562, ), isnull(plant#4562)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9294, ), isnull(_extract_internalRefUUID#9294), coalesce(_extract_internalRefUUID#9297, ), isnull(_extract_internalRefUUID#9297)]
Join type: LeftOuter
Join condition: None
(1200) Project
Output [4]: [product#4561, plant#4562, _extract_code#9295, _extract_internalRefUUID#9296]
Input [6]: [product#4561, plant#4562, _extract_code#9295, _extract_internalRefUUID#9296, _extract_internalRefUUID#9294, _extract_internalRefUUID#9297]
(1201) Scan parquet
Output [2]: [internalUUID#4575, systemId#4574]
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#4575]
Input [2]: [internalUUID#4575, systemId#4574]
(1203) Exchange
Input [1]: [internalUUID#4575]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7878]
(1204) BroadcastExchange
Input [1]: [internalUUID#4575]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10054]
(1205) BroadcastHashJoin
Left keys [2]: [coalesce(plant#4562, ), isnull(plant#4562)]
Right keys [2]: [coalesce(internalUUID#4575, ), isnull(internalUUID#4575)]
Join type: LeftOuter
Join condition: None
(1206) Project
Output [4]: [product#4561, plant#4562, _extract_code#9295, _extract_internalRefUUID#9296]
Input [5]: [product#4561, plant#4562, _extract_code#9295, _extract_internalRefUUID#9296, internalUUID#4575]
(1207) Scan parquet
Output [4]: [internalUUID#4589, baseUnitOfMeasure#4593, unitOfMeasureConversions#4595, systemId#4588]
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#4589, baseUnitOfMeasure#4593, unitOfMeasureConversions#4595, systemId#4588]
Condition : isnotnull(internalUUID#4589)
(1209) Project
Output [3]: [internalUUID#4589, baseUnitOfMeasure#4593, unitOfMeasureConversions#4595]
Input [4]: [internalUUID#4589, baseUnitOfMeasure#4593, unitOfMeasureConversions#4595, systemId#4588]
(1210) Exchange
Input [3]: [internalUUID#4589, baseUnitOfMeasure#4593, unitOfMeasureConversions#4595]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7884]
(1211) BroadcastExchange
Input [3]: [internalUUID#4589, baseUnitOfMeasure#4593, unitOfMeasureConversions#4595]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10058]
(1212) BroadcastHashJoin
Left keys [1]: [product#4561]
Right keys [1]: [internalUUID#4589]
Join type: LeftOuter
Join condition: None
(1213) Project
Output [2]: [plant#4562, filter(unitOfMeasureConversions#4595, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9295) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9296)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#4593.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4593.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#4600]
Input [7]: [product#4561, plant#4562, _extract_code#9295, _extract_internalRefUUID#9296, internalUUID#4589, baseUnitOfMeasure#4593, unitOfMeasureConversions#4595]
(1214) Generate
Input [2]: [plant#4562, filteredUnitOfMeasureConversions#4600]
Arguments: explode(filteredUnitOfMeasureConversions#4600.quantityNumerator), [plant#4562, filteredUnitOfMeasureConversions#4600], true, [quantityNumerator#4601]
(1215) Project
Output [2]: [plant#4562, filteredUnitOfMeasureConversions#4600.quantityDenominator AS _extract_quantityDenominator#8618]
Input [3]: [plant#4562, filteredUnitOfMeasureConversions#4600, quantityNumerator#4601]
(1216) Generate
Input [2]: [plant#4562, _extract_quantityDenominator#8618]
Arguments: explode(_extract_quantityDenominator#8618), [plant#4562], true, [quantityDenominator#4602]
(1217) Project
Output [1]: [plant#4562]
Input [2]: [plant#4562, quantityDenominator#4602]
(1218) HashAggregate
Input [1]: [plant#4562]
Keys [1]: [plant#4562]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#4562]
(1219) Exchange
Input [1]: [plant#4562]
Arguments: hashpartitioning(plant#4562, 10), ENSURE_REQUIREMENTS, [plan_id=10067]
(1220) HashAggregate
Input [1]: [plant#4562]
Keys [1]: [plant#4562]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#4562]
(1221) BroadcastHashJoin
Left keys [1]: [plantUuid#4558]
Right keys [1]: [plant#4562]
Join type: Inner
Join condition: None
(1222) Project
Output [3]: [plantUuid#4558, storageLocId#4559, storageLocUuid#4560]
Input [4]: [plantUuid#4558, storageLocId#4559, storageLocUuid#4560, plant#4562]
(1223) BroadcastHashJoin
Left keys [2]: [coalesce(plant#4530.internalRefUUID, ), isnull(plant#4530.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#4558, ), isnull(plantUuid#4558)]
Join type: Inner
Join condition: None
(1224) Generate
Input [9]: [systemId#4527, internalUUID#4528, product#4529, plant#4530, calculationDateTime#4531, stockQuantities#4532, plantUuid#4558, storageLocId#4559, storageLocUuid#4560]
Arguments: explode(filter(stockQuantities#4532, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#4560) AND (lambda x#1207.storageLocation.Id = storageLocId#4559)), lambda x#1207, false))), [systemId#4527, internalUUID#4528, product#4529, plant#4530, calculationDateTime#4531, plantUuid#4558], false, [stockQuantity#4605]
(1225) ObjectHashAggregate
Input [7]: [systemId#4527, internalUUID#4528, product#4529, plant#4530, calculationDateTime#4531, plantUuid#4558, stockQuantity#4605]
Keys [5]: [plantUuid#4558, internalUUID#4528, plant#4530, product#4529, systemId#4527]
Functions [2]: [partial_first(calculationDateTime#4531, false), partial_collect_list(stockQuantity#4605, 0, 0)]
Aggregate Attributes [3]: [first#10326, valueSet#10327, buf#10328]
Results [8]: [plantUuid#4558, internalUUID#4528, plant#4530, product#4529, systemId#4527, first#10329, valueSet#10330, buf#10331]
(1226) ObjectHashAggregate
Input [8]: [plantUuid#4558, internalUUID#4528, plant#4530, product#4529, systemId#4527, first#10329, valueSet#10330, buf#10331]
Keys [5]: [plantUuid#4558, internalUUID#4528, plant#4530, product#4529, systemId#4527]
Functions [2]: [first(calculationDateTime#4531, false), collect_list(stockQuantity#4605, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#4531)()#1222, collect_list(stockQuantity#4605, 0, 0)#1223]
Results [4]: [product#4529, plant#4530, first(calculationDateTime#4531)()#1222 AS calculationDateTime#4606, collect_list(stockQuantity#4605, 0, 0)#1223 AS stockQuantities#4607]
(1227) Filter
Input [4]: [product#4529, plant#4530, calculationDateTime#4606, stockQuantities#4607]
Condition : ((size(stockQuantities#4607, true) > 0) AND isnotnull(calculationDateTime#4606))
(1228) Generate
Input [4]: [product#4529, plant#4530, calculationDateTime#4606, stockQuantities#4607]
Arguments: explode(stockQuantities#4607), [product#4529, plant#4530, calculationDateTime#4606], false, [stockQuantity#4608]
(1229) Filter
Input [4]: [product#4529, plant#4530, calculationDateTime#4606, stockQuantity#4608]
Condition : (((isnotnull(stockQuantity#4608.specialStockIndicator.code) AND isnotnull(stockQuantity#4608.stockType.code)) AND (stockQuantity#4608.specialStockIndicator.code = )) AND (stockQuantity#4608.stockType.code = 01))
(1230) Project
Output [4]: [plant#4530.internalRefUUID AS plantUuid#4610, product#4529.internalRefUUID AS productUuid#4612, calculationDateTime#4606, stockQuantity#4608.storagelocation.id AS storageLocId#4613]
Input [4]: [product#4529, plant#4530, calculationDateTime#4606, stockQuantity#4608]
(1231) Exchange
Input [4]: [plantUuid#4610, productUuid#4612, calculationDateTime#4606, storageLocId#4613]
Arguments: hashpartitioning(productUuid#4612, plantUuid#4610, 10), ENSURE_REQUIREMENTS, [plan_id=10100]
(1232) Sort
Input [4]: [plantUuid#4610, productUuid#4612, calculationDateTime#4606, storageLocId#4613]
Arguments: [productUuid#4612 ASC NULLS FIRST, plantUuid#4610 ASC NULLS FIRST], false, 0
(1233) Scan parquet
Output [3]: [product#4618, plant#4619, orderDateTime#4620]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1234) Filter
Input [3]: [product#4618, plant#4619, orderDateTime#4620]
Condition : ((isnotnull(orderDateTime#4620) AND isnotnull(plant#4619)) AND isnotnull(product#4618))
(1235) Exchange
Input [3]: [product#4618, plant#4619, orderDateTime#4620]
Arguments: hashpartitioning(product#4618, plant#4619, 10), REPARTITION_BY_NUM, [plan_id=9185]
(1236) Scan parquet
Output [4]: [plant#4624, product#4625, productionAspect#4627, systemId#4622]
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#4624.internalRefUUID AS _extract_internalRefUUID#9301, product#4625.internalRefUUID AS _extract_internalRefUUID#9298, productionAspect#4627.productMovementPlants.unitOfIssue.code AS _extract_code#9299, productionAspect#4627.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9300]
Input [4]: [plant#4624, product#4625, productionAspect#4627, systemId#4622]
(1238) Exchange
Input [4]: [_extract_internalRefUUID#9301, _extract_internalRefUUID#9298, _extract_code#9299, _extract_internalRefUUID#9300]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7909]
(1239) Project
Output [4]: [_extract_code#9299, _extract_internalRefUUID#9300, _extract_internalRefUUID#9298, _extract_internalRefUUID#9301]
Input [4]: [_extract_internalRefUUID#9301, _extract_internalRefUUID#9298, _extract_code#9299, _extract_internalRefUUID#9300]
(1240) BroadcastExchange
Input [4]: [_extract_code#9299, _extract_internalRefUUID#9300, _extract_internalRefUUID#9298, _extract_internalRefUUID#9301]
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=10083]
(1241) BroadcastHashJoin
Left keys [4]: [coalesce(product#4618, ), isnull(product#4618), coalesce(plant#4619, ), isnull(plant#4619)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9298, ), isnull(_extract_internalRefUUID#9298), coalesce(_extract_internalRefUUID#9301, ), isnull(_extract_internalRefUUID#9301)]
Join type: LeftOuter
Join condition: None
(1242) Project
Output [5]: [product#4618, plant#4619, orderDateTime#4620, _extract_code#9299, _extract_internalRefUUID#9300]
Input [7]: [product#4618, plant#4619, orderDateTime#4620, _extract_code#9299, _extract_internalRefUUID#9300, _extract_internalRefUUID#9298, _extract_internalRefUUID#9301]
(1243) Scan parquet
Output [2]: [internalUUID#4632, systemId#4631]
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#4632]
Input [2]: [internalUUID#4632, systemId#4631]
(1245) Exchange
Input [1]: [internalUUID#4632]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7915]
(1246) BroadcastExchange
Input [1]: [internalUUID#4632]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10087]
(1247) BroadcastHashJoin
Left keys [2]: [coalesce(plant#4619, ), isnull(plant#4619)]
Right keys [2]: [coalesce(internalUUID#4632, ), isnull(internalUUID#4632)]
Join type: LeftOuter
Join condition: None
(1248) Project
Output [5]: [product#4618, plant#4619, orderDateTime#4620, _extract_code#9299, _extract_internalRefUUID#9300]
Input [6]: [product#4618, plant#4619, orderDateTime#4620, _extract_code#9299, _extract_internalRefUUID#9300, internalUUID#4632]
(1249) Scan parquet
Output [4]: [internalUUID#4646, baseUnitOfMeasure#4650, unitOfMeasureConversions#4652, systemId#4645]
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#4646, baseUnitOfMeasure#4650, unitOfMeasureConversions#4652, systemId#4645]
Condition : isnotnull(internalUUID#4646)
(1251) Project
Output [3]: [internalUUID#4646, baseUnitOfMeasure#4650, unitOfMeasureConversions#4652]
Input [4]: [internalUUID#4646, baseUnitOfMeasure#4650, unitOfMeasureConversions#4652, systemId#4645]
(1252) Exchange
Input [3]: [internalUUID#4646, baseUnitOfMeasure#4650, unitOfMeasureConversions#4652]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7921]
(1253) BroadcastExchange
Input [3]: [internalUUID#4646, baseUnitOfMeasure#4650, unitOfMeasureConversions#4652]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10091]
(1254) BroadcastHashJoin
Left keys [1]: [product#4618]
Right keys [1]: [internalUUID#4646]
Join type: LeftOuter
Join condition: None
(1255) Project
Output [4]: [product#4618, plant#4619, orderDateTime#4620, filter(unitOfMeasureConversions#4652, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9299) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9300)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#4650.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4650.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#4657]
Input [8]: [product#4618, plant#4619, orderDateTime#4620, _extract_code#9299, _extract_internalRefUUID#9300, internalUUID#4646, baseUnitOfMeasure#4650, unitOfMeasureConversions#4652]
(1256) Generate
Input [4]: [product#4618, plant#4619, orderDateTime#4620, filteredUnitOfMeasureConversions#4657]
Arguments: explode(filteredUnitOfMeasureConversions#4657.quantityNumerator), [product#4618, plant#4619, orderDateTime#4620, filteredUnitOfMeasureConversions#4657], true, [quantityNumerator#4658]
(1257) Project
Output [4]: [product#4618, plant#4619, orderDateTime#4620, filteredUnitOfMeasureConversions#4657.quantityDenominator AS _extract_quantityDenominator#8622]
Input [5]: [product#4618, plant#4619, orderDateTime#4620, filteredUnitOfMeasureConversions#4657, quantityNumerator#4658]
(1258) Generate
Input [4]: [product#4618, plant#4619, orderDateTime#4620, _extract_quantityDenominator#8622]
Arguments: explode(_extract_quantityDenominator#8622), [product#4618, plant#4619, orderDateTime#4620], true, [quantityDenominator#4659]
(1259) Project
Output [3]: [product#4618, plant#4619, orderDateTime#4620]
Input [4]: [product#4618, plant#4619, orderDateTime#4620, quantityDenominator#4659]
(1260) Sort
Input [3]: [product#4618, plant#4619, orderDateTime#4620]
Arguments: [product#4618 ASC NULLS FIRST, plant#4619 ASC NULLS FIRST], false, 0
(1261) SortMergeJoin
Left keys [2]: [productUuid#4612, plantUuid#4610]
Right keys [2]: [product#4618, plant#4619]
Join type: Inner
Join condition: (calculationDateTime#4606 <= orderDateTime#4620)
(1262) Project
Output [4]: [plantUuid#4610 AS plant#4662, productUuid#4612 AS product#4663, storageLocId#4613, calculationDateTime#4606]
Input [7]: [plantUuid#4610, productUuid#4612, calculationDateTime#4606, storageLocId#4613, product#4618, plant#4619, orderDateTime#4620]
(1263) HashAggregate
Input [4]: [plant#4662, product#4663, storageLocId#4613, calculationDateTime#4606]
Keys [3]: [plant#4662, product#4663, storageLocId#4613]
Functions [1]: [partial_max(calculationDateTime#4606)]
Aggregate Attributes [1]: [max#10324]
Results [4]: [plant#4662, product#4663, storageLocId#4613, max#10325]
(1264) HashAggregate
Input [4]: [plant#4662, product#4663, storageLocId#4613, max#10325]
Keys [3]: [plant#4662, product#4663, storageLocId#4613]
Functions [1]: [max(calculationDateTime#4606)]
Aggregate Attributes [1]: [max(calculationDateTime#4606)#1300]
Results [4]: [plant#4662, product#4663, storageLocId#4613, max(calculationDateTime#4606)#1300 AS max_calc_datetime#4664]
(1265) Exchange
Input [4]: [plant#4662, product#4663, storageLocId#4613, max_calc_datetime#4664]
Arguments: hashpartitioning(coalesce(plant#4662, ), isnull(plant#4662), coalesce(product#4663, ), isnull(product#4663), coalesce(storageLocId#4613, ), isnull(storageLocId#4613), coalesce(max_calc_datetime#4664, 1970-01-01 00:00:00), isnull(max_calc_datetime#4664), 10), ENSURE_REQUIREMENTS, [plan_id=10110]
(1266) Sort
Input [4]: [plant#4662, product#4663, storageLocId#4613, max_calc_datetime#4664]
Arguments: [coalesce(plant#4662, ) ASC NULLS FIRST, isnull(plant#4662) ASC NULLS FIRST, coalesce(product#4663, ) ASC NULLS FIRST, isnull(product#4663) ASC NULLS FIRST, coalesce(storageLocId#4613, ) ASC NULLS FIRST, isnull(storageLocId#4613) ASC NULLS FIRST, coalesce(max_calc_datetime#4664, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#4664) ASC NULLS FIRST], false, 0
(1267) SortMergeJoin
Left keys [8]: [coalesce(plant#4525, ), isnull(plant#4525), coalesce(product#4526, ), isnull(product#4526), coalesce(storageLocId#4476, ), isnull(storageLocId#4476), coalesce(calculationDateTime#4469, 1970-01-01 00:00:00), isnull(calculationDateTime#4469)]
Right keys [8]: [coalesce(plant#4662, ), isnull(plant#4662), coalesce(product#4663, ), isnull(product#4663), coalesce(storageLocId#4613, ), isnull(storageLocId#4613), coalesce(max_calc_datetime#4664, 1970-01-01 00:00:00), isnull(max_calc_datetime#4664)]
Join type: Inner
Join condition: None
(1268) Project
Output [3]: [plant#4525, product#4526, calculationDateTime#4469]
Input [8]: [plant#4525, product#4526, storageLocId#4476, calculationDateTime#4469, plant#4662, product#4663, storageLocId#4613, max_calc_datetime#4664]
(1269) HashAggregate
Input [3]: [plant#4525, product#4526, calculationDateTime#4469]
Keys [2]: [product#4526, plant#4525]
Functions [1]: [partial_min(calculationDateTime#4469)]
Aggregate Attributes [1]: [min#10316]
Results [3]: [product#4526, plant#4525, min#10317]
(1270) Exchange
Input [3]: [product#4526, plant#4525, min#10317]
Arguments: hashpartitioning(product#4526, plant#4525, 10), ENSURE_REQUIREMENTS, [plan_id=10117]
(1271) HashAggregate
Input [3]: [product#4526, plant#4525, min#10317]
Keys [2]: [product#4526, plant#4525]
Functions [1]: [min(calculationDateTime#4469)]
Aggregate Attributes [1]: [min(calculationDateTime#4469)#1456]
Results [3]: [product#4526, plant#4525, min(calculationDateTime#4469)#1456 AS minCalculationDateTime#4666]
(1272) Sort
Input [3]: [product#4526, plant#4525, minCalculationDateTime#4666]
Arguments: [product#4526 ASC NULLS FIRST, plant#4525 ASC NULLS FIRST], false, 0
(1273) SortMergeJoin
Left keys [2]: [product#4346, plant#4347]
Right keys [2]: [product#4526, plant#4525]
Join type: LeftOuter
Join condition: None
(1274) Project
Output [3]: [product#4346, plant#4347, CASE WHEN isnotnull(minCalculationDateTime#4666) THEN minCalculationDateTime#4666 ELSE orderDateTime#4348 END AS stockDatetime#4668]
Input [6]: [product#4346, plant#4347, orderDateTime#4348, product#4526, plant#4525, minCalculationDateTime#4666]
(1275) Exchange
Input [3]: [product#4346, plant#4347, stockDatetime#4668]
Arguments: hashpartitioning(coalesce(plant#4347, ), isnull(plant#4347), coalesce(product#4346, ), isnull(product#4346), 10), ENSURE_REQUIREMENTS, [plan_id=10281]
(1276) Sort
Input [3]: [product#4346, plant#4347, stockDatetime#4668]
Arguments: [coalesce(plant#4347, ) ASC NULLS FIRST, isnull(plant#4347) ASC NULLS FIRST, coalesce(product#4346, ) ASC NULLS FIRST, isnull(product#4346) ASC NULLS FIRST], false, 0
(1277) Scan parquet
Output [3]: [product#4671, plant#4672, orderDateTime#4673]
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/10000000004/shardId=0_1_10000000004]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1278) Exchange
Input [3]: [product#4671, plant#4672, orderDateTime#4673]
Arguments: hashpartitioning(product#4671, plant#4672, 10), REPARTITION_BY_NUM, [plan_id=7939]
(1279) Scan parquet
Output [8]: [internalUUID#4676, plant#4677, product#4678, blockedForReplenishmentStartingFrom#4679, productionAspect#4680, salesPlant#4681, listing#4682, systemId#4675]
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#4675, internalUUID#4676, plant#4677, product#4678, blockedForReplenishmentStartingFrom#4679, productionAspect#4680, salesPlant#4681, listing#4682]
Input [8]: [internalUUID#4676, plant#4677, product#4678, blockedForReplenishmentStartingFrom#4679, productionAspect#4680, salesPlant#4681, listing#4682, systemId#4675]
(1281) Exchange
Input [8]: [systemId#4675, internalUUID#4676, plant#4677, product#4678, blockedForReplenishmentStartingFrom#4679, productionAspect#4680, salesPlant#4681, listing#4682]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7942]
(1282) Project
Output [1]: [struct(systemId, systemId#4675, internalUUID, internalUUID#4676, plant, plant#4677, product, product#4678, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#4679, productionAspect, productionAspect#4680, salesPlant, salesPlant#4681, listing, listing#4682) AS productPlant#4683]
Input [8]: [systemId#4675, internalUUID#4676, plant#4677, product#4678, blockedForReplenishmentStartingFrom#4679, productionAspect#4680, salesPlant#4681, listing#4682]
(1283) BroadcastExchange
Input [1]: [productPlant#4683]
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=10125]
(1284) BroadcastHashJoin
Left keys [4]: [coalesce(product#4671, ), isnull(product#4671), coalesce(plant#4672, ), isnull(plant#4672)]
Right keys [4]: [coalesce(productPlant#4683.product.internalRefUUID, ), isnull(productPlant#4683.product.internalRefUUID), coalesce(productPlant#4683.plant.internalRefUUID, ), isnull(productPlant#4683.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1285) Scan parquet
Output [3]: [internalUUID#4685, address#4691, systemId#4684]
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#4685, address#4691.timeZone.code AS timezonecode#4696]
Input [3]: [internalUUID#4685, address#4691, systemId#4684]
(1287) Exchange
Input [2]: [internalUUID#4685, timezonecode#4696]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7947]
(1288) BroadcastExchange
Input [2]: [internalUUID#4685, timezonecode#4696]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10128]
(1289) BroadcastHashJoin
Left keys [2]: [coalesce(plant#4672, ), isnull(plant#4672)]
Right keys [2]: [coalesce(internalUUID#4685, ), isnull(internalUUID#4685)]
Join type: LeftOuter
Join condition: None
(1290) Project
Output [5]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, CASE WHEN isnotnull(timezonecode#4696) THEN timezonecode#4696 ELSE UTC END AS timezonecode#4697]
Input [6]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, internalUUID#4685, timezonecode#4696]
(1291) Scan parquet
Output [4]: [internalUUID#4699, baseUnitOfMeasure#4703, unitOfMeasureConversions#4705, systemId#4698]
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#4699, baseUnitOfMeasure#4703, unitOfMeasureConversions#4705, systemId#4698]
Condition : isnotnull(internalUUID#4699)
(1293) Project
Output [3]: [internalUUID#4699, baseUnitOfMeasure#4703, unitOfMeasureConversions#4705]
Input [4]: [internalUUID#4699, baseUnitOfMeasure#4703, unitOfMeasureConversions#4705, systemId#4698]
(1294) Exchange
Input [3]: [internalUUID#4699, baseUnitOfMeasure#4703, unitOfMeasureConversions#4705]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7953]
(1295) BroadcastExchange
Input [3]: [internalUUID#4699, baseUnitOfMeasure#4703, unitOfMeasureConversions#4705]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10132]
(1296) BroadcastHashJoin
Left keys [1]: [product#4671]
Right keys [1]: [internalUUID#4699]
Join type: LeftOuter
Join condition: None
(1297) Project
Output [6]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, filter(unitOfMeasureConversions#4705, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#4683.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#4683.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#4703.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4703.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#4710]
Input [8]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, internalUUID#4699, baseUnitOfMeasure#4703, unitOfMeasureConversions#4705]
(1298) Project
Output [7]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, filteredUnitOfMeasureConversions#4710.quantityDenominator AS _extract_quantityDenominator#8829, filteredUnitOfMeasureConversions#4710.quantityNumerator AS _extract_quantityNumerator#8830]
Input [6]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, filteredUnitOfMeasureConversions#4710]
(1299) Generate
Input [7]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, _extract_quantityDenominator#8829, _extract_quantityNumerator#8830]
Arguments: explode(_extract_quantityNumerator#8830), [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, _extract_quantityDenominator#8829], true, [quantityNumerator#4711]
(1300) Generate
Input [7]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, _extract_quantityDenominator#8829, quantityNumerator#4711]
Arguments: explode(_extract_quantityDenominator#8829), [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, quantityNumerator#4711], true, [quantityDenominator#4712]
(1301) Project
Output [6]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, (cast(quantityNumerator#4711 as double) / cast(quantityDenominator#4712 as double)) AS outboundUnit#4713]
Input [7]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, quantityNumerator#4711, quantityDenominator#4712]
(1302) Project
Output [6]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, CASE WHEN (isnull(outboundUnit#4713) OR (outboundUnit#4713 <= 0.0)) THEN 1.0 ELSE outboundUnit#4713 END AS outboundUnit#4714]
Input [6]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4713]
(1303) Sort
Input [6]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4714]
Arguments: [product#4671 ASC NULLS FIRST, plant#4672 ASC NULLS FIRST], false, 0
(1304) Scan parquet
Output [6]: [internalUUID#4716, product#4717, plant#4718, calculationDateTime#4719, stockQuantities#4720, systemId#4715]
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#4716, product#4717, plant#4718, calculationDateTime#4719, stockQuantities#4720, systemId#4715]
Condition : (isnotnull(plant#4718.internalRefUUID) AND isnotnull(product#4717.internalRefUUID))
(1306) Project
Output [6]: [systemId#4715, internalUUID#4716, product#4717, plant#4718, calculationDateTime#4719, stockQuantities#4720]
Input [6]: [internalUUID#4716, product#4717, plant#4718, calculationDateTime#4719, stockQuantities#4720, systemId#4715]
(1307) Exchange
Input [6]: [systemId#4715, internalUUID#4716, product#4717, plant#4718, calculationDateTime#4719, stockQuantities#4720]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7964]
(1308) BroadcastExchange
Input [6]: [systemId#4715, internalUUID#4716, product#4717, plant#4718, calculationDateTime#4719, stockQuantities#4720]
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=10164]
(1309) Scan parquet
Output [2]: [marketUnit#4721, distributionCenters#4727]
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#4721, distributionCenters#4727]
Condition : (((marketUnit#4721 <=> DIP_1691) AND (size(distributionCenters#4727, true) > 0)) AND isnotnull(distributionCenters#4727))
(1311) Project
Output [1]: [distributionCenters#4727]
Input [2]: [marketUnit#4721, distributionCenters#4727]
(1312) Exchange
Input [1]: [distributionCenters#4727]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7968]
(1313) Generate
Input [1]: [distributionCenters#4727]
Arguments: explode(distributionCenters#4727), false, [distributionCenters#4743]
(1314) Filter
Input [1]: [distributionCenters#4743]
Condition : (((size(distributionCenters#4743.storageLocations, true) > 0) AND isnotnull(distributionCenters#4743.storageLocations)) AND isnotnull(distributionCenters#4743.internalRefUUID))
(1315) Project
Output [2]: [distributionCenters#4743.internalRefUUID AS _extract_internalRefUUID#8628, distributionCenters#4743.storageLocations AS _extract_storageLocations#8629]
Input [1]: [distributionCenters#4743]
(1316) Generate
Input [2]: [_extract_internalRefUUID#8628, _extract_storageLocations#8629]
Arguments: explode(_extract_storageLocations#8629), [_extract_internalRefUUID#8628], false, [storageLocations#4744]
(1317) Project
Output [3]: [_extract_internalRefUUID#8628 AS plantUuid#4746, storageLocations#4744.id AS storageLocId#4747, storageLocations#4744.internalRefUUID AS storageLocUuid#4748]
Input [2]: [_extract_internalRefUUID#8628, storageLocations#4744]
(1318) BroadcastExchange
Input [3]: [plantUuid#4746, storageLocId#4747, storageLocUuid#4748]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10160]
(1319) Scan parquet
Output [2]: [product#4749, plant#4750]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1320) Filter
Input [2]: [product#4749, plant#4750]
Condition : isnotnull(plant#4750)
(1321) Exchange
Input [2]: [product#4749, plant#4750]
Arguments: hashpartitioning(product#4749, plant#4750, 10), REPARTITION_BY_NUM, [plan_id=9206]
(1322) Scan parquet
Output [4]: [plant#4755, product#4756, productionAspect#4758, systemId#4753]
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#4755.internalRefUUID AS _extract_internalRefUUID#9302, product#4756.internalRefUUID AS _extract_internalRefUUID#9305, productionAspect#4758.productMovementPlants.unitOfIssue.code AS _extract_code#9303, productionAspect#4758.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9304]
Input [4]: [plant#4755, product#4756, productionAspect#4758, systemId#4753]
(1324) Exchange
Input [4]: [_extract_internalRefUUID#9302, _extract_internalRefUUID#9305, _extract_code#9303, _extract_internalRefUUID#9304]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7980]
(1325) Project
Output [4]: [_extract_code#9303, _extract_internalRefUUID#9304, _extract_internalRefUUID#9305, _extract_internalRefUUID#9302]
Input [4]: [_extract_internalRefUUID#9302, _extract_internalRefUUID#9305, _extract_code#9303, _extract_internalRefUUID#9304]
(1326) BroadcastExchange
Input [4]: [_extract_code#9303, _extract_internalRefUUID#9304, _extract_internalRefUUID#9305, _extract_internalRefUUID#9302]
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=10140]
(1327) BroadcastHashJoin
Left keys [4]: [coalesce(product#4749, ), isnull(product#4749), coalesce(plant#4750, ), isnull(plant#4750)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9305, ), isnull(_extract_internalRefUUID#9305), coalesce(_extract_internalRefUUID#9302, ), isnull(_extract_internalRefUUID#9302)]
Join type: LeftOuter
Join condition: None
(1328) Project
Output [4]: [product#4749, plant#4750, _extract_code#9303, _extract_internalRefUUID#9304]
Input [6]: [product#4749, plant#4750, _extract_code#9303, _extract_internalRefUUID#9304, _extract_internalRefUUID#9305, _extract_internalRefUUID#9302]
(1329) Scan parquet
Output [2]: [internalUUID#4763, systemId#4762]
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#4763]
Input [2]: [internalUUID#4763, systemId#4762]
(1331) Exchange
Input [1]: [internalUUID#4763]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7986]
(1332) BroadcastExchange
Input [1]: [internalUUID#4763]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10144]
(1333) BroadcastHashJoin
Left keys [2]: [coalesce(plant#4750, ), isnull(plant#4750)]
Right keys [2]: [coalesce(internalUUID#4763, ), isnull(internalUUID#4763)]
Join type: LeftOuter
Join condition: None
(1334) Project
Output [4]: [product#4749, plant#4750, _extract_code#9303, _extract_internalRefUUID#9304]
Input [5]: [product#4749, plant#4750, _extract_code#9303, _extract_internalRefUUID#9304, internalUUID#4763]
(1335) Scan parquet
Output [4]: [internalUUID#4777, baseUnitOfMeasure#4781, unitOfMeasureConversions#4783, systemId#4776]
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#4777, baseUnitOfMeasure#4781, unitOfMeasureConversions#4783, systemId#4776]
Condition : isnotnull(internalUUID#4777)
(1337) Project
Output [3]: [internalUUID#4777, baseUnitOfMeasure#4781, unitOfMeasureConversions#4783]
Input [4]: [internalUUID#4777, baseUnitOfMeasure#4781, unitOfMeasureConversions#4783, systemId#4776]
(1338) Exchange
Input [3]: [internalUUID#4777, baseUnitOfMeasure#4781, unitOfMeasureConversions#4783]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=7992]
(1339) BroadcastExchange
Input [3]: [internalUUID#4777, baseUnitOfMeasure#4781, unitOfMeasureConversions#4783]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10148]
(1340) BroadcastHashJoin
Left keys [1]: [product#4749]
Right keys [1]: [internalUUID#4777]
Join type: LeftOuter
Join condition: None
(1341) Project
Output [2]: [plant#4750, filter(unitOfMeasureConversions#4783, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9303) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9304)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#4781.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4781.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#4788]
Input [7]: [product#4749, plant#4750, _extract_code#9303, _extract_internalRefUUID#9304, internalUUID#4777, baseUnitOfMeasure#4781, unitOfMeasureConversions#4783]
(1342) Generate
Input [2]: [plant#4750, filteredUnitOfMeasureConversions#4788]
Arguments: explode(filteredUnitOfMeasureConversions#4788.quantityNumerator), [plant#4750, filteredUnitOfMeasureConversions#4788], true, [quantityNumerator#4789]
(1343) Project
Output [2]: [plant#4750, filteredUnitOfMeasureConversions#4788.quantityDenominator AS _extract_quantityDenominator#8630]
Input [3]: [plant#4750, filteredUnitOfMeasureConversions#4788, quantityNumerator#4789]
(1344) Generate
Input [2]: [plant#4750, _extract_quantityDenominator#8630]
Arguments: explode(_extract_quantityDenominator#8630), [plant#4750], true, [quantityDenominator#4790]
(1345) Project
Output [1]: [plant#4750]
Input [2]: [plant#4750, quantityDenominator#4790]
(1346) HashAggregate
Input [1]: [plant#4750]
Keys [1]: [plant#4750]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#4750]
(1347) Exchange
Input [1]: [plant#4750]
Arguments: hashpartitioning(plant#4750, 10), ENSURE_REQUIREMENTS, [plan_id=10157]
(1348) HashAggregate
Input [1]: [plant#4750]
Keys [1]: [plant#4750]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#4750]
(1349) BroadcastHashJoin
Left keys [1]: [plantUuid#4746]
Right keys [1]: [plant#4750]
Join type: Inner
Join condition: None
(1350) Project
Output [3]: [plantUuid#4746, storageLocId#4747, storageLocUuid#4748]
Input [4]: [plantUuid#4746, storageLocId#4747, storageLocUuid#4748, plant#4750]
(1351) BroadcastHashJoin
Left keys [2]: [coalesce(plant#4718.internalRefUUID, ), isnull(plant#4718.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#4746, ), isnull(plantUuid#4746)]
Join type: Inner
Join condition: None
(1352) Generate
Input [9]: [systemId#4715, internalUUID#4716, product#4717, plant#4718, calculationDateTime#4719, stockQuantities#4720, plantUuid#4746, storageLocId#4747, storageLocUuid#4748]
Arguments: explode(filter(stockQuantities#4720, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#4748) AND (lambda x#1207.storageLocation.Id = storageLocId#4747)), lambda x#1207, false))), [systemId#4715, internalUUID#4716, product#4717, plant#4718, calculationDateTime#4719, plantUuid#4746], false, [stockQuantity#4793]
(1353) ObjectHashAggregate
Input [7]: [systemId#4715, internalUUID#4716, product#4717, plant#4718, calculationDateTime#4719, plantUuid#4746, stockQuantity#4793]
Keys [5]: [plantUuid#4746, internalUUID#4716, plant#4718, product#4717, systemId#4715]
Functions [2]: [partial_first(calculationDateTime#4719, false), partial_collect_list(stockQuantity#4793, 0, 0)]
Aggregate Attributes [3]: [first#10340, valueSet#10341, buf#10342]
Results [8]: [plantUuid#4746, internalUUID#4716, plant#4718, product#4717, systemId#4715, first#10343, valueSet#10344, buf#10345]
(1354) ObjectHashAggregate
Input [8]: [plantUuid#4746, internalUUID#4716, plant#4718, product#4717, systemId#4715, first#10343, valueSet#10344, buf#10345]
Keys [5]: [plantUuid#4746, internalUUID#4716, plant#4718, product#4717, systemId#4715]
Functions [2]: [first(calculationDateTime#4719, false), collect_list(stockQuantity#4793, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#4719)()#1222, collect_list(stockQuantity#4793, 0, 0)#1223]
Results [4]: [product#4717, plant#4718, first(calculationDateTime#4719)()#1222 AS calculationDateTime#4794, collect_list(stockQuantity#4793, 0, 0)#1223 AS stockQuantities#4795]
(1355) Filter
Input [4]: [product#4717, plant#4718, calculationDateTime#4794, stockQuantities#4795]
Condition : ((size(stockQuantities#4795, true) > 0) AND isnotnull(calculationDateTime#4794))
(1356) Generate
Input [4]: [product#4717, plant#4718, calculationDateTime#4794, stockQuantities#4795]
Arguments: explode(stockQuantities#4795), [product#4717, plant#4718, calculationDateTime#4794], false, [stockQuantity#4796]
(1357) Filter
Input [4]: [product#4717, plant#4718, calculationDateTime#4794, stockQuantity#4796]
Condition : (((isnotnull(stockQuantity#4796.specialStockIndicator.code) AND isnotnull(stockQuantity#4796.stockType.code)) AND (stockQuantity#4796.specialStockIndicator.code = )) AND (stockQuantity#4796.stockType.code = 01))
(1358) Project
Output [5]: [plant#4718.internalRefUUID AS plantUuid#4798, product#4717.internalRefUUID AS productUuid#4800, calculationDateTime#4794, stockQuantity#4796.storagelocation.id AS storageLocId#4801, stockQuantity#4796.quantity.measure AS quantity#4803]
Input [4]: [product#4717, plant#4718, calculationDateTime#4794, stockQuantity#4796]
(1359) Exchange
Input [5]: [plantUuid#4798, productUuid#4800, calculationDateTime#4794, storageLocId#4801, quantity#4803]
Arguments: hashpartitioning(productUuid#4800, plantUuid#4798, 10), ENSURE_REQUIREMENTS, [plan_id=10190]
(1360) Sort
Input [5]: [plantUuid#4798, productUuid#4800, calculationDateTime#4794, storageLocId#4801, quantity#4803]
Arguments: [productUuid#4800 ASC NULLS FIRST, plantUuid#4798 ASC NULLS FIRST], false, 0
(1361) Scan parquet
Output [3]: [product#4806, plant#4807, orderDateTime#4808]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1362) Filter
Input [3]: [product#4806, plant#4807, orderDateTime#4808]
Condition : ((isnotnull(orderDateTime#4808) AND isnotnull(plant#4807)) AND isnotnull(product#4806))
(1363) Exchange
Input [3]: [product#4806, plant#4807, orderDateTime#4808]
Arguments: hashpartitioning(product#4806, plant#4807, 10), REPARTITION_BY_NUM, [plan_id=9229]
(1364) Scan parquet
Output [4]: [plant#4812, product#4813, productionAspect#4815, systemId#4810]
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#4812.internalRefUUID AS _extract_internalRefUUID#9309, product#4813.internalRefUUID AS _extract_internalRefUUID#9308, productionAspect#4815.productMovementPlants.unitOfIssue.code AS _extract_code#9306, productionAspect#4815.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9307]
Input [4]: [plant#4812, product#4813, productionAspect#4815, systemId#4810]
(1366) Exchange
Input [4]: [_extract_internalRefUUID#9309, _extract_internalRefUUID#9308, _extract_code#9306, _extract_internalRefUUID#9307]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8017]
(1367) Project
Output [4]: [_extract_code#9306, _extract_internalRefUUID#9307, _extract_internalRefUUID#9308, _extract_internalRefUUID#9309]
Input [4]: [_extract_internalRefUUID#9309, _extract_internalRefUUID#9308, _extract_code#9306, _extract_internalRefUUID#9307]
(1368) BroadcastExchange
Input [4]: [_extract_code#9306, _extract_internalRefUUID#9307, _extract_internalRefUUID#9308, _extract_internalRefUUID#9309]
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=10173]
(1369) BroadcastHashJoin
Left keys [4]: [coalesce(product#4806, ), isnull(product#4806), coalesce(plant#4807, ), isnull(plant#4807)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9308, ), isnull(_extract_internalRefUUID#9308), coalesce(_extract_internalRefUUID#9309, ), isnull(_extract_internalRefUUID#9309)]
Join type: LeftOuter
Join condition: None
(1370) Project
Output [5]: [product#4806, plant#4807, orderDateTime#4808, _extract_code#9306, _extract_internalRefUUID#9307]
Input [7]: [product#4806, plant#4807, orderDateTime#4808, _extract_code#9306, _extract_internalRefUUID#9307, _extract_internalRefUUID#9308, _extract_internalRefUUID#9309]
(1371) Scan parquet
Output [2]: [internalUUID#4820, systemId#4819]
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#4820]
Input [2]: [internalUUID#4820, systemId#4819]
(1373) Exchange
Input [1]: [internalUUID#4820]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8023]
(1374) BroadcastExchange
Input [1]: [internalUUID#4820]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10177]
(1375) BroadcastHashJoin
Left keys [2]: [coalesce(plant#4807, ), isnull(plant#4807)]
Right keys [2]: [coalesce(internalUUID#4820, ), isnull(internalUUID#4820)]
Join type: LeftOuter
Join condition: None
(1376) Project
Output [5]: [product#4806, plant#4807, orderDateTime#4808, _extract_code#9306, _extract_internalRefUUID#9307]
Input [6]: [product#4806, plant#4807, orderDateTime#4808, _extract_code#9306, _extract_internalRefUUID#9307, internalUUID#4820]
(1377) Scan parquet
Output [4]: [internalUUID#4834, baseUnitOfMeasure#4838, unitOfMeasureConversions#4840, systemId#4833]
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#4834, baseUnitOfMeasure#4838, unitOfMeasureConversions#4840, systemId#4833]
Condition : isnotnull(internalUUID#4834)
(1379) Project
Output [3]: [internalUUID#4834, baseUnitOfMeasure#4838, unitOfMeasureConversions#4840]
Input [4]: [internalUUID#4834, baseUnitOfMeasure#4838, unitOfMeasureConversions#4840, systemId#4833]
(1380) Exchange
Input [3]: [internalUUID#4834, baseUnitOfMeasure#4838, unitOfMeasureConversions#4840]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8029]
(1381) BroadcastExchange
Input [3]: [internalUUID#4834, baseUnitOfMeasure#4838, unitOfMeasureConversions#4840]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10181]
(1382) BroadcastHashJoin
Left keys [1]: [product#4806]
Right keys [1]: [internalUUID#4834]
Join type: LeftOuter
Join condition: None
(1383) Project
Output [4]: [product#4806, plant#4807, orderDateTime#4808, filter(unitOfMeasureConversions#4840, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9306) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9307)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#4838.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4838.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#4845]
Input [8]: [product#4806, plant#4807, orderDateTime#4808, _extract_code#9306, _extract_internalRefUUID#9307, internalUUID#4834, baseUnitOfMeasure#4838, unitOfMeasureConversions#4840]
(1384) Generate
Input [4]: [product#4806, plant#4807, orderDateTime#4808, filteredUnitOfMeasureConversions#4845]
Arguments: explode(filteredUnitOfMeasureConversions#4845.quantityNumerator), [product#4806, plant#4807, orderDateTime#4808, filteredUnitOfMeasureConversions#4845], true, [quantityNumerator#4846]
(1385) Project
Output [4]: [product#4806, plant#4807, orderDateTime#4808, filteredUnitOfMeasureConversions#4845.quantityDenominator AS _extract_quantityDenominator#8634]
Input [5]: [product#4806, plant#4807, orderDateTime#4808, filteredUnitOfMeasureConversions#4845, quantityNumerator#4846]
(1386) Generate
Input [4]: [product#4806, plant#4807, orderDateTime#4808, _extract_quantityDenominator#8634]
Arguments: explode(_extract_quantityDenominator#8634), [product#4806, plant#4807, orderDateTime#4808], true, [quantityDenominator#4847]
(1387) Project
Output [3]: [product#4806, plant#4807, orderDateTime#4808]
Input [4]: [product#4806, plant#4807, orderDateTime#4808, quantityDenominator#4847]
(1388) Sort
Input [3]: [product#4806, plant#4807, orderDateTime#4808]
Arguments: [product#4806 ASC NULLS FIRST, plant#4807 ASC NULLS FIRST], false, 0
(1389) SortMergeJoin
Left keys [2]: [productUuid#4800, plantUuid#4798]
Right keys [2]: [product#4806, plant#4807]
Join type: Inner
Join condition: (calculationDateTime#4794 <= orderDateTime#4808)
(1390) Project
Output [5]: [plantUuid#4798 AS plant#4850, productUuid#4800 AS product#4851, storageLocId#4801, calculationDateTime#4794, quantity#4803]
Input [8]: [plantUuid#4798, productUuid#4800, calculationDateTime#4794, storageLocId#4801, quantity#4803, product#4806, plant#4807, orderDateTime#4808]
(1391) Exchange
Input [5]: [plant#4850, product#4851, storageLocId#4801, calculationDateTime#4794, quantity#4803]
Arguments: hashpartitioning(coalesce(plant#4850, ), isnull(plant#4850), coalesce(product#4851, ), isnull(product#4851), coalesce(storageLocId#4801, ), isnull(storageLocId#4801), coalesce(calculationDateTime#4794, 1970-01-01 00:00:00), isnull(calculationDateTime#4794), 10), ENSURE_REQUIREMENTS, [plan_id=10254]
(1392) Sort
Input [5]: [plant#4850, product#4851, storageLocId#4801, calculationDateTime#4794, quantity#4803]
Arguments: [coalesce(plant#4850, ) ASC NULLS FIRST, isnull(plant#4850) ASC NULLS FIRST, coalesce(product#4851, ) ASC NULLS FIRST, isnull(product#4851) ASC NULLS FIRST, coalesce(storageLocId#4801, ) ASC NULLS FIRST, isnull(storageLocId#4801) ASC NULLS FIRST, coalesce(calculationDateTime#4794, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#4794) ASC NULLS FIRST], false, 0
(1393) Scan parquet
Output [6]: [internalUUID#4853, product#4854, plant#4855, calculationDateTime#4856, stockQuantities#4857, systemId#4852]
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#4853, product#4854, plant#4855, calculationDateTime#4856, stockQuantities#4857, systemId#4852]
Condition : (isnotnull(plant#4855.internalRefUUID) AND isnotnull(product#4854.internalRefUUID))
(1395) Project
Output [6]: [systemId#4852, internalUUID#4853, product#4854, plant#4855, calculationDateTime#4856, stockQuantities#4857]
Input [6]: [internalUUID#4853, product#4854, plant#4855, calculationDateTime#4856, stockQuantities#4857, systemId#4852]
(1396) Exchange
Input [6]: [systemId#4852, internalUUID#4853, product#4854, plant#4855, calculationDateTime#4856, stockQuantities#4857]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8041]
(1397) BroadcastExchange
Input [6]: [systemId#4852, internalUUID#4853, product#4854, plant#4855, calculationDateTime#4856, stockQuantities#4857]
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=10219]
(1398) Scan parquet
Output [2]: [marketUnit#4858, distributionCenters#4864]
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#4858, distributionCenters#4864]
Condition : (((marketUnit#4858 <=> DIP_1691) AND (size(distributionCenters#4864, true) > 0)) AND isnotnull(distributionCenters#4864))
(1400) Project
Output [1]: [distributionCenters#4864]
Input [2]: [marketUnit#4858, distributionCenters#4864]
(1401) Exchange
Input [1]: [distributionCenters#4864]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8045]
(1402) Generate
Input [1]: [distributionCenters#4864]
Arguments: explode(distributionCenters#4864), false, [distributionCenters#4880]
(1403) Filter
Input [1]: [distributionCenters#4880]
Condition : (((size(distributionCenters#4880.storageLocations, true) > 0) AND isnotnull(distributionCenters#4880.storageLocations)) AND isnotnull(distributionCenters#4880.internalRefUUID))
(1404) Project
Output [2]: [distributionCenters#4880.internalRefUUID AS _extract_internalRefUUID#8638, distributionCenters#4880.storageLocations AS _extract_storageLocations#8639]
Input [1]: [distributionCenters#4880]
(1405) Generate
Input [2]: [_extract_internalRefUUID#8638, _extract_storageLocations#8639]
Arguments: explode(_extract_storageLocations#8639), [_extract_internalRefUUID#8638], false, [storageLocations#4881]
(1406) Project
Output [3]: [_extract_internalRefUUID#8638 AS plantUuid#4883, storageLocations#4881.id AS storageLocId#4884, storageLocations#4881.internalRefUUID AS storageLocUuid#4885]
Input [2]: [_extract_internalRefUUID#8638, storageLocations#4881]
(1407) BroadcastExchange
Input [3]: [plantUuid#4883, storageLocId#4884, storageLocUuid#4885]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10215]
(1408) Scan parquet
Output [2]: [product#4886, plant#4887]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1409) Filter
Input [2]: [product#4886, plant#4887]
Condition : isnotnull(plant#4887)
(1410) Exchange
Input [2]: [product#4886, plant#4887]
Arguments: hashpartitioning(product#4886, plant#4887, 10), REPARTITION_BY_NUM, [plan_id=9242]
(1411) Scan parquet
Output [4]: [plant#4892, product#4893, productionAspect#4895, systemId#4890]
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#4892.internalRefUUID AS _extract_internalRefUUID#9312, product#4893.internalRefUUID AS _extract_internalRefUUID#9313, productionAspect#4895.productMovementPlants.unitOfIssue.code AS _extract_code#9310, productionAspect#4895.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9311]
Input [4]: [plant#4892, product#4893, productionAspect#4895, systemId#4890]
(1413) Exchange
Input [4]: [_extract_internalRefUUID#9312, _extract_internalRefUUID#9313, _extract_code#9310, _extract_internalRefUUID#9311]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8057]
(1414) Project
Output [4]: [_extract_code#9310, _extract_internalRefUUID#9311, _extract_internalRefUUID#9313, _extract_internalRefUUID#9312]
Input [4]: [_extract_internalRefUUID#9312, _extract_internalRefUUID#9313, _extract_code#9310, _extract_internalRefUUID#9311]
(1415) BroadcastExchange
Input [4]: [_extract_code#9310, _extract_internalRefUUID#9311, _extract_internalRefUUID#9313, _extract_internalRefUUID#9312]
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=10195]
(1416) BroadcastHashJoin
Left keys [4]: [coalesce(product#4886, ), isnull(product#4886), coalesce(plant#4887, ), isnull(plant#4887)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9313, ), isnull(_extract_internalRefUUID#9313), coalesce(_extract_internalRefUUID#9312, ), isnull(_extract_internalRefUUID#9312)]
Join type: LeftOuter
Join condition: None
(1417) Project
Output [4]: [product#4886, plant#4887, _extract_code#9310, _extract_internalRefUUID#9311]
Input [6]: [product#4886, plant#4887, _extract_code#9310, _extract_internalRefUUID#9311, _extract_internalRefUUID#9313, _extract_internalRefUUID#9312]
(1418) Scan parquet
Output [2]: [internalUUID#4900, systemId#4899]
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#4900]
Input [2]: [internalUUID#4900, systemId#4899]
(1420) Exchange
Input [1]: [internalUUID#4900]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8063]
(1421) BroadcastExchange
Input [1]: [internalUUID#4900]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10199]
(1422) BroadcastHashJoin
Left keys [2]: [coalesce(plant#4887, ), isnull(plant#4887)]
Right keys [2]: [coalesce(internalUUID#4900, ), isnull(internalUUID#4900)]
Join type: LeftOuter
Join condition: None
(1423) Project
Output [4]: [product#4886, plant#4887, _extract_code#9310, _extract_internalRefUUID#9311]
Input [5]: [product#4886, plant#4887, _extract_code#9310, _extract_internalRefUUID#9311, internalUUID#4900]
(1424) Scan parquet
Output [4]: [internalUUID#4914, baseUnitOfMeasure#4918, unitOfMeasureConversions#4920, systemId#4913]
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#4914, baseUnitOfMeasure#4918, unitOfMeasureConversions#4920, systemId#4913]
Condition : isnotnull(internalUUID#4914)
(1426) Project
Output [3]: [internalUUID#4914, baseUnitOfMeasure#4918, unitOfMeasureConversions#4920]
Input [4]: [internalUUID#4914, baseUnitOfMeasure#4918, unitOfMeasureConversions#4920, systemId#4913]
(1427) Exchange
Input [3]: [internalUUID#4914, baseUnitOfMeasure#4918, unitOfMeasureConversions#4920]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8069]
(1428) BroadcastExchange
Input [3]: [internalUUID#4914, baseUnitOfMeasure#4918, unitOfMeasureConversions#4920]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10203]
(1429) BroadcastHashJoin
Left keys [1]: [product#4886]
Right keys [1]: [internalUUID#4914]
Join type: LeftOuter
Join condition: None
(1430) Project
Output [2]: [plant#4887, filter(unitOfMeasureConversions#4920, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9310) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9311)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#4918.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4918.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#4925]
Input [7]: [product#4886, plant#4887, _extract_code#9310, _extract_internalRefUUID#9311, internalUUID#4914, baseUnitOfMeasure#4918, unitOfMeasureConversions#4920]
(1431) Generate
Input [2]: [plant#4887, filteredUnitOfMeasureConversions#4925]
Arguments: explode(filteredUnitOfMeasureConversions#4925.quantityNumerator), [plant#4887, filteredUnitOfMeasureConversions#4925], true, [quantityNumerator#4926]
(1432) Project
Output [2]: [plant#4887, filteredUnitOfMeasureConversions#4925.quantityDenominator AS _extract_quantityDenominator#8640]
Input [3]: [plant#4887, filteredUnitOfMeasureConversions#4925, quantityNumerator#4926]
(1433) Generate
Input [2]: [plant#4887, _extract_quantityDenominator#8640]
Arguments: explode(_extract_quantityDenominator#8640), [plant#4887], true, [quantityDenominator#4927]
(1434) Project
Output [1]: [plant#4887]
Input [2]: [plant#4887, quantityDenominator#4927]
(1435) HashAggregate
Input [1]: [plant#4887]
Keys [1]: [plant#4887]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#4887]
(1436) Exchange
Input [1]: [plant#4887]
Arguments: hashpartitioning(plant#4887, 10), ENSURE_REQUIREMENTS, [plan_id=10212]
(1437) HashAggregate
Input [1]: [plant#4887]
Keys [1]: [plant#4887]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#4887]
(1438) BroadcastHashJoin
Left keys [1]: [plantUuid#4883]
Right keys [1]: [plant#4887]
Join type: Inner
Join condition: None
(1439) Project
Output [3]: [plantUuid#4883, storageLocId#4884, storageLocUuid#4885]
Input [4]: [plantUuid#4883, storageLocId#4884, storageLocUuid#4885, plant#4887]
(1440) BroadcastHashJoin
Left keys [2]: [coalesce(plant#4855.internalRefUUID, ), isnull(plant#4855.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#4883, ), isnull(plantUuid#4883)]
Join type: Inner
Join condition: None
(1441) Generate
Input [9]: [systemId#4852, internalUUID#4853, product#4854, plant#4855, calculationDateTime#4856, stockQuantities#4857, plantUuid#4883, storageLocId#4884, storageLocUuid#4885]
Arguments: explode(filter(stockQuantities#4857, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#4885) AND (lambda x#1207.storageLocation.Id = storageLocId#4884)), lambda x#1207, false))), [systemId#4852, internalUUID#4853, product#4854, plant#4855, calculationDateTime#4856, plantUuid#4883], false, [stockQuantity#4930]
(1442) ObjectHashAggregate
Input [7]: [systemId#4852, internalUUID#4853, product#4854, plant#4855, calculationDateTime#4856, plantUuid#4883, stockQuantity#4930]
Keys [5]: [plantUuid#4883, internalUUID#4853, plant#4855, product#4854, systemId#4852]
Functions [2]: [partial_first(calculationDateTime#4856, false), partial_collect_list(stockQuantity#4930, 0, 0)]
Aggregate Attributes [3]: [first#10348, valueSet#10349, buf#10350]
Results [8]: [plantUuid#4883, internalUUID#4853, plant#4855, product#4854, systemId#4852, first#10351, valueSet#10352, buf#10353]
(1443) ObjectHashAggregate
Input [8]: [plantUuid#4883, internalUUID#4853, plant#4855, product#4854, systemId#4852, first#10351, valueSet#10352, buf#10353]
Keys [5]: [plantUuid#4883, internalUUID#4853, plant#4855, product#4854, systemId#4852]
Functions [2]: [first(calculationDateTime#4856, false), collect_list(stockQuantity#4930, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#4856)()#1222, collect_list(stockQuantity#4930, 0, 0)#1223]
Results [4]: [product#4854, plant#4855, first(calculationDateTime#4856)()#1222 AS calculationDateTime#4931, collect_list(stockQuantity#4930, 0, 0)#1223 AS stockQuantities#4932]
(1444) Filter
Input [4]: [product#4854, plant#4855, calculationDateTime#4931, stockQuantities#4932]
Condition : ((size(stockQuantities#4932, true) > 0) AND isnotnull(calculationDateTime#4931))
(1445) Generate
Input [4]: [product#4854, plant#4855, calculationDateTime#4931, stockQuantities#4932]
Arguments: explode(stockQuantities#4932), [product#4854, plant#4855, calculationDateTime#4931], false, [stockQuantity#4933]
(1446) Filter
Input [4]: [product#4854, plant#4855, calculationDateTime#4931, stockQuantity#4933]
Condition : (((isnotnull(stockQuantity#4933.specialStockIndicator.code) AND isnotnull(stockQuantity#4933.stockType.code)) AND (stockQuantity#4933.specialStockIndicator.code = )) AND (stockQuantity#4933.stockType.code = 01))
(1447) Project
Output [4]: [plant#4855.internalRefUUID AS plantUuid#4935, product#4854.internalRefUUID AS productUuid#4937, calculationDateTime#4931, stockQuantity#4933.storagelocation.id AS storageLocId#4938]
Input [4]: [product#4854, plant#4855, calculationDateTime#4931, stockQuantity#4933]
(1448) Exchange
Input [4]: [plantUuid#4935, productUuid#4937, calculationDateTime#4931, storageLocId#4938]
Arguments: hashpartitioning(productUuid#4937, plantUuid#4935, 10), ENSURE_REQUIREMENTS, [plan_id=10245]
(1449) Sort
Input [4]: [plantUuid#4935, productUuid#4937, calculationDateTime#4931, storageLocId#4938]
Arguments: [productUuid#4937 ASC NULLS FIRST, plantUuid#4935 ASC NULLS FIRST], false, 0
(1450) Scan parquet
Output [3]: [product#4943, plant#4944, orderDateTime#4945]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1451) Filter
Input [3]: [product#4943, plant#4944, orderDateTime#4945]
Condition : ((isnotnull(orderDateTime#4945) AND isnotnull(plant#4944)) AND isnotnull(product#4943))
(1452) Exchange
Input [3]: [product#4943, plant#4944, orderDateTime#4945]
Arguments: hashpartitioning(product#4943, plant#4944, 10), REPARTITION_BY_NUM, [plan_id=9265]
(1453) Scan parquet
Output [4]: [plant#4949, product#4950, productionAspect#4952, systemId#4947]
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#4949.internalRefUUID AS _extract_internalRefUUID#9316, product#4950.internalRefUUID AS _extract_internalRefUUID#9317, productionAspect#4952.productMovementPlants.unitOfIssue.code AS _extract_code#9314, productionAspect#4952.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9315]
Input [4]: [plant#4949, product#4950, productionAspect#4952, systemId#4947]
(1455) Exchange
Input [4]: [_extract_internalRefUUID#9316, _extract_internalRefUUID#9317, _extract_code#9314, _extract_internalRefUUID#9315]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8094]
(1456) Project
Output [4]: [_extract_code#9314, _extract_internalRefUUID#9315, _extract_internalRefUUID#9317, _extract_internalRefUUID#9316]
Input [4]: [_extract_internalRefUUID#9316, _extract_internalRefUUID#9317, _extract_code#9314, _extract_internalRefUUID#9315]
(1457) BroadcastExchange
Input [4]: [_extract_code#9314, _extract_internalRefUUID#9315, _extract_internalRefUUID#9317, _extract_internalRefUUID#9316]
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=10228]
(1458) BroadcastHashJoin
Left keys [4]: [coalesce(product#4943, ), isnull(product#4943), coalesce(plant#4944, ), isnull(plant#4944)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9317, ), isnull(_extract_internalRefUUID#9317), coalesce(_extract_internalRefUUID#9316, ), isnull(_extract_internalRefUUID#9316)]
Join type: LeftOuter
Join condition: None
(1459) Project
Output [5]: [product#4943, plant#4944, orderDateTime#4945, _extract_code#9314, _extract_internalRefUUID#9315]
Input [7]: [product#4943, plant#4944, orderDateTime#4945, _extract_code#9314, _extract_internalRefUUID#9315, _extract_internalRefUUID#9317, _extract_internalRefUUID#9316]
(1460) Scan parquet
Output [2]: [internalUUID#4957, systemId#4956]
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#4957]
Input [2]: [internalUUID#4957, systemId#4956]
(1462) Exchange
Input [1]: [internalUUID#4957]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8100]
(1463) BroadcastExchange
Input [1]: [internalUUID#4957]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10232]
(1464) BroadcastHashJoin
Left keys [2]: [coalesce(plant#4944, ), isnull(plant#4944)]
Right keys [2]: [coalesce(internalUUID#4957, ), isnull(internalUUID#4957)]
Join type: LeftOuter
Join condition: None
(1465) Project
Output [5]: [product#4943, plant#4944, orderDateTime#4945, _extract_code#9314, _extract_internalRefUUID#9315]
Input [6]: [product#4943, plant#4944, orderDateTime#4945, _extract_code#9314, _extract_internalRefUUID#9315, internalUUID#4957]
(1466) Scan parquet
Output [4]: [internalUUID#4971, baseUnitOfMeasure#4975, unitOfMeasureConversions#4977, systemId#4970]
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#4971, baseUnitOfMeasure#4975, unitOfMeasureConversions#4977, systemId#4970]
Condition : isnotnull(internalUUID#4971)
(1468) Project
Output [3]: [internalUUID#4971, baseUnitOfMeasure#4975, unitOfMeasureConversions#4977]
Input [4]: [internalUUID#4971, baseUnitOfMeasure#4975, unitOfMeasureConversions#4977, systemId#4970]
(1469) Exchange
Input [3]: [internalUUID#4971, baseUnitOfMeasure#4975, unitOfMeasureConversions#4977]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8106]
(1470) BroadcastExchange
Input [3]: [internalUUID#4971, baseUnitOfMeasure#4975, unitOfMeasureConversions#4977]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10236]
(1471) BroadcastHashJoin
Left keys [1]: [product#4943]
Right keys [1]: [internalUUID#4971]
Join type: LeftOuter
Join condition: None
(1472) Project
Output [4]: [product#4943, plant#4944, orderDateTime#4945, filter(unitOfMeasureConversions#4977, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9314) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9315)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#4975.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4975.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#4982]
Input [8]: [product#4943, plant#4944, orderDateTime#4945, _extract_code#9314, _extract_internalRefUUID#9315, internalUUID#4971, baseUnitOfMeasure#4975, unitOfMeasureConversions#4977]
(1473) Generate
Input [4]: [product#4943, plant#4944, orderDateTime#4945, filteredUnitOfMeasureConversions#4982]
Arguments: explode(filteredUnitOfMeasureConversions#4982.quantityNumerator), [product#4943, plant#4944, orderDateTime#4945, filteredUnitOfMeasureConversions#4982], true, [quantityNumerator#4983]
(1474) Project
Output [4]: [product#4943, plant#4944, orderDateTime#4945, filteredUnitOfMeasureConversions#4982.quantityDenominator AS _extract_quantityDenominator#8644]
Input [5]: [product#4943, plant#4944, orderDateTime#4945, filteredUnitOfMeasureConversions#4982, quantityNumerator#4983]
(1475) Generate
Input [4]: [product#4943, plant#4944, orderDateTime#4945, _extract_quantityDenominator#8644]
Arguments: explode(_extract_quantityDenominator#8644), [product#4943, plant#4944, orderDateTime#4945], true, [quantityDenominator#4984]
(1476) Project
Output [3]: [product#4943, plant#4944, orderDateTime#4945]
Input [4]: [product#4943, plant#4944, orderDateTime#4945, quantityDenominator#4984]
(1477) Sort
Input [3]: [product#4943, plant#4944, orderDateTime#4945]
Arguments: [product#4943 ASC NULLS FIRST, plant#4944 ASC NULLS FIRST], false, 0
(1478) SortMergeJoin
Left keys [2]: [productUuid#4937, plantUuid#4935]
Right keys [2]: [product#4943, plant#4944]
Join type: Inner
Join condition: (calculationDateTime#4931 <= orderDateTime#4945)
(1479) Project
Output [4]: [plantUuid#4935 AS plant#4987, productUuid#4937 AS product#4988, storageLocId#4938, calculationDateTime#4931]
Input [7]: [plantUuid#4935, productUuid#4937, calculationDateTime#4931, storageLocId#4938, product#4943, plant#4944, orderDateTime#4945]
(1480) HashAggregate
Input [4]: [plant#4987, product#4988, storageLocId#4938, calculationDateTime#4931]
Keys [3]: [plant#4987, product#4988, storageLocId#4938]
Functions [1]: [partial_max(calculationDateTime#4931)]
Aggregate Attributes [1]: [max#10346]
Results [4]: [plant#4987, product#4988, storageLocId#4938, max#10347]
(1481) HashAggregate
Input [4]: [plant#4987, product#4988, storageLocId#4938, max#10347]
Keys [3]: [plant#4987, product#4988, storageLocId#4938]
Functions [1]: [max(calculationDateTime#4931)]
Aggregate Attributes [1]: [max(calculationDateTime#4931)#1300]
Results [4]: [plant#4987, product#4988, storageLocId#4938, max(calculationDateTime#4931)#1300 AS max_calc_datetime#4989]
(1482) Exchange
Input [4]: [plant#4987, product#4988, storageLocId#4938, max_calc_datetime#4989]
Arguments: hashpartitioning(coalesce(plant#4987, ), isnull(plant#4987), coalesce(product#4988, ), isnull(product#4988), coalesce(storageLocId#4938, ), isnull(storageLocId#4938), coalesce(max_calc_datetime#4989, 1970-01-01 00:00:00), isnull(max_calc_datetime#4989), 10), ENSURE_REQUIREMENTS, [plan_id=10255]
(1483) Sort
Input [4]: [plant#4987, product#4988, storageLocId#4938, max_calc_datetime#4989]
Arguments: [coalesce(plant#4987, ) ASC NULLS FIRST, isnull(plant#4987) ASC NULLS FIRST, coalesce(product#4988, ) ASC NULLS FIRST, isnull(product#4988) ASC NULLS FIRST, coalesce(storageLocId#4938, ) ASC NULLS FIRST, isnull(storageLocId#4938) ASC NULLS FIRST, coalesce(max_calc_datetime#4989, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#4989) ASC NULLS FIRST], false, 0
(1484) SortMergeJoin
Left keys [8]: [coalesce(plant#4850, ), isnull(plant#4850), coalesce(product#4851, ), isnull(product#4851), coalesce(storageLocId#4801, ), isnull(storageLocId#4801), coalesce(calculationDateTime#4794, 1970-01-01 00:00:00), isnull(calculationDateTime#4794)]
Right keys [8]: [coalesce(plant#4987, ), isnull(plant#4987), coalesce(product#4988, ), isnull(product#4988), coalesce(storageLocId#4938, ), isnull(storageLocId#4938), coalesce(max_calc_datetime#4989, 1970-01-01 00:00:00), isnull(max_calc_datetime#4989)]
Join type: Inner
Join condition: None
(1485) Project
Output [4]: [plant#4850, product#4851, calculationDateTime#4794, quantity#4803]
Input [9]: [plant#4850, product#4851, storageLocId#4801, calculationDateTime#4794, quantity#4803, plant#4987, product#4988, storageLocId#4938, max_calc_datetime#4989]
(1486) HashAggregate
Input [4]: [plant#4850, product#4851, calculationDateTime#4794, quantity#4803]
Keys [2]: [product#4851, plant#4850]
Functions [2]: [partial_min(calculationDateTime#4794), partial_sum(quantity#4803)]
Aggregate Attributes [2]: [min#10336, sum#10337]
Results [4]: [product#4851, plant#4850, min#10338, sum#10339]
(1487) Exchange
Input [4]: [product#4851, plant#4850, min#10338, sum#10339]
Arguments: hashpartitioning(product#4851, plant#4850, 10), ENSURE_REQUIREMENTS, [plan_id=10262]
(1488) HashAggregate
Input [4]: [product#4851, plant#4850, min#10338, sum#10339]
Keys [2]: [product#4851, plant#4850]
Functions [2]: [min(calculationDateTime#4794), sum(quantity#4803)]
Aggregate Attributes [2]: [min(calculationDateTime#4794)#1456, sum(quantity#4803)#1455]
Results [4]: [product#4851, plant#4850, min(calculationDateTime#4794)#1456 AS minCalculationDateTime#4991, round(sum(quantity#4803)#1455, 0) AS roundedQuantitySum#4992]
(1489) Sort
Input [4]: [product#4851, plant#4850, minCalculationDateTime#4991, roundedQuantitySum#4992]
Arguments: [product#4851 ASC NULLS FIRST, plant#4850 ASC NULLS FIRST], false, 0
(1490) SortMergeJoin
Left keys [2]: [product#4671, plant#4672]
Right keys [2]: [product#4851, plant#4850]
Join type: LeftOuter
Join condition: None
(1491) Project
Output [8]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4714, CASE WHEN isnotnull(minCalculationDateTime#4991) THEN minCalculationDateTime#4991 ELSE orderDateTime#4673 END AS stockDatetime#4993, CASE WHEN isnotnull(roundedQuantitySum#4992) THEN array(roundedQuantitySum#4992) ELSE [0.0] END AS stockBatchQuantities#4994]
Input [10]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4714, product#4851, plant#4850, minCalculationDateTime#4991, roundedQuantitySum#4992]
(1492) Scan parquet
Output [9]: [product#4996, plant#4997, demandChannel#4998, demandStream#4999, considerVariance#5000, demandTimeBuckets#5001, demandPointInTimeStart#5002, demandPointInTimeEnd#5003, demandPointInTime#5004]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000004/0_1_10000000004]
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#4996, plant#4997, demandChannel#4998, demandStream#4999, considerVariance#5000, demandTimeBuckets#5001, demandPointInTimeStart#5002, demandPointInTimeEnd#5003, demandPointInTime#5004]
Condition : (isnotnull(product#4996) AND isnotnull(plant#4997))
(1494) BroadcastExchange
Input [9]: [product#4996, plant#4997, demandChannel#4998, demandStream#4999, considerVariance#5000, demandTimeBuckets#5001, demandPointInTimeStart#5002, demandPointInTimeEnd#5003, demandPointInTime#5004]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=10271]
(1495) BroadcastHashJoin
Left keys [2]: [product#4671, plant#4672]
Right keys [2]: [product#4996, plant#4997]
Join type: LeftOuter
Join condition: None
(1496) Project
Output [9]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4714, stockDatetime#4993, stockBatchQuantities#4994, CASE WHEN isnotnull(product#4996) THEN struct(demandChannel, demandChannel#4998, demandStream, demandStream#4999, considerVariance, considerVariance#5000, demandTimeBuckets, demandTimeBuckets#5001, demandPointInTimeStart, demandPointInTimeStart#5002, demandPointInTimeEnd, demandPointInTimeEnd#5003, demandPointInTime, demandPointInTime#5004) END AS rawDemands#5005]
Input [17]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4714, stockDatetime#4993, stockBatchQuantities#4994, product#4996, plant#4997, demandChannel#4998, demandStream#4999, considerVariance#5000, demandTimeBuckets#5001, demandPointInTimeStart#5002, demandPointInTimeEnd#5003, demandPointInTime#5004]
(1497) ObjectHashAggregate
Input [9]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4714, stockDatetime#4993, stockBatchQuantities#4994, rawDemands#5005]
Keys [9]: [product#4671, plant#4672, orderDateTime#4673, knownfloatingpointnormalized(if (isnull(productPlant#4683)) null else named_struct(systemId, productPlant#4683.systemId, internalUUID, productPlant#4683.internalUUID, plant, productPlant#4683.plant, product, productPlant#4683.product, blockedForReplenishmentStartingFrom, productPlant#4683.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#4683.productionAspect)) null else named_struct(productMovementPlants, productPlant#4683.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#4683.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#4683.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#4683.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#4683.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#4683.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#4683.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#4683.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#4683.salesPlant, listing, productPlant#4683.listing)) AS productPlant#4683, timezonecode#4697, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#4714)) AS outboundUnit#4714, stockDatetime#4993, knownfloatingpointnormalized(transform(stockBatchQuantities#4994, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#10333)), lambda arg#10333, false))) AS stockBatchQuantities#4994, [7226582400000000] AS [7226582400000000]#10332]
Functions [1]: [partial_collect_list(rawDemands#5005, 0, 0)]
Aggregate Attributes [1]: [buf#10334]
Results [10]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4714, stockDatetime#4993, stockBatchQuantities#4994, [7226582400000000]#10332, buf#10335]
(1498) ObjectHashAggregate
Input [10]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4714, stockDatetime#4993, stockBatchQuantities#4994, [7226582400000000]#10332, buf#10335]
Keys [9]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4714, stockDatetime#4993, stockBatchQuantities#4994, [7226582400000000]#10332]
Functions [1]: [collect_list(rawDemands#5005, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#5005, 0, 0)#1548]
Results [10]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4714, stockDatetime#4993, stockBatchQuantities#4994, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#4995, collect_list(rawDemands#5005, 0, 0)#1548 AS rawDemands#5006]
(1499) DeserializeToObject
Input [10]: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4714, stockDatetime#4993, stockBatchQuantities#4994, stockBatchShelfLifeEndDatetimes#4995, rawDemands#5006]
Arguments: createexternalrow(invoke(product#4671.toString()), invoke(plant#4672.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#4673)), if (isnull(productPlant#4683)) null else createexternalrow(invoke(productPlant#4683.systemId.toString()), invoke(productPlant#4683.internalUUID.toString()), if (isnull(productPlant#4683.plant)) null else createexternalrow(invoke(productPlant#4683.plant.internalRefUUID.toString()), invoke(productPlant#4683.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#4683.product)) null else createexternalrow(invoke(productPlant#4683.product.internalRefUUID.toString()), invoke(productPlant#4683.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#4683.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#4683.productionAspect)) null else createexternalrow(if (isnull(productPlant#4683.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#4683.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#4683.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#4683.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#4683.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#4683.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#4683.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#4683.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#4683.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#4683.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#4683.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#4683.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#4683.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#4683.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#4683.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#4683.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#4683.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#4683.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#4683.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#4683.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#4683.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#4683.salesPlant)) null else createexternalrow(if (isnull(productPlant#4683.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#4683.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#4683.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#4683.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#4697.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#4714)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#4993)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#4994, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#4995, 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#5006, 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#1569: org.apache.spark.sql.Row
(1500) MapElements
Input [1]: [obj#1569]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@762840b4, obj#1574: org.apache.spark.sql.Row
(1501) SerializeFromObject
Input [1]: [obj#1574]
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#5007, 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#5008]
(1502) Exchange
Input [2]: [product#5007, plant#5008]
Arguments: hashpartitioning(coalesce(plant#5008, ), isnull(plant#5008), coalesce(product#5007, ), isnull(product#5007), 10), ENSURE_REQUIREMENTS, [plan_id=10282]
(1503) Sort
Input [2]: [product#5007, plant#5008]
Arguments: [coalesce(plant#5008, ) ASC NULLS FIRST, isnull(plant#5008) ASC NULLS FIRST, coalesce(product#5007, ) ASC NULLS FIRST, isnull(product#5007) ASC NULLS FIRST], false, 0
(1504) SortMergeJoin
Left keys [4]: [coalesce(plant#4347, ), isnull(plant#4347), coalesce(product#4346, ), isnull(product#4346)]
Right keys [4]: [coalesce(plant#5008, ), isnull(plant#5008), coalesce(product#5007, ), isnull(product#5007)]
Join type: LeftOuter
Join condition: None
(1505) Project
Output [3]: [product#4346, plant#4347, stockDatetime#4668]
Input [5]: [product#4346, plant#4347, stockDatetime#4668, product#5007, plant#5008]
(1506) Scan parquet
Output [6]: [internalUUID#5012, id#5013, supplier#5015, isMarkedForDeletion#5018, items#5019, systemId#5011]
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#5012, id#5013, supplier#5015, isMarkedForDeletion#5018, items#5019, systemId#5011]
Condition : (((isnotnull(isMarkedForDeletion#5018) AND NOT isMarkedForDeletion#5018) AND (size(items#5019, true) > 0)) AND isnotnull(items#5019))
(1508) Project
Output [4]: [internalUUID#5012, id#5013, supplier#5015, items#5019]
Input [6]: [internalUUID#5012, id#5013, supplier#5015, isMarkedForDeletion#5018, items#5019, systemId#5011]
(1509) Exchange
Input [4]: [internalUUID#5012, id#5013, supplier#5015, items#5019]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8138]
(1510) Generate
Input [4]: [internalUUID#5012, id#5013, supplier#5015, items#5019]
Arguments: explode(items#5019), [internalUUID#5012, id#5013, supplier#5015], false, [item#5020]
(1511) Filter
Input [4]: [internalUUID#5012, id#5013, supplier#5015, item#5020]
Condition : ((((isnotnull(item#5020.deletionIndicator) AND isnotnull(item#5020.completeIndicator)) AND isnotnull(item#5020.returnIndicator)) AND ((NOT item#5020.deletionIndicator AND NOT item#5020.completeIndicator) AND NOT item#5020.returnIndicator)) AND isnotnull(item#5020.product.internalRefUUID))
(1512) Project
Output [9]: [id#5013, internalUUID#5012, supplier#5015.internalRefUUID AS supplierUuid#5021, item#5020.product.internalRefUUID AS product#5023, item#5020.quantityUnit.code AS quantityUom#5025, item#5020.quantityUnit.internalRefUUID AS quantityUomUuid#5026, item#5020.quantityNumerator AS quantityNumerator#5027, item#5020.quantityDenominator AS quantityDenominator#5028, item#5020.scheduleLines AS scheduleLines#5029]
Input [4]: [internalUUID#5012, id#5013, supplier#5015, item#5020]
(1513) BroadcastExchange
Input [9]: [id#5013, internalUUID#5012, supplierUuid#5021, product#5023, quantityUom#5025, quantityUomUuid#5026, quantityNumerator#5027, quantityDenominator#5028, scheduleLines#5029]
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=10288]
(1514) BroadcastHashJoin
Left keys [4]: [coalesce(product#4346, ), isnull(product#4346), coalesce(plant#4347, ), isnull(plant#4347)]
Right keys [4]: [coalesce(product#5023, ), isnull(product#5023), coalesce(supplierUuid#5021, ), isnull(supplierUuid#5021)]
Join type: Inner
Join condition: None
(1515) Project
Output [3]: [product#5023, plant#4347, filter(transform(filter(transform(scheduleLines#5029, lambdafunction(struct(openQty, (greatest((lambda x_6#4326.quantity - coalesce(lambda x_6#4326.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_6#4326.productAvailabilityDateTime, lambda x_6#4326.deliveryAt)), lambda x_6#4326, false)), lambdafunction((lambda x_7#4327.availabilityDatetime < stockDatetime#4668), lambda x_7#4327, false)), lambdafunction(struct(documentId, id#5013, documentUuid, internalUUID#5012, openQty, lambda x_8#4328.openQty, openQtyInBaseUnit, ((lambda x_8#4328.openQty * quantityNumerator#5027) / quantityDenominator#5028), qtyUom, quantityUom#5025, qtyUomUuid, quantityUomUuid#5026, availabilityDatetime, lambda x_8#4328.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_8#4328, false)), lambdafunction(NOT (lambda x_9#4329.openQty = 0.0), lambda x_9#4329, false)) AS openGoodsMovements#4325]
Input [12]: [product#4346, plant#4347, stockDatetime#4668, id#5013, internalUUID#5012, supplierUuid#5021, product#5023, quantityUom#5025, quantityUomUuid#5026, quantityNumerator#5027, quantityDenominator#5028, scheduleLines#5029]
(1516) ObjectHashAggregate
Input [3]: [product#5023, plant#4347, openGoodsMovements#4325]
Keys [2]: [product#5023, plant#4347]
Functions [1]: [partial_collect_list(openGoodsMovements#4325, 0, 0)]
Aggregate Attributes [1]: [buf#10314]
Results [3]: [product#5023, plant#4347, buf#10315]
(1517) Exchange
Input [3]: [product#5023, plant#4347, buf#10315]
Arguments: hashpartitioning(product#5023, plant#4347, 10), ENSURE_REQUIREMENTS, [plan_id=10293]
(1518) ObjectHashAggregate
Input [3]: [product#5023, plant#4347, buf#10315]
Keys [2]: [product#5023, plant#4347]
Functions [1]: [collect_list(openGoodsMovements#4325, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#4325, 0, 0)#4345]
Results [3]: [product#5023, plant#4347, flatten(collect_list(openGoodsMovements#4325, 0, 0)#4345) AS openGoodsMovements#4330]
(1519) Filter
Input [3]: [product#5023, plant#4347, openGoodsMovements#4330]
Condition : (size(openGoodsMovements#4330, false) > 0)
(1520) Union
(1521) ObjectHashAggregate
Input [3]: [product#1950, plant#1949, openGoodsMovements#2331]
Keys [2]: [product#1950, plant#1949]
Functions [1]: [partial_collect_list(openGoodsMovements#2331, 0, 0)]
Aggregate Attributes [1]: [buf#10312]
Results [3]: [product#1950, plant#1949, buf#10313]
(1522) Exchange
Input [3]: [product#1950, plant#1949, buf#10313]
Arguments: hashpartitioning(product#1950, plant#1949, 10), ENSURE_REQUIREMENTS, [plan_id=10299]
(1523) ObjectHashAggregate
Input [3]: [product#1950, plant#1949, buf#10313]
Keys [2]: [product#1950, plant#1949]
Functions [1]: [collect_list(openGoodsMovements#2331, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#2331, 0, 0)#5085]
Results [3]: [product#1950, plant#1949, flatten(collect_list(openGoodsMovements#2331, 0, 0)#5085) AS openGoodsMovements#5081]
(1524) Project
Output [5]: [product#1950, plant#1949, openGoodsMovements#5081.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#8738, openGoodsMovements#5081.availabilityDatetime AS _extract_availabilityDatetime#8739, openGoodsMovements#5081.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#8740]
Input [3]: [product#1950, plant#1949, openGoodsMovements#5081]
(1525) Sort
Input [5]: [product#1950, plant#1949, _extract_openQtyInBaseUnit#8738, _extract_availabilityDatetime#8739, _extract_shelfLifeEndDatetime#8740]
Arguments: [product#1950 ASC NULLS FIRST, plant#1949 ASC NULLS FIRST], false, 0
(1526) SortMergeJoin
Left keys [2]: [product#1102, plant#1103]
Right keys [2]: [product#1950, plant#1949]
Join type: LeftOuter
Join condition: None
(1527) Project
Output [10]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, dayBucketDemands#1581, pointInTimeDemands#1582, coalesce(_extract_openQtyInBaseUnit#8738, []) AS openGoodsMovementQuantities#5800, coalesce(_extract_availabilityDatetime#8739, []) AS openGoodsMovementAvailabilityDatetimes#5801, coalesce(_extract_shelfLifeEndDatetime#8740, []) AS openGoodsMovementShelfLifeEndDatetimes#5802]
Input [12]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, dayBucketDemands#1581, pointInTimeDemands#1582, product#1950, plant#1949, _extract_openQtyInBaseUnit#8738, _extract_availabilityDatetime#8739, _extract_shelfLifeEndDatetime#8740]
(1528) Scan parquet
Output [3]: [product#6102, plant#6103, orderDateTime#6104]
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/10000000004/shardId=0_1_10000000004]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1529) Exchange
Input [3]: [product#6102, plant#6103, orderDateTime#6104]
Arguments: hashpartitioning(product#6102, plant#6103, 10), REPARTITION_BY_NUM, [plan_id=8154]
(1530) Scan parquet
Output [8]: [internalUUID#6107, plant#6108, product#6109, blockedForReplenishmentStartingFrom#6110, productionAspect#6111, salesPlant#6112, listing#6113, systemId#6106]
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#6106, internalUUID#6107, plant#6108, product#6109, blockedForReplenishmentStartingFrom#6110, productionAspect#6111, salesPlant#6112, listing#6113]
Input [8]: [internalUUID#6107, plant#6108, product#6109, blockedForReplenishmentStartingFrom#6110, productionAspect#6111, salesPlant#6112, listing#6113, systemId#6106]
(1532) Exchange
Input [8]: [systemId#6106, internalUUID#6107, plant#6108, product#6109, blockedForReplenishmentStartingFrom#6110, productionAspect#6111, salesPlant#6112, listing#6113]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8157]
(1533) Project
Output [1]: [struct(systemId, systemId#6106, internalUUID, internalUUID#6107, plant, plant#6108, product, product#6109, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#6110, productionAspect, productionAspect#6111, salesPlant, salesPlant#6112, listing, listing#6113) AS productPlant#6114]
Input [8]: [systemId#6106, internalUUID#6107, plant#6108, product#6109, blockedForReplenishmentStartingFrom#6110, productionAspect#6111, salesPlant#6112, listing#6113]
(1534) BroadcastExchange
Input [1]: [productPlant#6114]
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=10309]
(1535) BroadcastHashJoin
Left keys [4]: [coalesce(product#6102, ), isnull(product#6102), coalesce(plant#6103, ), isnull(plant#6103)]
Right keys [4]: [coalesce(productPlant#6114.product.internalRefUUID, ), isnull(productPlant#6114.product.internalRefUUID), coalesce(productPlant#6114.plant.internalRefUUID, ), isnull(productPlant#6114.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1536) Scan parquet
Output [3]: [internalUUID#6116, address#6122, systemId#6115]
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#6116, address#6122.timeZone.code AS timezonecode#6127]
Input [3]: [internalUUID#6116, address#6122, systemId#6115]
(1538) Exchange
Input [2]: [internalUUID#6116, timezonecode#6127]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8162]
(1539) BroadcastExchange
Input [2]: [internalUUID#6116, timezonecode#6127]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10312]
(1540) BroadcastHashJoin
Left keys [2]: [coalesce(plant#6103, ), isnull(plant#6103)]
Right keys [2]: [coalesce(internalUUID#6116, ), isnull(internalUUID#6116)]
Join type: LeftOuter
Join condition: None
(1541) Project
Output [5]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, CASE WHEN isnotnull(timezonecode#6127) THEN timezonecode#6127 ELSE UTC END AS timezonecode#6128]
Input [6]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, internalUUID#6116, timezonecode#6127]
(1542) Scan parquet
Output [4]: [internalUUID#6130, baseUnitOfMeasure#6134, unitOfMeasureConversions#6136, systemId#6129]
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#6130, baseUnitOfMeasure#6134, unitOfMeasureConversions#6136, systemId#6129]
Condition : isnotnull(internalUUID#6130)
(1544) Project
Output [3]: [internalUUID#6130, baseUnitOfMeasure#6134, unitOfMeasureConversions#6136]
Input [4]: [internalUUID#6130, baseUnitOfMeasure#6134, unitOfMeasureConversions#6136, systemId#6129]
(1545) Exchange
Input [3]: [internalUUID#6130, baseUnitOfMeasure#6134, unitOfMeasureConversions#6136]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8168]
(1546) BroadcastExchange
Input [3]: [internalUUID#6130, baseUnitOfMeasure#6134, unitOfMeasureConversions#6136]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10316]
(1547) BroadcastHashJoin
Left keys [1]: [product#6102]
Right keys [1]: [internalUUID#6130]
Join type: LeftOuter
Join condition: None
(1548) Project
Output [6]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, filter(unitOfMeasureConversions#6136, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#6114.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#6114.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6134.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6134.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6141]
Input [8]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, internalUUID#6130, baseUnitOfMeasure#6134, unitOfMeasureConversions#6136]
(1549) Project
Output [7]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, filteredUnitOfMeasureConversions#6141.quantityDenominator AS _extract_quantityDenominator#8858, filteredUnitOfMeasureConversions#6141.quantityNumerator AS _extract_quantityNumerator#8859]
Input [6]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, filteredUnitOfMeasureConversions#6141]
(1550) Generate
Input [7]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, _extract_quantityDenominator#8858, _extract_quantityNumerator#8859]
Arguments: explode(_extract_quantityNumerator#8859), [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, _extract_quantityDenominator#8858], true, [quantityNumerator#6142]
(1551) Generate
Input [7]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, _extract_quantityDenominator#8858, quantityNumerator#6142]
Arguments: explode(_extract_quantityDenominator#8858), [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, quantityNumerator#6142], true, [quantityDenominator#6143]
(1552) Project
Output [6]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, (cast(quantityNumerator#6142 as double) / cast(quantityDenominator#6143 as double)) AS outboundUnit#6144]
Input [7]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, quantityNumerator#6142, quantityDenominator#6143]
(1553) Project
Output [6]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, CASE WHEN (isnull(outboundUnit#6144) OR (outboundUnit#6144 <= 0.0)) THEN 1.0 ELSE outboundUnit#6144 END AS outboundUnit#6145]
Input [6]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6144]
(1554) Sort
Input [6]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145]
Arguments: [product#6102 ASC NULLS FIRST, plant#6103 ASC NULLS FIRST], false, 0
(1555) Scan parquet
Output [6]: [internalUUID#6147, product#6148, plant#6149, calculationDateTime#6150, stockQuantities#6151, systemId#6146]
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#6147, product#6148, plant#6149, calculationDateTime#6150, stockQuantities#6151, systemId#6146]
Condition : (isnotnull(plant#6149.internalRefUUID) AND isnotnull(product#6148.internalRefUUID))
(1557) Project
Output [6]: [systemId#6146, internalUUID#6147, product#6148, plant#6149, calculationDateTime#6150, stockQuantities#6151]
Input [6]: [internalUUID#6147, product#6148, plant#6149, calculationDateTime#6150, stockQuantities#6151, systemId#6146]
(1558) Exchange
Input [6]: [systemId#6146, internalUUID#6147, product#6148, plant#6149, calculationDateTime#6150, stockQuantities#6151]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8179]
(1559) BroadcastExchange
Input [6]: [systemId#6146, internalUUID#6147, product#6148, plant#6149, calculationDateTime#6150, stockQuantities#6151]
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=10348]
(1560) Scan parquet
Output [2]: [marketUnit#6152, distributionCenters#6158]
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#6152, distributionCenters#6158]
Condition : (((marketUnit#6152 <=> DIP_1691) AND (size(distributionCenters#6158, true) > 0)) AND isnotnull(distributionCenters#6158))
(1562) Project
Output [1]: [distributionCenters#6158]
Input [2]: [marketUnit#6152, distributionCenters#6158]
(1563) Exchange
Input [1]: [distributionCenters#6158]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8183]
(1564) Generate
Input [1]: [distributionCenters#6158]
Arguments: explode(distributionCenters#6158), false, [distributionCenters#6174]
(1565) Filter
Input [1]: [distributionCenters#6174]
Condition : (((size(distributionCenters#6174.storageLocations, true) > 0) AND isnotnull(distributionCenters#6174.storageLocations)) AND isnotnull(distributionCenters#6174.internalRefUUID))
(1566) Project
Output [2]: [distributionCenters#6174.internalRefUUID AS _extract_internalRefUUID#8650, distributionCenters#6174.storageLocations AS _extract_storageLocations#8651]
Input [1]: [distributionCenters#6174]
(1567) Generate
Input [2]: [_extract_internalRefUUID#8650, _extract_storageLocations#8651]
Arguments: explode(_extract_storageLocations#8651), [_extract_internalRefUUID#8650], false, [storageLocations#6175]
(1568) Project
Output [3]: [_extract_internalRefUUID#8650 AS plantUuid#6177, storageLocations#6175.id AS storageLocId#6178, storageLocations#6175.internalRefUUID AS storageLocUuid#6179]
Input [2]: [_extract_internalRefUUID#8650, storageLocations#6175]
(1569) BroadcastExchange
Input [3]: [plantUuid#6177, storageLocId#6178, storageLocUuid#6179]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10344]
(1570) Scan parquet
Output [2]: [product#6180, plant#6181]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1571) Filter
Input [2]: [product#6180, plant#6181]
Condition : isnotnull(plant#6181)
(1572) Exchange
Input [2]: [product#6180, plant#6181]
Arguments: hashpartitioning(product#6180, plant#6181, 10), REPARTITION_BY_NUM, [plan_id=9306]
(1573) Scan parquet
Output [4]: [plant#6186, product#6187, productionAspect#6189, systemId#6184]
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#6186.internalRefUUID AS _extract_internalRefUUID#9318, product#6187.internalRefUUID AS _extract_internalRefUUID#9319, productionAspect#6189.productMovementPlants.unitOfIssue.code AS _extract_code#9320, productionAspect#6189.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9321]
Input [4]: [plant#6186, product#6187, productionAspect#6189, systemId#6184]
(1575) Exchange
Input [4]: [_extract_internalRefUUID#9318, _extract_internalRefUUID#9319, _extract_code#9320, _extract_internalRefUUID#9321]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8195]
(1576) Project
Output [4]: [_extract_code#9320, _extract_internalRefUUID#9321, _extract_internalRefUUID#9319, _extract_internalRefUUID#9318]
Input [4]: [_extract_internalRefUUID#9318, _extract_internalRefUUID#9319, _extract_code#9320, _extract_internalRefUUID#9321]
(1577) BroadcastExchange
Input [4]: [_extract_code#9320, _extract_internalRefUUID#9321, _extract_internalRefUUID#9319, _extract_internalRefUUID#9318]
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=10324]
(1578) BroadcastHashJoin
Left keys [4]: [coalesce(product#6180, ), isnull(product#6180), coalesce(plant#6181, ), isnull(plant#6181)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9319, ), isnull(_extract_internalRefUUID#9319), coalesce(_extract_internalRefUUID#9318, ), isnull(_extract_internalRefUUID#9318)]
Join type: LeftOuter
Join condition: None
(1579) Project
Output [4]: [product#6180, plant#6181, _extract_code#9320, _extract_internalRefUUID#9321]
Input [6]: [product#6180, plant#6181, _extract_code#9320, _extract_internalRefUUID#9321, _extract_internalRefUUID#9319, _extract_internalRefUUID#9318]
(1580) Scan parquet
Output [2]: [internalUUID#6194, systemId#6193]
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#6194]
Input [2]: [internalUUID#6194, systemId#6193]
(1582) Exchange
Input [1]: [internalUUID#6194]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8201]
(1583) BroadcastExchange
Input [1]: [internalUUID#6194]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10328]
(1584) BroadcastHashJoin
Left keys [2]: [coalesce(plant#6181, ), isnull(plant#6181)]
Right keys [2]: [coalesce(internalUUID#6194, ), isnull(internalUUID#6194)]
Join type: LeftOuter
Join condition: None
(1585) Project
Output [4]: [product#6180, plant#6181, _extract_code#9320, _extract_internalRefUUID#9321]
Input [5]: [product#6180, plant#6181, _extract_code#9320, _extract_internalRefUUID#9321, internalUUID#6194]
(1586) Scan parquet
Output [4]: [internalUUID#6208, baseUnitOfMeasure#6212, unitOfMeasureConversions#6214, systemId#6207]
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#6208, baseUnitOfMeasure#6212, unitOfMeasureConversions#6214, systemId#6207]
Condition : isnotnull(internalUUID#6208)
(1588) Project
Output [3]: [internalUUID#6208, baseUnitOfMeasure#6212, unitOfMeasureConversions#6214]
Input [4]: [internalUUID#6208, baseUnitOfMeasure#6212, unitOfMeasureConversions#6214, systemId#6207]
(1589) Exchange
Input [3]: [internalUUID#6208, baseUnitOfMeasure#6212, unitOfMeasureConversions#6214]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8207]
(1590) BroadcastExchange
Input [3]: [internalUUID#6208, baseUnitOfMeasure#6212, unitOfMeasureConversions#6214]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10332]
(1591) BroadcastHashJoin
Left keys [1]: [product#6180]
Right keys [1]: [internalUUID#6208]
Join type: LeftOuter
Join condition: None
(1592) Project
Output [2]: [plant#6181, filter(unitOfMeasureConversions#6214, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9320) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9321)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6212.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6212.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6219]
Input [7]: [product#6180, plant#6181, _extract_code#9320, _extract_internalRefUUID#9321, internalUUID#6208, baseUnitOfMeasure#6212, unitOfMeasureConversions#6214]
(1593) Generate
Input [2]: [plant#6181, filteredUnitOfMeasureConversions#6219]
Arguments: explode(filteredUnitOfMeasureConversions#6219.quantityNumerator), [plant#6181, filteredUnitOfMeasureConversions#6219], true, [quantityNumerator#6220]
(1594) Project
Output [2]: [plant#6181, filteredUnitOfMeasureConversions#6219.quantityDenominator AS _extract_quantityDenominator#8652]
Input [3]: [plant#6181, filteredUnitOfMeasureConversions#6219, quantityNumerator#6220]
(1595) Generate
Input [2]: [plant#6181, _extract_quantityDenominator#8652]
Arguments: explode(_extract_quantityDenominator#8652), [plant#6181], true, [quantityDenominator#6221]
(1596) Project
Output [1]: [plant#6181]
Input [2]: [plant#6181, quantityDenominator#6221]
(1597) HashAggregate
Input [1]: [plant#6181]
Keys [1]: [plant#6181]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#6181]
(1598) Exchange
Input [1]: [plant#6181]
Arguments: hashpartitioning(plant#6181, 10), ENSURE_REQUIREMENTS, [plan_id=10341]
(1599) HashAggregate
Input [1]: [plant#6181]
Keys [1]: [plant#6181]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#6181]
(1600) BroadcastHashJoin
Left keys [1]: [plantUuid#6177]
Right keys [1]: [plant#6181]
Join type: Inner
Join condition: None
(1601) Project
Output [3]: [plantUuid#6177, storageLocId#6178, storageLocUuid#6179]
Input [4]: [plantUuid#6177, storageLocId#6178, storageLocUuid#6179, plant#6181]
(1602) BroadcastHashJoin
Left keys [2]: [coalesce(plant#6149.internalRefUUID, ), isnull(plant#6149.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#6177, ), isnull(plantUuid#6177)]
Join type: Inner
Join condition: None
(1603) Generate
Input [9]: [systemId#6146, internalUUID#6147, product#6148, plant#6149, calculationDateTime#6150, stockQuantities#6151, plantUuid#6177, storageLocId#6178, storageLocUuid#6179]
Arguments: explode(filter(stockQuantities#6151, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#6179) AND (lambda x#1207.storageLocation.Id = storageLocId#6178)), lambda x#1207, false))), [systemId#6146, internalUUID#6147, product#6148, plant#6149, calculationDateTime#6150, plantUuid#6177], false, [stockQuantity#6224]
(1604) ObjectHashAggregate
Input [7]: [systemId#6146, internalUUID#6147, product#6148, plant#6149, calculationDateTime#6150, plantUuid#6177, stockQuantity#6224]
Keys [5]: [plantUuid#6177, internalUUID#6147, plant#6149, product#6148, systemId#6146]
Functions [2]: [partial_first(calculationDateTime#6150, false), partial_collect_list(stockQuantity#6224, 0, 0)]
Aggregate Attributes [3]: [first#10358, valueSet#10359, buf#10360]
Results [8]: [plantUuid#6177, internalUUID#6147, plant#6149, product#6148, systemId#6146, first#10361, valueSet#10362, buf#10363]
(1605) ObjectHashAggregate
Input [8]: [plantUuid#6177, internalUUID#6147, plant#6149, product#6148, systemId#6146, first#10361, valueSet#10362, buf#10363]
Keys [5]: [plantUuid#6177, internalUUID#6147, plant#6149, product#6148, systemId#6146]
Functions [2]: [first(calculationDateTime#6150, false), collect_list(stockQuantity#6224, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#6150)()#1222, collect_list(stockQuantity#6224, 0, 0)#1223]
Results [4]: [product#6148, plant#6149, first(calculationDateTime#6150)()#1222 AS calculationDateTime#6225, collect_list(stockQuantity#6224, 0, 0)#1223 AS stockQuantities#6226]
(1606) Filter
Input [4]: [product#6148, plant#6149, calculationDateTime#6225, stockQuantities#6226]
Condition : ((size(stockQuantities#6226, true) > 0) AND isnotnull(calculationDateTime#6225))
(1607) Generate
Input [4]: [product#6148, plant#6149, calculationDateTime#6225, stockQuantities#6226]
Arguments: explode(stockQuantities#6226), [product#6148, plant#6149, calculationDateTime#6225], false, [stockQuantity#6227]
(1608) Filter
Input [4]: [product#6148, plant#6149, calculationDateTime#6225, stockQuantity#6227]
Condition : (((isnotnull(stockQuantity#6227.specialStockIndicator.code) AND isnotnull(stockQuantity#6227.stockType.code)) AND (stockQuantity#6227.specialStockIndicator.code = )) AND (stockQuantity#6227.stockType.code = 01))
(1609) Project
Output [5]: [plant#6149.internalRefUUID AS plantUuid#6229, product#6148.internalRefUUID AS productUuid#6231, calculationDateTime#6225, stockQuantity#6227.storagelocation.id AS storageLocId#6232, stockQuantity#6227.quantity.measure AS quantity#6234]
Input [4]: [product#6148, plant#6149, calculationDateTime#6225, stockQuantity#6227]
(1610) Exchange
Input [5]: [plantUuid#6229, productUuid#6231, calculationDateTime#6225, storageLocId#6232, quantity#6234]
Arguments: hashpartitioning(productUuid#6231, plantUuid#6229, 10), ENSURE_REQUIREMENTS, [plan_id=10374]
(1611) Sort
Input [5]: [plantUuid#6229, productUuid#6231, calculationDateTime#6225, storageLocId#6232, quantity#6234]
Arguments: [productUuid#6231 ASC NULLS FIRST, plantUuid#6229 ASC NULLS FIRST], false, 0
(1612) Scan parquet
Output [3]: [product#6237, plant#6238, orderDateTime#6239]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1613) Filter
Input [3]: [product#6237, plant#6238, orderDateTime#6239]
Condition : ((isnotnull(orderDateTime#6239) AND isnotnull(plant#6238)) AND isnotnull(product#6237))
(1614) Exchange
Input [3]: [product#6237, plant#6238, orderDateTime#6239]
Arguments: hashpartitioning(product#6237, plant#6238, 10), REPARTITION_BY_NUM, [plan_id=9329]
(1615) Scan parquet
Output [4]: [plant#6243, product#6244, productionAspect#6246, systemId#6241]
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#6243.internalRefUUID AS _extract_internalRefUUID#9322, product#6244.internalRefUUID AS _extract_internalRefUUID#9325, productionAspect#6246.productMovementPlants.unitOfIssue.code AS _extract_code#9323, productionAspect#6246.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9324]
Input [4]: [plant#6243, product#6244, productionAspect#6246, systemId#6241]
(1617) Exchange
Input [4]: [_extract_internalRefUUID#9322, _extract_internalRefUUID#9325, _extract_code#9323, _extract_internalRefUUID#9324]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8232]
(1618) Project
Output [4]: [_extract_code#9323, _extract_internalRefUUID#9324, _extract_internalRefUUID#9325, _extract_internalRefUUID#9322]
Input [4]: [_extract_internalRefUUID#9322, _extract_internalRefUUID#9325, _extract_code#9323, _extract_internalRefUUID#9324]
(1619) BroadcastExchange
Input [4]: [_extract_code#9323, _extract_internalRefUUID#9324, _extract_internalRefUUID#9325, _extract_internalRefUUID#9322]
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=10357]
(1620) BroadcastHashJoin
Left keys [4]: [coalesce(product#6237, ), isnull(product#6237), coalesce(plant#6238, ), isnull(plant#6238)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9325, ), isnull(_extract_internalRefUUID#9325), coalesce(_extract_internalRefUUID#9322, ), isnull(_extract_internalRefUUID#9322)]
Join type: LeftOuter
Join condition: None
(1621) Project
Output [5]: [product#6237, plant#6238, orderDateTime#6239, _extract_code#9323, _extract_internalRefUUID#9324]
Input [7]: [product#6237, plant#6238, orderDateTime#6239, _extract_code#9323, _extract_internalRefUUID#9324, _extract_internalRefUUID#9325, _extract_internalRefUUID#9322]
(1622) Scan parquet
Output [2]: [internalUUID#6251, systemId#6250]
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#6251]
Input [2]: [internalUUID#6251, systemId#6250]
(1624) Exchange
Input [1]: [internalUUID#6251]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8238]
(1625) BroadcastExchange
Input [1]: [internalUUID#6251]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10361]
(1626) BroadcastHashJoin
Left keys [2]: [coalesce(plant#6238, ), isnull(plant#6238)]
Right keys [2]: [coalesce(internalUUID#6251, ), isnull(internalUUID#6251)]
Join type: LeftOuter
Join condition: None
(1627) Project
Output [5]: [product#6237, plant#6238, orderDateTime#6239, _extract_code#9323, _extract_internalRefUUID#9324]
Input [6]: [product#6237, plant#6238, orderDateTime#6239, _extract_code#9323, _extract_internalRefUUID#9324, internalUUID#6251]
(1628) Scan parquet
Output [4]: [internalUUID#6265, baseUnitOfMeasure#6269, unitOfMeasureConversions#6271, systemId#6264]
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#6265, baseUnitOfMeasure#6269, unitOfMeasureConversions#6271, systemId#6264]
Condition : isnotnull(internalUUID#6265)
(1630) Project
Output [3]: [internalUUID#6265, baseUnitOfMeasure#6269, unitOfMeasureConversions#6271]
Input [4]: [internalUUID#6265, baseUnitOfMeasure#6269, unitOfMeasureConversions#6271, systemId#6264]
(1631) Exchange
Input [3]: [internalUUID#6265, baseUnitOfMeasure#6269, unitOfMeasureConversions#6271]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8244]
(1632) BroadcastExchange
Input [3]: [internalUUID#6265, baseUnitOfMeasure#6269, unitOfMeasureConversions#6271]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10365]
(1633) BroadcastHashJoin
Left keys [1]: [product#6237]
Right keys [1]: [internalUUID#6265]
Join type: LeftOuter
Join condition: None
(1634) Project
Output [4]: [product#6237, plant#6238, orderDateTime#6239, filter(unitOfMeasureConversions#6271, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9323) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9324)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6269.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6269.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6276]
Input [8]: [product#6237, plant#6238, orderDateTime#6239, _extract_code#9323, _extract_internalRefUUID#9324, internalUUID#6265, baseUnitOfMeasure#6269, unitOfMeasureConversions#6271]
(1635) Generate
Input [4]: [product#6237, plant#6238, orderDateTime#6239, filteredUnitOfMeasureConversions#6276]
Arguments: explode(filteredUnitOfMeasureConversions#6276.quantityNumerator), [product#6237, plant#6238, orderDateTime#6239, filteredUnitOfMeasureConversions#6276], true, [quantityNumerator#6277]
(1636) Project
Output [4]: [product#6237, plant#6238, orderDateTime#6239, filteredUnitOfMeasureConversions#6276.quantityDenominator AS _extract_quantityDenominator#8656]
Input [5]: [product#6237, plant#6238, orderDateTime#6239, filteredUnitOfMeasureConversions#6276, quantityNumerator#6277]
(1637) Generate
Input [4]: [product#6237, plant#6238, orderDateTime#6239, _extract_quantityDenominator#8656]
Arguments: explode(_extract_quantityDenominator#8656), [product#6237, plant#6238, orderDateTime#6239], true, [quantityDenominator#6278]
(1638) Project
Output [3]: [product#6237, plant#6238, orderDateTime#6239]
Input [4]: [product#6237, plant#6238, orderDateTime#6239, quantityDenominator#6278]
(1639) Sort
Input [3]: [product#6237, plant#6238, orderDateTime#6239]
Arguments: [product#6237 ASC NULLS FIRST, plant#6238 ASC NULLS FIRST], false, 0
(1640) SortMergeJoin
Left keys [2]: [productUuid#6231, plantUuid#6229]
Right keys [2]: [product#6237, plant#6238]
Join type: Inner
Join condition: (calculationDateTime#6225 <= orderDateTime#6239)
(1641) Project
Output [5]: [plantUuid#6229 AS plant#6281, productUuid#6231 AS product#6282, storageLocId#6232, calculationDateTime#6225, quantity#6234]
Input [8]: [plantUuid#6229, productUuid#6231, calculationDateTime#6225, storageLocId#6232, quantity#6234, product#6237, plant#6238, orderDateTime#6239]
(1642) Exchange
Input [5]: [plant#6281, product#6282, storageLocId#6232, calculationDateTime#6225, quantity#6234]
Arguments: hashpartitioning(coalesce(plant#6281, ), isnull(plant#6281), coalesce(product#6282, ), isnull(product#6282), coalesce(storageLocId#6232, ), isnull(storageLocId#6232), coalesce(calculationDateTime#6225, 1970-01-01 00:00:00), isnull(calculationDateTime#6225), 10), ENSURE_REQUIREMENTS, [plan_id=10438]
(1643) Sort
Input [5]: [plant#6281, product#6282, storageLocId#6232, calculationDateTime#6225, quantity#6234]
Arguments: [coalesce(plant#6281, ) ASC NULLS FIRST, isnull(plant#6281) ASC NULLS FIRST, coalesce(product#6282, ) ASC NULLS FIRST, isnull(product#6282) ASC NULLS FIRST, coalesce(storageLocId#6232, ) ASC NULLS FIRST, isnull(storageLocId#6232) ASC NULLS FIRST, coalesce(calculationDateTime#6225, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#6225) ASC NULLS FIRST], false, 0
(1644) Scan parquet
Output [6]: [internalUUID#6284, product#6285, plant#6286, calculationDateTime#6287, stockQuantities#6288, systemId#6283]
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#6284, product#6285, plant#6286, calculationDateTime#6287, stockQuantities#6288, systemId#6283]
Condition : (isnotnull(plant#6286.internalRefUUID) AND isnotnull(product#6285.internalRefUUID))
(1646) Project
Output [6]: [systemId#6283, internalUUID#6284, product#6285, plant#6286, calculationDateTime#6287, stockQuantities#6288]
Input [6]: [internalUUID#6284, product#6285, plant#6286, calculationDateTime#6287, stockQuantities#6288, systemId#6283]
(1647) Exchange
Input [6]: [systemId#6283, internalUUID#6284, product#6285, plant#6286, calculationDateTime#6287, stockQuantities#6288]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8256]
(1648) BroadcastExchange
Input [6]: [systemId#6283, internalUUID#6284, product#6285, plant#6286, calculationDateTime#6287, stockQuantities#6288]
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=10403]
(1649) Scan parquet
Output [2]: [marketUnit#6289, distributionCenters#6295]
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#6289, distributionCenters#6295]
Condition : (((marketUnit#6289 <=> DIP_1691) AND (size(distributionCenters#6295, true) > 0)) AND isnotnull(distributionCenters#6295))
(1651) Project
Output [1]: [distributionCenters#6295]
Input [2]: [marketUnit#6289, distributionCenters#6295]
(1652) Exchange
Input [1]: [distributionCenters#6295]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8260]
(1653) Generate
Input [1]: [distributionCenters#6295]
Arguments: explode(distributionCenters#6295), false, [distributionCenters#6311]
(1654) Filter
Input [1]: [distributionCenters#6311]
Condition : (((size(distributionCenters#6311.storageLocations, true) > 0) AND isnotnull(distributionCenters#6311.storageLocations)) AND isnotnull(distributionCenters#6311.internalRefUUID))
(1655) Project
Output [2]: [distributionCenters#6311.internalRefUUID AS _extract_internalRefUUID#8660, distributionCenters#6311.storageLocations AS _extract_storageLocations#8661]
Input [1]: [distributionCenters#6311]
(1656) Generate
Input [2]: [_extract_internalRefUUID#8660, _extract_storageLocations#8661]
Arguments: explode(_extract_storageLocations#8661), [_extract_internalRefUUID#8660], false, [storageLocations#6312]
(1657) Project
Output [3]: [_extract_internalRefUUID#8660 AS plantUuid#6314, storageLocations#6312.id AS storageLocId#6315, storageLocations#6312.internalRefUUID AS storageLocUuid#6316]
Input [2]: [_extract_internalRefUUID#8660, storageLocations#6312]
(1658) BroadcastExchange
Input [3]: [plantUuid#6314, storageLocId#6315, storageLocUuid#6316]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10399]
(1659) Scan parquet
Output [2]: [product#6317, plant#6318]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1660) Filter
Input [2]: [product#6317, plant#6318]
Condition : isnotnull(plant#6318)
(1661) Exchange
Input [2]: [product#6317, plant#6318]
Arguments: hashpartitioning(product#6317, plant#6318, 10), REPARTITION_BY_NUM, [plan_id=9342]
(1662) Scan parquet
Output [4]: [plant#6323, product#6324, productionAspect#6326, systemId#6321]
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#6323.internalRefUUID AS _extract_internalRefUUID#9326, product#6324.internalRefUUID AS _extract_internalRefUUID#9327, productionAspect#6326.productMovementPlants.unitOfIssue.code AS _extract_code#9328, productionAspect#6326.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9329]
Input [4]: [plant#6323, product#6324, productionAspect#6326, systemId#6321]
(1664) Exchange
Input [4]: [_extract_internalRefUUID#9326, _extract_internalRefUUID#9327, _extract_code#9328, _extract_internalRefUUID#9329]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8272]
(1665) Project
Output [4]: [_extract_code#9328, _extract_internalRefUUID#9329, _extract_internalRefUUID#9327, _extract_internalRefUUID#9326]
Input [4]: [_extract_internalRefUUID#9326, _extract_internalRefUUID#9327, _extract_code#9328, _extract_internalRefUUID#9329]
(1666) BroadcastExchange
Input [4]: [_extract_code#9328, _extract_internalRefUUID#9329, _extract_internalRefUUID#9327, _extract_internalRefUUID#9326]
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=10379]
(1667) BroadcastHashJoin
Left keys [4]: [coalesce(product#6317, ), isnull(product#6317), coalesce(plant#6318, ), isnull(plant#6318)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9327, ), isnull(_extract_internalRefUUID#9327), coalesce(_extract_internalRefUUID#9326, ), isnull(_extract_internalRefUUID#9326)]
Join type: LeftOuter
Join condition: None
(1668) Project
Output [4]: [product#6317, plant#6318, _extract_code#9328, _extract_internalRefUUID#9329]
Input [6]: [product#6317, plant#6318, _extract_code#9328, _extract_internalRefUUID#9329, _extract_internalRefUUID#9327, _extract_internalRefUUID#9326]
(1669) Scan parquet
Output [2]: [internalUUID#6331, systemId#6330]
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#6331]
Input [2]: [internalUUID#6331, systemId#6330]
(1671) Exchange
Input [1]: [internalUUID#6331]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8278]
(1672) BroadcastExchange
Input [1]: [internalUUID#6331]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10383]
(1673) BroadcastHashJoin
Left keys [2]: [coalesce(plant#6318, ), isnull(plant#6318)]
Right keys [2]: [coalesce(internalUUID#6331, ), isnull(internalUUID#6331)]
Join type: LeftOuter
Join condition: None
(1674) Project
Output [4]: [product#6317, plant#6318, _extract_code#9328, _extract_internalRefUUID#9329]
Input [5]: [product#6317, plant#6318, _extract_code#9328, _extract_internalRefUUID#9329, internalUUID#6331]
(1675) Scan parquet
Output [4]: [internalUUID#6345, baseUnitOfMeasure#6349, unitOfMeasureConversions#6351, systemId#6344]
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#6345, baseUnitOfMeasure#6349, unitOfMeasureConversions#6351, systemId#6344]
Condition : isnotnull(internalUUID#6345)
(1677) Project
Output [3]: [internalUUID#6345, baseUnitOfMeasure#6349, unitOfMeasureConversions#6351]
Input [4]: [internalUUID#6345, baseUnitOfMeasure#6349, unitOfMeasureConversions#6351, systemId#6344]
(1678) Exchange
Input [3]: [internalUUID#6345, baseUnitOfMeasure#6349, unitOfMeasureConversions#6351]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8284]
(1679) BroadcastExchange
Input [3]: [internalUUID#6345, baseUnitOfMeasure#6349, unitOfMeasureConversions#6351]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10387]
(1680) BroadcastHashJoin
Left keys [1]: [product#6317]
Right keys [1]: [internalUUID#6345]
Join type: LeftOuter
Join condition: None
(1681) Project
Output [2]: [plant#6318, filter(unitOfMeasureConversions#6351, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9328) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9329)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6349.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6349.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6356]
Input [7]: [product#6317, plant#6318, _extract_code#9328, _extract_internalRefUUID#9329, internalUUID#6345, baseUnitOfMeasure#6349, unitOfMeasureConversions#6351]
(1682) Generate
Input [2]: [plant#6318, filteredUnitOfMeasureConversions#6356]
Arguments: explode(filteredUnitOfMeasureConversions#6356.quantityNumerator), [plant#6318, filteredUnitOfMeasureConversions#6356], true, [quantityNumerator#6357]
(1683) Project
Output [2]: [plant#6318, filteredUnitOfMeasureConversions#6356.quantityDenominator AS _extract_quantityDenominator#8662]
Input [3]: [plant#6318, filteredUnitOfMeasureConversions#6356, quantityNumerator#6357]
(1684) Generate
Input [2]: [plant#6318, _extract_quantityDenominator#8662]
Arguments: explode(_extract_quantityDenominator#8662), [plant#6318], true, [quantityDenominator#6358]
(1685) Project
Output [1]: [plant#6318]
Input [2]: [plant#6318, quantityDenominator#6358]
(1686) HashAggregate
Input [1]: [plant#6318]
Keys [1]: [plant#6318]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#6318]
(1687) Exchange
Input [1]: [plant#6318]
Arguments: hashpartitioning(plant#6318, 10), ENSURE_REQUIREMENTS, [plan_id=10396]
(1688) HashAggregate
Input [1]: [plant#6318]
Keys [1]: [plant#6318]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#6318]
(1689) BroadcastHashJoin
Left keys [1]: [plantUuid#6314]
Right keys [1]: [plant#6318]
Join type: Inner
Join condition: None
(1690) Project
Output [3]: [plantUuid#6314, storageLocId#6315, storageLocUuid#6316]
Input [4]: [plantUuid#6314, storageLocId#6315, storageLocUuid#6316, plant#6318]
(1691) BroadcastHashJoin
Left keys [2]: [coalesce(plant#6286.internalRefUUID, ), isnull(plant#6286.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#6314, ), isnull(plantUuid#6314)]
Join type: Inner
Join condition: None
(1692) Generate
Input [9]: [systemId#6283, internalUUID#6284, product#6285, plant#6286, calculationDateTime#6287, stockQuantities#6288, plantUuid#6314, storageLocId#6315, storageLocUuid#6316]
Arguments: explode(filter(stockQuantities#6288, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#6316) AND (lambda x#1207.storageLocation.Id = storageLocId#6315)), lambda x#1207, false))), [systemId#6283, internalUUID#6284, product#6285, plant#6286, calculationDateTime#6287, plantUuid#6314], false, [stockQuantity#6361]
(1693) ObjectHashAggregate
Input [7]: [systemId#6283, internalUUID#6284, product#6285, plant#6286, calculationDateTime#6287, plantUuid#6314, stockQuantity#6361]
Keys [5]: [plantUuid#6314, internalUUID#6284, plant#6286, product#6285, systemId#6283]
Functions [2]: [partial_first(calculationDateTime#6287, false), partial_collect_list(stockQuantity#6361, 0, 0)]
Aggregate Attributes [3]: [first#10366, valueSet#10367, buf#10368]
Results [8]: [plantUuid#6314, internalUUID#6284, plant#6286, product#6285, systemId#6283, first#10369, valueSet#10370, buf#10371]
(1694) ObjectHashAggregate
Input [8]: [plantUuid#6314, internalUUID#6284, plant#6286, product#6285, systemId#6283, first#10369, valueSet#10370, buf#10371]
Keys [5]: [plantUuid#6314, internalUUID#6284, plant#6286, product#6285, systemId#6283]
Functions [2]: [first(calculationDateTime#6287, false), collect_list(stockQuantity#6361, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#6287)()#1222, collect_list(stockQuantity#6361, 0, 0)#1223]
Results [4]: [product#6285, plant#6286, first(calculationDateTime#6287)()#1222 AS calculationDateTime#6362, collect_list(stockQuantity#6361, 0, 0)#1223 AS stockQuantities#6363]
(1695) Filter
Input [4]: [product#6285, plant#6286, calculationDateTime#6362, stockQuantities#6363]
Condition : ((size(stockQuantities#6363, true) > 0) AND isnotnull(calculationDateTime#6362))
(1696) Generate
Input [4]: [product#6285, plant#6286, calculationDateTime#6362, stockQuantities#6363]
Arguments: explode(stockQuantities#6363), [product#6285, plant#6286, calculationDateTime#6362], false, [stockQuantity#6364]
(1697) Filter
Input [4]: [product#6285, plant#6286, calculationDateTime#6362, stockQuantity#6364]
Condition : (((isnotnull(stockQuantity#6364.specialStockIndicator.code) AND isnotnull(stockQuantity#6364.stockType.code)) AND (stockQuantity#6364.specialStockIndicator.code = )) AND (stockQuantity#6364.stockType.code = 01))
(1698) Project
Output [4]: [plant#6286.internalRefUUID AS plantUuid#6366, product#6285.internalRefUUID AS productUuid#6368, calculationDateTime#6362, stockQuantity#6364.storagelocation.id AS storageLocId#6369]
Input [4]: [product#6285, plant#6286, calculationDateTime#6362, stockQuantity#6364]
(1699) Exchange
Input [4]: [plantUuid#6366, productUuid#6368, calculationDateTime#6362, storageLocId#6369]
Arguments: hashpartitioning(productUuid#6368, plantUuid#6366, 10), ENSURE_REQUIREMENTS, [plan_id=10429]
(1700) Sort
Input [4]: [plantUuid#6366, productUuid#6368, calculationDateTime#6362, storageLocId#6369]
Arguments: [productUuid#6368 ASC NULLS FIRST, plantUuid#6366 ASC NULLS FIRST], false, 0
(1701) Scan parquet
Output [3]: [product#6374, plant#6375, orderDateTime#6376]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1702) Filter
Input [3]: [product#6374, plant#6375, orderDateTime#6376]
Condition : ((isnotnull(orderDateTime#6376) AND isnotnull(plant#6375)) AND isnotnull(product#6374))
(1703) Exchange
Input [3]: [product#6374, plant#6375, orderDateTime#6376]
Arguments: hashpartitioning(product#6374, plant#6375, 10), REPARTITION_BY_NUM, [plan_id=9365]
(1704) Scan parquet
Output [4]: [plant#6380, product#6381, productionAspect#6383, systemId#6378]
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#6380.internalRefUUID AS _extract_internalRefUUID#9330, product#6381.internalRefUUID AS _extract_internalRefUUID#9331, productionAspect#6383.productMovementPlants.unitOfIssue.code AS _extract_code#9332, productionAspect#6383.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9333]
Input [4]: [plant#6380, product#6381, productionAspect#6383, systemId#6378]
(1706) Exchange
Input [4]: [_extract_internalRefUUID#9330, _extract_internalRefUUID#9331, _extract_code#9332, _extract_internalRefUUID#9333]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8309]
(1707) Project
Output [4]: [_extract_code#9332, _extract_internalRefUUID#9333, _extract_internalRefUUID#9331, _extract_internalRefUUID#9330]
Input [4]: [_extract_internalRefUUID#9330, _extract_internalRefUUID#9331, _extract_code#9332, _extract_internalRefUUID#9333]
(1708) BroadcastExchange
Input [4]: [_extract_code#9332, _extract_internalRefUUID#9333, _extract_internalRefUUID#9331, _extract_internalRefUUID#9330]
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=10412]
(1709) BroadcastHashJoin
Left keys [4]: [coalesce(product#6374, ), isnull(product#6374), coalesce(plant#6375, ), isnull(plant#6375)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9331, ), isnull(_extract_internalRefUUID#9331), coalesce(_extract_internalRefUUID#9330, ), isnull(_extract_internalRefUUID#9330)]
Join type: LeftOuter
Join condition: None
(1710) Project
Output [5]: [product#6374, plant#6375, orderDateTime#6376, _extract_code#9332, _extract_internalRefUUID#9333]
Input [7]: [product#6374, plant#6375, orderDateTime#6376, _extract_code#9332, _extract_internalRefUUID#9333, _extract_internalRefUUID#9331, _extract_internalRefUUID#9330]
(1711) Scan parquet
Output [2]: [internalUUID#6388, systemId#6387]
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#6388]
Input [2]: [internalUUID#6388, systemId#6387]
(1713) Exchange
Input [1]: [internalUUID#6388]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8315]
(1714) BroadcastExchange
Input [1]: [internalUUID#6388]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10416]
(1715) BroadcastHashJoin
Left keys [2]: [coalesce(plant#6375, ), isnull(plant#6375)]
Right keys [2]: [coalesce(internalUUID#6388, ), isnull(internalUUID#6388)]
Join type: LeftOuter
Join condition: None
(1716) Project
Output [5]: [product#6374, plant#6375, orderDateTime#6376, _extract_code#9332, _extract_internalRefUUID#9333]
Input [6]: [product#6374, plant#6375, orderDateTime#6376, _extract_code#9332, _extract_internalRefUUID#9333, internalUUID#6388]
(1717) Scan parquet
Output [4]: [internalUUID#6402, baseUnitOfMeasure#6406, unitOfMeasureConversions#6408, systemId#6401]
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#6402, baseUnitOfMeasure#6406, unitOfMeasureConversions#6408, systemId#6401]
Condition : isnotnull(internalUUID#6402)
(1719) Project
Output [3]: [internalUUID#6402, baseUnitOfMeasure#6406, unitOfMeasureConversions#6408]
Input [4]: [internalUUID#6402, baseUnitOfMeasure#6406, unitOfMeasureConversions#6408, systemId#6401]
(1720) Exchange
Input [3]: [internalUUID#6402, baseUnitOfMeasure#6406, unitOfMeasureConversions#6408]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8321]
(1721) BroadcastExchange
Input [3]: [internalUUID#6402, baseUnitOfMeasure#6406, unitOfMeasureConversions#6408]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10420]
(1722) BroadcastHashJoin
Left keys [1]: [product#6374]
Right keys [1]: [internalUUID#6402]
Join type: LeftOuter
Join condition: None
(1723) Project
Output [4]: [product#6374, plant#6375, orderDateTime#6376, filter(unitOfMeasureConversions#6408, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9332) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9333)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6406.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6406.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6413]
Input [8]: [product#6374, plant#6375, orderDateTime#6376, _extract_code#9332, _extract_internalRefUUID#9333, internalUUID#6402, baseUnitOfMeasure#6406, unitOfMeasureConversions#6408]
(1724) Generate
Input [4]: [product#6374, plant#6375, orderDateTime#6376, filteredUnitOfMeasureConversions#6413]
Arguments: explode(filteredUnitOfMeasureConversions#6413.quantityNumerator), [product#6374, plant#6375, orderDateTime#6376, filteredUnitOfMeasureConversions#6413], true, [quantityNumerator#6414]
(1725) Project
Output [4]: [product#6374, plant#6375, orderDateTime#6376, filteredUnitOfMeasureConversions#6413.quantityDenominator AS _extract_quantityDenominator#8666]
Input [5]: [product#6374, plant#6375, orderDateTime#6376, filteredUnitOfMeasureConversions#6413, quantityNumerator#6414]
(1726) Generate
Input [4]: [product#6374, plant#6375, orderDateTime#6376, _extract_quantityDenominator#8666]
Arguments: explode(_extract_quantityDenominator#8666), [product#6374, plant#6375, orderDateTime#6376], true, [quantityDenominator#6415]
(1727) Project
Output [3]: [product#6374, plant#6375, orderDateTime#6376]
Input [4]: [product#6374, plant#6375, orderDateTime#6376, quantityDenominator#6415]
(1728) Sort
Input [3]: [product#6374, plant#6375, orderDateTime#6376]
Arguments: [product#6374 ASC NULLS FIRST, plant#6375 ASC NULLS FIRST], false, 0
(1729) SortMergeJoin
Left keys [2]: [productUuid#6368, plantUuid#6366]
Right keys [2]: [product#6374, plant#6375]
Join type: Inner
Join condition: (calculationDateTime#6362 <= orderDateTime#6376)
(1730) Project
Output [4]: [plantUuid#6366 AS plant#6418, productUuid#6368 AS product#6419, storageLocId#6369, calculationDateTime#6362]
Input [7]: [plantUuid#6366, productUuid#6368, calculationDateTime#6362, storageLocId#6369, product#6374, plant#6375, orderDateTime#6376]
(1731) HashAggregate
Input [4]: [plant#6418, product#6419, storageLocId#6369, calculationDateTime#6362]
Keys [3]: [plant#6418, product#6419, storageLocId#6369]
Functions [1]: [partial_max(calculationDateTime#6362)]
Aggregate Attributes [1]: [max#10364]
Results [4]: [plant#6418, product#6419, storageLocId#6369, max#10365]
(1732) HashAggregate
Input [4]: [plant#6418, product#6419, storageLocId#6369, max#10365]
Keys [3]: [plant#6418, product#6419, storageLocId#6369]
Functions [1]: [max(calculationDateTime#6362)]
Aggregate Attributes [1]: [max(calculationDateTime#6362)#1300]
Results [4]: [plant#6418, product#6419, storageLocId#6369, max(calculationDateTime#6362)#1300 AS max_calc_datetime#6420]
(1733) Exchange
Input [4]: [plant#6418, product#6419, storageLocId#6369, max_calc_datetime#6420]
Arguments: hashpartitioning(coalesce(plant#6418, ), isnull(plant#6418), coalesce(product#6419, ), isnull(product#6419), coalesce(storageLocId#6369, ), isnull(storageLocId#6369), coalesce(max_calc_datetime#6420, 1970-01-01 00:00:00), isnull(max_calc_datetime#6420), 10), ENSURE_REQUIREMENTS, [plan_id=10439]
(1734) Sort
Input [4]: [plant#6418, product#6419, storageLocId#6369, max_calc_datetime#6420]
Arguments: [coalesce(plant#6418, ) ASC NULLS FIRST, isnull(plant#6418) ASC NULLS FIRST, coalesce(product#6419, ) ASC NULLS FIRST, isnull(product#6419) ASC NULLS FIRST, coalesce(storageLocId#6369, ) ASC NULLS FIRST, isnull(storageLocId#6369) ASC NULLS FIRST, coalesce(max_calc_datetime#6420, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#6420) ASC NULLS FIRST], false, 0
(1735) SortMergeJoin
Left keys [8]: [coalesce(plant#6281, ), isnull(plant#6281), coalesce(product#6282, ), isnull(product#6282), coalesce(storageLocId#6232, ), isnull(storageLocId#6232), coalesce(calculationDateTime#6225, 1970-01-01 00:00:00), isnull(calculationDateTime#6225)]
Right keys [8]: [coalesce(plant#6418, ), isnull(plant#6418), coalesce(product#6419, ), isnull(product#6419), coalesce(storageLocId#6369, ), isnull(storageLocId#6369), coalesce(max_calc_datetime#6420, 1970-01-01 00:00:00), isnull(max_calc_datetime#6420)]
Join type: Inner
Join condition: None
(1736) Project
Output [4]: [plant#6281, product#6282, calculationDateTime#6225, quantity#6234]
Input [9]: [plant#6281, product#6282, storageLocId#6232, calculationDateTime#6225, quantity#6234, plant#6418, product#6419, storageLocId#6369, max_calc_datetime#6420]
(1737) HashAggregate
Input [4]: [plant#6281, product#6282, calculationDateTime#6225, quantity#6234]
Keys [2]: [product#6282, plant#6281]
Functions [2]: [partial_min(calculationDateTime#6225), partial_sum(quantity#6234)]
Aggregate Attributes [2]: [min#10354, sum#10355]
Results [4]: [product#6282, plant#6281, min#10356, sum#10357]
(1738) Exchange
Input [4]: [product#6282, plant#6281, min#10356, sum#10357]
Arguments: hashpartitioning(product#6282, plant#6281, 10), ENSURE_REQUIREMENTS, [plan_id=10446]
(1739) HashAggregate
Input [4]: [product#6282, plant#6281, min#10356, sum#10357]
Keys [2]: [product#6282, plant#6281]
Functions [2]: [min(calculationDateTime#6225), sum(quantity#6234)]
Aggregate Attributes [2]: [min(calculationDateTime#6225)#1456, sum(quantity#6234)#1455]
Results [4]: [product#6282, plant#6281, min(calculationDateTime#6225)#1456 AS minCalculationDateTime#6422, round(sum(quantity#6234)#1455, 0) AS roundedQuantitySum#6423]
(1740) Sort
Input [4]: [product#6282, plant#6281, minCalculationDateTime#6422, roundedQuantitySum#6423]
Arguments: [product#6282 ASC NULLS FIRST, plant#6281 ASC NULLS FIRST], false, 0
(1741) SortMergeJoin
Left keys [2]: [product#6102, plant#6103]
Right keys [2]: [product#6282, plant#6281]
Join type: LeftOuter
Join condition: None
(1742) Project
Output [8]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, CASE WHEN isnotnull(minCalculationDateTime#6422) THEN minCalculationDateTime#6422 ELSE orderDateTime#6104 END AS stockDatetime#6424, CASE WHEN isnotnull(roundedQuantitySum#6423) THEN array(roundedQuantitySum#6423) ELSE [0.0] END AS stockBatchQuantities#6425]
Input [10]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, product#6282, plant#6281, minCalculationDateTime#6422, roundedQuantitySum#6423]
(1743) Exchange
Input [8]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425]
Arguments: hashpartitioning(coalesce(plant#6103, ), isnull(plant#6103), coalesce(product#6102, ), isnull(product#6102), 10), ENSURE_REQUIREMENTS, [plan_id=10610]
(1744) Sort
Input [8]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425]
Arguments: [coalesce(plant#6103, ) ASC NULLS FIRST, isnull(plant#6103) ASC NULLS FIRST, coalesce(product#6102, ) ASC NULLS FIRST, isnull(product#6102) ASC NULLS FIRST], false, 0
(1745) Scan parquet
Output [3]: [product#6427, plant#6428, orderDateTime#6429]
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/10000000004/shardId=0_1_10000000004]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1746) Exchange
Input [3]: [product#6427, plant#6428, orderDateTime#6429]
Arguments: hashpartitioning(product#6427, plant#6428, 10), REPARTITION_BY_NUM, [plan_id=8339]
(1747) Scan parquet
Output [8]: [internalUUID#6432, plant#6433, product#6434, blockedForReplenishmentStartingFrom#6435, productionAspect#6436, salesPlant#6437, listing#6438, systemId#6431]
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#6431, internalUUID#6432, plant#6433, product#6434, blockedForReplenishmentStartingFrom#6435, productionAspect#6436, salesPlant#6437, listing#6438]
Input [8]: [internalUUID#6432, plant#6433, product#6434, blockedForReplenishmentStartingFrom#6435, productionAspect#6436, salesPlant#6437, listing#6438, systemId#6431]
(1749) Exchange
Input [8]: [systemId#6431, internalUUID#6432, plant#6433, product#6434, blockedForReplenishmentStartingFrom#6435, productionAspect#6436, salesPlant#6437, listing#6438]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8342]
(1750) Project
Output [1]: [struct(systemId, systemId#6431, internalUUID, internalUUID#6432, plant, plant#6433, product, product#6434, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#6435, productionAspect, productionAspect#6436, salesPlant, salesPlant#6437, listing, listing#6438) AS productPlant#6439]
Input [8]: [systemId#6431, internalUUID#6432, plant#6433, product#6434, blockedForReplenishmentStartingFrom#6435, productionAspect#6436, salesPlant#6437, listing#6438]
(1751) BroadcastExchange
Input [1]: [productPlant#6439]
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=10454]
(1752) BroadcastHashJoin
Left keys [4]: [coalesce(product#6427, ), isnull(product#6427), coalesce(plant#6428, ), isnull(plant#6428)]
Right keys [4]: [coalesce(productPlant#6439.product.internalRefUUID, ), isnull(productPlant#6439.product.internalRefUUID), coalesce(productPlant#6439.plant.internalRefUUID, ), isnull(productPlant#6439.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1753) Scan parquet
Output [3]: [internalUUID#6441, address#6447, systemId#6440]
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#6441, address#6447.timeZone.code AS timezonecode#6452]
Input [3]: [internalUUID#6441, address#6447, systemId#6440]
(1755) Exchange
Input [2]: [internalUUID#6441, timezonecode#6452]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8347]
(1756) BroadcastExchange
Input [2]: [internalUUID#6441, timezonecode#6452]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10457]
(1757) BroadcastHashJoin
Left keys [2]: [coalesce(plant#6428, ), isnull(plant#6428)]
Right keys [2]: [coalesce(internalUUID#6441, ), isnull(internalUUID#6441)]
Join type: LeftOuter
Join condition: None
(1758) Project
Output [5]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, CASE WHEN isnotnull(timezonecode#6452) THEN timezonecode#6452 ELSE UTC END AS timezonecode#6453]
Input [6]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, internalUUID#6441, timezonecode#6452]
(1759) Scan parquet
Output [4]: [internalUUID#6455, baseUnitOfMeasure#6459, unitOfMeasureConversions#6461, systemId#6454]
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#6455, baseUnitOfMeasure#6459, unitOfMeasureConversions#6461, systemId#6454]
Condition : isnotnull(internalUUID#6455)
(1761) Project
Output [3]: [internalUUID#6455, baseUnitOfMeasure#6459, unitOfMeasureConversions#6461]
Input [4]: [internalUUID#6455, baseUnitOfMeasure#6459, unitOfMeasureConversions#6461, systemId#6454]
(1762) Exchange
Input [3]: [internalUUID#6455, baseUnitOfMeasure#6459, unitOfMeasureConversions#6461]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8353]
(1763) BroadcastExchange
Input [3]: [internalUUID#6455, baseUnitOfMeasure#6459, unitOfMeasureConversions#6461]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10461]
(1764) BroadcastHashJoin
Left keys [1]: [product#6427]
Right keys [1]: [internalUUID#6455]
Join type: LeftOuter
Join condition: None
(1765) Project
Output [6]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, filter(unitOfMeasureConversions#6461, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#6439.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#6439.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6459.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6459.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6466]
Input [8]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, internalUUID#6455, baseUnitOfMeasure#6459, unitOfMeasureConversions#6461]
(1766) Project
Output [7]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, filteredUnitOfMeasureConversions#6466.quantityDenominator AS _extract_quantityDenominator#8884, filteredUnitOfMeasureConversions#6466.quantityNumerator AS _extract_quantityNumerator#8885]
Input [6]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, filteredUnitOfMeasureConversions#6466]
(1767) Generate
Input [7]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, _extract_quantityDenominator#8884, _extract_quantityNumerator#8885]
Arguments: explode(_extract_quantityNumerator#8885), [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, _extract_quantityDenominator#8884], true, [quantityNumerator#6467]
(1768) Generate
Input [7]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, _extract_quantityDenominator#8884, quantityNumerator#6467]
Arguments: explode(_extract_quantityDenominator#8884), [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, quantityNumerator#6467], true, [quantityDenominator#6468]
(1769) Project
Output [6]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, (cast(quantityNumerator#6467 as double) / cast(quantityDenominator#6468 as double)) AS outboundUnit#6469]
Input [7]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, quantityNumerator#6467, quantityDenominator#6468]
(1770) Project
Output [6]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, CASE WHEN (isnull(outboundUnit#6469) OR (outboundUnit#6469 <= 0.0)) THEN 1.0 ELSE outboundUnit#6469 END AS outboundUnit#6470]
Input [6]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6469]
(1771) Sort
Input [6]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6470]
Arguments: [product#6427 ASC NULLS FIRST, plant#6428 ASC NULLS FIRST], false, 0
(1772) Scan parquet
Output [6]: [internalUUID#6472, product#6473, plant#6474, calculationDateTime#6475, stockQuantities#6476, systemId#6471]
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#6472, product#6473, plant#6474, calculationDateTime#6475, stockQuantities#6476, systemId#6471]
Condition : (isnotnull(plant#6474.internalRefUUID) AND isnotnull(product#6473.internalRefUUID))
(1774) Project
Output [6]: [systemId#6471, internalUUID#6472, product#6473, plant#6474, calculationDateTime#6475, stockQuantities#6476]
Input [6]: [internalUUID#6472, product#6473, plant#6474, calculationDateTime#6475, stockQuantities#6476, systemId#6471]
(1775) Exchange
Input [6]: [systemId#6471, internalUUID#6472, product#6473, plant#6474, calculationDateTime#6475, stockQuantities#6476]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8364]
(1776) BroadcastExchange
Input [6]: [systemId#6471, internalUUID#6472, product#6473, plant#6474, calculationDateTime#6475, stockQuantities#6476]
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=10493]
(1777) Scan parquet
Output [2]: [marketUnit#6477, distributionCenters#6483]
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#6477, distributionCenters#6483]
Condition : (((marketUnit#6477 <=> DIP_1691) AND (size(distributionCenters#6483, true) > 0)) AND isnotnull(distributionCenters#6483))
(1779) Project
Output [1]: [distributionCenters#6483]
Input [2]: [marketUnit#6477, distributionCenters#6483]
(1780) Exchange
Input [1]: [distributionCenters#6483]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8368]
(1781) Generate
Input [1]: [distributionCenters#6483]
Arguments: explode(distributionCenters#6483), false, [distributionCenters#6499]
(1782) Filter
Input [1]: [distributionCenters#6499]
Condition : (((size(distributionCenters#6499.storageLocations, true) > 0) AND isnotnull(distributionCenters#6499.storageLocations)) AND isnotnull(distributionCenters#6499.internalRefUUID))
(1783) Project
Output [2]: [distributionCenters#6499.internalRefUUID AS _extract_internalRefUUID#8672, distributionCenters#6499.storageLocations AS _extract_storageLocations#8673]
Input [1]: [distributionCenters#6499]
(1784) Generate
Input [2]: [_extract_internalRefUUID#8672, _extract_storageLocations#8673]
Arguments: explode(_extract_storageLocations#8673), [_extract_internalRefUUID#8672], false, [storageLocations#6500]
(1785) Project
Output [3]: [_extract_internalRefUUID#8672 AS plantUuid#6502, storageLocations#6500.id AS storageLocId#6503, storageLocations#6500.internalRefUUID AS storageLocUuid#6504]
Input [2]: [_extract_internalRefUUID#8672, storageLocations#6500]
(1786) BroadcastExchange
Input [3]: [plantUuid#6502, storageLocId#6503, storageLocUuid#6504]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10489]
(1787) Scan parquet
Output [2]: [product#6505, plant#6506]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1788) Filter
Input [2]: [product#6505, plant#6506]
Condition : isnotnull(plant#6506)
(1789) Exchange
Input [2]: [product#6505, plant#6506]
Arguments: hashpartitioning(product#6505, plant#6506, 10), REPARTITION_BY_NUM, [plan_id=9386]
(1790) Scan parquet
Output [4]: [plant#6511, product#6512, productionAspect#6514, systemId#6509]
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#6511.internalRefUUID AS _extract_internalRefUUID#9334, product#6512.internalRefUUID AS _extract_internalRefUUID#9335, productionAspect#6514.productMovementPlants.unitOfIssue.code AS _extract_code#9336, productionAspect#6514.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9337]
Input [4]: [plant#6511, product#6512, productionAspect#6514, systemId#6509]
(1792) Exchange
Input [4]: [_extract_internalRefUUID#9334, _extract_internalRefUUID#9335, _extract_code#9336, _extract_internalRefUUID#9337]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8380]
(1793) Project
Output [4]: [_extract_code#9336, _extract_internalRefUUID#9337, _extract_internalRefUUID#9335, _extract_internalRefUUID#9334]
Input [4]: [_extract_internalRefUUID#9334, _extract_internalRefUUID#9335, _extract_code#9336, _extract_internalRefUUID#9337]
(1794) BroadcastExchange
Input [4]: [_extract_code#9336, _extract_internalRefUUID#9337, _extract_internalRefUUID#9335, _extract_internalRefUUID#9334]
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=10469]
(1795) BroadcastHashJoin
Left keys [4]: [coalesce(product#6505, ), isnull(product#6505), coalesce(plant#6506, ), isnull(plant#6506)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9335, ), isnull(_extract_internalRefUUID#9335), coalesce(_extract_internalRefUUID#9334, ), isnull(_extract_internalRefUUID#9334)]
Join type: LeftOuter
Join condition: None
(1796) Project
Output [4]: [product#6505, plant#6506, _extract_code#9336, _extract_internalRefUUID#9337]
Input [6]: [product#6505, plant#6506, _extract_code#9336, _extract_internalRefUUID#9337, _extract_internalRefUUID#9335, _extract_internalRefUUID#9334]
(1797) Scan parquet
Output [2]: [internalUUID#6519, systemId#6518]
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#6519]
Input [2]: [internalUUID#6519, systemId#6518]
(1799) Exchange
Input [1]: [internalUUID#6519]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8386]
(1800) BroadcastExchange
Input [1]: [internalUUID#6519]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10473]
(1801) BroadcastHashJoin
Left keys [2]: [coalesce(plant#6506, ), isnull(plant#6506)]
Right keys [2]: [coalesce(internalUUID#6519, ), isnull(internalUUID#6519)]
Join type: LeftOuter
Join condition: None
(1802) Project
Output [4]: [product#6505, plant#6506, _extract_code#9336, _extract_internalRefUUID#9337]
Input [5]: [product#6505, plant#6506, _extract_code#9336, _extract_internalRefUUID#9337, internalUUID#6519]
(1803) Scan parquet
Output [4]: [internalUUID#6533, baseUnitOfMeasure#6537, unitOfMeasureConversions#6539, systemId#6532]
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#6533, baseUnitOfMeasure#6537, unitOfMeasureConversions#6539, systemId#6532]
Condition : isnotnull(internalUUID#6533)
(1805) Project
Output [3]: [internalUUID#6533, baseUnitOfMeasure#6537, unitOfMeasureConversions#6539]
Input [4]: [internalUUID#6533, baseUnitOfMeasure#6537, unitOfMeasureConversions#6539, systemId#6532]
(1806) Exchange
Input [3]: [internalUUID#6533, baseUnitOfMeasure#6537, unitOfMeasureConversions#6539]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8392]
(1807) BroadcastExchange
Input [3]: [internalUUID#6533, baseUnitOfMeasure#6537, unitOfMeasureConversions#6539]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10477]
(1808) BroadcastHashJoin
Left keys [1]: [product#6505]
Right keys [1]: [internalUUID#6533]
Join type: LeftOuter
Join condition: None
(1809) Project
Output [2]: [plant#6506, filter(unitOfMeasureConversions#6539, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9336) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9337)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6537.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6537.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6544]
Input [7]: [product#6505, plant#6506, _extract_code#9336, _extract_internalRefUUID#9337, internalUUID#6533, baseUnitOfMeasure#6537, unitOfMeasureConversions#6539]
(1810) Generate
Input [2]: [plant#6506, filteredUnitOfMeasureConversions#6544]
Arguments: explode(filteredUnitOfMeasureConversions#6544.quantityNumerator), [plant#6506, filteredUnitOfMeasureConversions#6544], true, [quantityNumerator#6545]
(1811) Project
Output [2]: [plant#6506, filteredUnitOfMeasureConversions#6544.quantityDenominator AS _extract_quantityDenominator#8674]
Input [3]: [plant#6506, filteredUnitOfMeasureConversions#6544, quantityNumerator#6545]
(1812) Generate
Input [2]: [plant#6506, _extract_quantityDenominator#8674]
Arguments: explode(_extract_quantityDenominator#8674), [plant#6506], true, [quantityDenominator#6546]
(1813) Project
Output [1]: [plant#6506]
Input [2]: [plant#6506, quantityDenominator#6546]
(1814) HashAggregate
Input [1]: [plant#6506]
Keys [1]: [plant#6506]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#6506]
(1815) Exchange
Input [1]: [plant#6506]
Arguments: hashpartitioning(plant#6506, 10), ENSURE_REQUIREMENTS, [plan_id=10486]
(1816) HashAggregate
Input [1]: [plant#6506]
Keys [1]: [plant#6506]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#6506]
(1817) BroadcastHashJoin
Left keys [1]: [plantUuid#6502]
Right keys [1]: [plant#6506]
Join type: Inner
Join condition: None
(1818) Project
Output [3]: [plantUuid#6502, storageLocId#6503, storageLocUuid#6504]
Input [4]: [plantUuid#6502, storageLocId#6503, storageLocUuid#6504, plant#6506]
(1819) BroadcastHashJoin
Left keys [2]: [coalesce(plant#6474.internalRefUUID, ), isnull(plant#6474.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#6502, ), isnull(plantUuid#6502)]
Join type: Inner
Join condition: None
(1820) Generate
Input [9]: [systemId#6471, internalUUID#6472, product#6473, plant#6474, calculationDateTime#6475, stockQuantities#6476, plantUuid#6502, storageLocId#6503, storageLocUuid#6504]
Arguments: explode(filter(stockQuantities#6476, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#6504) AND (lambda x#1207.storageLocation.Id = storageLocId#6503)), lambda x#1207, false))), [systemId#6471, internalUUID#6472, product#6473, plant#6474, calculationDateTime#6475, plantUuid#6502], false, [stockQuantity#6549]
(1821) ObjectHashAggregate
Input [7]: [systemId#6471, internalUUID#6472, product#6473, plant#6474, calculationDateTime#6475, plantUuid#6502, stockQuantity#6549]
Keys [5]: [plantUuid#6502, internalUUID#6472, plant#6474, product#6473, systemId#6471]
Functions [2]: [partial_first(calculationDateTime#6475, false), partial_collect_list(stockQuantity#6549, 0, 0)]
Aggregate Attributes [3]: [first#10380, valueSet#10381, buf#10382]
Results [8]: [plantUuid#6502, internalUUID#6472, plant#6474, product#6473, systemId#6471, first#10383, valueSet#10384, buf#10385]
(1822) ObjectHashAggregate
Input [8]: [plantUuid#6502, internalUUID#6472, plant#6474, product#6473, systemId#6471, first#10383, valueSet#10384, buf#10385]
Keys [5]: [plantUuid#6502, internalUUID#6472, plant#6474, product#6473, systemId#6471]
Functions [2]: [first(calculationDateTime#6475, false), collect_list(stockQuantity#6549, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#6475)()#1222, collect_list(stockQuantity#6549, 0, 0)#1223]
Results [4]: [product#6473, plant#6474, first(calculationDateTime#6475)()#1222 AS calculationDateTime#6550, collect_list(stockQuantity#6549, 0, 0)#1223 AS stockQuantities#6551]
(1823) Filter
Input [4]: [product#6473, plant#6474, calculationDateTime#6550, stockQuantities#6551]
Condition : ((size(stockQuantities#6551, true) > 0) AND isnotnull(calculationDateTime#6550))
(1824) Generate
Input [4]: [product#6473, plant#6474, calculationDateTime#6550, stockQuantities#6551]
Arguments: explode(stockQuantities#6551), [product#6473, plant#6474, calculationDateTime#6550], false, [stockQuantity#6552]
(1825) Filter
Input [4]: [product#6473, plant#6474, calculationDateTime#6550, stockQuantity#6552]
Condition : (((isnotnull(stockQuantity#6552.specialStockIndicator.code) AND isnotnull(stockQuantity#6552.stockType.code)) AND (stockQuantity#6552.specialStockIndicator.code = )) AND (stockQuantity#6552.stockType.code = 01))
(1826) Project
Output [5]: [plant#6474.internalRefUUID AS plantUuid#6554, product#6473.internalRefUUID AS productUuid#6556, calculationDateTime#6550, stockQuantity#6552.storagelocation.id AS storageLocId#6557, stockQuantity#6552.quantity.measure AS quantity#6559]
Input [4]: [product#6473, plant#6474, calculationDateTime#6550, stockQuantity#6552]
(1827) Exchange
Input [5]: [plantUuid#6554, productUuid#6556, calculationDateTime#6550, storageLocId#6557, quantity#6559]
Arguments: hashpartitioning(productUuid#6556, plantUuid#6554, 10), ENSURE_REQUIREMENTS, [plan_id=10519]
(1828) Sort
Input [5]: [plantUuid#6554, productUuid#6556, calculationDateTime#6550, storageLocId#6557, quantity#6559]
Arguments: [productUuid#6556 ASC NULLS FIRST, plantUuid#6554 ASC NULLS FIRST], false, 0
(1829) Scan parquet
Output [3]: [product#6562, plant#6563, orderDateTime#6564]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1830) Filter
Input [3]: [product#6562, plant#6563, orderDateTime#6564]
Condition : ((isnotnull(orderDateTime#6564) AND isnotnull(plant#6563)) AND isnotnull(product#6562))
(1831) Exchange
Input [3]: [product#6562, plant#6563, orderDateTime#6564]
Arguments: hashpartitioning(product#6562, plant#6563, 10), REPARTITION_BY_NUM, [plan_id=9409]
(1832) Scan parquet
Output [4]: [plant#6568, product#6569, productionAspect#6571, systemId#6566]
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#6568.internalRefUUID AS _extract_internalRefUUID#9340, product#6569.internalRefUUID AS _extract_internalRefUUID#9341, productionAspect#6571.productMovementPlants.unitOfIssue.code AS _extract_code#9338, productionAspect#6571.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9339]
Input [4]: [plant#6568, product#6569, productionAspect#6571, systemId#6566]
(1834) Exchange
Input [4]: [_extract_internalRefUUID#9340, _extract_internalRefUUID#9341, _extract_code#9338, _extract_internalRefUUID#9339]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8417]
(1835) Project
Output [4]: [_extract_code#9338, _extract_internalRefUUID#9339, _extract_internalRefUUID#9341, _extract_internalRefUUID#9340]
Input [4]: [_extract_internalRefUUID#9340, _extract_internalRefUUID#9341, _extract_code#9338, _extract_internalRefUUID#9339]
(1836) BroadcastExchange
Input [4]: [_extract_code#9338, _extract_internalRefUUID#9339, _extract_internalRefUUID#9341, _extract_internalRefUUID#9340]
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=10502]
(1837) BroadcastHashJoin
Left keys [4]: [coalesce(product#6562, ), isnull(product#6562), coalesce(plant#6563, ), isnull(plant#6563)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9341, ), isnull(_extract_internalRefUUID#9341), coalesce(_extract_internalRefUUID#9340, ), isnull(_extract_internalRefUUID#9340)]
Join type: LeftOuter
Join condition: None
(1838) Project
Output [5]: [product#6562, plant#6563, orderDateTime#6564, _extract_code#9338, _extract_internalRefUUID#9339]
Input [7]: [product#6562, plant#6563, orderDateTime#6564, _extract_code#9338, _extract_internalRefUUID#9339, _extract_internalRefUUID#9341, _extract_internalRefUUID#9340]
(1839) Scan parquet
Output [2]: [internalUUID#6576, systemId#6575]
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#6576]
Input [2]: [internalUUID#6576, systemId#6575]
(1841) Exchange
Input [1]: [internalUUID#6576]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8423]
(1842) BroadcastExchange
Input [1]: [internalUUID#6576]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10506]
(1843) BroadcastHashJoin
Left keys [2]: [coalesce(plant#6563, ), isnull(plant#6563)]
Right keys [2]: [coalesce(internalUUID#6576, ), isnull(internalUUID#6576)]
Join type: LeftOuter
Join condition: None
(1844) Project
Output [5]: [product#6562, plant#6563, orderDateTime#6564, _extract_code#9338, _extract_internalRefUUID#9339]
Input [6]: [product#6562, plant#6563, orderDateTime#6564, _extract_code#9338, _extract_internalRefUUID#9339, internalUUID#6576]
(1845) Scan parquet
Output [4]: [internalUUID#6590, baseUnitOfMeasure#6594, unitOfMeasureConversions#6596, systemId#6589]
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#6590, baseUnitOfMeasure#6594, unitOfMeasureConversions#6596, systemId#6589]
Condition : isnotnull(internalUUID#6590)
(1847) Project
Output [3]: [internalUUID#6590, baseUnitOfMeasure#6594, unitOfMeasureConversions#6596]
Input [4]: [internalUUID#6590, baseUnitOfMeasure#6594, unitOfMeasureConversions#6596, systemId#6589]
(1848) Exchange
Input [3]: [internalUUID#6590, baseUnitOfMeasure#6594, unitOfMeasureConversions#6596]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8429]
(1849) BroadcastExchange
Input [3]: [internalUUID#6590, baseUnitOfMeasure#6594, unitOfMeasureConversions#6596]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10510]
(1850) BroadcastHashJoin
Left keys [1]: [product#6562]
Right keys [1]: [internalUUID#6590]
Join type: LeftOuter
Join condition: None
(1851) Project
Output [4]: [product#6562, plant#6563, orderDateTime#6564, filter(unitOfMeasureConversions#6596, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9338) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9339)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6594.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6594.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6601]
Input [8]: [product#6562, plant#6563, orderDateTime#6564, _extract_code#9338, _extract_internalRefUUID#9339, internalUUID#6590, baseUnitOfMeasure#6594, unitOfMeasureConversions#6596]
(1852) Generate
Input [4]: [product#6562, plant#6563, orderDateTime#6564, filteredUnitOfMeasureConversions#6601]
Arguments: explode(filteredUnitOfMeasureConversions#6601.quantityNumerator), [product#6562, plant#6563, orderDateTime#6564, filteredUnitOfMeasureConversions#6601], true, [quantityNumerator#6602]
(1853) Project
Output [4]: [product#6562, plant#6563, orderDateTime#6564, filteredUnitOfMeasureConversions#6601.quantityDenominator AS _extract_quantityDenominator#8678]
Input [5]: [product#6562, plant#6563, orderDateTime#6564, filteredUnitOfMeasureConversions#6601, quantityNumerator#6602]
(1854) Generate
Input [4]: [product#6562, plant#6563, orderDateTime#6564, _extract_quantityDenominator#8678]
Arguments: explode(_extract_quantityDenominator#8678), [product#6562, plant#6563, orderDateTime#6564], true, [quantityDenominator#6603]
(1855) Project
Output [3]: [product#6562, plant#6563, orderDateTime#6564]
Input [4]: [product#6562, plant#6563, orderDateTime#6564, quantityDenominator#6603]
(1856) Sort
Input [3]: [product#6562, plant#6563, orderDateTime#6564]
Arguments: [product#6562 ASC NULLS FIRST, plant#6563 ASC NULLS FIRST], false, 0
(1857) SortMergeJoin
Left keys [2]: [productUuid#6556, plantUuid#6554]
Right keys [2]: [product#6562, plant#6563]
Join type: Inner
Join condition: (calculationDateTime#6550 <= orderDateTime#6564)
(1858) Project
Output [5]: [plantUuid#6554 AS plant#6606, productUuid#6556 AS product#6607, storageLocId#6557, calculationDateTime#6550, quantity#6559]
Input [8]: [plantUuid#6554, productUuid#6556, calculationDateTime#6550, storageLocId#6557, quantity#6559, product#6562, plant#6563, orderDateTime#6564]
(1859) Exchange
Input [5]: [plant#6606, product#6607, storageLocId#6557, calculationDateTime#6550, quantity#6559]
Arguments: hashpartitioning(coalesce(plant#6606, ), isnull(plant#6606), coalesce(product#6607, ), isnull(product#6607), coalesce(storageLocId#6557, ), isnull(storageLocId#6557), coalesce(calculationDateTime#6550, 1970-01-01 00:00:00), isnull(calculationDateTime#6550), 10), ENSURE_REQUIREMENTS, [plan_id=10583]
(1860) Sort
Input [5]: [plant#6606, product#6607, storageLocId#6557, calculationDateTime#6550, quantity#6559]
Arguments: [coalesce(plant#6606, ) ASC NULLS FIRST, isnull(plant#6606) ASC NULLS FIRST, coalesce(product#6607, ) ASC NULLS FIRST, isnull(product#6607) ASC NULLS FIRST, coalesce(storageLocId#6557, ) ASC NULLS FIRST, isnull(storageLocId#6557) ASC NULLS FIRST, coalesce(calculationDateTime#6550, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#6550) ASC NULLS FIRST], false, 0
(1861) Scan parquet
Output [6]: [internalUUID#6609, product#6610, plant#6611, calculationDateTime#6612, stockQuantities#6613, systemId#6608]
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#6609, product#6610, plant#6611, calculationDateTime#6612, stockQuantities#6613, systemId#6608]
Condition : (isnotnull(plant#6611.internalRefUUID) AND isnotnull(product#6610.internalRefUUID))
(1863) Project
Output [6]: [systemId#6608, internalUUID#6609, product#6610, plant#6611, calculationDateTime#6612, stockQuantities#6613]
Input [6]: [internalUUID#6609, product#6610, plant#6611, calculationDateTime#6612, stockQuantities#6613, systemId#6608]
(1864) Exchange
Input [6]: [systemId#6608, internalUUID#6609, product#6610, plant#6611, calculationDateTime#6612, stockQuantities#6613]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8441]
(1865) BroadcastExchange
Input [6]: [systemId#6608, internalUUID#6609, product#6610, plant#6611, calculationDateTime#6612, stockQuantities#6613]
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=10548]
(1866) Scan parquet
Output [2]: [marketUnit#6614, distributionCenters#6620]
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#6614, distributionCenters#6620]
Condition : (((marketUnit#6614 <=> DIP_1691) AND (size(distributionCenters#6620, true) > 0)) AND isnotnull(distributionCenters#6620))
(1868) Project
Output [1]: [distributionCenters#6620]
Input [2]: [marketUnit#6614, distributionCenters#6620]
(1869) Exchange
Input [1]: [distributionCenters#6620]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8445]
(1870) Generate
Input [1]: [distributionCenters#6620]
Arguments: explode(distributionCenters#6620), false, [distributionCenters#6636]
(1871) Filter
Input [1]: [distributionCenters#6636]
Condition : (((size(distributionCenters#6636.storageLocations, true) > 0) AND isnotnull(distributionCenters#6636.storageLocations)) AND isnotnull(distributionCenters#6636.internalRefUUID))
(1872) Project
Output [2]: [distributionCenters#6636.internalRefUUID AS _extract_internalRefUUID#8682, distributionCenters#6636.storageLocations AS _extract_storageLocations#8683]
Input [1]: [distributionCenters#6636]
(1873) Generate
Input [2]: [_extract_internalRefUUID#8682, _extract_storageLocations#8683]
Arguments: explode(_extract_storageLocations#8683), [_extract_internalRefUUID#8682], false, [storageLocations#6637]
(1874) Project
Output [3]: [_extract_internalRefUUID#8682 AS plantUuid#6639, storageLocations#6637.id AS storageLocId#6640, storageLocations#6637.internalRefUUID AS storageLocUuid#6641]
Input [2]: [_extract_internalRefUUID#8682, storageLocations#6637]
(1875) BroadcastExchange
Input [3]: [plantUuid#6639, storageLocId#6640, storageLocUuid#6641]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10544]
(1876) Scan parquet
Output [2]: [product#6642, plant#6643]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1877) Filter
Input [2]: [product#6642, plant#6643]
Condition : isnotnull(plant#6643)
(1878) Exchange
Input [2]: [product#6642, plant#6643]
Arguments: hashpartitioning(product#6642, plant#6643, 10), REPARTITION_BY_NUM, [plan_id=9422]
(1879) Scan parquet
Output [4]: [plant#6648, product#6649, productionAspect#6651, systemId#6646]
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#6648.internalRefUUID AS _extract_internalRefUUID#9345, product#6649.internalRefUUID AS _extract_internalRefUUID#9344, productionAspect#6651.productMovementPlants.unitOfIssue.code AS _extract_code#9342, productionAspect#6651.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9343]
Input [4]: [plant#6648, product#6649, productionAspect#6651, systemId#6646]
(1881) Exchange
Input [4]: [_extract_internalRefUUID#9345, _extract_internalRefUUID#9344, _extract_code#9342, _extract_internalRefUUID#9343]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8457]
(1882) Project
Output [4]: [_extract_code#9342, _extract_internalRefUUID#9343, _extract_internalRefUUID#9344, _extract_internalRefUUID#9345]
Input [4]: [_extract_internalRefUUID#9345, _extract_internalRefUUID#9344, _extract_code#9342, _extract_internalRefUUID#9343]
(1883) BroadcastExchange
Input [4]: [_extract_code#9342, _extract_internalRefUUID#9343, _extract_internalRefUUID#9344, _extract_internalRefUUID#9345]
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=10524]
(1884) BroadcastHashJoin
Left keys [4]: [coalesce(product#6642, ), isnull(product#6642), coalesce(plant#6643, ), isnull(plant#6643)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9344, ), isnull(_extract_internalRefUUID#9344), coalesce(_extract_internalRefUUID#9345, ), isnull(_extract_internalRefUUID#9345)]
Join type: LeftOuter
Join condition: None
(1885) Project
Output [4]: [product#6642, plant#6643, _extract_code#9342, _extract_internalRefUUID#9343]
Input [6]: [product#6642, plant#6643, _extract_code#9342, _extract_internalRefUUID#9343, _extract_internalRefUUID#9344, _extract_internalRefUUID#9345]
(1886) Scan parquet
Output [2]: [internalUUID#6656, systemId#6655]
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#6656]
Input [2]: [internalUUID#6656, systemId#6655]
(1888) Exchange
Input [1]: [internalUUID#6656]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8463]
(1889) BroadcastExchange
Input [1]: [internalUUID#6656]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10528]
(1890) BroadcastHashJoin
Left keys [2]: [coalesce(plant#6643, ), isnull(plant#6643)]
Right keys [2]: [coalesce(internalUUID#6656, ), isnull(internalUUID#6656)]
Join type: LeftOuter
Join condition: None
(1891) Project
Output [4]: [product#6642, plant#6643, _extract_code#9342, _extract_internalRefUUID#9343]
Input [5]: [product#6642, plant#6643, _extract_code#9342, _extract_internalRefUUID#9343, internalUUID#6656]
(1892) Scan parquet
Output [4]: [internalUUID#6670, baseUnitOfMeasure#6674, unitOfMeasureConversions#6676, systemId#6669]
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#6670, baseUnitOfMeasure#6674, unitOfMeasureConversions#6676, systemId#6669]
Condition : isnotnull(internalUUID#6670)
(1894) Project
Output [3]: [internalUUID#6670, baseUnitOfMeasure#6674, unitOfMeasureConversions#6676]
Input [4]: [internalUUID#6670, baseUnitOfMeasure#6674, unitOfMeasureConversions#6676, systemId#6669]
(1895) Exchange
Input [3]: [internalUUID#6670, baseUnitOfMeasure#6674, unitOfMeasureConversions#6676]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8469]
(1896) BroadcastExchange
Input [3]: [internalUUID#6670, baseUnitOfMeasure#6674, unitOfMeasureConversions#6676]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10532]
(1897) BroadcastHashJoin
Left keys [1]: [product#6642]
Right keys [1]: [internalUUID#6670]
Join type: LeftOuter
Join condition: None
(1898) Project
Output [2]: [plant#6643, filter(unitOfMeasureConversions#6676, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9342) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9343)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6674.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6674.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6681]
Input [7]: [product#6642, plant#6643, _extract_code#9342, _extract_internalRefUUID#9343, internalUUID#6670, baseUnitOfMeasure#6674, unitOfMeasureConversions#6676]
(1899) Generate
Input [2]: [plant#6643, filteredUnitOfMeasureConversions#6681]
Arguments: explode(filteredUnitOfMeasureConversions#6681.quantityNumerator), [plant#6643, filteredUnitOfMeasureConversions#6681], true, [quantityNumerator#6682]
(1900) Project
Output [2]: [plant#6643, filteredUnitOfMeasureConversions#6681.quantityDenominator AS _extract_quantityDenominator#8684]
Input [3]: [plant#6643, filteredUnitOfMeasureConversions#6681, quantityNumerator#6682]
(1901) Generate
Input [2]: [plant#6643, _extract_quantityDenominator#8684]
Arguments: explode(_extract_quantityDenominator#8684), [plant#6643], true, [quantityDenominator#6683]
(1902) Project
Output [1]: [plant#6643]
Input [2]: [plant#6643, quantityDenominator#6683]
(1903) HashAggregate
Input [1]: [plant#6643]
Keys [1]: [plant#6643]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#6643]
(1904) Exchange
Input [1]: [plant#6643]
Arguments: hashpartitioning(plant#6643, 10), ENSURE_REQUIREMENTS, [plan_id=10541]
(1905) HashAggregate
Input [1]: [plant#6643]
Keys [1]: [plant#6643]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#6643]
(1906) BroadcastHashJoin
Left keys [1]: [plantUuid#6639]
Right keys [1]: [plant#6643]
Join type: Inner
Join condition: None
(1907) Project
Output [3]: [plantUuid#6639, storageLocId#6640, storageLocUuid#6641]
Input [4]: [plantUuid#6639, storageLocId#6640, storageLocUuid#6641, plant#6643]
(1908) BroadcastHashJoin
Left keys [2]: [coalesce(plant#6611.internalRefUUID, ), isnull(plant#6611.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#6639, ), isnull(plantUuid#6639)]
Join type: Inner
Join condition: None
(1909) Generate
Input [9]: [systemId#6608, internalUUID#6609, product#6610, plant#6611, calculationDateTime#6612, stockQuantities#6613, plantUuid#6639, storageLocId#6640, storageLocUuid#6641]
Arguments: explode(filter(stockQuantities#6613, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#6641) AND (lambda x#1207.storageLocation.Id = storageLocId#6640)), lambda x#1207, false))), [systemId#6608, internalUUID#6609, product#6610, plant#6611, calculationDateTime#6612, plantUuid#6639], false, [stockQuantity#6686]
(1910) ObjectHashAggregate
Input [7]: [systemId#6608, internalUUID#6609, product#6610, plant#6611, calculationDateTime#6612, plantUuid#6639, stockQuantity#6686]
Keys [5]: [plantUuid#6639, internalUUID#6609, plant#6611, product#6610, systemId#6608]
Functions [2]: [partial_first(calculationDateTime#6612, false), partial_collect_list(stockQuantity#6686, 0, 0)]
Aggregate Attributes [3]: [first#10388, valueSet#10389, buf#10390]
Results [8]: [plantUuid#6639, internalUUID#6609, plant#6611, product#6610, systemId#6608, first#10391, valueSet#10392, buf#10393]
(1911) ObjectHashAggregate
Input [8]: [plantUuid#6639, internalUUID#6609, plant#6611, product#6610, systemId#6608, first#10391, valueSet#10392, buf#10393]
Keys [5]: [plantUuid#6639, internalUUID#6609, plant#6611, product#6610, systemId#6608]
Functions [2]: [first(calculationDateTime#6612, false), collect_list(stockQuantity#6686, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#6612)()#1222, collect_list(stockQuantity#6686, 0, 0)#1223]
Results [4]: [product#6610, plant#6611, first(calculationDateTime#6612)()#1222 AS calculationDateTime#6687, collect_list(stockQuantity#6686, 0, 0)#1223 AS stockQuantities#6688]
(1912) Filter
Input [4]: [product#6610, plant#6611, calculationDateTime#6687, stockQuantities#6688]
Condition : ((size(stockQuantities#6688, true) > 0) AND isnotnull(calculationDateTime#6687))
(1913) Generate
Input [4]: [product#6610, plant#6611, calculationDateTime#6687, stockQuantities#6688]
Arguments: explode(stockQuantities#6688), [product#6610, plant#6611, calculationDateTime#6687], false, [stockQuantity#6689]
(1914) Filter
Input [4]: [product#6610, plant#6611, calculationDateTime#6687, stockQuantity#6689]
Condition : (((isnotnull(stockQuantity#6689.specialStockIndicator.code) AND isnotnull(stockQuantity#6689.stockType.code)) AND (stockQuantity#6689.specialStockIndicator.code = )) AND (stockQuantity#6689.stockType.code = 01))
(1915) Project
Output [4]: [plant#6611.internalRefUUID AS plantUuid#6691, product#6610.internalRefUUID AS productUuid#6693, calculationDateTime#6687, stockQuantity#6689.storagelocation.id AS storageLocId#6694]
Input [4]: [product#6610, plant#6611, calculationDateTime#6687, stockQuantity#6689]
(1916) Exchange
Input [4]: [plantUuid#6691, productUuid#6693, calculationDateTime#6687, storageLocId#6694]
Arguments: hashpartitioning(productUuid#6693, plantUuid#6691, 10), ENSURE_REQUIREMENTS, [plan_id=10574]
(1917) Sort
Input [4]: [plantUuid#6691, productUuid#6693, calculationDateTime#6687, storageLocId#6694]
Arguments: [productUuid#6693 ASC NULLS FIRST, plantUuid#6691 ASC NULLS FIRST], false, 0
(1918) Scan parquet
Output [3]: [product#6699, plant#6700, orderDateTime#6701]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1919) Filter
Input [3]: [product#6699, plant#6700, orderDateTime#6701]
Condition : ((isnotnull(orderDateTime#6701) AND isnotnull(plant#6700)) AND isnotnull(product#6699))
(1920) Exchange
Input [3]: [product#6699, plant#6700, orderDateTime#6701]
Arguments: hashpartitioning(product#6699, plant#6700, 10), REPARTITION_BY_NUM, [plan_id=9445]
(1921) Scan parquet
Output [4]: [plant#6705, product#6706, productionAspect#6708, systemId#6703]
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#6705.internalRefUUID AS _extract_internalRefUUID#9347, product#6706.internalRefUUID AS _extract_internalRefUUID#9346, productionAspect#6708.productMovementPlants.unitOfIssue.code AS _extract_code#9348, productionAspect#6708.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9349]
Input [4]: [plant#6705, product#6706, productionAspect#6708, systemId#6703]
(1923) Exchange
Input [4]: [_extract_internalRefUUID#9347, _extract_internalRefUUID#9346, _extract_code#9348, _extract_internalRefUUID#9349]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8494]
(1924) Project
Output [4]: [_extract_code#9348, _extract_internalRefUUID#9349, _extract_internalRefUUID#9346, _extract_internalRefUUID#9347]
Input [4]: [_extract_internalRefUUID#9347, _extract_internalRefUUID#9346, _extract_code#9348, _extract_internalRefUUID#9349]
(1925) BroadcastExchange
Input [4]: [_extract_code#9348, _extract_internalRefUUID#9349, _extract_internalRefUUID#9346, _extract_internalRefUUID#9347]
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=10557]
(1926) BroadcastHashJoin
Left keys [4]: [coalesce(product#6699, ), isnull(product#6699), coalesce(plant#6700, ), isnull(plant#6700)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9346, ), isnull(_extract_internalRefUUID#9346), coalesce(_extract_internalRefUUID#9347, ), isnull(_extract_internalRefUUID#9347)]
Join type: LeftOuter
Join condition: None
(1927) Project
Output [5]: [product#6699, plant#6700, orderDateTime#6701, _extract_code#9348, _extract_internalRefUUID#9349]
Input [7]: [product#6699, plant#6700, orderDateTime#6701, _extract_code#9348, _extract_internalRefUUID#9349, _extract_internalRefUUID#9346, _extract_internalRefUUID#9347]
(1928) Scan parquet
Output [2]: [internalUUID#6713, systemId#6712]
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#6713]
Input [2]: [internalUUID#6713, systemId#6712]
(1930) Exchange
Input [1]: [internalUUID#6713]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8500]
(1931) BroadcastExchange
Input [1]: [internalUUID#6713]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10561]
(1932) BroadcastHashJoin
Left keys [2]: [coalesce(plant#6700, ), isnull(plant#6700)]
Right keys [2]: [coalesce(internalUUID#6713, ), isnull(internalUUID#6713)]
Join type: LeftOuter
Join condition: None
(1933) Project
Output [5]: [product#6699, plant#6700, orderDateTime#6701, _extract_code#9348, _extract_internalRefUUID#9349]
Input [6]: [product#6699, plant#6700, orderDateTime#6701, _extract_code#9348, _extract_internalRefUUID#9349, internalUUID#6713]
(1934) Scan parquet
Output [4]: [internalUUID#6727, baseUnitOfMeasure#6731, unitOfMeasureConversions#6733, systemId#6726]
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#6727, baseUnitOfMeasure#6731, unitOfMeasureConversions#6733, systemId#6726]
Condition : isnotnull(internalUUID#6727)
(1936) Project
Output [3]: [internalUUID#6727, baseUnitOfMeasure#6731, unitOfMeasureConversions#6733]
Input [4]: [internalUUID#6727, baseUnitOfMeasure#6731, unitOfMeasureConversions#6733, systemId#6726]
(1937) Exchange
Input [3]: [internalUUID#6727, baseUnitOfMeasure#6731, unitOfMeasureConversions#6733]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8506]
(1938) BroadcastExchange
Input [3]: [internalUUID#6727, baseUnitOfMeasure#6731, unitOfMeasureConversions#6733]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10565]
(1939) BroadcastHashJoin
Left keys [1]: [product#6699]
Right keys [1]: [internalUUID#6727]
Join type: LeftOuter
Join condition: None
(1940) Project
Output [4]: [product#6699, plant#6700, orderDateTime#6701, filter(unitOfMeasureConversions#6733, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9348) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9349)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6731.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6731.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6738]
Input [8]: [product#6699, plant#6700, orderDateTime#6701, _extract_code#9348, _extract_internalRefUUID#9349, internalUUID#6727, baseUnitOfMeasure#6731, unitOfMeasureConversions#6733]
(1941) Generate
Input [4]: [product#6699, plant#6700, orderDateTime#6701, filteredUnitOfMeasureConversions#6738]
Arguments: explode(filteredUnitOfMeasureConversions#6738.quantityNumerator), [product#6699, plant#6700, orderDateTime#6701, filteredUnitOfMeasureConversions#6738], true, [quantityNumerator#6739]
(1942) Project
Output [4]: [product#6699, plant#6700, orderDateTime#6701, filteredUnitOfMeasureConversions#6738.quantityDenominator AS _extract_quantityDenominator#8688]
Input [5]: [product#6699, plant#6700, orderDateTime#6701, filteredUnitOfMeasureConversions#6738, quantityNumerator#6739]
(1943) Generate
Input [4]: [product#6699, plant#6700, orderDateTime#6701, _extract_quantityDenominator#8688]
Arguments: explode(_extract_quantityDenominator#8688), [product#6699, plant#6700, orderDateTime#6701], true, [quantityDenominator#6740]
(1944) Project
Output [3]: [product#6699, plant#6700, orderDateTime#6701]
Input [4]: [product#6699, plant#6700, orderDateTime#6701, quantityDenominator#6740]
(1945) Sort
Input [3]: [product#6699, plant#6700, orderDateTime#6701]
Arguments: [product#6699 ASC NULLS FIRST, plant#6700 ASC NULLS FIRST], false, 0
(1946) SortMergeJoin
Left keys [2]: [productUuid#6693, plantUuid#6691]
Right keys [2]: [product#6699, plant#6700]
Join type: Inner
Join condition: (calculationDateTime#6687 <= orderDateTime#6701)
(1947) Project
Output [4]: [plantUuid#6691 AS plant#6743, productUuid#6693 AS product#6744, storageLocId#6694, calculationDateTime#6687]
Input [7]: [plantUuid#6691, productUuid#6693, calculationDateTime#6687, storageLocId#6694, product#6699, plant#6700, orderDateTime#6701]
(1948) HashAggregate
Input [4]: [plant#6743, product#6744, storageLocId#6694, calculationDateTime#6687]
Keys [3]: [plant#6743, product#6744, storageLocId#6694]
Functions [1]: [partial_max(calculationDateTime#6687)]
Aggregate Attributes [1]: [max#10386]
Results [4]: [plant#6743, product#6744, storageLocId#6694, max#10387]
(1949) HashAggregate
Input [4]: [plant#6743, product#6744, storageLocId#6694, max#10387]
Keys [3]: [plant#6743, product#6744, storageLocId#6694]
Functions [1]: [max(calculationDateTime#6687)]
Aggregate Attributes [1]: [max(calculationDateTime#6687)#1300]
Results [4]: [plant#6743, product#6744, storageLocId#6694, max(calculationDateTime#6687)#1300 AS max_calc_datetime#6745]
(1950) Exchange
Input [4]: [plant#6743, product#6744, storageLocId#6694, max_calc_datetime#6745]
Arguments: hashpartitioning(coalesce(plant#6743, ), isnull(plant#6743), coalesce(product#6744, ), isnull(product#6744), coalesce(storageLocId#6694, ), isnull(storageLocId#6694), coalesce(max_calc_datetime#6745, 1970-01-01 00:00:00), isnull(max_calc_datetime#6745), 10), ENSURE_REQUIREMENTS, [plan_id=10584]
(1951) Sort
Input [4]: [plant#6743, product#6744, storageLocId#6694, max_calc_datetime#6745]
Arguments: [coalesce(plant#6743, ) ASC NULLS FIRST, isnull(plant#6743) ASC NULLS FIRST, coalesce(product#6744, ) ASC NULLS FIRST, isnull(product#6744) ASC NULLS FIRST, coalesce(storageLocId#6694, ) ASC NULLS FIRST, isnull(storageLocId#6694) ASC NULLS FIRST, coalesce(max_calc_datetime#6745, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#6745) ASC NULLS FIRST], false, 0
(1952) SortMergeJoin
Left keys [8]: [coalesce(plant#6606, ), isnull(plant#6606), coalesce(product#6607, ), isnull(product#6607), coalesce(storageLocId#6557, ), isnull(storageLocId#6557), coalesce(calculationDateTime#6550, 1970-01-01 00:00:00), isnull(calculationDateTime#6550)]
Right keys [8]: [coalesce(plant#6743, ), isnull(plant#6743), coalesce(product#6744, ), isnull(product#6744), coalesce(storageLocId#6694, ), isnull(storageLocId#6694), coalesce(max_calc_datetime#6745, 1970-01-01 00:00:00), isnull(max_calc_datetime#6745)]
Join type: Inner
Join condition: None
(1953) Project
Output [4]: [plant#6606, product#6607, calculationDateTime#6550, quantity#6559]
Input [9]: [plant#6606, product#6607, storageLocId#6557, calculationDateTime#6550, quantity#6559, plant#6743, product#6744, storageLocId#6694, max_calc_datetime#6745]
(1954) HashAggregate
Input [4]: [plant#6606, product#6607, calculationDateTime#6550, quantity#6559]
Keys [2]: [product#6607, plant#6606]
Functions [2]: [partial_min(calculationDateTime#6550), partial_sum(quantity#6559)]
Aggregate Attributes [2]: [min#10376, sum#10377]
Results [4]: [product#6607, plant#6606, min#10378, sum#10379]
(1955) Exchange
Input [4]: [product#6607, plant#6606, min#10378, sum#10379]
Arguments: hashpartitioning(product#6607, plant#6606, 10), ENSURE_REQUIREMENTS, [plan_id=10591]
(1956) HashAggregate
Input [4]: [product#6607, plant#6606, min#10378, sum#10379]
Keys [2]: [product#6607, plant#6606]
Functions [2]: [min(calculationDateTime#6550), sum(quantity#6559)]
Aggregate Attributes [2]: [min(calculationDateTime#6550)#1456, sum(quantity#6559)#1455]
Results [4]: [product#6607, plant#6606, min(calculationDateTime#6550)#1456 AS minCalculationDateTime#6747, round(sum(quantity#6559)#1455, 0) AS roundedQuantitySum#6748]
(1957) Sort
Input [4]: [product#6607, plant#6606, minCalculationDateTime#6747, roundedQuantitySum#6748]
Arguments: [product#6607 ASC NULLS FIRST, plant#6606 ASC NULLS FIRST], false, 0
(1958) SortMergeJoin
Left keys [2]: [product#6427, plant#6428]
Right keys [2]: [product#6607, plant#6606]
Join type: LeftOuter
Join condition: None
(1959) Project
Output [8]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6470, CASE WHEN isnotnull(minCalculationDateTime#6747) THEN minCalculationDateTime#6747 ELSE orderDateTime#6429 END AS stockDatetime#6749, CASE WHEN isnotnull(roundedQuantitySum#6748) THEN array(roundedQuantitySum#6748) ELSE [0.0] END AS stockBatchQuantities#6750]
Input [10]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6470, product#6607, plant#6606, minCalculationDateTime#6747, roundedQuantitySum#6748]
(1960) Scan parquet
Output [9]: [product#6752, plant#6753, demandChannel#6754, demandStream#6755, considerVariance#6756, demandTimeBuckets#6757, demandPointInTimeStart#6758, demandPointInTimeEnd#6759, demandPointInTime#6760]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000004/0_1_10000000004]
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#6752, plant#6753, demandChannel#6754, demandStream#6755, considerVariance#6756, demandTimeBuckets#6757, demandPointInTimeStart#6758, demandPointInTimeEnd#6759, demandPointInTime#6760]
Condition : (isnotnull(product#6752) AND isnotnull(plant#6753))
(1962) BroadcastExchange
Input [9]: [product#6752, plant#6753, demandChannel#6754, demandStream#6755, considerVariance#6756, demandTimeBuckets#6757, demandPointInTimeStart#6758, demandPointInTimeEnd#6759, demandPointInTime#6760]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=10600]
(1963) BroadcastHashJoin
Left keys [2]: [product#6427, plant#6428]
Right keys [2]: [product#6752, plant#6753]
Join type: LeftOuter
Join condition: None
(1964) Project
Output [9]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6470, stockDatetime#6749, stockBatchQuantities#6750, CASE WHEN isnotnull(product#6752) THEN struct(demandChannel, demandChannel#6754, demandStream, demandStream#6755, considerVariance, considerVariance#6756, demandTimeBuckets, demandTimeBuckets#6757, demandPointInTimeStart, demandPointInTimeStart#6758, demandPointInTimeEnd, demandPointInTimeEnd#6759, demandPointInTime, demandPointInTime#6760) END AS rawDemands#6761]
Input [17]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6470, stockDatetime#6749, stockBatchQuantities#6750, product#6752, plant#6753, demandChannel#6754, demandStream#6755, considerVariance#6756, demandTimeBuckets#6757, demandPointInTimeStart#6758, demandPointInTimeEnd#6759, demandPointInTime#6760]
(1965) ObjectHashAggregate
Input [9]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6470, stockDatetime#6749, stockBatchQuantities#6750, rawDemands#6761]
Keys [9]: [product#6427, plant#6428, orderDateTime#6429, knownfloatingpointnormalized(if (isnull(productPlant#6439)) null else named_struct(systemId, productPlant#6439.systemId, internalUUID, productPlant#6439.internalUUID, plant, productPlant#6439.plant, product, productPlant#6439.product, blockedForReplenishmentStartingFrom, productPlant#6439.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#6439.productionAspect)) null else named_struct(productMovementPlants, productPlant#6439.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#6439.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#6439.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#6439.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#6439.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#6439.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#6439.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#6439.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#6439.salesPlant, listing, productPlant#6439.listing)) AS productPlant#6439, timezonecode#6453, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#6470)) AS outboundUnit#6470, stockDatetime#6749, knownfloatingpointnormalized(transform(stockBatchQuantities#6750, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#10373)), lambda arg#10373, false))) AS stockBatchQuantities#6750, [7226582400000000] AS [7226582400000000]#10372]
Functions [1]: [partial_collect_list(rawDemands#6761, 0, 0)]
Aggregate Attributes [1]: [buf#10374]
Results [10]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6470, stockDatetime#6749, stockBatchQuantities#6750, [7226582400000000]#10372, buf#10375]
(1966) ObjectHashAggregate
Input [10]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6470, stockDatetime#6749, stockBatchQuantities#6750, [7226582400000000]#10372, buf#10375]
Keys [9]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6470, stockDatetime#6749, stockBatchQuantities#6750, [7226582400000000]#10372]
Functions [1]: [collect_list(rawDemands#6761, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#6761, 0, 0)#1548]
Results [10]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6470, stockDatetime#6749, stockBatchQuantities#6750, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#6751, collect_list(rawDemands#6761, 0, 0)#1548 AS rawDemands#6762]
(1967) DeserializeToObject
Input [10]: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6470, stockDatetime#6749, stockBatchQuantities#6750, stockBatchShelfLifeEndDatetimes#6751, rawDemands#6762]
Arguments: createexternalrow(invoke(product#6427.toString()), invoke(plant#6428.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#6429)), if (isnull(productPlant#6439)) null else createexternalrow(invoke(productPlant#6439.systemId.toString()), invoke(productPlant#6439.internalUUID.toString()), if (isnull(productPlant#6439.plant)) null else createexternalrow(invoke(productPlant#6439.plant.internalRefUUID.toString()), invoke(productPlant#6439.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#6439.product)) null else createexternalrow(invoke(productPlant#6439.product.internalRefUUID.toString()), invoke(productPlant#6439.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#6439.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#6439.productionAspect)) null else createexternalrow(if (isnull(productPlant#6439.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#6439.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#6439.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#6439.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#6439.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#6439.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#6439.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#6439.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#6439.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#6439.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#6439.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#6439.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#6439.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#6439.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#6439.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#6439.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#6439.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#6439.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#6439.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#6439.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#6439.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#6439.salesPlant)) null else createexternalrow(if (isnull(productPlant#6439.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#6439.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#6439.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#6439.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#6453.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#6470)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#6749)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#6750, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#6751, 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#6762, 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#1569: org.apache.spark.sql.Row
(1968) MapElements
Input [1]: [obj#1569]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@762840b4, obj#1574: org.apache.spark.sql.Row
(1969) SerializeFromObject
Input [1]: [obj#1574]
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#6763, 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#6764, 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#6765, 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#6766]
(1970) Exchange
Input [4]: [product#6763, plant#6764, dayBucketDemands#6765, pointInTimeDemands#6766]
Arguments: hashpartitioning(coalesce(plant#6764, ), isnull(plant#6764), coalesce(product#6763, ), isnull(product#6763), 10), ENSURE_REQUIREMENTS, [plan_id=10611]
(1971) Sort
Input [4]: [product#6763, plant#6764, dayBucketDemands#6765, pointInTimeDemands#6766]
Arguments: [coalesce(plant#6764, ) ASC NULLS FIRST, isnull(plant#6764) ASC NULLS FIRST, coalesce(product#6763, ) ASC NULLS FIRST, isnull(product#6763) ASC NULLS FIRST], false, 0
(1972) SortMergeJoin
Left keys [4]: [coalesce(plant#6103, ), isnull(plant#6103), coalesce(product#6102, ), isnull(product#6102)]
Right keys [4]: [coalesce(plant#6764, ), isnull(plant#6764), coalesce(product#6763, ), isnull(product#6763)]
Join type: LeftOuter
Join condition: None
(1973) Project
Output [10]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, dayBucketDemands#6765, pointInTimeDemands#6766]
Input [12]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, product#6763, plant#6764, dayBucketDemands#6765, pointInTimeDemands#6766]
(1974) Exchange
Input [10]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, dayBucketDemands#6765, pointInTimeDemands#6766]
Arguments: hashpartitioning(product#6102, plant#6103, 10), ENSURE_REQUIREMENTS, [plan_id=10940]
(1975) Sort
Input [10]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, dayBucketDemands#6765, pointInTimeDemands#6766]
Arguments: [product#6102 ASC NULLS FIRST, plant#6103 ASC NULLS FIRST], false, 0
(1976) InMemoryTableScan
Output [3]: [product#7517, plant#7516, openGoodsMovements#7528]
Arguments: [product#7517, plant#7516, openGoodsMovements#7528], [isnotnull(product#7517), isnotnull(plant#7516)]
(1977) InMemoryRelation
Arguments: [product#7517, plant#7516, openGoodsMovements#7528], StorageLevel(disk, memory, 2 replicas)
(1978) Filter
Input [3]: [product#7517, plant#7516, openGoodsMovements#7528]
Condition : (isnotnull(product#7517) AND isnotnull(plant#7516))
(1979) Scan parquet
Output [3]: [product#7529, plant#7530, orderDateTime#7531]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1980) Filter
Input [3]: [product#7529, plant#7530, orderDateTime#7531]
Condition : isnotnull(plant#7530)
(1981) Exchange
Input [3]: [product#7529, plant#7530, orderDateTime#7531]
Arguments: hashpartitioning(product#7529, plant#7530, 10), REPARTITION_BY_NUM, [plan_id=9475]
(1982) Scan parquet
Output [4]: [plant#7535, product#7536, productionAspect#7538, systemId#7533]
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#7535.internalRefUUID AS _extract_internalRefUUID#9352, product#7536.internalRefUUID AS _extract_internalRefUUID#9353, productionAspect#7538.productMovementPlants.unitOfIssue.code AS _extract_code#9350, productionAspect#7538.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9351]
Input [4]: [plant#7535, product#7536, productionAspect#7538, systemId#7533]
(1984) Exchange
Input [4]: [_extract_internalRefUUID#9352, _extract_internalRefUUID#9353, _extract_code#9350, _extract_internalRefUUID#9351]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8543]
(1985) Project
Output [4]: [_extract_code#9350, _extract_internalRefUUID#9351, _extract_internalRefUUID#9353, _extract_internalRefUUID#9352]
Input [4]: [_extract_internalRefUUID#9352, _extract_internalRefUUID#9353, _extract_code#9350, _extract_internalRefUUID#9351]
(1986) BroadcastExchange
Input [4]: [_extract_code#9350, _extract_internalRefUUID#9351, _extract_internalRefUUID#9353, _extract_internalRefUUID#9352]
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=10616]
(1987) BroadcastHashJoin
Left keys [4]: [coalesce(product#7529, ), isnull(product#7529), coalesce(plant#7530, ), isnull(plant#7530)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9353, ), isnull(_extract_internalRefUUID#9353), coalesce(_extract_internalRefUUID#9352, ), isnull(_extract_internalRefUUID#9352)]
Join type: LeftOuter
Join condition: None
(1988) Project
Output [5]: [product#7529, plant#7530, orderDateTime#7531, _extract_code#9350, _extract_internalRefUUID#9351]
Input [7]: [product#7529, plant#7530, orderDateTime#7531, _extract_code#9350, _extract_internalRefUUID#9351, _extract_internalRefUUID#9353, _extract_internalRefUUID#9352]
(1989) Scan parquet
Output [2]: [internalUUID#7543, systemId#7542]
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#7543]
Input [2]: [internalUUID#7543, systemId#7542]
(1991) Exchange
Input [1]: [internalUUID#7543]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8549]
(1992) BroadcastExchange
Input [1]: [internalUUID#7543]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10620]
(1993) BroadcastHashJoin
Left keys [2]: [coalesce(plant#7530, ), isnull(plant#7530)]
Right keys [2]: [coalesce(internalUUID#7543, ), isnull(internalUUID#7543)]
Join type: LeftOuter
Join condition: None
(1994) Project
Output [5]: [product#7529, plant#7530, orderDateTime#7531, _extract_code#9350, _extract_internalRefUUID#9351]
Input [6]: [product#7529, plant#7530, orderDateTime#7531, _extract_code#9350, _extract_internalRefUUID#9351, internalUUID#7543]
(1995) Scan parquet
Output [4]: [internalUUID#7557, baseUnitOfMeasure#7561, unitOfMeasureConversions#7563, systemId#7556]
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#7557, baseUnitOfMeasure#7561, unitOfMeasureConversions#7563, systemId#7556]
Condition : isnotnull(internalUUID#7557)
(1997) Project
Output [3]: [internalUUID#7557, baseUnitOfMeasure#7561, unitOfMeasureConversions#7563]
Input [4]: [internalUUID#7557, baseUnitOfMeasure#7561, unitOfMeasureConversions#7563, systemId#7556]
(1998) Exchange
Input [3]: [internalUUID#7557, baseUnitOfMeasure#7561, unitOfMeasureConversions#7563]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8555]
(1999) BroadcastExchange
Input [3]: [internalUUID#7557, baseUnitOfMeasure#7561, unitOfMeasureConversions#7563]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10624]
(2000) BroadcastHashJoin
Left keys [1]: [product#7529]
Right keys [1]: [internalUUID#7557]
Join type: LeftOuter
Join condition: None
(2001) Project
Output [4]: [product#7529, plant#7530, orderDateTime#7531, filter(unitOfMeasureConversions#7563, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9350) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9351)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#7561.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#7561.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#7568]
Input [8]: [product#7529, plant#7530, orderDateTime#7531, _extract_code#9350, _extract_internalRefUUID#9351, internalUUID#7557, baseUnitOfMeasure#7561, unitOfMeasureConversions#7563]
(2002) Generate
Input [4]: [product#7529, plant#7530, orderDateTime#7531, filteredUnitOfMeasureConversions#7568]
Arguments: explode(filteredUnitOfMeasureConversions#7568.quantityNumerator), [product#7529, plant#7530, orderDateTime#7531, filteredUnitOfMeasureConversions#7568], true, [quantityNumerator#7569]
(2003) Project
Output [4]: [product#7529, plant#7530, orderDateTime#7531, filteredUnitOfMeasureConversions#7568.quantityDenominator AS _extract_quantityDenominator#8692]
Input [5]: [product#7529, plant#7530, orderDateTime#7531, filteredUnitOfMeasureConversions#7568, quantityNumerator#7569]
(2004) Generate
Input [4]: [product#7529, plant#7530, orderDateTime#7531, _extract_quantityDenominator#8692]
Arguments: explode(_extract_quantityDenominator#8692), [product#7529, plant#7530, orderDateTime#7531], true, [quantityDenominator#7570]
(2005) Project
Output [3]: [product#7529, plant#7530, orderDateTime#7531]
Input [4]: [product#7529, plant#7530, orderDateTime#7531, quantityDenominator#7570]
(2006) Sort
Input [3]: [product#7529, plant#7530, orderDateTime#7531]
Arguments: [product#7529 ASC NULLS FIRST, plant#7530 ASC NULLS FIRST], false, 0
(2007) Scan parquet
Output [6]: [internalUUID#7574, product#7575, plant#7576, calculationDateTime#7577, stockQuantities#7578, systemId#7573]
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#7574, product#7575, plant#7576, calculationDateTime#7577, stockQuantities#7578, systemId#7573]
Condition : (isnotnull(plant#7576.internalRefUUID) AND isnotnull(product#7575.internalRefUUID))
(2009) Project
Output [6]: [systemId#7573, internalUUID#7574, product#7575, plant#7576, calculationDateTime#7577, stockQuantities#7578]
Input [6]: [internalUUID#7574, product#7575, plant#7576, calculationDateTime#7577, stockQuantities#7578, systemId#7573]
(2010) Exchange
Input [6]: [systemId#7573, internalUUID#7574, product#7575, plant#7576, calculationDateTime#7577, stockQuantities#7578]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8565]
(2011) BroadcastExchange
Input [6]: [systemId#7573, internalUUID#7574, product#7575, plant#7576, calculationDateTime#7577, stockQuantities#7578]
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=10655]
(2012) Scan parquet
Output [2]: [marketUnit#7579, distributionCenters#7585]
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#7579, distributionCenters#7585]
Condition : (((marketUnit#7579 <=> DIP_1691) AND (size(distributionCenters#7585, true) > 0)) AND isnotnull(distributionCenters#7585))
(2014) Project
Output [1]: [distributionCenters#7585]
Input [2]: [marketUnit#7579, distributionCenters#7585]
(2015) Exchange
Input [1]: [distributionCenters#7585]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8569]
(2016) Generate
Input [1]: [distributionCenters#7585]
Arguments: explode(distributionCenters#7585), false, [distributionCenters#7601]
(2017) Filter
Input [1]: [distributionCenters#7601]
Condition : (((size(distributionCenters#7601.storageLocations, true) > 0) AND isnotnull(distributionCenters#7601.storageLocations)) AND isnotnull(distributionCenters#7601.internalRefUUID))
(2018) Project
Output [2]: [distributionCenters#7601.internalRefUUID AS _extract_internalRefUUID#8696, distributionCenters#7601.storageLocations AS _extract_storageLocations#8697]
Input [1]: [distributionCenters#7601]
(2019) Generate
Input [2]: [_extract_internalRefUUID#8696, _extract_storageLocations#8697]
Arguments: explode(_extract_storageLocations#8697), [_extract_internalRefUUID#8696], false, [storageLocations#7602]
(2020) Project
Output [3]: [_extract_internalRefUUID#8696 AS plantUuid#7604, storageLocations#7602.id AS storageLocId#7605, storageLocations#7602.internalRefUUID AS storageLocUuid#7606]
Input [2]: [_extract_internalRefUUID#8696, storageLocations#7602]
(2021) BroadcastExchange
Input [3]: [plantUuid#7604, storageLocId#7605, storageLocUuid#7606]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10651]
(2022) Scan parquet
Output [2]: [product#7607, plant#7608]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(2023) Filter
Input [2]: [product#7607, plant#7608]
Condition : isnotnull(plant#7608)
(2024) Exchange
Input [2]: [product#7607, plant#7608]
Arguments: hashpartitioning(product#7607, plant#7608, 10), REPARTITION_BY_NUM, [plan_id=9486]
(2025) Scan parquet
Output [4]: [plant#7613, product#7614, productionAspect#7616, systemId#7611]
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#7613.internalRefUUID AS _extract_internalRefUUID#9354, product#7614.internalRefUUID AS _extract_internalRefUUID#9357, productionAspect#7616.productMovementPlants.unitOfIssue.code AS _extract_code#9355, productionAspect#7616.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9356]
Input [4]: [plant#7613, product#7614, productionAspect#7616, systemId#7611]
(2027) Exchange
Input [4]: [_extract_internalRefUUID#9354, _extract_internalRefUUID#9357, _extract_code#9355, _extract_internalRefUUID#9356]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8581]
(2028) Project
Output [4]: [_extract_code#9355, _extract_internalRefUUID#9356, _extract_internalRefUUID#9357, _extract_internalRefUUID#9354]
Input [4]: [_extract_internalRefUUID#9354, _extract_internalRefUUID#9357, _extract_code#9355, _extract_internalRefUUID#9356]
(2029) BroadcastExchange
Input [4]: [_extract_code#9355, _extract_internalRefUUID#9356, _extract_internalRefUUID#9357, _extract_internalRefUUID#9354]
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=10631]
(2030) BroadcastHashJoin
Left keys [4]: [coalesce(product#7607, ), isnull(product#7607), coalesce(plant#7608, ), isnull(plant#7608)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9357, ), isnull(_extract_internalRefUUID#9357), coalesce(_extract_internalRefUUID#9354, ), isnull(_extract_internalRefUUID#9354)]
Join type: LeftOuter
Join condition: None
(2031) Project
Output [4]: [product#7607, plant#7608, _extract_code#9355, _extract_internalRefUUID#9356]
Input [6]: [product#7607, plant#7608, _extract_code#9355, _extract_internalRefUUID#9356, _extract_internalRefUUID#9357, _extract_internalRefUUID#9354]
(2032) Scan parquet
Output [2]: [internalUUID#7621, systemId#7620]
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#7621]
Input [2]: [internalUUID#7621, systemId#7620]
(2034) Exchange
Input [1]: [internalUUID#7621]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8587]
(2035) BroadcastExchange
Input [1]: [internalUUID#7621]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10635]
(2036) BroadcastHashJoin
Left keys [2]: [coalesce(plant#7608, ), isnull(plant#7608)]
Right keys [2]: [coalesce(internalUUID#7621, ), isnull(internalUUID#7621)]
Join type: LeftOuter
Join condition: None
(2037) Project
Output [4]: [product#7607, plant#7608, _extract_code#9355, _extract_internalRefUUID#9356]
Input [5]: [product#7607, plant#7608, _extract_code#9355, _extract_internalRefUUID#9356, internalUUID#7621]
(2038) Scan parquet
Output [4]: [internalUUID#7635, baseUnitOfMeasure#7639, unitOfMeasureConversions#7641, systemId#7634]
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#7635, baseUnitOfMeasure#7639, unitOfMeasureConversions#7641, systemId#7634]
Condition : isnotnull(internalUUID#7635)
(2040) Project
Output [3]: [internalUUID#7635, baseUnitOfMeasure#7639, unitOfMeasureConversions#7641]
Input [4]: [internalUUID#7635, baseUnitOfMeasure#7639, unitOfMeasureConversions#7641, systemId#7634]
(2041) Exchange
Input [3]: [internalUUID#7635, baseUnitOfMeasure#7639, unitOfMeasureConversions#7641]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8593]
(2042) BroadcastExchange
Input [3]: [internalUUID#7635, baseUnitOfMeasure#7639, unitOfMeasureConversions#7641]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10639]
(2043) BroadcastHashJoin
Left keys [1]: [product#7607]
Right keys [1]: [internalUUID#7635]
Join type: LeftOuter
Join condition: None
(2044) Project
Output [2]: [plant#7608, filter(unitOfMeasureConversions#7641, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9355) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9356)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#7639.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#7639.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#7646]
Input [7]: [product#7607, plant#7608, _extract_code#9355, _extract_internalRefUUID#9356, internalUUID#7635, baseUnitOfMeasure#7639, unitOfMeasureConversions#7641]
(2045) Generate
Input [2]: [plant#7608, filteredUnitOfMeasureConversions#7646]
Arguments: explode(filteredUnitOfMeasureConversions#7646.quantityNumerator), [plant#7608, filteredUnitOfMeasureConversions#7646], true, [quantityNumerator#7647]
(2046) Project
Output [2]: [plant#7608, filteredUnitOfMeasureConversions#7646.quantityDenominator AS _extract_quantityDenominator#8698]
Input [3]: [plant#7608, filteredUnitOfMeasureConversions#7646, quantityNumerator#7647]
(2047) Generate
Input [2]: [plant#7608, _extract_quantityDenominator#8698]
Arguments: explode(_extract_quantityDenominator#8698), [plant#7608], true, [quantityDenominator#7648]
(2048) Project
Output [1]: [plant#7608]
Input [2]: [plant#7608, quantityDenominator#7648]
(2049) HashAggregate
Input [1]: [plant#7608]
Keys [1]: [plant#7608]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#7608]
(2050) Exchange
Input [1]: [plant#7608]
Arguments: hashpartitioning(plant#7608, 10), ENSURE_REQUIREMENTS, [plan_id=10648]
(2051) HashAggregate
Input [1]: [plant#7608]
Keys [1]: [plant#7608]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#7608]
(2052) BroadcastHashJoin
Left keys [1]: [plantUuid#7604]
Right keys [1]: [plant#7608]
Join type: Inner
Join condition: None
(2053) Project
Output [3]: [plantUuid#7604, storageLocId#7605, storageLocUuid#7606]
Input [4]: [plantUuid#7604, storageLocId#7605, storageLocUuid#7606, plant#7608]
(2054) BroadcastHashJoin
Left keys [2]: [coalesce(plant#7576.internalRefUUID, ), isnull(plant#7576.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#7604, ), isnull(plantUuid#7604)]
Join type: Inner
Join condition: None
(2055) Generate
Input [9]: [systemId#7573, internalUUID#7574, product#7575, plant#7576, calculationDateTime#7577, stockQuantities#7578, plantUuid#7604, storageLocId#7605, storageLocUuid#7606]
Arguments: explode(filter(stockQuantities#7578, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#7606) AND (lambda x#1207.storageLocation.Id = storageLocId#7605)), lambda x#1207, false))), [systemId#7573, internalUUID#7574, product#7575, plant#7576, calculationDateTime#7577, plantUuid#7604], false, [stockQuantity#7651]
(2056) ObjectHashAggregate
Input [7]: [systemId#7573, internalUUID#7574, product#7575, plant#7576, calculationDateTime#7577, plantUuid#7604, stockQuantity#7651]
Keys [5]: [plantUuid#7604, internalUUID#7574, plant#7576, product#7575, systemId#7573]
Functions [2]: [partial_first(calculationDateTime#7577, false), partial_collect_list(stockQuantity#7651, 0, 0)]
Aggregate Attributes [3]: [first#10400, valueSet#10401, buf#10402]
Results [8]: [plantUuid#7604, internalUUID#7574, plant#7576, product#7575, systemId#7573, first#10403, valueSet#10404, buf#10405]
(2057) ObjectHashAggregate
Input [8]: [plantUuid#7604, internalUUID#7574, plant#7576, product#7575, systemId#7573, first#10403, valueSet#10404, buf#10405]
Keys [5]: [plantUuid#7604, internalUUID#7574, plant#7576, product#7575, systemId#7573]
Functions [2]: [first(calculationDateTime#7577, false), collect_list(stockQuantity#7651, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#7577)()#1222, collect_list(stockQuantity#7651, 0, 0)#1223]
Results [4]: [product#7575, plant#7576, first(calculationDateTime#7577)()#1222 AS calculationDateTime#7652, collect_list(stockQuantity#7651, 0, 0)#1223 AS stockQuantities#7653]
(2058) Filter
Input [4]: [product#7575, plant#7576, calculationDateTime#7652, stockQuantities#7653]
Condition : ((size(stockQuantities#7653, true) > 0) AND isnotnull(calculationDateTime#7652))
(2059) Generate
Input [4]: [product#7575, plant#7576, calculationDateTime#7652, stockQuantities#7653]
Arguments: explode(stockQuantities#7653), [product#7575, plant#7576, calculationDateTime#7652], false, [stockQuantity#7654]
(2060) Filter
Input [4]: [product#7575, plant#7576, calculationDateTime#7652, stockQuantity#7654]
Condition : (((isnotnull(stockQuantity#7654.specialStockIndicator.code) AND isnotnull(stockQuantity#7654.stockType.code)) AND (stockQuantity#7654.specialStockIndicator.code = )) AND (stockQuantity#7654.stockType.code = 01))
(2061) Project
Output [4]: [plant#7576.internalRefUUID AS plantUuid#7656, product#7575.internalRefUUID AS productUuid#7658, calculationDateTime#7652, stockQuantity#7654.storagelocation.id AS storageLocId#7659]
Input [4]: [product#7575, plant#7576, calculationDateTime#7652, stockQuantity#7654]
(2062) Exchange
Input [4]: [plantUuid#7656, productUuid#7658, calculationDateTime#7652, storageLocId#7659]
Arguments: hashpartitioning(productUuid#7658, plantUuid#7656, 10), ENSURE_REQUIREMENTS, [plan_id=10681]
(2063) Sort
Input [4]: [plantUuid#7656, productUuid#7658, calculationDateTime#7652, storageLocId#7659]
Arguments: [productUuid#7658 ASC NULLS FIRST, plantUuid#7656 ASC NULLS FIRST], false, 0
(2064) Scan parquet
Output [3]: [product#7664, plant#7665, orderDateTime#7666]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2065) Filter
Input [3]: [product#7664, plant#7665, orderDateTime#7666]
Condition : ((isnotnull(orderDateTime#7666) AND isnotnull(plant#7665)) AND isnotnull(product#7664))
(2066) Exchange
Input [3]: [product#7664, plant#7665, orderDateTime#7666]
Arguments: hashpartitioning(product#7664, plant#7665, 10), REPARTITION_BY_NUM, [plan_id=9509]
(2067) Scan parquet
Output [4]: [plant#7670, product#7671, productionAspect#7673, systemId#7668]
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#7670.internalRefUUID AS _extract_internalRefUUID#9358, product#7671.internalRefUUID AS _extract_internalRefUUID#9359, productionAspect#7673.productMovementPlants.unitOfIssue.code AS _extract_code#9360, productionAspect#7673.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9361]
Input [4]: [plant#7670, product#7671, productionAspect#7673, systemId#7668]
(2069) Exchange
Input [4]: [_extract_internalRefUUID#9358, _extract_internalRefUUID#9359, _extract_code#9360, _extract_internalRefUUID#9361]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8618]
(2070) Project
Output [4]: [_extract_code#9360, _extract_internalRefUUID#9361, _extract_internalRefUUID#9359, _extract_internalRefUUID#9358]
Input [4]: [_extract_internalRefUUID#9358, _extract_internalRefUUID#9359, _extract_code#9360, _extract_internalRefUUID#9361]
(2071) BroadcastExchange
Input [4]: [_extract_code#9360, _extract_internalRefUUID#9361, _extract_internalRefUUID#9359, _extract_internalRefUUID#9358]
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=10664]
(2072) BroadcastHashJoin
Left keys [4]: [coalesce(product#7664, ), isnull(product#7664), coalesce(plant#7665, ), isnull(plant#7665)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9359, ), isnull(_extract_internalRefUUID#9359), coalesce(_extract_internalRefUUID#9358, ), isnull(_extract_internalRefUUID#9358)]
Join type: LeftOuter
Join condition: None
(2073) Project
Output [5]: [product#7664, plant#7665, orderDateTime#7666, _extract_code#9360, _extract_internalRefUUID#9361]
Input [7]: [product#7664, plant#7665, orderDateTime#7666, _extract_code#9360, _extract_internalRefUUID#9361, _extract_internalRefUUID#9359, _extract_internalRefUUID#9358]
(2074) Scan parquet
Output [2]: [internalUUID#7678, systemId#7677]
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#7678]
Input [2]: [internalUUID#7678, systemId#7677]
(2076) Exchange
Input [1]: [internalUUID#7678]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8624]
(2077) BroadcastExchange
Input [1]: [internalUUID#7678]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10668]
(2078) BroadcastHashJoin
Left keys [2]: [coalesce(plant#7665, ), isnull(plant#7665)]
Right keys [2]: [coalesce(internalUUID#7678, ), isnull(internalUUID#7678)]
Join type: LeftOuter
Join condition: None
(2079) Project
Output [5]: [product#7664, plant#7665, orderDateTime#7666, _extract_code#9360, _extract_internalRefUUID#9361]
Input [6]: [product#7664, plant#7665, orderDateTime#7666, _extract_code#9360, _extract_internalRefUUID#9361, internalUUID#7678]
(2080) Scan parquet
Output [4]: [internalUUID#7692, baseUnitOfMeasure#7696, unitOfMeasureConversions#7698, systemId#7691]
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#7692, baseUnitOfMeasure#7696, unitOfMeasureConversions#7698, systemId#7691]
Condition : isnotnull(internalUUID#7692)
(2082) Project
Output [3]: [internalUUID#7692, baseUnitOfMeasure#7696, unitOfMeasureConversions#7698]
Input [4]: [internalUUID#7692, baseUnitOfMeasure#7696, unitOfMeasureConversions#7698, systemId#7691]
(2083) Exchange
Input [3]: [internalUUID#7692, baseUnitOfMeasure#7696, unitOfMeasureConversions#7698]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8630]
(2084) BroadcastExchange
Input [3]: [internalUUID#7692, baseUnitOfMeasure#7696, unitOfMeasureConversions#7698]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10672]
(2085) BroadcastHashJoin
Left keys [1]: [product#7664]
Right keys [1]: [internalUUID#7692]
Join type: LeftOuter
Join condition: None
(2086) Project
Output [4]: [product#7664, plant#7665, orderDateTime#7666, filter(unitOfMeasureConversions#7698, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9360) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9361)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#7696.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#7696.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#7703]
Input [8]: [product#7664, plant#7665, orderDateTime#7666, _extract_code#9360, _extract_internalRefUUID#9361, internalUUID#7692, baseUnitOfMeasure#7696, unitOfMeasureConversions#7698]
(2087) Generate
Input [4]: [product#7664, plant#7665, orderDateTime#7666, filteredUnitOfMeasureConversions#7703]
Arguments: explode(filteredUnitOfMeasureConversions#7703.quantityNumerator), [product#7664, plant#7665, orderDateTime#7666, filteredUnitOfMeasureConversions#7703], true, [quantityNumerator#7704]
(2088) Project
Output [4]: [product#7664, plant#7665, orderDateTime#7666, filteredUnitOfMeasureConversions#7703.quantityDenominator AS _extract_quantityDenominator#8702]
Input [5]: [product#7664, plant#7665, orderDateTime#7666, filteredUnitOfMeasureConversions#7703, quantityNumerator#7704]
(2089) Generate
Input [4]: [product#7664, plant#7665, orderDateTime#7666, _extract_quantityDenominator#8702]
Arguments: explode(_extract_quantityDenominator#8702), [product#7664, plant#7665, orderDateTime#7666], true, [quantityDenominator#7705]
(2090) Project
Output [3]: [product#7664, plant#7665, orderDateTime#7666]
Input [4]: [product#7664, plant#7665, orderDateTime#7666, quantityDenominator#7705]
(2091) Sort
Input [3]: [product#7664, plant#7665, orderDateTime#7666]
Arguments: [product#7664 ASC NULLS FIRST, plant#7665 ASC NULLS FIRST], false, 0
(2092) SortMergeJoin
Left keys [2]: [productUuid#7658, plantUuid#7656]
Right keys [2]: [product#7664, plant#7665]
Join type: Inner
Join condition: (calculationDateTime#7652 <= orderDateTime#7666)
(2093) Project
Output [4]: [plantUuid#7656 AS plant#7708, productUuid#7658 AS product#7709, storageLocId#7659, calculationDateTime#7652]
Input [7]: [plantUuid#7656, productUuid#7658, calculationDateTime#7652, storageLocId#7659, product#7664, plant#7665, orderDateTime#7666]
(2094) Exchange
Input [4]: [plant#7708, product#7709, storageLocId#7659, calculationDateTime#7652]
Arguments: hashpartitioning(coalesce(plant#7708, ), isnull(plant#7708), coalesce(product#7709, ), isnull(product#7709), coalesce(storageLocId#7659, ), isnull(storageLocId#7659), coalesce(calculationDateTime#7652, 1970-01-01 00:00:00), isnull(calculationDateTime#7652), 10), ENSURE_REQUIREMENTS, [plan_id=10745]
(2095) Sort
Input [4]: [plant#7708, product#7709, storageLocId#7659, calculationDateTime#7652]
Arguments: [coalesce(plant#7708, ) ASC NULLS FIRST, isnull(plant#7708) ASC NULLS FIRST, coalesce(product#7709, ) ASC NULLS FIRST, isnull(product#7709) ASC NULLS FIRST, coalesce(storageLocId#7659, ) ASC NULLS FIRST, isnull(storageLocId#7659) ASC NULLS FIRST, coalesce(calculationDateTime#7652, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#7652) ASC NULLS FIRST], false, 0
(2096) Scan parquet
Output [6]: [internalUUID#7711, product#7712, plant#7713, calculationDateTime#7714, stockQuantities#7715, systemId#7710]
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#7711, product#7712, plant#7713, calculationDateTime#7714, stockQuantities#7715, systemId#7710]
Condition : (isnotnull(plant#7713.internalRefUUID) AND isnotnull(product#7712.internalRefUUID))
(2098) Project
Output [6]: [systemId#7710, internalUUID#7711, product#7712, plant#7713, calculationDateTime#7714, stockQuantities#7715]
Input [6]: [internalUUID#7711, product#7712, plant#7713, calculationDateTime#7714, stockQuantities#7715, systemId#7710]
(2099) Exchange
Input [6]: [systemId#7710, internalUUID#7711, product#7712, plant#7713, calculationDateTime#7714, stockQuantities#7715]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8642]
(2100) BroadcastExchange
Input [6]: [systemId#7710, internalUUID#7711, product#7712, plant#7713, calculationDateTime#7714, stockQuantities#7715]
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=10710]
(2101) Scan parquet
Output [2]: [marketUnit#7716, distributionCenters#7722]
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#7716, distributionCenters#7722]
Condition : (((marketUnit#7716 <=> DIP_1691) AND (size(distributionCenters#7722, true) > 0)) AND isnotnull(distributionCenters#7722))
(2103) Project
Output [1]: [distributionCenters#7722]
Input [2]: [marketUnit#7716, distributionCenters#7722]
(2104) Exchange
Input [1]: [distributionCenters#7722]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8646]
(2105) Generate
Input [1]: [distributionCenters#7722]
Arguments: explode(distributionCenters#7722), false, [distributionCenters#7738]
(2106) Filter
Input [1]: [distributionCenters#7738]
Condition : (((size(distributionCenters#7738.storageLocations, true) > 0) AND isnotnull(distributionCenters#7738.storageLocations)) AND isnotnull(distributionCenters#7738.internalRefUUID))
(2107) Project
Output [2]: [distributionCenters#7738.internalRefUUID AS _extract_internalRefUUID#8706, distributionCenters#7738.storageLocations AS _extract_storageLocations#8707]
Input [1]: [distributionCenters#7738]
(2108) Generate
Input [2]: [_extract_internalRefUUID#8706, _extract_storageLocations#8707]
Arguments: explode(_extract_storageLocations#8707), [_extract_internalRefUUID#8706], false, [storageLocations#7739]
(2109) Project
Output [3]: [_extract_internalRefUUID#8706 AS plantUuid#7741, storageLocations#7739.id AS storageLocId#7742, storageLocations#7739.internalRefUUID AS storageLocUuid#7743]
Input [2]: [_extract_internalRefUUID#8706, storageLocations#7739]
(2110) BroadcastExchange
Input [3]: [plantUuid#7741, storageLocId#7742, storageLocUuid#7743]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10706]
(2111) Scan parquet
Output [2]: [product#7744, plant#7745]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(2112) Filter
Input [2]: [product#7744, plant#7745]
Condition : isnotnull(plant#7745)
(2113) Exchange
Input [2]: [product#7744, plant#7745]
Arguments: hashpartitioning(product#7744, plant#7745, 10), REPARTITION_BY_NUM, [plan_id=9522]
(2114) Scan parquet
Output [4]: [plant#7750, product#7751, productionAspect#7753, systemId#7748]
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#7750.internalRefUUID AS _extract_internalRefUUID#9362, product#7751.internalRefUUID AS _extract_internalRefUUID#9363, productionAspect#7753.productMovementPlants.unitOfIssue.code AS _extract_code#9364, productionAspect#7753.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9365]
Input [4]: [plant#7750, product#7751, productionAspect#7753, systemId#7748]
(2116) Exchange
Input [4]: [_extract_internalRefUUID#9362, _extract_internalRefUUID#9363, _extract_code#9364, _extract_internalRefUUID#9365]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8658]
(2117) Project
Output [4]: [_extract_code#9364, _extract_internalRefUUID#9365, _extract_internalRefUUID#9363, _extract_internalRefUUID#9362]
Input [4]: [_extract_internalRefUUID#9362, _extract_internalRefUUID#9363, _extract_code#9364, _extract_internalRefUUID#9365]
(2118) BroadcastExchange
Input [4]: [_extract_code#9364, _extract_internalRefUUID#9365, _extract_internalRefUUID#9363, _extract_internalRefUUID#9362]
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=10686]
(2119) BroadcastHashJoin
Left keys [4]: [coalesce(product#7744, ), isnull(product#7744), coalesce(plant#7745, ), isnull(plant#7745)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9363, ), isnull(_extract_internalRefUUID#9363), coalesce(_extract_internalRefUUID#9362, ), isnull(_extract_internalRefUUID#9362)]
Join type: LeftOuter
Join condition: None
(2120) Project
Output [4]: [product#7744, plant#7745, _extract_code#9364, _extract_internalRefUUID#9365]
Input [6]: [product#7744, plant#7745, _extract_code#9364, _extract_internalRefUUID#9365, _extract_internalRefUUID#9363, _extract_internalRefUUID#9362]
(2121) Scan parquet
Output [2]: [internalUUID#7758, systemId#7757]
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#7758]
Input [2]: [internalUUID#7758, systemId#7757]
(2123) Exchange
Input [1]: [internalUUID#7758]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8664]
(2124) BroadcastExchange
Input [1]: [internalUUID#7758]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10690]
(2125) BroadcastHashJoin
Left keys [2]: [coalesce(plant#7745, ), isnull(plant#7745)]
Right keys [2]: [coalesce(internalUUID#7758, ), isnull(internalUUID#7758)]
Join type: LeftOuter
Join condition: None
(2126) Project
Output [4]: [product#7744, plant#7745, _extract_code#9364, _extract_internalRefUUID#9365]
Input [5]: [product#7744, plant#7745, _extract_code#9364, _extract_internalRefUUID#9365, internalUUID#7758]
(2127) Scan parquet
Output [4]: [internalUUID#7772, baseUnitOfMeasure#7776, unitOfMeasureConversions#7778, systemId#7771]
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#7772, baseUnitOfMeasure#7776, unitOfMeasureConversions#7778, systemId#7771]
Condition : isnotnull(internalUUID#7772)
(2129) Project
Output [3]: [internalUUID#7772, baseUnitOfMeasure#7776, unitOfMeasureConversions#7778]
Input [4]: [internalUUID#7772, baseUnitOfMeasure#7776, unitOfMeasureConversions#7778, systemId#7771]
(2130) Exchange
Input [3]: [internalUUID#7772, baseUnitOfMeasure#7776, unitOfMeasureConversions#7778]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8670]
(2131) BroadcastExchange
Input [3]: [internalUUID#7772, baseUnitOfMeasure#7776, unitOfMeasureConversions#7778]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10694]
(2132) BroadcastHashJoin
Left keys [1]: [product#7744]
Right keys [1]: [internalUUID#7772]
Join type: LeftOuter
Join condition: None
(2133) Project
Output [2]: [plant#7745, filter(unitOfMeasureConversions#7778, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9364) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9365)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#7776.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#7776.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#7783]
Input [7]: [product#7744, plant#7745, _extract_code#9364, _extract_internalRefUUID#9365, internalUUID#7772, baseUnitOfMeasure#7776, unitOfMeasureConversions#7778]
(2134) Generate
Input [2]: [plant#7745, filteredUnitOfMeasureConversions#7783]
Arguments: explode(filteredUnitOfMeasureConversions#7783.quantityNumerator), [plant#7745, filteredUnitOfMeasureConversions#7783], true, [quantityNumerator#7784]
(2135) Project
Output [2]: [plant#7745, filteredUnitOfMeasureConversions#7783.quantityDenominator AS _extract_quantityDenominator#8708]
Input [3]: [plant#7745, filteredUnitOfMeasureConversions#7783, quantityNumerator#7784]
(2136) Generate
Input [2]: [plant#7745, _extract_quantityDenominator#8708]
Arguments: explode(_extract_quantityDenominator#8708), [plant#7745], true, [quantityDenominator#7785]
(2137) Project
Output [1]: [plant#7745]
Input [2]: [plant#7745, quantityDenominator#7785]
(2138) HashAggregate
Input [1]: [plant#7745]
Keys [1]: [plant#7745]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#7745]
(2139) Exchange
Input [1]: [plant#7745]
Arguments: hashpartitioning(plant#7745, 10), ENSURE_REQUIREMENTS, [plan_id=10703]
(2140) HashAggregate
Input [1]: [plant#7745]
Keys [1]: [plant#7745]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#7745]
(2141) BroadcastHashJoin
Left keys [1]: [plantUuid#7741]
Right keys [1]: [plant#7745]
Join type: Inner
Join condition: None
(2142) Project
Output [3]: [plantUuid#7741, storageLocId#7742, storageLocUuid#7743]
Input [4]: [plantUuid#7741, storageLocId#7742, storageLocUuid#7743, plant#7745]
(2143) BroadcastHashJoin
Left keys [2]: [coalesce(plant#7713.internalRefUUID, ), isnull(plant#7713.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#7741, ), isnull(plantUuid#7741)]
Join type: Inner
Join condition: None
(2144) Generate
Input [9]: [systemId#7710, internalUUID#7711, product#7712, plant#7713, calculationDateTime#7714, stockQuantities#7715, plantUuid#7741, storageLocId#7742, storageLocUuid#7743]
Arguments: explode(filter(stockQuantities#7715, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#7743) AND (lambda x#1207.storageLocation.Id = storageLocId#7742)), lambda x#1207, false))), [systemId#7710, internalUUID#7711, product#7712, plant#7713, calculationDateTime#7714, plantUuid#7741], false, [stockQuantity#7788]
(2145) ObjectHashAggregate
Input [7]: [systemId#7710, internalUUID#7711, product#7712, plant#7713, calculationDateTime#7714, plantUuid#7741, stockQuantity#7788]
Keys [5]: [plantUuid#7741, internalUUID#7711, plant#7713, product#7712, systemId#7710]
Functions [2]: [partial_first(calculationDateTime#7714, false), partial_collect_list(stockQuantity#7788, 0, 0)]
Aggregate Attributes [3]: [first#10408, valueSet#10409, buf#10410]
Results [8]: [plantUuid#7741, internalUUID#7711, plant#7713, product#7712, systemId#7710, first#10411, valueSet#10412, buf#10413]
(2146) ObjectHashAggregate
Input [8]: [plantUuid#7741, internalUUID#7711, plant#7713, product#7712, systemId#7710, first#10411, valueSet#10412, buf#10413]
Keys [5]: [plantUuid#7741, internalUUID#7711, plant#7713, product#7712, systemId#7710]
Functions [2]: [first(calculationDateTime#7714, false), collect_list(stockQuantity#7788, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#7714)()#1222, collect_list(stockQuantity#7788, 0, 0)#1223]
Results [4]: [product#7712, plant#7713, first(calculationDateTime#7714)()#1222 AS calculationDateTime#7789, collect_list(stockQuantity#7788, 0, 0)#1223 AS stockQuantities#7790]
(2147) Filter
Input [4]: [product#7712, plant#7713, calculationDateTime#7789, stockQuantities#7790]
Condition : ((size(stockQuantities#7790, true) > 0) AND isnotnull(calculationDateTime#7789))
(2148) Generate
Input [4]: [product#7712, plant#7713, calculationDateTime#7789, stockQuantities#7790]
Arguments: explode(stockQuantities#7790), [product#7712, plant#7713, calculationDateTime#7789], false, [stockQuantity#7791]
(2149) Filter
Input [4]: [product#7712, plant#7713, calculationDateTime#7789, stockQuantity#7791]
Condition : (((isnotnull(stockQuantity#7791.specialStockIndicator.code) AND isnotnull(stockQuantity#7791.stockType.code)) AND (stockQuantity#7791.specialStockIndicator.code = )) AND (stockQuantity#7791.stockType.code = 01))
(2150) Project
Output [4]: [plant#7713.internalRefUUID AS plantUuid#7793, product#7712.internalRefUUID AS productUuid#7795, calculationDateTime#7789, stockQuantity#7791.storagelocation.id AS storageLocId#7796]
Input [4]: [product#7712, plant#7713, calculationDateTime#7789, stockQuantity#7791]
(2151) Exchange
Input [4]: [plantUuid#7793, productUuid#7795, calculationDateTime#7789, storageLocId#7796]
Arguments: hashpartitioning(productUuid#7795, plantUuid#7793, 10), ENSURE_REQUIREMENTS, [plan_id=10736]
(2152) Sort
Input [4]: [plantUuid#7793, productUuid#7795, calculationDateTime#7789, storageLocId#7796]
Arguments: [productUuid#7795 ASC NULLS FIRST, plantUuid#7793 ASC NULLS FIRST], false, 0
(2153) Scan parquet
Output [3]: [product#7801, plant#7802, orderDateTime#7803]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2154) Filter
Input [3]: [product#7801, plant#7802, orderDateTime#7803]
Condition : ((isnotnull(orderDateTime#7803) AND isnotnull(plant#7802)) AND isnotnull(product#7801))
(2155) Exchange
Input [3]: [product#7801, plant#7802, orderDateTime#7803]
Arguments: hashpartitioning(product#7801, plant#7802, 10), REPARTITION_BY_NUM, [plan_id=9545]
(2156) Scan parquet
Output [4]: [plant#7807, product#7808, productionAspect#7810, systemId#7805]
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#7807.internalRefUUID AS _extract_internalRefUUID#9367, product#7808.internalRefUUID AS _extract_internalRefUUID#9366, productionAspect#7810.productMovementPlants.unitOfIssue.code AS _extract_code#9368, productionAspect#7810.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9369]
Input [4]: [plant#7807, product#7808, productionAspect#7810, systemId#7805]
(2158) Exchange
Input [4]: [_extract_internalRefUUID#9367, _extract_internalRefUUID#9366, _extract_code#9368, _extract_internalRefUUID#9369]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8695]
(2159) Project
Output [4]: [_extract_code#9368, _extract_internalRefUUID#9369, _extract_internalRefUUID#9366, _extract_internalRefUUID#9367]
Input [4]: [_extract_internalRefUUID#9367, _extract_internalRefUUID#9366, _extract_code#9368, _extract_internalRefUUID#9369]
(2160) BroadcastExchange
Input [4]: [_extract_code#9368, _extract_internalRefUUID#9369, _extract_internalRefUUID#9366, _extract_internalRefUUID#9367]
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=10719]
(2161) BroadcastHashJoin
Left keys [4]: [coalesce(product#7801, ), isnull(product#7801), coalesce(plant#7802, ), isnull(plant#7802)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9366, ), isnull(_extract_internalRefUUID#9366), coalesce(_extract_internalRefUUID#9367, ), isnull(_extract_internalRefUUID#9367)]
Join type: LeftOuter
Join condition: None
(2162) Project
Output [5]: [product#7801, plant#7802, orderDateTime#7803, _extract_code#9368, _extract_internalRefUUID#9369]
Input [7]: [product#7801, plant#7802, orderDateTime#7803, _extract_code#9368, _extract_internalRefUUID#9369, _extract_internalRefUUID#9366, _extract_internalRefUUID#9367]
(2163) Scan parquet
Output [2]: [internalUUID#7815, systemId#7814]
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#7815]
Input [2]: [internalUUID#7815, systemId#7814]
(2165) Exchange
Input [1]: [internalUUID#7815]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8701]
(2166) BroadcastExchange
Input [1]: [internalUUID#7815]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10723]
(2167) BroadcastHashJoin
Left keys [2]: [coalesce(plant#7802, ), isnull(plant#7802)]
Right keys [2]: [coalesce(internalUUID#7815, ), isnull(internalUUID#7815)]
Join type: LeftOuter
Join condition: None
(2168) Project
Output [5]: [product#7801, plant#7802, orderDateTime#7803, _extract_code#9368, _extract_internalRefUUID#9369]
Input [6]: [product#7801, plant#7802, orderDateTime#7803, _extract_code#9368, _extract_internalRefUUID#9369, internalUUID#7815]
(2169) Scan parquet
Output [4]: [internalUUID#7829, baseUnitOfMeasure#7833, unitOfMeasureConversions#7835, systemId#7828]
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#7829, baseUnitOfMeasure#7833, unitOfMeasureConversions#7835, systemId#7828]
Condition : isnotnull(internalUUID#7829)
(2171) Project
Output [3]: [internalUUID#7829, baseUnitOfMeasure#7833, unitOfMeasureConversions#7835]
Input [4]: [internalUUID#7829, baseUnitOfMeasure#7833, unitOfMeasureConversions#7835, systemId#7828]
(2172) Exchange
Input [3]: [internalUUID#7829, baseUnitOfMeasure#7833, unitOfMeasureConversions#7835]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8707]
(2173) BroadcastExchange
Input [3]: [internalUUID#7829, baseUnitOfMeasure#7833, unitOfMeasureConversions#7835]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10727]
(2174) BroadcastHashJoin
Left keys [1]: [product#7801]
Right keys [1]: [internalUUID#7829]
Join type: LeftOuter
Join condition: None
(2175) Project
Output [4]: [product#7801, plant#7802, orderDateTime#7803, filter(unitOfMeasureConversions#7835, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9368) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9369)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#7833.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#7833.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#7840]
Input [8]: [product#7801, plant#7802, orderDateTime#7803, _extract_code#9368, _extract_internalRefUUID#9369, internalUUID#7829, baseUnitOfMeasure#7833, unitOfMeasureConversions#7835]
(2176) Generate
Input [4]: [product#7801, plant#7802, orderDateTime#7803, filteredUnitOfMeasureConversions#7840]
Arguments: explode(filteredUnitOfMeasureConversions#7840.quantityNumerator), [product#7801, plant#7802, orderDateTime#7803, filteredUnitOfMeasureConversions#7840], true, [quantityNumerator#7841]
(2177) Project
Output [4]: [product#7801, plant#7802, orderDateTime#7803, filteredUnitOfMeasureConversions#7840.quantityDenominator AS _extract_quantityDenominator#8712]
Input [5]: [product#7801, plant#7802, orderDateTime#7803, filteredUnitOfMeasureConversions#7840, quantityNumerator#7841]
(2178) Generate
Input [4]: [product#7801, plant#7802, orderDateTime#7803, _extract_quantityDenominator#8712]
Arguments: explode(_extract_quantityDenominator#8712), [product#7801, plant#7802, orderDateTime#7803], true, [quantityDenominator#7842]
(2179) Project
Output [3]: [product#7801, plant#7802, orderDateTime#7803]
Input [4]: [product#7801, plant#7802, orderDateTime#7803, quantityDenominator#7842]
(2180) Sort
Input [3]: [product#7801, plant#7802, orderDateTime#7803]
Arguments: [product#7801 ASC NULLS FIRST, plant#7802 ASC NULLS FIRST], false, 0
(2181) SortMergeJoin
Left keys [2]: [productUuid#7795, plantUuid#7793]
Right keys [2]: [product#7801, plant#7802]
Join type: Inner
Join condition: (calculationDateTime#7789 <= orderDateTime#7803)
(2182) Project
Output [4]: [plantUuid#7793 AS plant#7845, productUuid#7795 AS product#7846, storageLocId#7796, calculationDateTime#7789]
Input [7]: [plantUuid#7793, productUuid#7795, calculationDateTime#7789, storageLocId#7796, product#7801, plant#7802, orderDateTime#7803]
(2183) HashAggregate
Input [4]: [plant#7845, product#7846, storageLocId#7796, calculationDateTime#7789]
Keys [3]: [plant#7845, product#7846, storageLocId#7796]
Functions [1]: [partial_max(calculationDateTime#7789)]
Aggregate Attributes [1]: [max#10406]
Results [4]: [plant#7845, product#7846, storageLocId#7796, max#10407]
(2184) HashAggregate
Input [4]: [plant#7845, product#7846, storageLocId#7796, max#10407]
Keys [3]: [plant#7845, product#7846, storageLocId#7796]
Functions [1]: [max(calculationDateTime#7789)]
Aggregate Attributes [1]: [max(calculationDateTime#7789)#1300]
Results [4]: [plant#7845, product#7846, storageLocId#7796, max(calculationDateTime#7789)#1300 AS max_calc_datetime#7847]
(2185) Exchange
Input [4]: [plant#7845, product#7846, storageLocId#7796, max_calc_datetime#7847]
Arguments: hashpartitioning(coalesce(plant#7845, ), isnull(plant#7845), coalesce(product#7846, ), isnull(product#7846), coalesce(storageLocId#7796, ), isnull(storageLocId#7796), coalesce(max_calc_datetime#7847, 1970-01-01 00:00:00), isnull(max_calc_datetime#7847), 10), ENSURE_REQUIREMENTS, [plan_id=10746]
(2186) Sort
Input [4]: [plant#7845, product#7846, storageLocId#7796, max_calc_datetime#7847]
Arguments: [coalesce(plant#7845, ) ASC NULLS FIRST, isnull(plant#7845) ASC NULLS FIRST, coalesce(product#7846, ) ASC NULLS FIRST, isnull(product#7846) ASC NULLS FIRST, coalesce(storageLocId#7796, ) ASC NULLS FIRST, isnull(storageLocId#7796) ASC NULLS FIRST, coalesce(max_calc_datetime#7847, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#7847) ASC NULLS FIRST], false, 0
(2187) SortMergeJoin
Left keys [8]: [coalesce(plant#7708, ), isnull(plant#7708), coalesce(product#7709, ), isnull(product#7709), coalesce(storageLocId#7659, ), isnull(storageLocId#7659), coalesce(calculationDateTime#7652, 1970-01-01 00:00:00), isnull(calculationDateTime#7652)]
Right keys [8]: [coalesce(plant#7845, ), isnull(plant#7845), coalesce(product#7846, ), isnull(product#7846), coalesce(storageLocId#7796, ), isnull(storageLocId#7796), coalesce(max_calc_datetime#7847, 1970-01-01 00:00:00), isnull(max_calc_datetime#7847)]
Join type: Inner
Join condition: None
(2188) Project
Output [3]: [plant#7708, product#7709, calculationDateTime#7652]
Input [8]: [plant#7708, product#7709, storageLocId#7659, calculationDateTime#7652, plant#7845, product#7846, storageLocId#7796, max_calc_datetime#7847]
(2189) HashAggregate
Input [3]: [plant#7708, product#7709, calculationDateTime#7652]
Keys [2]: [product#7709, plant#7708]
Functions [1]: [partial_min(calculationDateTime#7652)]
Aggregate Attributes [1]: [min#10398]
Results [3]: [product#7709, plant#7708, min#10399]
(2190) Exchange
Input [3]: [product#7709, plant#7708, min#10399]
Arguments: hashpartitioning(product#7709, plant#7708, 10), ENSURE_REQUIREMENTS, [plan_id=10753]
(2191) HashAggregate
Input [3]: [product#7709, plant#7708, min#10399]
Keys [2]: [product#7709, plant#7708]
Functions [1]: [min(calculationDateTime#7652)]
Aggregate Attributes [1]: [min(calculationDateTime#7652)#1456]
Results [3]: [product#7709, plant#7708, min(calculationDateTime#7652)#1456 AS minCalculationDateTime#7849]
(2192) Sort
Input [3]: [product#7709, plant#7708, minCalculationDateTime#7849]
Arguments: [product#7709 ASC NULLS FIRST, plant#7708 ASC NULLS FIRST], false, 0
(2193) SortMergeJoin
Left keys [2]: [product#7529, plant#7530]
Right keys [2]: [product#7709, plant#7708]
Join type: LeftOuter
Join condition: None
(2194) Project
Output [3]: [product#7529, plant#7530, CASE WHEN isnotnull(minCalculationDateTime#7849) THEN minCalculationDateTime#7849 ELSE orderDateTime#7531 END AS stockDatetime#7851]
Input [6]: [product#7529, plant#7530, orderDateTime#7531, product#7709, plant#7708, minCalculationDateTime#7849]
(2195) Exchange
Input [3]: [product#7529, plant#7530, stockDatetime#7851]
Arguments: hashpartitioning(coalesce(plant#7530, ), isnull(plant#7530), coalesce(product#7529, ), isnull(product#7529), 10), ENSURE_REQUIREMENTS, [plan_id=10917]
(2196) Sort
Input [3]: [product#7529, plant#7530, stockDatetime#7851]
Arguments: [coalesce(plant#7530, ) ASC NULLS FIRST, isnull(plant#7530) ASC NULLS FIRST, coalesce(product#7529, ) ASC NULLS FIRST, isnull(product#7529) ASC NULLS FIRST], false, 0
(2197) Scan parquet
Output [3]: [product#7854, plant#7855, orderDateTime#7856]
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/10000000004/shardId=0_1_10000000004]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2198) Exchange
Input [3]: [product#7854, plant#7855, orderDateTime#7856]
Arguments: hashpartitioning(product#7854, plant#7855, 10), REPARTITION_BY_NUM, [plan_id=8725]
(2199) Scan parquet
Output [8]: [internalUUID#7859, plant#7860, product#7861, blockedForReplenishmentStartingFrom#7862, productionAspect#7863, salesPlant#7864, listing#7865, systemId#7858]
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#7858, internalUUID#7859, plant#7860, product#7861, blockedForReplenishmentStartingFrom#7862, productionAspect#7863, salesPlant#7864, listing#7865]
Input [8]: [internalUUID#7859, plant#7860, product#7861, blockedForReplenishmentStartingFrom#7862, productionAspect#7863, salesPlant#7864, listing#7865, systemId#7858]
(2201) Exchange
Input [8]: [systemId#7858, internalUUID#7859, plant#7860, product#7861, blockedForReplenishmentStartingFrom#7862, productionAspect#7863, salesPlant#7864, listing#7865]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8728]
(2202) Project
Output [1]: [struct(systemId, systemId#7858, internalUUID, internalUUID#7859, plant, plant#7860, product, product#7861, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#7862, productionAspect, productionAspect#7863, salesPlant, salesPlant#7864, listing, listing#7865) AS productPlant#7866]
Input [8]: [systemId#7858, internalUUID#7859, plant#7860, product#7861, blockedForReplenishmentStartingFrom#7862, productionAspect#7863, salesPlant#7864, listing#7865]
(2203) BroadcastExchange
Input [1]: [productPlant#7866]
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=10761]
(2204) BroadcastHashJoin
Left keys [4]: [coalesce(product#7854, ), isnull(product#7854), coalesce(plant#7855, ), isnull(plant#7855)]
Right keys [4]: [coalesce(productPlant#7866.product.internalRefUUID, ), isnull(productPlant#7866.product.internalRefUUID), coalesce(productPlant#7866.plant.internalRefUUID, ), isnull(productPlant#7866.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(2205) Scan parquet
Output [3]: [internalUUID#7868, address#7874, systemId#7867]
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#7868, address#7874.timeZone.code AS timezonecode#7879]
Input [3]: [internalUUID#7868, address#7874, systemId#7867]
(2207) Exchange
Input [2]: [internalUUID#7868, timezonecode#7879]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8733]
(2208) BroadcastExchange
Input [2]: [internalUUID#7868, timezonecode#7879]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10764]
(2209) BroadcastHashJoin
Left keys [2]: [coalesce(plant#7855, ), isnull(plant#7855)]
Right keys [2]: [coalesce(internalUUID#7868, ), isnull(internalUUID#7868)]
Join type: LeftOuter
Join condition: None
(2210) Project
Output [5]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, CASE WHEN isnotnull(timezonecode#7879) THEN timezonecode#7879 ELSE UTC END AS timezonecode#7880]
Input [6]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, internalUUID#7868, timezonecode#7879]
(2211) Scan parquet
Output [4]: [internalUUID#7882, baseUnitOfMeasure#7886, unitOfMeasureConversions#7888, systemId#7881]
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#7882, baseUnitOfMeasure#7886, unitOfMeasureConversions#7888, systemId#7881]
Condition : isnotnull(internalUUID#7882)
(2213) Project
Output [3]: [internalUUID#7882, baseUnitOfMeasure#7886, unitOfMeasureConversions#7888]
Input [4]: [internalUUID#7882, baseUnitOfMeasure#7886, unitOfMeasureConversions#7888, systemId#7881]
(2214) Exchange
Input [3]: [internalUUID#7882, baseUnitOfMeasure#7886, unitOfMeasureConversions#7888]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8739]
(2215) BroadcastExchange
Input [3]: [internalUUID#7882, baseUnitOfMeasure#7886, unitOfMeasureConversions#7888]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10768]
(2216) BroadcastHashJoin
Left keys [1]: [product#7854]
Right keys [1]: [internalUUID#7882]
Join type: LeftOuter
Join condition: None
(2217) Project
Output [6]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, filter(unitOfMeasureConversions#7888, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#7866.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#7866.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#7886.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#7886.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#7893]
Input [8]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, internalUUID#7882, baseUnitOfMeasure#7886, unitOfMeasureConversions#7888]
(2218) Project
Output [7]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, filteredUnitOfMeasureConversions#7893.quantityDenominator AS _extract_quantityDenominator#8940, filteredUnitOfMeasureConversions#7893.quantityNumerator AS _extract_quantityNumerator#8941]
Input [6]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, filteredUnitOfMeasureConversions#7893]
(2219) Generate
Input [7]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, _extract_quantityDenominator#8940, _extract_quantityNumerator#8941]
Arguments: explode(_extract_quantityNumerator#8941), [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, _extract_quantityDenominator#8940], true, [quantityNumerator#7894]
(2220) Generate
Input [7]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, _extract_quantityDenominator#8940, quantityNumerator#7894]
Arguments: explode(_extract_quantityDenominator#8940), [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, quantityNumerator#7894], true, [quantityDenominator#7895]
(2221) Project
Output [6]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, (cast(quantityNumerator#7894 as double) / cast(quantityDenominator#7895 as double)) AS outboundUnit#7896]
Input [7]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, quantityNumerator#7894, quantityDenominator#7895]
(2222) Project
Output [6]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, CASE WHEN (isnull(outboundUnit#7896) OR (outboundUnit#7896 <= 0.0)) THEN 1.0 ELSE outboundUnit#7896 END AS outboundUnit#7897]
Input [6]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7896]
(2223) Sort
Input [6]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7897]
Arguments: [product#7854 ASC NULLS FIRST, plant#7855 ASC NULLS FIRST], false, 0
(2224) Scan parquet
Output [6]: [internalUUID#7899, product#7900, plant#7901, calculationDateTime#7902, stockQuantities#7903, systemId#7898]
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#7899, product#7900, plant#7901, calculationDateTime#7902, stockQuantities#7903, systemId#7898]
Condition : (isnotnull(plant#7901.internalRefUUID) AND isnotnull(product#7900.internalRefUUID))
(2226) Project
Output [6]: [systemId#7898, internalUUID#7899, product#7900, plant#7901, calculationDateTime#7902, stockQuantities#7903]
Input [6]: [internalUUID#7899, product#7900, plant#7901, calculationDateTime#7902, stockQuantities#7903, systemId#7898]
(2227) Exchange
Input [6]: [systemId#7898, internalUUID#7899, product#7900, plant#7901, calculationDateTime#7902, stockQuantities#7903]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8750]
(2228) BroadcastExchange
Input [6]: [systemId#7898, internalUUID#7899, product#7900, plant#7901, calculationDateTime#7902, stockQuantities#7903]
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=10800]
(2229) Scan parquet
Output [2]: [marketUnit#7904, distributionCenters#7910]
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#7904, distributionCenters#7910]
Condition : (((marketUnit#7904 <=> DIP_1691) AND (size(distributionCenters#7910, true) > 0)) AND isnotnull(distributionCenters#7910))
(2231) Project
Output [1]: [distributionCenters#7910]
Input [2]: [marketUnit#7904, distributionCenters#7910]
(2232) Exchange
Input [1]: [distributionCenters#7910]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8754]
(2233) Generate
Input [1]: [distributionCenters#7910]
Arguments: explode(distributionCenters#7910), false, [distributionCenters#7926]
(2234) Filter
Input [1]: [distributionCenters#7926]
Condition : (((size(distributionCenters#7926.storageLocations, true) > 0) AND isnotnull(distributionCenters#7926.storageLocations)) AND isnotnull(distributionCenters#7926.internalRefUUID))
(2235) Project
Output [2]: [distributionCenters#7926.internalRefUUID AS _extract_internalRefUUID#8718, distributionCenters#7926.storageLocations AS _extract_storageLocations#8719]
Input [1]: [distributionCenters#7926]
(2236) Generate
Input [2]: [_extract_internalRefUUID#8718, _extract_storageLocations#8719]
Arguments: explode(_extract_storageLocations#8719), [_extract_internalRefUUID#8718], false, [storageLocations#7927]
(2237) Project
Output [3]: [_extract_internalRefUUID#8718 AS plantUuid#7929, storageLocations#7927.id AS storageLocId#7930, storageLocations#7927.internalRefUUID AS storageLocUuid#7931]
Input [2]: [_extract_internalRefUUID#8718, storageLocations#7927]
(2238) BroadcastExchange
Input [3]: [plantUuid#7929, storageLocId#7930, storageLocUuid#7931]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10796]
(2239) Scan parquet
Output [2]: [product#7932, plant#7933]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(2240) Filter
Input [2]: [product#7932, plant#7933]
Condition : isnotnull(plant#7933)
(2241) Exchange
Input [2]: [product#7932, plant#7933]
Arguments: hashpartitioning(product#7932, plant#7933, 10), REPARTITION_BY_NUM, [plan_id=9566]
(2242) Scan parquet
Output [4]: [plant#7938, product#7939, productionAspect#7941, systemId#7936]
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#7938.internalRefUUID AS _extract_internalRefUUID#9372, product#7939.internalRefUUID AS _extract_internalRefUUID#9373, productionAspect#7941.productMovementPlants.unitOfIssue.code AS _extract_code#9370, productionAspect#7941.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9371]
Input [4]: [plant#7938, product#7939, productionAspect#7941, systemId#7936]
(2244) Exchange
Input [4]: [_extract_internalRefUUID#9372, _extract_internalRefUUID#9373, _extract_code#9370, _extract_internalRefUUID#9371]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8766]
(2245) Project
Output [4]: [_extract_code#9370, _extract_internalRefUUID#9371, _extract_internalRefUUID#9373, _extract_internalRefUUID#9372]
Input [4]: [_extract_internalRefUUID#9372, _extract_internalRefUUID#9373, _extract_code#9370, _extract_internalRefUUID#9371]
(2246) BroadcastExchange
Input [4]: [_extract_code#9370, _extract_internalRefUUID#9371, _extract_internalRefUUID#9373, _extract_internalRefUUID#9372]
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=10776]
(2247) BroadcastHashJoin
Left keys [4]: [coalesce(product#7932, ), isnull(product#7932), coalesce(plant#7933, ), isnull(plant#7933)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9373, ), isnull(_extract_internalRefUUID#9373), coalesce(_extract_internalRefUUID#9372, ), isnull(_extract_internalRefUUID#9372)]
Join type: LeftOuter
Join condition: None
(2248) Project
Output [4]: [product#7932, plant#7933, _extract_code#9370, _extract_internalRefUUID#9371]
Input [6]: [product#7932, plant#7933, _extract_code#9370, _extract_internalRefUUID#9371, _extract_internalRefUUID#9373, _extract_internalRefUUID#9372]
(2249) Scan parquet
Output [2]: [internalUUID#7946, systemId#7945]
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#7946]
Input [2]: [internalUUID#7946, systemId#7945]
(2251) Exchange
Input [1]: [internalUUID#7946]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8772]
(2252) BroadcastExchange
Input [1]: [internalUUID#7946]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10780]
(2253) BroadcastHashJoin
Left keys [2]: [coalesce(plant#7933, ), isnull(plant#7933)]
Right keys [2]: [coalesce(internalUUID#7946, ), isnull(internalUUID#7946)]
Join type: LeftOuter
Join condition: None
(2254) Project
Output [4]: [product#7932, plant#7933, _extract_code#9370, _extract_internalRefUUID#9371]
Input [5]: [product#7932, plant#7933, _extract_code#9370, _extract_internalRefUUID#9371, internalUUID#7946]
(2255) Scan parquet
Output [4]: [internalUUID#7960, baseUnitOfMeasure#7964, unitOfMeasureConversions#7966, systemId#7959]
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#7960, baseUnitOfMeasure#7964, unitOfMeasureConversions#7966, systemId#7959]
Condition : isnotnull(internalUUID#7960)
(2257) Project
Output [3]: [internalUUID#7960, baseUnitOfMeasure#7964, unitOfMeasureConversions#7966]
Input [4]: [internalUUID#7960, baseUnitOfMeasure#7964, unitOfMeasureConversions#7966, systemId#7959]
(2258) Exchange
Input [3]: [internalUUID#7960, baseUnitOfMeasure#7964, unitOfMeasureConversions#7966]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8778]
(2259) BroadcastExchange
Input [3]: [internalUUID#7960, baseUnitOfMeasure#7964, unitOfMeasureConversions#7966]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10784]
(2260) BroadcastHashJoin
Left keys [1]: [product#7932]
Right keys [1]: [internalUUID#7960]
Join type: LeftOuter
Join condition: None
(2261) Project
Output [2]: [plant#7933, filter(unitOfMeasureConversions#7966, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9370) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9371)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#7964.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#7964.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#7971]
Input [7]: [product#7932, plant#7933, _extract_code#9370, _extract_internalRefUUID#9371, internalUUID#7960, baseUnitOfMeasure#7964, unitOfMeasureConversions#7966]
(2262) Generate
Input [2]: [plant#7933, filteredUnitOfMeasureConversions#7971]
Arguments: explode(filteredUnitOfMeasureConversions#7971.quantityNumerator), [plant#7933, filteredUnitOfMeasureConversions#7971], true, [quantityNumerator#7972]
(2263) Project
Output [2]: [plant#7933, filteredUnitOfMeasureConversions#7971.quantityDenominator AS _extract_quantityDenominator#8720]
Input [3]: [plant#7933, filteredUnitOfMeasureConversions#7971, quantityNumerator#7972]
(2264) Generate
Input [2]: [plant#7933, _extract_quantityDenominator#8720]
Arguments: explode(_extract_quantityDenominator#8720), [plant#7933], true, [quantityDenominator#7973]
(2265) Project
Output [1]: [plant#7933]
Input [2]: [plant#7933, quantityDenominator#7973]
(2266) HashAggregate
Input [1]: [plant#7933]
Keys [1]: [plant#7933]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#7933]
(2267) Exchange
Input [1]: [plant#7933]
Arguments: hashpartitioning(plant#7933, 10), ENSURE_REQUIREMENTS, [plan_id=10793]
(2268) HashAggregate
Input [1]: [plant#7933]
Keys [1]: [plant#7933]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#7933]
(2269) BroadcastHashJoin
Left keys [1]: [plantUuid#7929]
Right keys [1]: [plant#7933]
Join type: Inner
Join condition: None
(2270) Project
Output [3]: [plantUuid#7929, storageLocId#7930, storageLocUuid#7931]
Input [4]: [plantUuid#7929, storageLocId#7930, storageLocUuid#7931, plant#7933]
(2271) BroadcastHashJoin
Left keys [2]: [coalesce(plant#7901.internalRefUUID, ), isnull(plant#7901.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#7929, ), isnull(plantUuid#7929)]
Join type: Inner
Join condition: None
(2272) Generate
Input [9]: [systemId#7898, internalUUID#7899, product#7900, plant#7901, calculationDateTime#7902, stockQuantities#7903, plantUuid#7929, storageLocId#7930, storageLocUuid#7931]
Arguments: explode(filter(stockQuantities#7903, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#7931) AND (lambda x#1207.storageLocation.Id = storageLocId#7930)), lambda x#1207, false))), [systemId#7898, internalUUID#7899, product#7900, plant#7901, calculationDateTime#7902, plantUuid#7929], false, [stockQuantity#7976]
(2273) ObjectHashAggregate
Input [7]: [systemId#7898, internalUUID#7899, product#7900, plant#7901, calculationDateTime#7902, plantUuid#7929, stockQuantity#7976]
Keys [5]: [plantUuid#7929, internalUUID#7899, plant#7901, product#7900, systemId#7898]
Functions [2]: [partial_first(calculationDateTime#7902, false), partial_collect_list(stockQuantity#7976, 0, 0)]
Aggregate Attributes [3]: [first#10422, valueSet#10423, buf#10424]
Results [8]: [plantUuid#7929, internalUUID#7899, plant#7901, product#7900, systemId#7898, first#10425, valueSet#10426, buf#10427]
(2274) ObjectHashAggregate
Input [8]: [plantUuid#7929, internalUUID#7899, plant#7901, product#7900, systemId#7898, first#10425, valueSet#10426, buf#10427]
Keys [5]: [plantUuid#7929, internalUUID#7899, plant#7901, product#7900, systemId#7898]
Functions [2]: [first(calculationDateTime#7902, false), collect_list(stockQuantity#7976, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#7902)()#1222, collect_list(stockQuantity#7976, 0, 0)#1223]
Results [4]: [product#7900, plant#7901, first(calculationDateTime#7902)()#1222 AS calculationDateTime#7977, collect_list(stockQuantity#7976, 0, 0)#1223 AS stockQuantities#7978]
(2275) Filter
Input [4]: [product#7900, plant#7901, calculationDateTime#7977, stockQuantities#7978]
Condition : ((size(stockQuantities#7978, true) > 0) AND isnotnull(calculationDateTime#7977))
(2276) Generate
Input [4]: [product#7900, plant#7901, calculationDateTime#7977, stockQuantities#7978]
Arguments: explode(stockQuantities#7978), [product#7900, plant#7901, calculationDateTime#7977], false, [stockQuantity#7979]
(2277) Filter
Input [4]: [product#7900, plant#7901, calculationDateTime#7977, stockQuantity#7979]
Condition : (((isnotnull(stockQuantity#7979.specialStockIndicator.code) AND isnotnull(stockQuantity#7979.stockType.code)) AND (stockQuantity#7979.specialStockIndicator.code = )) AND (stockQuantity#7979.stockType.code = 01))
(2278) Project
Output [5]: [plant#7901.internalRefUUID AS plantUuid#7981, product#7900.internalRefUUID AS productUuid#7983, calculationDateTime#7977, stockQuantity#7979.storagelocation.id AS storageLocId#7984, stockQuantity#7979.quantity.measure AS quantity#7986]
Input [4]: [product#7900, plant#7901, calculationDateTime#7977, stockQuantity#7979]
(2279) Exchange
Input [5]: [plantUuid#7981, productUuid#7983, calculationDateTime#7977, storageLocId#7984, quantity#7986]
Arguments: hashpartitioning(productUuid#7983, plantUuid#7981, 10), ENSURE_REQUIREMENTS, [plan_id=10826]
(2280) Sort
Input [5]: [plantUuid#7981, productUuid#7983, calculationDateTime#7977, storageLocId#7984, quantity#7986]
Arguments: [productUuid#7983 ASC NULLS FIRST, plantUuid#7981 ASC NULLS FIRST], false, 0
(2281) Scan parquet
Output [3]: [product#7989, plant#7990, orderDateTime#7991]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2282) Filter
Input [3]: [product#7989, plant#7990, orderDateTime#7991]
Condition : ((isnotnull(orderDateTime#7991) AND isnotnull(plant#7990)) AND isnotnull(product#7989))
(2283) Exchange
Input [3]: [product#7989, plant#7990, orderDateTime#7991]
Arguments: hashpartitioning(product#7989, plant#7990, 10), REPARTITION_BY_NUM, [plan_id=9589]
(2284) Scan parquet
Output [4]: [plant#7995, product#7996, productionAspect#7998, systemId#7993]
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#7995.internalRefUUID AS _extract_internalRefUUID#9376, product#7996.internalRefUUID AS _extract_internalRefUUID#9377, productionAspect#7998.productMovementPlants.unitOfIssue.code AS _extract_code#9374, productionAspect#7998.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9375]
Input [4]: [plant#7995, product#7996, productionAspect#7998, systemId#7993]
(2286) Exchange
Input [4]: [_extract_internalRefUUID#9376, _extract_internalRefUUID#9377, _extract_code#9374, _extract_internalRefUUID#9375]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8803]
(2287) Project
Output [4]: [_extract_code#9374, _extract_internalRefUUID#9375, _extract_internalRefUUID#9377, _extract_internalRefUUID#9376]
Input [4]: [_extract_internalRefUUID#9376, _extract_internalRefUUID#9377, _extract_code#9374, _extract_internalRefUUID#9375]
(2288) BroadcastExchange
Input [4]: [_extract_code#9374, _extract_internalRefUUID#9375, _extract_internalRefUUID#9377, _extract_internalRefUUID#9376]
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=10809]
(2289) BroadcastHashJoin
Left keys [4]: [coalesce(product#7989, ), isnull(product#7989), coalesce(plant#7990, ), isnull(plant#7990)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9377, ), isnull(_extract_internalRefUUID#9377), coalesce(_extract_internalRefUUID#9376, ), isnull(_extract_internalRefUUID#9376)]
Join type: LeftOuter
Join condition: None
(2290) Project
Output [5]: [product#7989, plant#7990, orderDateTime#7991, _extract_code#9374, _extract_internalRefUUID#9375]
Input [7]: [product#7989, plant#7990, orderDateTime#7991, _extract_code#9374, _extract_internalRefUUID#9375, _extract_internalRefUUID#9377, _extract_internalRefUUID#9376]
(2291) Scan parquet
Output [2]: [internalUUID#8003, systemId#8002]
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#8003]
Input [2]: [internalUUID#8003, systemId#8002]
(2293) Exchange
Input [1]: [internalUUID#8003]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8809]
(2294) BroadcastExchange
Input [1]: [internalUUID#8003]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10813]
(2295) BroadcastHashJoin
Left keys [2]: [coalesce(plant#7990, ), isnull(plant#7990)]
Right keys [2]: [coalesce(internalUUID#8003, ), isnull(internalUUID#8003)]
Join type: LeftOuter
Join condition: None
(2296) Project
Output [5]: [product#7989, plant#7990, orderDateTime#7991, _extract_code#9374, _extract_internalRefUUID#9375]
Input [6]: [product#7989, plant#7990, orderDateTime#7991, _extract_code#9374, _extract_internalRefUUID#9375, internalUUID#8003]
(2297) Scan parquet
Output [4]: [internalUUID#8017, baseUnitOfMeasure#8021, unitOfMeasureConversions#8023, systemId#8016]
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#8017, baseUnitOfMeasure#8021, unitOfMeasureConversions#8023, systemId#8016]
Condition : isnotnull(internalUUID#8017)
(2299) Project
Output [3]: [internalUUID#8017, baseUnitOfMeasure#8021, unitOfMeasureConversions#8023]
Input [4]: [internalUUID#8017, baseUnitOfMeasure#8021, unitOfMeasureConversions#8023, systemId#8016]
(2300) Exchange
Input [3]: [internalUUID#8017, baseUnitOfMeasure#8021, unitOfMeasureConversions#8023]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8815]
(2301) BroadcastExchange
Input [3]: [internalUUID#8017, baseUnitOfMeasure#8021, unitOfMeasureConversions#8023]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10817]
(2302) BroadcastHashJoin
Left keys [1]: [product#7989]
Right keys [1]: [internalUUID#8017]
Join type: LeftOuter
Join condition: None
(2303) Project
Output [4]: [product#7989, plant#7990, orderDateTime#7991, filter(unitOfMeasureConversions#8023, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9374) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9375)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#8021.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#8021.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#8028]
Input [8]: [product#7989, plant#7990, orderDateTime#7991, _extract_code#9374, _extract_internalRefUUID#9375, internalUUID#8017, baseUnitOfMeasure#8021, unitOfMeasureConversions#8023]
(2304) Generate
Input [4]: [product#7989, plant#7990, orderDateTime#7991, filteredUnitOfMeasureConversions#8028]
Arguments: explode(filteredUnitOfMeasureConversions#8028.quantityNumerator), [product#7989, plant#7990, orderDateTime#7991, filteredUnitOfMeasureConversions#8028], true, [quantityNumerator#8029]
(2305) Project
Output [4]: [product#7989, plant#7990, orderDateTime#7991, filteredUnitOfMeasureConversions#8028.quantityDenominator AS _extract_quantityDenominator#8724]
Input [5]: [product#7989, plant#7990, orderDateTime#7991, filteredUnitOfMeasureConversions#8028, quantityNumerator#8029]
(2306) Generate
Input [4]: [product#7989, plant#7990, orderDateTime#7991, _extract_quantityDenominator#8724]
Arguments: explode(_extract_quantityDenominator#8724), [product#7989, plant#7990, orderDateTime#7991], true, [quantityDenominator#8030]
(2307) Project
Output [3]: [product#7989, plant#7990, orderDateTime#7991]
Input [4]: [product#7989, plant#7990, orderDateTime#7991, quantityDenominator#8030]
(2308) Sort
Input [3]: [product#7989, plant#7990, orderDateTime#7991]
Arguments: [product#7989 ASC NULLS FIRST, plant#7990 ASC NULLS FIRST], false, 0
(2309) SortMergeJoin
Left keys [2]: [productUuid#7983, plantUuid#7981]
Right keys [2]: [product#7989, plant#7990]
Join type: Inner
Join condition: (calculationDateTime#7977 <= orderDateTime#7991)
(2310) Project
Output [5]: [plantUuid#7981 AS plant#8033, productUuid#7983 AS product#8034, storageLocId#7984, calculationDateTime#7977, quantity#7986]
Input [8]: [plantUuid#7981, productUuid#7983, calculationDateTime#7977, storageLocId#7984, quantity#7986, product#7989, plant#7990, orderDateTime#7991]
(2311) Exchange
Input [5]: [plant#8033, product#8034, storageLocId#7984, calculationDateTime#7977, quantity#7986]
Arguments: hashpartitioning(coalesce(plant#8033, ), isnull(plant#8033), coalesce(product#8034, ), isnull(product#8034), coalesce(storageLocId#7984, ), isnull(storageLocId#7984), coalesce(calculationDateTime#7977, 1970-01-01 00:00:00), isnull(calculationDateTime#7977), 10), ENSURE_REQUIREMENTS, [plan_id=10890]
(2312) Sort
Input [5]: [plant#8033, product#8034, storageLocId#7984, calculationDateTime#7977, quantity#7986]
Arguments: [coalesce(plant#8033, ) ASC NULLS FIRST, isnull(plant#8033) ASC NULLS FIRST, coalesce(product#8034, ) ASC NULLS FIRST, isnull(product#8034) ASC NULLS FIRST, coalesce(storageLocId#7984, ) ASC NULLS FIRST, isnull(storageLocId#7984) ASC NULLS FIRST, coalesce(calculationDateTime#7977, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#7977) ASC NULLS FIRST], false, 0
(2313) Scan parquet
Output [6]: [internalUUID#8036, product#8037, plant#8038, calculationDateTime#8039, stockQuantities#8040, systemId#8035]
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#8036, product#8037, plant#8038, calculationDateTime#8039, stockQuantities#8040, systemId#8035]
Condition : (isnotnull(plant#8038.internalRefUUID) AND isnotnull(product#8037.internalRefUUID))
(2315) Project
Output [6]: [systemId#8035, internalUUID#8036, product#8037, plant#8038, calculationDateTime#8039, stockQuantities#8040]
Input [6]: [internalUUID#8036, product#8037, plant#8038, calculationDateTime#8039, stockQuantities#8040, systemId#8035]
(2316) Exchange
Input [6]: [systemId#8035, internalUUID#8036, product#8037, plant#8038, calculationDateTime#8039, stockQuantities#8040]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8827]
(2317) BroadcastExchange
Input [6]: [systemId#8035, internalUUID#8036, product#8037, plant#8038, calculationDateTime#8039, stockQuantities#8040]
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=10855]
(2318) Scan parquet
Output [2]: [marketUnit#8041, distributionCenters#8047]
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#8041, distributionCenters#8047]
Condition : (((marketUnit#8041 <=> DIP_1691) AND (size(distributionCenters#8047, true) > 0)) AND isnotnull(distributionCenters#8047))
(2320) Project
Output [1]: [distributionCenters#8047]
Input [2]: [marketUnit#8041, distributionCenters#8047]
(2321) Exchange
Input [1]: [distributionCenters#8047]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8831]
(2322) Generate
Input [1]: [distributionCenters#8047]
Arguments: explode(distributionCenters#8047), false, [distributionCenters#8063]
(2323) Filter
Input [1]: [distributionCenters#8063]
Condition : (((size(distributionCenters#8063.storageLocations, true) > 0) AND isnotnull(distributionCenters#8063.storageLocations)) AND isnotnull(distributionCenters#8063.internalRefUUID))
(2324) Project
Output [2]: [distributionCenters#8063.internalRefUUID AS _extract_internalRefUUID#8728, distributionCenters#8063.storageLocations AS _extract_storageLocations#8729]
Input [1]: [distributionCenters#8063]
(2325) Generate
Input [2]: [_extract_internalRefUUID#8728, _extract_storageLocations#8729]
Arguments: explode(_extract_storageLocations#8729), [_extract_internalRefUUID#8728], false, [storageLocations#8064]
(2326) Project
Output [3]: [_extract_internalRefUUID#8728 AS plantUuid#8066, storageLocations#8064.id AS storageLocId#8067, storageLocations#8064.internalRefUUID AS storageLocUuid#8068]
Input [2]: [_extract_internalRefUUID#8728, storageLocations#8064]
(2327) BroadcastExchange
Input [3]: [plantUuid#8066, storageLocId#8067, storageLocUuid#8068]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10851]
(2328) Scan parquet
Output [2]: [product#8069, plant#8070]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(2329) Filter
Input [2]: [product#8069, plant#8070]
Condition : isnotnull(plant#8070)
(2330) Exchange
Input [2]: [product#8069, plant#8070]
Arguments: hashpartitioning(product#8069, plant#8070, 10), REPARTITION_BY_NUM, [plan_id=9602]
(2331) Scan parquet
Output [4]: [plant#8075, product#8076, productionAspect#8078, systemId#8073]
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#8075.internalRefUUID AS _extract_internalRefUUID#9378, product#8076.internalRefUUID AS _extract_internalRefUUID#9379, productionAspect#8078.productMovementPlants.unitOfIssue.code AS _extract_code#9380, productionAspect#8078.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9381]
Input [4]: [plant#8075, product#8076, productionAspect#8078, systemId#8073]
(2333) Exchange
Input [4]: [_extract_internalRefUUID#9378, _extract_internalRefUUID#9379, _extract_code#9380, _extract_internalRefUUID#9381]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8843]
(2334) Project
Output [4]: [_extract_code#9380, _extract_internalRefUUID#9381, _extract_internalRefUUID#9379, _extract_internalRefUUID#9378]
Input [4]: [_extract_internalRefUUID#9378, _extract_internalRefUUID#9379, _extract_code#9380, _extract_internalRefUUID#9381]
(2335) BroadcastExchange
Input [4]: [_extract_code#9380, _extract_internalRefUUID#9381, _extract_internalRefUUID#9379, _extract_internalRefUUID#9378]
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=10831]
(2336) BroadcastHashJoin
Left keys [4]: [coalesce(product#8069, ), isnull(product#8069), coalesce(plant#8070, ), isnull(plant#8070)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9379, ), isnull(_extract_internalRefUUID#9379), coalesce(_extract_internalRefUUID#9378, ), isnull(_extract_internalRefUUID#9378)]
Join type: LeftOuter
Join condition: None
(2337) Project
Output [4]: [product#8069, plant#8070, _extract_code#9380, _extract_internalRefUUID#9381]
Input [6]: [product#8069, plant#8070, _extract_code#9380, _extract_internalRefUUID#9381, _extract_internalRefUUID#9379, _extract_internalRefUUID#9378]
(2338) Scan parquet
Output [2]: [internalUUID#8083, systemId#8082]
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#8083]
Input [2]: [internalUUID#8083, systemId#8082]
(2340) Exchange
Input [1]: [internalUUID#8083]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8849]
(2341) BroadcastExchange
Input [1]: [internalUUID#8083]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10835]
(2342) BroadcastHashJoin
Left keys [2]: [coalesce(plant#8070, ), isnull(plant#8070)]
Right keys [2]: [coalesce(internalUUID#8083, ), isnull(internalUUID#8083)]
Join type: LeftOuter
Join condition: None
(2343) Project
Output [4]: [product#8069, plant#8070, _extract_code#9380, _extract_internalRefUUID#9381]
Input [5]: [product#8069, plant#8070, _extract_code#9380, _extract_internalRefUUID#9381, internalUUID#8083]
(2344) Scan parquet
Output [4]: [internalUUID#8097, baseUnitOfMeasure#8101, unitOfMeasureConversions#8103, systemId#8096]
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#8097, baseUnitOfMeasure#8101, unitOfMeasureConversions#8103, systemId#8096]
Condition : isnotnull(internalUUID#8097)
(2346) Project
Output [3]: [internalUUID#8097, baseUnitOfMeasure#8101, unitOfMeasureConversions#8103]
Input [4]: [internalUUID#8097, baseUnitOfMeasure#8101, unitOfMeasureConversions#8103, systemId#8096]
(2347) Exchange
Input [3]: [internalUUID#8097, baseUnitOfMeasure#8101, unitOfMeasureConversions#8103]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8855]
(2348) BroadcastExchange
Input [3]: [internalUUID#8097, baseUnitOfMeasure#8101, unitOfMeasureConversions#8103]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10839]
(2349) BroadcastHashJoin
Left keys [1]: [product#8069]
Right keys [1]: [internalUUID#8097]
Join type: LeftOuter
Join condition: None
(2350) Project
Output [2]: [plant#8070, filter(unitOfMeasureConversions#8103, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9380) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9381)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#8101.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#8101.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#8108]
Input [7]: [product#8069, plant#8070, _extract_code#9380, _extract_internalRefUUID#9381, internalUUID#8097, baseUnitOfMeasure#8101, unitOfMeasureConversions#8103]
(2351) Generate
Input [2]: [plant#8070, filteredUnitOfMeasureConversions#8108]
Arguments: explode(filteredUnitOfMeasureConversions#8108.quantityNumerator), [plant#8070, filteredUnitOfMeasureConversions#8108], true, [quantityNumerator#8109]
(2352) Project
Output [2]: [plant#8070, filteredUnitOfMeasureConversions#8108.quantityDenominator AS _extract_quantityDenominator#8730]
Input [3]: [plant#8070, filteredUnitOfMeasureConversions#8108, quantityNumerator#8109]
(2353) Generate
Input [2]: [plant#8070, _extract_quantityDenominator#8730]
Arguments: explode(_extract_quantityDenominator#8730), [plant#8070], true, [quantityDenominator#8110]
(2354) Project
Output [1]: [plant#8070]
Input [2]: [plant#8070, quantityDenominator#8110]
(2355) HashAggregate
Input [1]: [plant#8070]
Keys [1]: [plant#8070]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#8070]
(2356) Exchange
Input [1]: [plant#8070]
Arguments: hashpartitioning(plant#8070, 10), ENSURE_REQUIREMENTS, [plan_id=10848]
(2357) HashAggregate
Input [1]: [plant#8070]
Keys [1]: [plant#8070]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#8070]
(2358) BroadcastHashJoin
Left keys [1]: [plantUuid#8066]
Right keys [1]: [plant#8070]
Join type: Inner
Join condition: None
(2359) Project
Output [3]: [plantUuid#8066, storageLocId#8067, storageLocUuid#8068]
Input [4]: [plantUuid#8066, storageLocId#8067, storageLocUuid#8068, plant#8070]
(2360) BroadcastHashJoin
Left keys [2]: [coalesce(plant#8038.internalRefUUID, ), isnull(plant#8038.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#8066, ), isnull(plantUuid#8066)]
Join type: Inner
Join condition: None
(2361) Generate
Input [9]: [systemId#8035, internalUUID#8036, product#8037, plant#8038, calculationDateTime#8039, stockQuantities#8040, plantUuid#8066, storageLocId#8067, storageLocUuid#8068]
Arguments: explode(filter(stockQuantities#8040, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#8068) AND (lambda x#1207.storageLocation.Id = storageLocId#8067)), lambda x#1207, false))), [systemId#8035, internalUUID#8036, product#8037, plant#8038, calculationDateTime#8039, plantUuid#8066], false, [stockQuantity#8113]
(2362) ObjectHashAggregate
Input [7]: [systemId#8035, internalUUID#8036, product#8037, plant#8038, calculationDateTime#8039, plantUuid#8066, stockQuantity#8113]
Keys [5]: [plantUuid#8066, internalUUID#8036, plant#8038, product#8037, systemId#8035]
Functions [2]: [partial_first(calculationDateTime#8039, false), partial_collect_list(stockQuantity#8113, 0, 0)]
Aggregate Attributes [3]: [first#10430, valueSet#10431, buf#10432]
Results [8]: [plantUuid#8066, internalUUID#8036, plant#8038, product#8037, systemId#8035, first#10433, valueSet#10434, buf#10435]
(2363) ObjectHashAggregate
Input [8]: [plantUuid#8066, internalUUID#8036, plant#8038, product#8037, systemId#8035, first#10433, valueSet#10434, buf#10435]
Keys [5]: [plantUuid#8066, internalUUID#8036, plant#8038, product#8037, systemId#8035]
Functions [2]: [first(calculationDateTime#8039, false), collect_list(stockQuantity#8113, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#8039)()#1222, collect_list(stockQuantity#8113, 0, 0)#1223]
Results [4]: [product#8037, plant#8038, first(calculationDateTime#8039)()#1222 AS calculationDateTime#8114, collect_list(stockQuantity#8113, 0, 0)#1223 AS stockQuantities#8115]
(2364) Filter
Input [4]: [product#8037, plant#8038, calculationDateTime#8114, stockQuantities#8115]
Condition : ((size(stockQuantities#8115, true) > 0) AND isnotnull(calculationDateTime#8114))
(2365) Generate
Input [4]: [product#8037, plant#8038, calculationDateTime#8114, stockQuantities#8115]
Arguments: explode(stockQuantities#8115), [product#8037, plant#8038, calculationDateTime#8114], false, [stockQuantity#8116]
(2366) Filter
Input [4]: [product#8037, plant#8038, calculationDateTime#8114, stockQuantity#8116]
Condition : (((isnotnull(stockQuantity#8116.specialStockIndicator.code) AND isnotnull(stockQuantity#8116.stockType.code)) AND (stockQuantity#8116.specialStockIndicator.code = )) AND (stockQuantity#8116.stockType.code = 01))
(2367) Project
Output [4]: [plant#8038.internalRefUUID AS plantUuid#8118, product#8037.internalRefUUID AS productUuid#8120, calculationDateTime#8114, stockQuantity#8116.storagelocation.id AS storageLocId#8121]
Input [4]: [product#8037, plant#8038, calculationDateTime#8114, stockQuantity#8116]
(2368) Exchange
Input [4]: [plantUuid#8118, productUuid#8120, calculationDateTime#8114, storageLocId#8121]
Arguments: hashpartitioning(productUuid#8120, plantUuid#8118, 10), ENSURE_REQUIREMENTS, [plan_id=10881]
(2369) Sort
Input [4]: [plantUuid#8118, productUuid#8120, calculationDateTime#8114, storageLocId#8121]
Arguments: [productUuid#8120 ASC NULLS FIRST, plantUuid#8118 ASC NULLS FIRST], false, 0
(2370) Scan parquet
Output [3]: [product#8126, plant#8127, orderDateTime#8128]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2371) Filter
Input [3]: [product#8126, plant#8127, orderDateTime#8128]
Condition : ((isnotnull(orderDateTime#8128) AND isnotnull(plant#8127)) AND isnotnull(product#8126))
(2372) Exchange
Input [3]: [product#8126, plant#8127, orderDateTime#8128]
Arguments: hashpartitioning(product#8126, plant#8127, 10), REPARTITION_BY_NUM, [plan_id=9625]
(2373) Scan parquet
Output [4]: [plant#8132, product#8133, productionAspect#8135, systemId#8130]
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#8132.internalRefUUID AS _extract_internalRefUUID#9385, product#8133.internalRefUUID AS _extract_internalRefUUID#9384, productionAspect#8135.productMovementPlants.unitOfIssue.code AS _extract_code#9382, productionAspect#8135.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#9383]
Input [4]: [plant#8132, product#8133, productionAspect#8135, systemId#8130]
(2375) Exchange
Input [4]: [_extract_internalRefUUID#9385, _extract_internalRefUUID#9384, _extract_code#9382, _extract_internalRefUUID#9383]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8880]
(2376) Project
Output [4]: [_extract_code#9382, _extract_internalRefUUID#9383, _extract_internalRefUUID#9384, _extract_internalRefUUID#9385]
Input [4]: [_extract_internalRefUUID#9385, _extract_internalRefUUID#9384, _extract_code#9382, _extract_internalRefUUID#9383]
(2377) BroadcastExchange
Input [4]: [_extract_code#9382, _extract_internalRefUUID#9383, _extract_internalRefUUID#9384, _extract_internalRefUUID#9385]
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=10864]
(2378) BroadcastHashJoin
Left keys [4]: [coalesce(product#8126, ), isnull(product#8126), coalesce(plant#8127, ), isnull(plant#8127)]
Right keys [4]: [coalesce(_extract_internalRefUUID#9384, ), isnull(_extract_internalRefUUID#9384), coalesce(_extract_internalRefUUID#9385, ), isnull(_extract_internalRefUUID#9385)]
Join type: LeftOuter
Join condition: None
(2379) Project
Output [5]: [product#8126, plant#8127, orderDateTime#8128, _extract_code#9382, _extract_internalRefUUID#9383]
Input [7]: [product#8126, plant#8127, orderDateTime#8128, _extract_code#9382, _extract_internalRefUUID#9383, _extract_internalRefUUID#9384, _extract_internalRefUUID#9385]
(2380) Scan parquet
Output [2]: [internalUUID#8140, systemId#8139]
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#8140]
Input [2]: [internalUUID#8140, systemId#8139]
(2382) Exchange
Input [1]: [internalUUID#8140]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8886]
(2383) BroadcastExchange
Input [1]: [internalUUID#8140]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=10868]
(2384) BroadcastHashJoin
Left keys [2]: [coalesce(plant#8127, ), isnull(plant#8127)]
Right keys [2]: [coalesce(internalUUID#8140, ), isnull(internalUUID#8140)]
Join type: LeftOuter
Join condition: None
(2385) Project
Output [5]: [product#8126, plant#8127, orderDateTime#8128, _extract_code#9382, _extract_internalRefUUID#9383]
Input [6]: [product#8126, plant#8127, orderDateTime#8128, _extract_code#9382, _extract_internalRefUUID#9383, internalUUID#8140]
(2386) Scan parquet
Output [4]: [internalUUID#8154, baseUnitOfMeasure#8158, unitOfMeasureConversions#8160, systemId#8153]
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#8154, baseUnitOfMeasure#8158, unitOfMeasureConversions#8160, systemId#8153]
Condition : isnotnull(internalUUID#8154)
(2388) Project
Output [3]: [internalUUID#8154, baseUnitOfMeasure#8158, unitOfMeasureConversions#8160]
Input [4]: [internalUUID#8154, baseUnitOfMeasure#8158, unitOfMeasureConversions#8160, systemId#8153]
(2389) Exchange
Input [3]: [internalUUID#8154, baseUnitOfMeasure#8158, unitOfMeasureConversions#8160]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8892]
(2390) BroadcastExchange
Input [3]: [internalUUID#8154, baseUnitOfMeasure#8158, unitOfMeasureConversions#8160]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10872]
(2391) BroadcastHashJoin
Left keys [1]: [product#8126]
Right keys [1]: [internalUUID#8154]
Join type: LeftOuter
Join condition: None
(2392) Project
Output [4]: [product#8126, plant#8127, orderDateTime#8128, filter(unitOfMeasureConversions#8160, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#9382) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#9383)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#8158.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#8158.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#8165]
Input [8]: [product#8126, plant#8127, orderDateTime#8128, _extract_code#9382, _extract_internalRefUUID#9383, internalUUID#8154, baseUnitOfMeasure#8158, unitOfMeasureConversions#8160]
(2393) Generate
Input [4]: [product#8126, plant#8127, orderDateTime#8128, filteredUnitOfMeasureConversions#8165]
Arguments: explode(filteredUnitOfMeasureConversions#8165.quantityNumerator), [product#8126, plant#8127, orderDateTime#8128, filteredUnitOfMeasureConversions#8165], true, [quantityNumerator#8166]
(2394) Project
Output [4]: [product#8126, plant#8127, orderDateTime#8128, filteredUnitOfMeasureConversions#8165.quantityDenominator AS _extract_quantityDenominator#8734]
Input [5]: [product#8126, plant#8127, orderDateTime#8128, filteredUnitOfMeasureConversions#8165, quantityNumerator#8166]
(2395) Generate
Input [4]: [product#8126, plant#8127, orderDateTime#8128, _extract_quantityDenominator#8734]
Arguments: explode(_extract_quantityDenominator#8734), [product#8126, plant#8127, orderDateTime#8128], true, [quantityDenominator#8167]
(2396) Project
Output [3]: [product#8126, plant#8127, orderDateTime#8128]
Input [4]: [product#8126, plant#8127, orderDateTime#8128, quantityDenominator#8167]
(2397) Sort
Input [3]: [product#8126, plant#8127, orderDateTime#8128]
Arguments: [product#8126 ASC NULLS FIRST, plant#8127 ASC NULLS FIRST], false, 0
(2398) SortMergeJoin
Left keys [2]: [productUuid#8120, plantUuid#8118]
Right keys [2]: [product#8126, plant#8127]
Join type: Inner
Join condition: (calculationDateTime#8114 <= orderDateTime#8128)
(2399) Project
Output [4]: [plantUuid#8118 AS plant#8170, productUuid#8120 AS product#8171, storageLocId#8121, calculationDateTime#8114]
Input [7]: [plantUuid#8118, productUuid#8120, calculationDateTime#8114, storageLocId#8121, product#8126, plant#8127, orderDateTime#8128]
(2400) HashAggregate
Input [4]: [plant#8170, product#8171, storageLocId#8121, calculationDateTime#8114]
Keys [3]: [plant#8170, product#8171, storageLocId#8121]
Functions [1]: [partial_max(calculationDateTime#8114)]
Aggregate Attributes [1]: [max#10428]
Results [4]: [plant#8170, product#8171, storageLocId#8121, max#10429]
(2401) HashAggregate
Input [4]: [plant#8170, product#8171, storageLocId#8121, max#10429]
Keys [3]: [plant#8170, product#8171, storageLocId#8121]
Functions [1]: [max(calculationDateTime#8114)]
Aggregate Attributes [1]: [max(calculationDateTime#8114)#1300]
Results [4]: [plant#8170, product#8171, storageLocId#8121, max(calculationDateTime#8114)#1300 AS max_calc_datetime#8172]
(2402) Exchange
Input [4]: [plant#8170, product#8171, storageLocId#8121, max_calc_datetime#8172]
Arguments: hashpartitioning(coalesce(plant#8170, ), isnull(plant#8170), coalesce(product#8171, ), isnull(product#8171), coalesce(storageLocId#8121, ), isnull(storageLocId#8121), coalesce(max_calc_datetime#8172, 1970-01-01 00:00:00), isnull(max_calc_datetime#8172), 10), ENSURE_REQUIREMENTS, [plan_id=10891]
(2403) Sort
Input [4]: [plant#8170, product#8171, storageLocId#8121, max_calc_datetime#8172]
Arguments: [coalesce(plant#8170, ) ASC NULLS FIRST, isnull(plant#8170) ASC NULLS FIRST, coalesce(product#8171, ) ASC NULLS FIRST, isnull(product#8171) ASC NULLS FIRST, coalesce(storageLocId#8121, ) ASC NULLS FIRST, isnull(storageLocId#8121) ASC NULLS FIRST, coalesce(max_calc_datetime#8172, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#8172) ASC NULLS FIRST], false, 0
(2404) SortMergeJoin
Left keys [8]: [coalesce(plant#8033, ), isnull(plant#8033), coalesce(product#8034, ), isnull(product#8034), coalesce(storageLocId#7984, ), isnull(storageLocId#7984), coalesce(calculationDateTime#7977, 1970-01-01 00:00:00), isnull(calculationDateTime#7977)]
Right keys [8]: [coalesce(plant#8170, ), isnull(plant#8170), coalesce(product#8171, ), isnull(product#8171), coalesce(storageLocId#8121, ), isnull(storageLocId#8121), coalesce(max_calc_datetime#8172, 1970-01-01 00:00:00), isnull(max_calc_datetime#8172)]
Join type: Inner
Join condition: None
(2405) Project
Output [4]: [plant#8033, product#8034, calculationDateTime#7977, quantity#7986]
Input [9]: [plant#8033, product#8034, storageLocId#7984, calculationDateTime#7977, quantity#7986, plant#8170, product#8171, storageLocId#8121, max_calc_datetime#8172]
(2406) HashAggregate
Input [4]: [plant#8033, product#8034, calculationDateTime#7977, quantity#7986]
Keys [2]: [product#8034, plant#8033]
Functions [2]: [partial_min(calculationDateTime#7977), partial_sum(quantity#7986)]
Aggregate Attributes [2]: [min#10418, sum#10419]
Results [4]: [product#8034, plant#8033, min#10420, sum#10421]
(2407) Exchange
Input [4]: [product#8034, plant#8033, min#10420, sum#10421]
Arguments: hashpartitioning(product#8034, plant#8033, 10), ENSURE_REQUIREMENTS, [plan_id=10898]
(2408) HashAggregate
Input [4]: [product#8034, plant#8033, min#10420, sum#10421]
Keys [2]: [product#8034, plant#8033]
Functions [2]: [min(calculationDateTime#7977), sum(quantity#7986)]
Aggregate Attributes [2]: [min(calculationDateTime#7977)#1456, sum(quantity#7986)#1455]
Results [4]: [product#8034, plant#8033, min(calculationDateTime#7977)#1456 AS minCalculationDateTime#8174, round(sum(quantity#7986)#1455, 0) AS roundedQuantitySum#8175]
(2409) Sort
Input [4]: [product#8034, plant#8033, minCalculationDateTime#8174, roundedQuantitySum#8175]
Arguments: [product#8034 ASC NULLS FIRST, plant#8033 ASC NULLS FIRST], false, 0
(2410) SortMergeJoin
Left keys [2]: [product#7854, plant#7855]
Right keys [2]: [product#8034, plant#8033]
Join type: LeftOuter
Join condition: None
(2411) Project
Output [8]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7897, CASE WHEN isnotnull(minCalculationDateTime#8174) THEN minCalculationDateTime#8174 ELSE orderDateTime#7856 END AS stockDatetime#8176, CASE WHEN isnotnull(roundedQuantitySum#8175) THEN array(roundedQuantitySum#8175) ELSE [0.0] END AS stockBatchQuantities#8177]
Input [10]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7897, product#8034, plant#8033, minCalculationDateTime#8174, roundedQuantitySum#8175]
(2412) Scan parquet
Output [9]: [product#8179, plant#8180, demandChannel#8181, demandStream#8182, considerVariance#8183, demandTimeBuckets#8184, demandPointInTimeStart#8185, demandPointInTimeEnd#8186, demandPointInTime#8187]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000004/0_1_10000000004]
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#8179, plant#8180, demandChannel#8181, demandStream#8182, considerVariance#8183, demandTimeBuckets#8184, demandPointInTimeStart#8185, demandPointInTimeEnd#8186, demandPointInTime#8187]
Condition : (isnotnull(product#8179) AND isnotnull(plant#8180))
(2414) BroadcastExchange
Input [9]: [product#8179, plant#8180, demandChannel#8181, demandStream#8182, considerVariance#8183, demandTimeBuckets#8184, demandPointInTimeStart#8185, demandPointInTimeEnd#8186, demandPointInTime#8187]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=10907]
(2415) BroadcastHashJoin
Left keys [2]: [product#7854, plant#7855]
Right keys [2]: [product#8179, plant#8180]
Join type: LeftOuter
Join condition: None
(2416) Project
Output [9]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7897, stockDatetime#8176, stockBatchQuantities#8177, CASE WHEN isnotnull(product#8179) THEN struct(demandChannel, demandChannel#8181, demandStream, demandStream#8182, considerVariance, considerVariance#8183, demandTimeBuckets, demandTimeBuckets#8184, demandPointInTimeStart, demandPointInTimeStart#8185, demandPointInTimeEnd, demandPointInTimeEnd#8186, demandPointInTime, demandPointInTime#8187) END AS rawDemands#8188]
Input [17]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7897, stockDatetime#8176, stockBatchQuantities#8177, product#8179, plant#8180, demandChannel#8181, demandStream#8182, considerVariance#8183, demandTimeBuckets#8184, demandPointInTimeStart#8185, demandPointInTimeEnd#8186, demandPointInTime#8187]
(2417) ObjectHashAggregate
Input [9]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7897, stockDatetime#8176, stockBatchQuantities#8177, rawDemands#8188]
Keys [9]: [product#7854, plant#7855, orderDateTime#7856, knownfloatingpointnormalized(if (isnull(productPlant#7866)) null else named_struct(systemId, productPlant#7866.systemId, internalUUID, productPlant#7866.internalUUID, plant, productPlant#7866.plant, product, productPlant#7866.product, blockedForReplenishmentStartingFrom, productPlant#7866.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#7866.productionAspect)) null else named_struct(productMovementPlants, productPlant#7866.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#7866.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#7866.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#7866.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#7866.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#7866.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#7866.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#7866.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#7866.salesPlant, listing, productPlant#7866.listing)) AS productPlant#7866, timezonecode#7880, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#7897)) AS outboundUnit#7897, stockDatetime#8176, knownfloatingpointnormalized(transform(stockBatchQuantities#8177, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#10415)), lambda arg#10415, false))) AS stockBatchQuantities#8177, [7226582400000000] AS [7226582400000000]#10414]
Functions [1]: [partial_collect_list(rawDemands#8188, 0, 0)]
Aggregate Attributes [1]: [buf#10416]
Results [10]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7897, stockDatetime#8176, stockBatchQuantities#8177, [7226582400000000]#10414, buf#10417]
(2418) ObjectHashAggregate
Input [10]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7897, stockDatetime#8176, stockBatchQuantities#8177, [7226582400000000]#10414, buf#10417]
Keys [9]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7897, stockDatetime#8176, stockBatchQuantities#8177, [7226582400000000]#10414]
Functions [1]: [collect_list(rawDemands#8188, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#8188, 0, 0)#1548]
Results [10]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7897, stockDatetime#8176, stockBatchQuantities#8177, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#8178, collect_list(rawDemands#8188, 0, 0)#1548 AS rawDemands#8189]
(2419) DeserializeToObject
Input [10]: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7897, stockDatetime#8176, stockBatchQuantities#8177, stockBatchShelfLifeEndDatetimes#8178, rawDemands#8189]
Arguments: createexternalrow(invoke(product#7854.toString()), invoke(plant#7855.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#7856)), if (isnull(productPlant#7866)) null else createexternalrow(invoke(productPlant#7866.systemId.toString()), invoke(productPlant#7866.internalUUID.toString()), if (isnull(productPlant#7866.plant)) null else createexternalrow(invoke(productPlant#7866.plant.internalRefUUID.toString()), invoke(productPlant#7866.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#7866.product)) null else createexternalrow(invoke(productPlant#7866.product.internalRefUUID.toString()), invoke(productPlant#7866.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#7866.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#7866.productionAspect)) null else createexternalrow(if (isnull(productPlant#7866.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#7866.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#7866.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#7866.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#7866.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#7866.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#7866.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#7866.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#7866.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#7866.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#7866.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#7866.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#7866.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#7866.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#7866.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#7866.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#7866.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#7866.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#7866.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#7866.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#7866.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#7866.salesPlant)) null else createexternalrow(if (isnull(productPlant#7866.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#7866.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#7866.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#7866.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#7880.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#7897)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#8176)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#8177, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#8178, 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#8189, 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#1569: org.apache.spark.sql.Row
(2420) MapElements
Input [1]: [obj#1569]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@762840b4, obj#1574: org.apache.spark.sql.Row
(2421) SerializeFromObject
Input [1]: [obj#1574]
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#8190, 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#8191]
(2422) Exchange
Input [2]: [product#8190, plant#8191]
Arguments: hashpartitioning(coalesce(plant#8191, ), isnull(plant#8191), coalesce(product#8190, ), isnull(product#8190), 10), ENSURE_REQUIREMENTS, [plan_id=10918]
(2423) Sort
Input [2]: [product#8190, plant#8191]
Arguments: [coalesce(plant#8191, ) ASC NULLS FIRST, isnull(plant#8191) ASC NULLS FIRST, coalesce(product#8190, ) ASC NULLS FIRST, isnull(product#8190) ASC NULLS FIRST], false, 0
(2424) SortMergeJoin
Left keys [4]: [coalesce(plant#7530, ), isnull(plant#7530), coalesce(product#7529, ), isnull(product#7529)]
Right keys [4]: [coalesce(plant#8191, ), isnull(plant#8191), coalesce(product#8190, ), isnull(product#8190)]
Join type: LeftOuter
Join condition: None
(2425) Project
Output [3]: [product#7529, plant#7530, stockDatetime#7851]
Input [5]: [product#7529, plant#7530, stockDatetime#7851, product#8190, plant#8191]
(2426) Scan parquet
Output [6]: [internalUUID#8195, id#8196, supplier#8198, isMarkedForDeletion#8201, items#8202, systemId#8194]
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#8195, id#8196, supplier#8198, isMarkedForDeletion#8201, items#8202, systemId#8194]
Condition : (((isnotnull(isMarkedForDeletion#8201) AND NOT isMarkedForDeletion#8201) AND (size(items#8202, true) > 0)) AND isnotnull(items#8202))
(2428) Project
Output [4]: [internalUUID#8195, id#8196, supplier#8198, items#8202]
Input [6]: [internalUUID#8195, id#8196, supplier#8198, isMarkedForDeletion#8201, items#8202, systemId#8194]
(2429) Exchange
Input [4]: [internalUUID#8195, id#8196, supplier#8198, items#8202]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=8924]
(2430) Generate
Input [4]: [internalUUID#8195, id#8196, supplier#8198, items#8202]
Arguments: explode(items#8202), [internalUUID#8195, id#8196, supplier#8198], false, [item#8203]
(2431) Filter
Input [4]: [internalUUID#8195, id#8196, supplier#8198, item#8203]
Condition : ((((isnotnull(item#8203.deletionIndicator) AND isnotnull(item#8203.completeIndicator)) AND isnotnull(item#8203.returnIndicator)) AND ((NOT item#8203.deletionIndicator AND NOT item#8203.completeIndicator) AND NOT item#8203.returnIndicator)) AND isnotnull(item#8203.product.internalRefUUID))
(2432) Project
Output [9]: [id#8196, internalUUID#8195, supplier#8198.internalRefUUID AS supplierUuid#8204, item#8203.product.internalRefUUID AS product#8206, item#8203.quantityUnit.code AS quantityUom#8208, item#8203.quantityUnit.internalRefUUID AS quantityUomUuid#8209, item#8203.quantityNumerator AS quantityNumerator#8210, item#8203.quantityDenominator AS quantityDenominator#8211, item#8203.scheduleLines AS scheduleLines#8212]
Input [4]: [internalUUID#8195, id#8196, supplier#8198, item#8203]
(2433) BroadcastExchange
Input [9]: [id#8196, internalUUID#8195, supplierUuid#8204, product#8206, quantityUom#8208, quantityUomUuid#8209, quantityNumerator#8210, quantityDenominator#8211, scheduleLines#8212]
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=10924]
(2434) BroadcastHashJoin
Left keys [4]: [coalesce(product#7529, ), isnull(product#7529), coalesce(plant#7530, ), isnull(plant#7530)]
Right keys [4]: [coalesce(product#8206, ), isnull(product#8206), coalesce(supplierUuid#8204, ), isnull(supplierUuid#8204)]
Join type: Inner
Join condition: None
(2435) Project
Output [3]: [product#8206, plant#7530, filter(transform(filter(transform(scheduleLines#8212, lambdafunction(struct(openQty, (greatest((lambda x_6#4326.quantity - coalesce(lambda x_6#4326.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_6#4326.productAvailabilityDateTime, lambda x_6#4326.deliveryAt)), lambda x_6#4326, false)), lambdafunction((lambda x_7#4327.availabilityDatetime < stockDatetime#7851), lambda x_7#4327, false)), lambdafunction(struct(documentId, id#8196, documentUuid, internalUUID#8195, openQty, lambda x_8#4328.openQty, openQtyInBaseUnit, ((lambda x_8#4328.openQty * quantityNumerator#8210) / quantityDenominator#8211), qtyUom, quantityUom#8208, qtyUomUuid, quantityUomUuid#8209, availabilityDatetime, lambda x_8#4328.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_8#4328, false)), lambdafunction(NOT (lambda x_9#4329.openQty = 0.0), lambda x_9#4329, false)) AS openGoodsMovements#8214]
Input [12]: [product#7529, plant#7530, stockDatetime#7851, id#8196, internalUUID#8195, supplierUuid#8204, product#8206, quantityUom#8208, quantityUomUuid#8209, quantityNumerator#8210, quantityDenominator#8211, scheduleLines#8212]
(2436) ObjectHashAggregate
Input [3]: [product#8206, plant#7530, openGoodsMovements#8214]
Keys [2]: [product#8206, plant#7530]
Functions [1]: [partial_collect_list(openGoodsMovements#8214, 0, 0)]
Aggregate Attributes [1]: [buf#10396]
Results [3]: [product#8206, plant#7530, buf#10397]
(2437) Exchange
Input [3]: [product#8206, plant#7530, buf#10397]
Arguments: hashpartitioning(product#8206, plant#7530, 10), ENSURE_REQUIREMENTS, [plan_id=10929]
(2438) ObjectHashAggregate
Input [3]: [product#8206, plant#7530, buf#10397]
Keys [2]: [product#8206, plant#7530]
Functions [1]: [collect_list(openGoodsMovements#8214, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#8214, 0, 0)#4345]
Results [3]: [product#8206, plant#7530, flatten(collect_list(openGoodsMovements#8214, 0, 0)#4345) AS openGoodsMovements#8215]
(2439) Filter
Input [3]: [product#8206, plant#7530, openGoodsMovements#8215]
Condition : (size(openGoodsMovements#8215, false) > 0)
(2440) Union
(2441) ObjectHashAggregate
Input [3]: [product#7517, plant#7516, openGoodsMovements#7528]
Keys [2]: [product#7517, plant#7516]
Functions [1]: [partial_collect_list(openGoodsMovements#7528, 0, 0)]
Aggregate Attributes [1]: [buf#10394]
Results [3]: [product#7517, plant#7516, buf#10395]
(2442) Exchange
Input [3]: [product#7517, plant#7516, buf#10395]
Arguments: hashpartitioning(product#7517, plant#7516, 10), ENSURE_REQUIREMENTS, [plan_id=10935]
(2443) ObjectHashAggregate
Input [3]: [product#7517, plant#7516, buf#10395]
Keys [2]: [product#7517, plant#7516]
Functions [1]: [collect_list(openGoodsMovements#7528, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#7528, 0, 0)#5085]
Results [3]: [product#7517, plant#7516, flatten(collect_list(openGoodsMovements#7528, 0, 0)#5085) AS openGoodsMovements#8216]
(2444) Project
Output [5]: [product#7517, plant#7516, openGoodsMovements#8216.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#8855, openGoodsMovements#8216.availabilityDatetime AS _extract_availabilityDatetime#8856, openGoodsMovements#8216.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#8857]
Input [3]: [product#7517, plant#7516, openGoodsMovements#8216]
(2445) Sort
Input [5]: [product#7517, plant#7516, _extract_openQtyInBaseUnit#8855, _extract_availabilityDatetime#8856, _extract_shelfLifeEndDatetime#8857]
Arguments: [product#7517 ASC NULLS FIRST, plant#7516 ASC NULLS FIRST], false, 0
(2446) SortMergeJoin
Left keys [2]: [product#6102, plant#6103]
Right keys [2]: [product#7517, plant#7516]
Join type: LeftOuter
Join condition: None
(2447) Project
Output [16]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#6426, dayBucketDemands#6765, pointInTimeDemands#6766, coalesce(_extract_openQtyInBaseUnit#8855, []) AS openGoodsMovementQuantities#8217, coalesce(_extract_availabilityDatetime#8856, []) AS openGoodsMovementAvailabilityDatetimes#8218, coalesce(_extract_shelfLifeEndDatetime#8857, []) AS openGoodsMovementShelfLifeEndDatetimes#8219, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#8220, array_sort(filter(CASE WHEN isnotnull(productPlant#6114.listing) THEN productPlant#6114.listing ELSE [] END, lambdafunction(lambda listing#6046.isListed, lambda listing#6046, false)), lambdafunction(if ((isnull(lambda left#6048) AND isnull(lambda right#6049))) 0 else if (isnull(lambda left#6048)) 1 else if (isnull(lambda right#6049)) -1 else if ((lambda left#6048 < lambda right#6049)) -1 else if ((lambda left#6048 > lambda right#6049)) 1 else 0, lambda left#6048, lambda right#6049, false), false) AS listing#6047]
Input [15]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, dayBucketDemands#6765, pointInTimeDemands#6766, product#7517, plant#7516, _extract_openQtyInBaseUnit#8855, _extract_availabilityDatetime#8856, _extract_shelfLifeEndDatetime#8857]
(2448) DeserializeToObject
Input [16]: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, stockBatchShelfLifeEndDatetimes#6426, dayBucketDemands#6765, pointInTimeDemands#6766, openGoodsMovementQuantities#8217, openGoodsMovementAvailabilityDatetimes#8218, openGoodsMovementShelfLifeEndDatetimes#8219, configuration#8220, listing#6047]
Arguments: createexternalrow(invoke(product#6102.toString()), invoke(plant#6103.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#6104)), if (isnull(productPlant#6114)) null else createexternalrow(invoke(productPlant#6114.systemId.toString()), invoke(productPlant#6114.internalUUID.toString()), if (isnull(productPlant#6114.plant)) null else createexternalrow(invoke(productPlant#6114.plant.internalRefUUID.toString()), invoke(productPlant#6114.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#6114.product)) null else createexternalrow(invoke(productPlant#6114.product.internalRefUUID.toString()), invoke(productPlant#6114.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#6114.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#6114.productionAspect)) null else createexternalrow(if (isnull(productPlant#6114.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#6114.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#6114.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#6114.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#6114.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#6114.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#6114.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#6114.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#6114.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#6114.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#6114.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#6114.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#6114.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#6114.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#6114.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#6114.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#6114.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#6114.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#6114.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#6114.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#6114.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#6114.salesPlant)) null else createexternalrow(if (isnull(productPlant#6114.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#6114.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#6114.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#6114.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#6128.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#6145)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#6424)), mapobjects(lambdavariable(MapObject, DoubleType, true, -22), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -22))), stockBatchQuantities#6425, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -23), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -23))), stockBatchShelfLifeEndDatetimes#6426, 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#6765, 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#6766, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -34), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -34))), openGoodsMovementQuantities#8217, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, -35), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, true, -35))), openGoodsMovementAvailabilityDatetimes#8218, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -36), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -36))), openGoodsMovementShelfLifeEndDatetimes#8219, 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#8220, 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#6047, 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#6082: org.apache.spark.sql.Row
(2449) MapElements
Input [1]: [obj#6082]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.ListingSnapshotEnhancementImpl$$Lambda/0x0000000801f6de40@134cd86f, obj#6089: org.apache.spark.sql.Row
(2450) SerializeFromObject
Input [1]: [obj#6089]
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#6096, 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#6097, 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#6098, 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#6099, 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#6100, 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#6101]
(2451) Filter
Input [6]: [product#6096, plant#6097, timeDependentSettingsName#6098, timeDependentSettingsStartDatetime#6099, timeDependentSettingsEndDatetime#6100, timeDependentSettingsValue#6101]
Condition : (isnotnull(product#6096) AND isnotnull(plant#6097))
(2452) Exchange
Input [6]: [product#6096, plant#6097, timeDependentSettingsName#6098, timeDependentSettingsStartDatetime#6099, timeDependentSettingsEndDatetime#6100, timeDependentSettingsValue#6101]
Arguments: hashpartitioning(product#6096, plant#6097, 10), ENSURE_REQUIREMENTS, [plan_id=10951]
(2453) Sort
Input [6]: [product#6096, plant#6097, timeDependentSettingsName#6098, timeDependentSettingsStartDatetime#6099, timeDependentSettingsEndDatetime#6100, timeDependentSettingsValue#6101]
Arguments: [product#6096 ASC NULLS FIRST, plant#6097 ASC NULLS FIRST], false, 0
(2454) SortMergeJoin
Left keys [2]: [product#1102, plant#1103]
Right keys [2]: [product#6096, plant#6097]
Join type: LeftOuter
Join condition: None
(2455) Project
Output [16]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1508, dayBucketDemands#1581, pointInTimeDemands#1582, openGoodsMovementQuantities#5800, openGoodsMovementAvailabilityDatetimes#5801, openGoodsMovementShelfLifeEndDatetimes#5802, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#5903, CASE WHEN isnotnull(timeDependentSettingsName#6098) THEN timeDependentSettingsName#6098 ELSE [] END AS timeDependentSettingsName#8375, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#6099) THEN timeDependentSettingsStartDatetime#6099 ELSE [] END AS timeDependentSettingsStartDatetime#8376, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#6100) THEN timeDependentSettingsEndDatetime#6100 ELSE [] END AS timeDependentSettingsEndDatetime#8377, CASE WHEN isnotnull(timeDependentSettingsValue#6101) THEN timeDependentSettingsValue#6101 ELSE [] END AS timeDependentSettingsValue#8378]
Input [16]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, dayBucketDemands#1581, pointInTimeDemands#1582, openGoodsMovementQuantities#5800, openGoodsMovementAvailabilityDatetimes#5801, openGoodsMovementShelfLifeEndDatetimes#5802, product#6096, plant#6097, timeDependentSettingsName#6098, timeDependentSettingsStartDatetime#6099, timeDependentSettingsEndDatetime#6100, timeDependentSettingsValue#6101]
(2456) AdaptiveSparkPlan
Output [16]: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, stockBatchShelfLifeEndDatetimes#1508, dayBucketDemands#1581, pointInTimeDemands#1582, openGoodsMovementQuantities#5800, openGoodsMovementAvailabilityDatetimes#5801, openGoodsMovementShelfLifeEndDatetimes#5802, configuration#5903, timeDependentSettingsName#8375, timeDependentSettingsStartDatetime#8376, timeDependentSettingsEndDatetime#8377, timeDependentSettingsValue#8378]
Arguments: isFinalPlan=false