== Physical Plan ==
AdaptiveSparkPlan (2456)
+- == Current Plan ==
ResultQueryStage (290)
+- * Project (289)
+- * BroadcastHashJoin LeftOuter BuildRight (288)
:- * Project (247)
: +- * Project (246)
: +- AQEShuffleRead (245)
: +- ShuffleQueryStage (244), Statistics(sizeInBytes=64.0 KiB, rowCount=195)
: +- Exchange (243)
: +- * Project (242)
: +- * BroadcastHashJoin LeftOuter BuildRight (241)
: :- AQEShuffleRead (190)
: : +- ShuffleQueryStage (189), Statistics(sizeInBytes=25.9 KiB, rowCount=195)
: : +- Exchange (188)
: : +- * Project (187)
: : +- * BroadcastHashJoin LeftOuter BuildRight (186)
: : :- * Project (38)
: : : +- * Project (37)
: : : +- * Generate (36)
: : : +- * Generate (35)
: : : +- * Project (34)
: : : +- Project (33)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (32)
: : : :- * Project (23)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (22)
: : : : :- * Project (14)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (13)
: : : : : :- ShuffleQueryStage (4), Statistics(sizeInBytes=18.3 KiB, rowCount=195)
: : : : : : +- Exchange (3)
: : : : : : +- * ColumnarToRow (2)
: : : : : : +- Scan parquet (1)
: : : : : +- BroadcastQueryStage (12), Statistics(sizeInBytes=2.1 MiB, rowCount=1.52E+3)
: : : : : +- BroadcastExchange (11)
: : : : : +- * Project (10)
: : : : : +- ShuffleQueryStage (9), Statistics(sizeInBytes=207.5 KiB, rowCount=1.52E+3)
: : : : : +- Exchange (8)
: : : : : +- * Project (7)
: : : : : +- * ColumnarToRow (6)
: : : : : +- Scan parquet (5)
: : : : +- BroadcastQueryStage (21), Statistics(sizeInBytes=2.0 MiB, rowCount=27)
: : : : +- BroadcastExchange (20)
: : : : +- ShuffleQueryStage (19), Statistics(sizeInBytes=1296.0 B, rowCount=27)
: : : : +- Exchange (18)
: : : : +- * Project (17)
: : : : +- * ColumnarToRow (16)
: : : : +- Scan parquet (15)
: : : +- BroadcastQueryStage (31), Statistics(sizeInBytes=2.0 MiB, rowCount=150)
: : : +- BroadcastExchange (30)
: : : +- ShuffleQueryStage (29), Statistics(sizeInBytes=89.7 KiB, rowCount=150)
: : : +- Exchange (28)
: : : +- * Project (27)
: : : +- * Filter (26)
: : : +- * ColumnarToRow (25)
: : : +- Scan parquet (24)
: : +- BroadcastQueryStage (185), Statistics(sizeInBytes=2.0 MiB, rowCount=40)
: : +- BroadcastExchange (184)
: : +- * HashAggregate (183)
: : +- AQEShuffleRead (182)
: : +- ShuffleQueryStage (181), Statistics(sizeInBytes=4.1 KiB, rowCount=40)
: : +- Exchange (180)
: : +- * HashAggregate (179)
: : +- * Project (178)
: : +- * BroadcastHashJoin Inner BuildRight (177)
: : :- AQEShuffleRead (126)
: : : +- ShuffleQueryStage (125), Statistics(sizeInBytes=4.7 KiB, rowCount=40)
: : : +- Exchange (124)
: : : +- * Project (123)
: : : +- * BroadcastHashJoin Inner BuildLeft (122)
: : : :- BroadcastQueryStage (100), Statistics(sizeInBytes=2.0 MiB, rowCount=390)
: : : : +- BroadcastExchange (99)
: : : : +- AQEShuffleRead (98)
: : : : +- ShuffleQueryStage (97), Statistics(sizeInBytes=45.7 KiB, rowCount=390)
: : : : +- Exchange (96)
: : : : +- * Project (95)
: : : : +- * Filter (94)
: : : : +- * Generate (93)
: : : : +- * Filter (92)
: : : : +- ObjectHashAggregate (91)
: : : : +- ObjectHashAggregate (90)
: : : : +- Generate (89)
: : : : +- * BroadcastHashJoin Inner BuildLeft (88)
: : : : :- BroadcastQueryStage (46), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : +- BroadcastExchange (45)
: : : : : +- ShuffleQueryStage (44), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : : +- Exchange (43)
: : : : : +- * Project (42)
: : : : : +- * Filter (41)
: : : : : +- * ColumnarToRow (40)
: : : : : +- Scan parquet (39)
: : : : +- * Project (87)
: : : : +- * BroadcastHashJoin Inner BuildLeft (86)
: : : : :- BroadcastQueryStage (59), Statistics(sizeInBytes=2.0 MiB, rowCount=9)
: : : : : +- BroadcastExchange (58)
: : : : : +- * Project (57)
: : : : : +- * Generate (56)
: : : : : +- * Project (55)
: : : : : +- * Filter (54)
: : : : : +- * Generate (53)
: : : : : +- ShuffleQueryStage (52), Statistics(sizeInBytes=1544.0 B, rowCount=1)
: : : : : +- Exchange (51)
: : : : : +- * Project (50)
: : : : : +- * Filter (49)
: : : : : +- * ColumnarToRow (48)
: : : : : +- Scan parquet (47)
: : : : +- * HashAggregate (85)
: : : : +- AQEShuffleRead (84)
: : : : +- ShuffleQueryStage (83), Statistics(sizeInBytes=4.1 KiB, rowCount=87)
: : : : +- Exchange (82)
: : : : +- * HashAggregate (81)
: : : : +- * Project (80)
: : : : +- * Generate (79)
: : : : +- * Project (78)
: : : : +- * Generate (77)
: : : : +- Project (76)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (75)
: : : : :- * Project (72)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (71)
: : : : : :- * Project (68)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (67)
: : : : : : :- ShuffleQueryStage (64), Statistics(sizeInBytes=16.8 KiB, rowCount=195)
: : : : : : : +- Exchange (63)
: : : : : : : +- * Filter (62)
: : : : : : : +- * ColumnarToRow (61)
: : : : : : : +- Scan parquet (60)
: : : : : : +- BroadcastQueryStage (66), Statistics(sizeInBytes=2.1 MiB, rowCount=1.52E+3)
: : : : : : +- ReusedExchange (65)
: : : : : +- BroadcastQueryStage (70), Statistics(sizeInBytes=2.0 MiB, rowCount=27)
: : : : : +- ReusedExchange (69)
: : : : +- BroadcastQueryStage (74), Statistics(sizeInBytes=2.0 MiB, rowCount=150)
: : : : +- ReusedExchange (73)
: : : +- * Project (121)
: : : +- * Generate (120)
: : : +- * Project (119)
: : : +- * Generate (118)
: : : +- Project (117)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (116)
: : : :- * Project (113)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (112)
: : : : :- * Project (109)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (108)
: : : : : :- ShuffleQueryStage (105), Statistics(sizeInBytes=18.3 KiB, rowCount=195)
: : : : : : +- Exchange (104)
: : : : : : +- * Filter (103)
: : : : : : +- * ColumnarToRow (102)
: : : : : : +- Scan parquet (101)
: : : : : +- BroadcastQueryStage (107), Statistics(sizeInBytes=2.1 MiB, rowCount=1.52E+3)
: : : : : +- ReusedExchange (106)
: : : : +- BroadcastQueryStage (111), Statistics(sizeInBytes=2.0 MiB, rowCount=27)
: : : : +- ReusedExchange (110)
: : : +- BroadcastQueryStage (115), Statistics(sizeInBytes=2.0 MiB, rowCount=150)
: : : +- ReusedExchange (114)
: : +- BroadcastQueryStage (176), Statistics(sizeInBytes=2.0 MiB, rowCount=40)
: : +- BroadcastExchange (175)
: : +- AQEShuffleRead (174)
: : +- ShuffleQueryStage (173), Statistics(sizeInBytes=4.4 KiB, rowCount=40)
: : +- Exchange (172)
: : +- * HashAggregate (171)
: : +- * HashAggregate (170)
: : +- * Project (169)
: : +- * BroadcastHashJoin Inner BuildLeft (168)
: : :- BroadcastQueryStage (149), Statistics(sizeInBytes=2.0 MiB, rowCount=390)
: : : +- BroadcastExchange (148)
: : : +- AQEShuffleRead (147)
: : : +- ShuffleQueryStage (146), Statistics(sizeInBytes=42.7 KiB, rowCount=390)
: : : +- Exchange (145)
: : : +- * Project (144)
: : : +- * Filter (143)
: : : +- * Generate (142)
: : : +- * Filter (141)
: : : +- ObjectHashAggregate (140)
: : : +- ObjectHashAggregate (139)
: : : +- Generate (138)
: : : +- * BroadcastHashJoin Inner BuildLeft (137)
: : : :- BroadcastQueryStage (128), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : +- ReusedExchange (127)
: : : +- * Project (136)
: : : +- * BroadcastHashJoin Inner BuildLeft (135)
: : : :- BroadcastQueryStage (130), Statistics(sizeInBytes=2.0 MiB, rowCount=9)
: : : : +- ReusedExchange (129)
: : : +- * HashAggregate (134)
: : : +- AQEShuffleRead (133)
: : : +- ShuffleQueryStage (132), Statistics(sizeInBytes=4.1 KiB, rowCount=87)
: : : +- ReusedExchange (131)
: : +- * Project (167)
: : +- * Generate (166)
: : +- * Project (165)
: : +- * Generate (164)
: : +- Project (163)
: : +- * BroadcastHashJoin LeftOuter BuildRight (162)
: : :- * Project (159)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (158)
: : : :- * Project (155)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (154)
: : : : :- ShuffleQueryStage (151), Statistics(sizeInBytes=18.3 KiB, rowCount=195)
: : : : : +- ReusedExchange (150)
: : : : +- BroadcastQueryStage (153), Statistics(sizeInBytes=2.1 MiB, rowCount=1.52E+3)
: : : : +- ReusedExchange (152)
: : : +- BroadcastQueryStage (157), Statistics(sizeInBytes=2.0 MiB, rowCount=27)
: : : +- ReusedExchange (156)
: : +- BroadcastQueryStage (161), Statistics(sizeInBytes=2.0 MiB, rowCount=150)
: : +- ReusedExchange (160)
: +- BroadcastQueryStage (240), Statistics(sizeInBytes=2.0 MiB, rowCount=195)
: +- BroadcastExchange (239)
: +- AQEShuffleRead (238)
: +- ShuffleQueryStage (237), Statistics(sizeInBytes=54.8 KiB, rowCount=195)
: +- Exchange (236)
: +- * SerializeFromObject (235)
: +- * MapElements (234)
: +- * DeserializeToObject (233)
: +- ObjectHashAggregate (232)
: +- ObjectHashAggregate (231)
: +- * Project (230)
: +- * BroadcastHashJoin LeftOuter BuildRight (229)
: :- * Project (223)
: : +- * BroadcastHashJoin LeftOuter BuildRight (222)
: : :- * Project (219)
: : : +- * Project (218)
: : : +- * Generate (217)
: : : +- * Generate (216)
: : : +- * Project (215)
: : : +- Project (214)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (213)
: : : :- * Project (210)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (209)
: : : : :- * BroadcastHashJoin LeftOuter BuildRight (201)
: : : : : :- ShuffleQueryStage (192), Statistics(sizeInBytes=18.3 KiB, rowCount=195)
: : : : : : +- ReusedExchange (191)
: : : : : +- BroadcastQueryStage (200), Statistics(sizeInBytes=2.1 MiB, rowCount=1.52E+3)
: : : : : +- BroadcastExchange (199)
: : : : : +- * Project (198)
: : : : : +- ShuffleQueryStage (197), Statistics(sizeInBytes=1214.4 KiB, rowCount=1.52E+3)
: : : : : +- Exchange (196)
: : : : : +- * Project (195)
: : : : : +- * ColumnarToRow (194)
: : : : : +- Scan parquet (193)
: : : : +- BroadcastQueryStage (208), Statistics(sizeInBytes=2.0 MiB, rowCount=27)
: : : : +- BroadcastExchange (207)
: : : : +- ShuffleQueryStage (206), Statistics(sizeInBytes=1944.0 B, rowCount=27)
: : : : +- Exchange (205)
: : : : +- * Project (204)
: : : : +- * ColumnarToRow (203)
: : : : +- Scan parquet (202)
: : : +- BroadcastQueryStage (212), Statistics(sizeInBytes=2.0 MiB, rowCount=150)
: : : +- ReusedExchange (211)
: : +- BroadcastQueryStage (221), Statistics(sizeInBytes=2.0 MiB, rowCount=40)
: : +- ReusedExchange (220)
: +- BroadcastQueryStage (228), Statistics(sizeInBytes=2.0 MiB, rowCount=195)
: +- BroadcastExchange (227)
: +- * Filter (226)
: +- * ColumnarToRow (225)
: +- Scan parquet (224)
+- BroadcastQueryStage (287), Statistics(sizeInBytes=2.0 MiB, rowCount=195)
+- BroadcastExchange (286)
+- * Filter (285)
+- * SerializeFromObject (284)
+- * MapElements (283)
+- * DeserializeToObject (282)
+- Project (281)
+- * Project (280)
+- AQEShuffleRead (279)
+- ShuffleQueryStage (278), Statistics(sizeInBytes=228.6 KiB, rowCount=195)
+- Exchange (277)
+- * Project (276)
+- * BroadcastHashJoin LeftOuter BuildRight (275)
:- AQEShuffleRead (272)
: +- ShuffleQueryStage (271), Statistics(sizeInBytes=190.5 KiB, rowCount=195)
: +- Exchange (270)
: +- * Project (269)
: +- * BroadcastHashJoin LeftOuter BuildRight (268)
: :- * Project (265)
: : +- * Project (264)
: : +- * Generate (263)
: : +- * Generate (262)
: : +- * Project (261)
: : +- Project (260)
: : +- * BroadcastHashJoin LeftOuter BuildRight (259)
: : :- * Project (256)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (255)
: : : :- * BroadcastHashJoin LeftOuter BuildRight (252)
: : : : :- ShuffleQueryStage (249), Statistics(sizeInBytes=18.3 KiB, rowCount=195)
: : : : : +- ReusedExchange (248)
: : : : +- BroadcastQueryStage (251), Statistics(sizeInBytes=2.1 MiB, rowCount=1.52E+3)
: : : : +- ReusedExchange (250)
: : : +- BroadcastQueryStage (254), Statistics(sizeInBytes=2.0 MiB, rowCount=27)
: : : +- ReusedExchange (253)
: : +- BroadcastQueryStage (258), Statistics(sizeInBytes=2.0 MiB, rowCount=150)
: : +- ReusedExchange (257)
: +- BroadcastQueryStage (267), Statistics(sizeInBytes=2.0 MiB, rowCount=40)
: +- ReusedExchange (266)
+- BroadcastQueryStage (274), Statistics(sizeInBytes=2.0 MiB, rowCount=195)
+- ReusedExchange (273)
+- == Initial Plan ==
Project (2455)
+- SortMergeJoin LeftOuter (2454)
:- Project (1527)
: +- SortMergeJoin LeftOuter (1526)
: :- Sort (728)
: : +- Exchange (727)
: : +- Project (726)
: : +- SortMergeJoin LeftOuter (725)
: : :- Sort (500)
: : : +- Exchange (499)
: : : +- Project (498)
: : : +- SortMergeJoin LeftOuter (497)
: : : :- Sort (314)
: : : : +- Project (313)
: : : : +- Project (312)
: : : : +- Generate (311)
: : : : +- Generate (310)
: : : : +- Project (309)
: : : : +- Project (308)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (307)
: : : : :- Project (302)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (301)
: : : : : :- Project (297)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (296)
: : : : : : :- Exchange (291)
: : : : : : : +- Scan parquet (1)
: : : : : : +- BroadcastExchange (295)
: : : : : : +- Project (294)
: : : : : : +- Exchange (293)
: : : : : : +- Project (292)
: : : : : : +- Scan parquet (5)
: : : : : +- BroadcastExchange (300)
: : : : : +- Exchange (299)
: : : : : +- Project (298)
: : : : : +- Scan parquet (15)
: : : : +- BroadcastExchange (306)
: : : : +- Exchange (305)
: : : : +- Project (304)
: : : : +- Filter (303)
: : : : +- Scan parquet (24)
: : : +- Sort (496)
: : : +- HashAggregate (495)
: : : +- Exchange (494)
: : : +- HashAggregate (493)
: : : +- Project (492)
: : : +- SortMergeJoin Inner (491)
: : : :- Sort (399)
: : : : +- Exchange (398)
: : : : +- Project (397)
: : : : +- SortMergeJoin Inner (396)
: : : : :- Sort (368)
: : : : : +- Exchange (367)
: : : : : +- Project (366)
: : : : : +- Filter (365)
: : : : : +- Generate (364)
: : : : : +- Filter (363)
: : : : : +- ObjectHashAggregate (362)
: : : : : +- ObjectHashAggregate (361)
: : : : : +- Generate (360)
: : : : : +- BroadcastHashJoin Inner BuildLeft (359)
: : : : : :- BroadcastExchange (318)
: : : : : : +- Exchange (317)
: : : : : : +- Project (316)
: : : : : : +- Filter (315)
: : : : : : +- Scan parquet (39)
: : : : : +- Project (358)
: : : : : +- BroadcastHashJoin Inner BuildLeft (357)
: : : : : :- BroadcastExchange (327)
: : : : : : +- Project (326)
: : : : : : +- Generate (325)
: : : : : : +- Project (324)
: : : : : : +- Filter (323)
: : : : : : +- Generate (322)
: : : : : : +- Exchange (321)
: : : : : : +- Project (320)
: : : : : : +- Filter (319)
: : : : : : +- Scan parquet (47)
: : : : : +- HashAggregate (356)
: : : : : +- Exchange (355)
: : : : : +- HashAggregate (354)
: : : : : +- Project (353)
: : : : : +- Generate (352)
: : : : : +- Project (351)
: : : : : +- Generate (350)
: : : : : +- Project (349)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (348)
: : : : : :- Project (342)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (341)
: : : : : : :- Project (336)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (335)
: : : : : : : :- Exchange (329)
: : : : : : : : +- Filter (328)
: : : : : : : : +- Scan parquet (60)
: : : : : : : +- BroadcastExchange (334)
: : : : : : : +- Project (333)
: : : : : : : +- Exchange (332)
: : : : : : : +- Project (331)
: : : : : : : +- Scan parquet (330)
: : : : : : +- BroadcastExchange (340)
: : : : : : +- Exchange (339)
: : : : : : +- Project (338)
: : : : : : +- Scan parquet (337)
: : : : : +- BroadcastExchange (347)
: : : : : +- Exchange (346)
: : : : : +- Project (345)
: : : : : +- Filter (344)
: : : : : +- Scan parquet (343)
: : : : +- Sort (395)
: : : : +- Project (394)
: : : : +- Generate (393)
: : : : +- Project (392)
: : : : +- Generate (391)
: : : : +- Project (390)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (389)
: : : : :- Project (383)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (382)
: : : : : :- Project (377)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (376)
: : : : : : :- Exchange (370)
: : : : : : : +- Filter (369)
: : : : : : : +- Scan parquet (101)
: : : : : : +- BroadcastExchange (375)
: : : : : : +- Project (374)
: : : : : : +- Exchange (373)
: : : : : : +- Project (372)
: : : : : : +- Scan parquet (371)
: : : : : +- BroadcastExchange (381)
: : : : : +- Exchange (380)
: : : : : +- Project (379)
: : : : : +- Scan parquet (378)
: : : : +- BroadcastExchange (388)
: : : : +- Exchange (387)
: : : : +- Project (386)
: : : : +- Filter (385)
: : : : +- Scan parquet (384)
: : : +- Sort (490)
: : : +- Exchange (489)
: : : +- HashAggregate (488)
: : : +- HashAggregate (487)
: : : +- Project (486)
: : : +- SortMergeJoin Inner (485)
: : : :- Sort (456)
: : : : +- Exchange (455)
: : : : +- Project (454)
: : : : +- Filter (453)
: : : : +- Generate (452)
: : : : +- Filter (451)
: : : : +- ObjectHashAggregate (450)
: : : : +- ObjectHashAggregate (449)
: : : : +- Generate (448)
: : : : +- BroadcastHashJoin Inner BuildLeft (447)
: : : : :- BroadcastExchange (404)
: : : : : +- Exchange (403)
: : : : : +- Project (402)
: : : : : +- Filter (401)
: : : : : +- Scan parquet (400)
: : : : +- Project (446)
: : : : +- BroadcastHashJoin Inner BuildLeft (445)
: : : : :- BroadcastExchange (414)
: : : : : +- Project (413)
: : : : : +- Generate (412)
: : : : : +- Project (411)
: : : : : +- Filter (410)
: : : : : +- Generate (409)
: : : : : +- Exchange (408)
: : : : : +- Project (407)
: : : : : +- Filter (406)
: : : : : +- Scan parquet (405)
: : : : +- HashAggregate (444)
: : : : +- Exchange (443)
: : : : +- HashAggregate (442)
: : : : +- Project (441)
: : : : +- Generate (440)
: : : : +- Project (439)
: : : : +- Generate (438)
: : : : +- Project (437)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (436)
: : : : :- Project (430)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (429)
: : : : : :- Project (424)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (423)
: : : : : : :- Exchange (417)
: : : : : : : +- Filter (416)
: : : : : : : +- Scan parquet (415)
: : : : : : +- BroadcastExchange (422)
: : : : : : +- Project (421)
: : : : : : +- Exchange (420)
: : : : : : +- Project (419)
: : : : : : +- Scan parquet (418)
: : : : : +- BroadcastExchange (428)
: : : : : +- Exchange (427)
: : : : : +- Project (426)
: : : : : +- Scan parquet (425)
: : : : +- BroadcastExchange (435)
: : : : +- Exchange (434)
: : : : +- Project (433)
: : : : +- Filter (432)
: : : : +- Scan parquet (431)
: : : +- Sort (484)
: : : +- Project (483)
: : : +- Generate (482)
: : : +- Project (481)
: : : +- Generate (480)
: : : +- Project (479)
: : : +- BroadcastHashJoin LeftOuter BuildRight (478)
: : : :- Project (472)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (471)
: : : : :- Project (466)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (465)
: : : : : :- Exchange (459)
: : : : : : +- Filter (458)
: : : : : : +- Scan parquet (457)
: : : : : +- BroadcastExchange (464)
: : : : : +- Project (463)
: : : : : +- Exchange (462)
: : : : : +- Project (461)
: : : : : +- Scan parquet (460)
: : : : +- BroadcastExchange (470)
: : : : +- Exchange (469)
: : : : +- Project (468)
: : : : +- Scan parquet (467)
: : : +- BroadcastExchange (477)
: : : +- Exchange (476)
: : : +- Project (475)
: : : +- Filter (474)
: : : +- Scan parquet (473)
: : +- Sort (724)
: : +- Exchange (723)
: : +- SerializeFromObject (722)
: : +- MapElements (721)
: : +- DeserializeToObject (720)
: : +- ObjectHashAggregate (719)
: : +- ObjectHashAggregate (718)
: : +- Project (717)
: : +- BroadcastHashJoin LeftOuter BuildRight (716)
: : :- Project (713)
: : : +- SortMergeJoin LeftOuter (712)
: : : :- Sort (525)
: : : : +- Project (524)
: : : : +- Project (523)
: : : : +- Generate (522)
: : : : +- Generate (521)
: : : : +- Project (520)
: : : : +- Project (519)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (518)
: : : : :- Project (512)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (511)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (507)
: : : : : : :- Exchange (502)
: : : : : : : +- Scan parquet (501)
: : : : : : +- BroadcastExchange (506)
: : : : : : +- Project (505)
: : : : : : +- Exchange (504)
: : : : : : +- Project (503)
: : : : : : +- Scan parquet (193)
: : : : : +- BroadcastExchange (510)
: : : : : +- Exchange (509)
: : : : : +- Project (508)
: : : : : +- Scan parquet (202)
: : : : +- BroadcastExchange (517)
: : : : +- Exchange (516)
: : : : +- Project (515)
: : : : +- Filter (514)
: : : : +- Scan parquet (513)
: : : +- Sort (711)
: : : +- HashAggregate (710)
: : : +- Exchange (709)
: : : +- HashAggregate (708)
: : : +- Project (707)
: : : +- SortMergeJoin Inner (706)
: : : :- Sort (614)
: : : : +- Exchange (613)
: : : : +- Project (612)
: : : : +- SortMergeJoin Inner (611)
: : : : :- Sort (582)
: : : : : +- Exchange (581)
: : : : : +- Project (580)
: : : : : +- Filter (579)
: : : : : +- Generate (578)
: : : : : +- Filter (577)
: : : : : +- ObjectHashAggregate (576)
: : : : : +- ObjectHashAggregate (575)
: : : : : +- Generate (574)
: : : : : +- BroadcastHashJoin Inner BuildLeft (573)
: : : : : :- BroadcastExchange (530)
: : : : : : +- Exchange (529)
: : : : : : +- Project (528)
: : : : : : +- Filter (527)
: : : : : : +- Scan parquet (526)
: : : : : +- Project (572)
: : : : : +- BroadcastHashJoin Inner BuildLeft (571)
: : : : : :- BroadcastExchange (540)
: : : : : : +- Project (539)
: : : : : : +- Generate (538)
: : : : : : +- Project (537)
: : : : : : +- Filter (536)
: : : : : : +- Generate (535)
: : : : : : +- Exchange (534)
: : : : : : +- Project (533)
: : : : : : +- Filter (532)
: : : : : : +- Scan parquet (531)
: : : : : +- HashAggregate (570)
: : : : : +- Exchange (569)
: : : : : +- HashAggregate (568)
: : : : : +- Project (567)
: : : : : +- Generate (566)
: : : : : +- Project (565)
: : : : : +- Generate (564)
: : : : : +- Project (563)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (562)
: : : : : :- Project (556)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (555)
: : : : : : :- Project (550)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (549)
: : : : : : : :- Exchange (543)
: : : : : : : : +- Filter (542)
: : : : : : : : +- Scan parquet (541)
: : : : : : : +- BroadcastExchange (548)
: : : : : : : +- Project (547)
: : : : : : : +- Exchange (546)
: : : : : : : +- Project (545)
: : : : : : : +- Scan parquet (544)
: : : : : : +- BroadcastExchange (554)
: : : : : : +- Exchange (553)
: : : : : : +- Project (552)
: : : : : : +- Scan parquet (551)
: : : : : +- BroadcastExchange (561)
: : : : : +- Exchange (560)
: : : : : +- Project (559)
: : : : : +- Filter (558)
: : : : : +- Scan parquet (557)
: : : : +- Sort (610)
: : : : +- Project (609)
: : : : +- Generate (608)
: : : : +- Project (607)
: : : : +- Generate (606)
: : : : +- Project (605)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (604)
: : : : :- Project (598)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (597)
: : : : : :- Project (592)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (591)
: : : : : : :- Exchange (585)
: : : : : : : +- Filter (584)
: : : : : : : +- Scan parquet (583)
: : : : : : +- BroadcastExchange (590)
: : : : : : +- Project (589)
: : : : : : +- Exchange (588)
: : : : : : +- Project (587)
: : : : : : +- Scan parquet (586)
: : : : : +- BroadcastExchange (596)
: : : : : +- Exchange (595)
: : : : : +- Project (594)
: : : : : +- Scan parquet (593)
: : : : +- BroadcastExchange (603)
: : : : +- Exchange (602)
: : : : +- Project (601)
: : : : +- Filter (600)
: : : : +- Scan parquet (599)
: : : +- Sort (705)
: : : +- Exchange (704)
: : : +- HashAggregate (703)
: : : +- HashAggregate (702)
: : : +- Project (701)
: : : +- SortMergeJoin Inner (700)
: : : :- Sort (671)
: : : : +- Exchange (670)
: : : : +- Project (669)
: : : : +- Filter (668)
: : : : +- Generate (667)
: : : : +- Filter (666)
: : : : +- ObjectHashAggregate (665)
: : : : +- ObjectHashAggregate (664)
: : : : +- Generate (663)
: : : : +- BroadcastHashJoin Inner BuildLeft (662)
: : : : :- BroadcastExchange (619)
: : : : : +- Exchange (618)
: : : : : +- Project (617)
: : : : : +- Filter (616)
: : : : : +- Scan parquet (615)
: : : : +- Project (661)
: : : : +- BroadcastHashJoin Inner BuildLeft (660)
: : : : :- BroadcastExchange (629)
: : : : : +- Project (628)
: : : : : +- Generate (627)
: : : : : +- Project (626)
: : : : : +- Filter (625)
: : : : : +- Generate (624)
: : : : : +- Exchange (623)
: : : : : +- Project (622)
: : : : : +- Filter (621)
: : : : : +- Scan parquet (620)
: : : : +- HashAggregate (659)
: : : : +- Exchange (658)
: : : : +- HashAggregate (657)
: : : : +- Project (656)
: : : : +- Generate (655)
: : : : +- Project (654)
: : : : +- Generate (653)
: : : : +- Project (652)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (651)
: : : : :- Project (645)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (644)
: : : : : :- Project (639)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (638)
: : : : : : :- Exchange (632)
: : : : : : : +- Filter (631)
: : : : : : : +- Scan parquet (630)
: : : : : : +- BroadcastExchange (637)
: : : : : : +- Project (636)
: : : : : : +- Exchange (635)
: : : : : : +- Project (634)
: : : : : : +- Scan parquet (633)
: : : : : +- BroadcastExchange (643)
: : : : : +- Exchange (642)
: : : : : +- Project (641)
: : : : : +- Scan parquet (640)
: : : : +- BroadcastExchange (650)
: : : : +- Exchange (649)
: : : : +- Project (648)
: : : : +- Filter (647)
: : : : +- Scan parquet (646)
: : : +- Sort (699)
: : : +- Project (698)
: : : +- Generate (697)
: : : +- Project (696)
: : : +- Generate (695)
: : : +- Project (694)
: : : +- BroadcastHashJoin LeftOuter BuildRight (693)
: : : :- Project (687)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (686)
: : : : :- Project (681)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (680)
: : : : : :- Exchange (674)
: : : : : : +- Filter (673)
: : : : : : +- Scan parquet (672)
: : : : : +- BroadcastExchange (679)
: : : : : +- Project (678)
: : : : : +- Exchange (677)
: : : : : +- Project (676)
: : : : : +- Scan parquet (675)
: : : : +- BroadcastExchange (685)
: : : : +- Exchange (684)
: : : : +- Project (683)
: : : : +- Scan parquet (682)
: : : +- BroadcastExchange (692)
: : : +- Exchange (691)
: : : +- Project (690)
: : : +- Filter (689)
: : : +- Scan parquet (688)
: : +- BroadcastExchange (715)
: : +- Filter (714)
: : +- Scan parquet (224)
: +- Sort (1525)
: +- Project (1524)
: +- ObjectHashAggregate (1523)
: +- Exchange (1522)
: +- ObjectHashAggregate (1521)
: +- Union (1520)
: :- Filter (1058)
: : +- InMemoryTableScan (729)
: : +- InMemoryRelation (730)
: : +- AdaptiveSparkPlan (1057)
+- == Final Plan ==
ResultQueryStage (732)
+- EmptyRelation (731)
+- Filter (unknown)
+- EmptyRelation (unknown)
+- == Initial Plan ==
Filter (1056)
+- ObjectHashAggregate (1055)
+- Exchange (1054)
+- ObjectHashAggregate (1053)
+- Project (1052)
+- Window (1051)
+- Sort (1050)
+- Exchange (1049)
+- Project (1048)
+- BroadcastHashJoin Inner BuildRight (1047)
:- Project (1038)
: +- SortMergeJoin Inner (1037)
: :- Sort (992)
: : +- Exchange (991)
: : +- Project (990)
: : +- SortMergeJoin LeftOuter (989)
: : :- Sort (761)
: : : +- Exchange (760)
: : : +- Project (759)
: : : +- Generate (758)
: : : +- Project (757)
: : : +- Generate (756)
: : : +- Project (755)
: : : +- BroadcastHashJoin LeftOuter BuildRight (754)
: : : :- Project (748)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (747)
: : : : :- Project (742)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (741)
: : : : : :- Exchange (735)
: : : : : : +- Filter (734)
: : : : : : +- Scan parquet (733)
: : : : : +- BroadcastExchange (740)
: : : : : +- Project (739)
: : : : : +- Exchange (738)
: : : : : +- Project (737)
: : : : : +- Scan parquet (736)
: : : : +- BroadcastExchange (746)
: : : : +- Exchange (745)
: : : : +- Project (744)
: : : : +- Scan parquet (743)
: : : +- BroadcastExchange (753)
: : : +- Exchange (752)
: : : +- Project (751)
: : : +- Filter (750)
: : : +- Scan parquet (749)
: : +- Sort (988)
: : +- Exchange (987)
: : +- SerializeFromObject (986)
: : +- MapElements (985)
: : +- DeserializeToObject (984)
: : +- ObjectHashAggregate (983)
: : +- ObjectHashAggregate (982)
: : +- Project (981)
: : +- BroadcastHashJoin LeftOuter BuildRight (980)
: : :- Project (976)
: : : +- SortMergeJoin LeftOuter (975)
: : : :- Sort (788)
: : : : +- Project (787)
: : : : +- Project (786)
: : : : +- Generate (785)
: : : : +- Generate (784)
: : : : +- Project (783)
: : : : +- Project (782)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (781)
: : : : :- Project (775)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (774)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (769)
: : : : : : :- Exchange (763)
: : : : : : : +- Scan parquet (762)
: : : : : : +- BroadcastExchange (768)
: : : : : : +- Project (767)
: : : : : : +- Exchange (766)
: : : : : : +- Project (765)
: : : : : : +- Scan parquet (764)
: : : : : +- BroadcastExchange (773)
: : : : : +- Exchange (772)
: : : : : +- Project (771)
: : : : : +- Scan parquet (770)
: : : : +- BroadcastExchange (780)
: : : : +- Exchange (779)
: : : : +- Project (778)
: : : : +- Filter (777)
: : : : +- Scan parquet (776)
: : : +- Sort (974)
: : : +- HashAggregate (973)
: : : +- Exchange (972)
: : : +- HashAggregate (971)
: : : +- Project (970)
: : : +- SortMergeJoin Inner (969)
: : : :- Sort (877)
: : : : +- Exchange (876)
: : : : +- Project (875)
: : : : +- SortMergeJoin Inner (874)
: : : : :- Sort (845)
: : : : : +- Exchange (844)
: : : : : +- Project (843)
: : : : : +- Filter (842)
: : : : : +- Generate (841)
: : : : : +- Filter (840)
: : : : : +- ObjectHashAggregate (839)
: : : : : +- ObjectHashAggregate (838)
: : : : : +- Generate (837)
: : : : : +- BroadcastHashJoin Inner BuildLeft (836)
: : : : : :- BroadcastExchange (793)
: : : : : : +- Exchange (792)
: : : : : : +- Project (791)
: : : : : : +- Filter (790)
: : : : : : +- Scan parquet (789)
: : : : : +- Project (835)
: : : : : +- BroadcastHashJoin Inner BuildLeft (834)
: : : : : :- BroadcastExchange (803)
: : : : : : +- Project (802)
: : : : : : +- Generate (801)
: : : : : : +- Project (800)
: : : : : : +- Filter (799)
: : : : : : +- Generate (798)
: : : : : : +- Exchange (797)
: : : : : : +- Project (796)
: : : : : : +- Filter (795)
: : : : : : +- Scan parquet (794)
: : : : : +- HashAggregate (833)
: : : : : +- Exchange (832)
: : : : : +- HashAggregate (831)
: : : : : +- Project (830)
: : : : : +- Generate (829)
: : : : : +- Project (828)
: : : : : +- Generate (827)
: : : : : +- Project (826)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (825)
: : : : : :- Project (819)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (818)
: : : : : : :- Project (813)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (812)
: : : : : : : :- Exchange (806)
: : : : : : : : +- Filter (805)
: : : : : : : : +- Scan parquet (804)
: : : : : : : +- BroadcastExchange (811)
: : : : : : : +- Project (810)
: : : : : : : +- Exchange (809)
: : : : : : : +- Project (808)
: : : : : : : +- Scan parquet (807)
: : : : : : +- BroadcastExchange (817)
: : : : : : +- Exchange (816)
: : : : : : +- Project (815)
: : : : : : +- Scan parquet (814)
: : : : : +- BroadcastExchange (824)
: : : : : +- Exchange (823)
: : : : : +- Project (822)
: : : : : +- Filter (821)
: : : : : +- Scan parquet (820)
: : : : +- Sort (873)
: : : : +- Project (872)
: : : : +- Generate (871)
: : : : +- Project (870)
: : : : +- Generate (869)
: : : : +- Project (868)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (867)
: : : : :- Project (861)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (860)
: : : : : :- Project (855)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (854)
: : : : : : :- Exchange (848)
: : : : : : : +- Filter (847)
: : : : : : : +- Scan parquet (846)
: : : : : : +- BroadcastExchange (853)
: : : : : : +- Project (852)
: : : : : : +- Exchange (851)
: : : : : : +- Project (850)
: : : : : : +- Scan parquet (849)
: : : : : +- BroadcastExchange (859)
: : : : : +- Exchange (858)
: : : : : +- Project (857)
: : : : : +- Scan parquet (856)
: : : : +- BroadcastExchange (866)
: : : : +- Exchange (865)
: : : : +- Project (864)
: : : : +- Filter (863)
: : : : +- Scan parquet (862)
: : : +- Sort (968)
: : : +- Exchange (967)
: : : +- HashAggregate (966)
: : : +- HashAggregate (965)
: : : +- Project (964)
: : : +- SortMergeJoin Inner (963)
: : : :- Sort (934)
: : : : +- Exchange (933)
: : : : +- Project (932)
: : : : +- Filter (931)
: : : : +- Generate (930)
: : : : +- Filter (929)
: : : : +- ObjectHashAggregate (928)
: : : : +- ObjectHashAggregate (927)
: : : : +- Generate (926)
: : : : +- BroadcastHashJoin Inner BuildLeft (925)
: : : : :- BroadcastExchange (882)
: : : : : +- Exchange (881)
: : : : : +- Project (880)
: : : : : +- Filter (879)
: : : : : +- Scan parquet (878)
: : : : +- Project (924)
: : : : +- BroadcastHashJoin Inner BuildLeft (923)
: : : : :- BroadcastExchange (892)
: : : : : +- Project (891)
: : : : : +- Generate (890)
: : : : : +- Project (889)
: : : : : +- Filter (888)
: : : : : +- Generate (887)
: : : : : +- Exchange (886)
: : : : : +- Project (885)
: : : : : +- Filter (884)
: : : : : +- Scan parquet (883)
: : : : +- HashAggregate (922)
: : : : +- Exchange (921)
: : : : +- HashAggregate (920)
: : : : +- Project (919)
: : : : +- Generate (918)
: : : : +- Project (917)
: : : : +- Generate (916)
: : : : +- Project (915)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (914)
: : : : :- Project (908)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (907)
: : : : : :- Project (902)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (901)
: : : : : : :- Exchange (895)
: : : : : : : +- Filter (894)
: : : : : : : +- Scan parquet (893)
: : : : : : +- BroadcastExchange (900)
: : : : : : +- Project (899)
: : : : : : +- Exchange (898)
: : : : : : +- Project (897)
: : : : : : +- Scan parquet (896)
: : : : : +- BroadcastExchange (906)
: : : : : +- Exchange (905)
: : : : : +- Project (904)
: : : : : +- Scan parquet (903)
: : : : +- BroadcastExchange (913)
: : : : +- Exchange (912)
: : : : +- Project (911)
: : : : +- Filter (910)
: : : : +- Scan parquet (909)
: : : +- Sort (962)
: : : +- Project (961)
: : : +- Generate (960)
: : : +- Project (959)
: : : +- Generate (958)
: : : +- Project (957)
: : : +- BroadcastHashJoin LeftOuter BuildRight (956)
: : : :- Project (950)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (949)
: : : : :- Project (944)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (943)
: : : : : :- Exchange (937)
: : : : : : +- Filter (936)
: : : : : : +- Scan parquet (935)
: : : : : +- BroadcastExchange (942)
: : : : : +- Project (941)
: : : : : +- Exchange (940)
: : : : : +- Project (939)
: : : : : +- Scan parquet (938)
: : : : +- BroadcastExchange (948)
: : : : +- Exchange (947)
: : : : +- Project (946)
: : : : +- Scan parquet (945)
: : : +- BroadcastExchange (955)
: : : +- Exchange (954)
: : : +- Project (953)
: : : +- Filter (952)
: : : +- Scan parquet (951)
: : +- BroadcastExchange (979)
: : +- Filter (978)
: : +- Scan parquet (977)
: +- Sort (1036)
: +- Project (1035)
: +- BroadcastHashJoin Inner BuildLeft (1034)
: :- BroadcastExchange (1003)
: : +- Project (1002)
: : +- Filter (1001)
: : +- Generate (1000)
: : +- Project (999)
: : +- Filter (998)
: : +- Generate (997)
: : +- Exchange (996)
: : +- Project (995)
: : +- Filter (994)
: : +- Scan parquet (993)
: +- HashAggregate (1033)
: +- Exchange (1032)
: +- HashAggregate (1031)
: +- Project (1030)
: +- Generate (1029)
: +- Project (1028)
: +- Generate (1027)
: +- Project (1026)
: +- BroadcastHashJoin LeftOuter BuildRight (1025)
: :- Project (1019)
: : +- BroadcastHashJoin LeftOuter BuildRight (1018)
: : :- Project (1013)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1012)
: : : :- Exchange (1006)
: : : : +- Filter (1005)
: : : : +- Scan parquet (1004)
: : : +- BroadcastExchange (1011)
: : : +- Project (1010)
: : : +- Exchange (1009)
: : : +- Project (1008)
: : : +- Scan parquet (1007)
: : +- BroadcastExchange (1017)
: : +- Exchange (1016)
: : +- Project (1015)
: : +- Scan parquet (1014)
: +- BroadcastExchange (1024)
: +- Exchange (1023)
: +- Project (1022)
: +- Filter (1021)
: +- Scan parquet (1020)
+- BroadcastExchange (1046)
+- Project (1045)
+- Filter (1044)
+- Generate (1043)
+- Exchange (1042)
+- Project (1041)
+- Filter (1040)
+- Scan parquet (1039)
: +- Filter (1519)
: +- ObjectHashAggregate (1518)
: +- Exchange (1517)
: +- ObjectHashAggregate (1516)
: +- Project (1515)
: +- BroadcastHashJoin Inner BuildRight (1514)
: :- Project (1505)
: : +- SortMergeJoin LeftOuter (1504)
: : :- Sort (1276)
: : : +- Exchange (1275)
: : : +- Project (1274)
: : : +- SortMergeJoin LeftOuter (1273)
: : : :- Sort (1086)
: : : : +- Project (1085)
: : : : +- Generate (1084)
: : : : +- Project (1083)
: : : : +- Generate (1082)
: : : : +- Project (1081)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1080)
: : : : :- Project (1074)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1073)
: : : : : :- Project (1068)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1067)
: : : : : : :- Exchange (1061)
: : : : : : : +- Filter (1060)
: : : : : : : +- Scan parquet (1059)
: : : : : : +- BroadcastExchange (1066)
: : : : : : +- Project (1065)
: : : : : : +- Exchange (1064)
: : : : : : +- Project (1063)
: : : : : : +- Scan parquet (1062)
: : : : : +- BroadcastExchange (1072)
: : : : : +- Exchange (1071)
: : : : : +- Project (1070)
: : : : : +- Scan parquet (1069)
: : : : +- BroadcastExchange (1079)
: : : : +- Exchange (1078)
: : : : +- Project (1077)
: : : : +- Filter (1076)
: : : : +- Scan parquet (1075)
: : : +- Sort (1272)
: : : +- HashAggregate (1271)
: : : +- Exchange (1270)
: : : +- HashAggregate (1269)
: : : +- Project (1268)
: : : +- SortMergeJoin Inner (1267)
: : : :- Sort (1175)
: : : : +- Exchange (1174)
: : : : +- Project (1173)
: : : : +- SortMergeJoin Inner (1172)
: : : : :- Sort (1143)
: : : : : +- Exchange (1142)
: : : : : +- Project (1141)
: : : : : +- Filter (1140)
: : : : : +- Generate (1139)
: : : : : +- Filter (1138)
: : : : : +- ObjectHashAggregate (1137)
: : : : : +- ObjectHashAggregate (1136)
: : : : : +- Generate (1135)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1134)
: : : : : :- BroadcastExchange (1091)
: : : : : : +- Exchange (1090)
: : : : : : +- Project (1089)
: : : : : : +- Filter (1088)
: : : : : : +- Scan parquet (1087)
: : : : : +- Project (1133)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1132)
: : : : : :- BroadcastExchange (1101)
: : : : : : +- Project (1100)
: : : : : : +- Generate (1099)
: : : : : : +- Project (1098)
: : : : : : +- Filter (1097)
: : : : : : +- Generate (1096)
: : : : : : +- Exchange (1095)
: : : : : : +- Project (1094)
: : : : : : +- Filter (1093)
: : : : : : +- Scan parquet (1092)
: : : : : +- HashAggregate (1131)
: : : : : +- Exchange (1130)
: : : : : +- HashAggregate (1129)
: : : : : +- Project (1128)
: : : : : +- Generate (1127)
: : : : : +- Project (1126)
: : : : : +- Generate (1125)
: : : : : +- Project (1124)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1123)
: : : : : :- Project (1117)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1116)
: : : : : : :- Project (1111)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1110)
: : : : : : : :- Exchange (1104)
: : : : : : : : +- Filter (1103)
: : : : : : : : +- Scan parquet (1102)
: : : : : : : +- BroadcastExchange (1109)
: : : : : : : +- Project (1108)
: : : : : : : +- Exchange (1107)
: : : : : : : +- Project (1106)
: : : : : : : +- Scan parquet (1105)
: : : : : : +- BroadcastExchange (1115)
: : : : : : +- Exchange (1114)
: : : : : : +- Project (1113)
: : : : : : +- Scan parquet (1112)
: : : : : +- BroadcastExchange (1122)
: : : : : +- Exchange (1121)
: : : : : +- Project (1120)
: : : : : +- Filter (1119)
: : : : : +- Scan parquet (1118)
: : : : +- Sort (1171)
: : : : +- Project (1170)
: : : : +- Generate (1169)
: : : : +- Project (1168)
: : : : +- Generate (1167)
: : : : +- Project (1166)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1165)
: : : : :- Project (1159)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1158)
: : : : : :- Project (1153)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1152)
: : : : : : :- Exchange (1146)
: : : : : : : +- Filter (1145)
: : : : : : : +- Scan parquet (1144)
: : : : : : +- BroadcastExchange (1151)
: : : : : : +- Project (1150)
: : : : : : +- Exchange (1149)
: : : : : : +- Project (1148)
: : : : : : +- Scan parquet (1147)
: : : : : +- BroadcastExchange (1157)
: : : : : +- Exchange (1156)
: : : : : +- Project (1155)
: : : : : +- Scan parquet (1154)
: : : : +- BroadcastExchange (1164)
: : : : +- Exchange (1163)
: : : : +- Project (1162)
: : : : +- Filter (1161)
: : : : +- Scan parquet (1160)
: : : +- Sort (1266)
: : : +- Exchange (1265)
: : : +- HashAggregate (1264)
: : : +- HashAggregate (1263)
: : : +- Project (1262)
: : : +- SortMergeJoin Inner (1261)
: : : :- Sort (1232)
: : : : +- Exchange (1231)
: : : : +- Project (1230)
: : : : +- Filter (1229)
: : : : +- Generate (1228)
: : : : +- Filter (1227)
: : : : +- ObjectHashAggregate (1226)
: : : : +- ObjectHashAggregate (1225)
: : : : +- Generate (1224)
: : : : +- BroadcastHashJoin Inner BuildLeft (1223)
: : : : :- BroadcastExchange (1180)
: : : : : +- Exchange (1179)
: : : : : +- Project (1178)
: : : : : +- Filter (1177)
: : : : : +- Scan parquet (1176)
: : : : +- Project (1222)
: : : : +- BroadcastHashJoin Inner BuildLeft (1221)
: : : : :- BroadcastExchange (1190)
: : : : : +- Project (1189)
: : : : : +- Generate (1188)
: : : : : +- Project (1187)
: : : : : +- Filter (1186)
: : : : : +- Generate (1185)
: : : : : +- Exchange (1184)
: : : : : +- Project (1183)
: : : : : +- Filter (1182)
: : : : : +- Scan parquet (1181)
: : : : +- HashAggregate (1220)
: : : : +- Exchange (1219)
: : : : +- HashAggregate (1218)
: : : : +- Project (1217)
: : : : +- Generate (1216)
: : : : +- Project (1215)
: : : : +- Generate (1214)
: : : : +- Project (1213)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1212)
: : : : :- Project (1206)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1205)
: : : : : :- Project (1200)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1199)
: : : : : : :- Exchange (1193)
: : : : : : : +- Filter (1192)
: : : : : : : +- Scan parquet (1191)
: : : : : : +- BroadcastExchange (1198)
: : : : : : +- Project (1197)
: : : : : : +- Exchange (1196)
: : : : : : +- Project (1195)
: : : : : : +- Scan parquet (1194)
: : : : : +- BroadcastExchange (1204)
: : : : : +- Exchange (1203)
: : : : : +- Project (1202)
: : : : : +- Scan parquet (1201)
: : : : +- BroadcastExchange (1211)
: : : : +- Exchange (1210)
: : : : +- Project (1209)
: : : : +- Filter (1208)
: : : : +- Scan parquet (1207)
: : : +- Sort (1260)
: : : +- Project (1259)
: : : +- Generate (1258)
: : : +- Project (1257)
: : : +- Generate (1256)
: : : +- Project (1255)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1254)
: : : :- Project (1248)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1247)
: : : : :- Project (1242)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1241)
: : : : : :- Exchange (1235)
: : : : : : +- Filter (1234)
: : : : : : +- Scan parquet (1233)
: : : : : +- BroadcastExchange (1240)
: : : : : +- Project (1239)
: : : : : +- Exchange (1238)
: : : : : +- Project (1237)
: : : : : +- Scan parquet (1236)
: : : : +- BroadcastExchange (1246)
: : : : +- Exchange (1245)
: : : : +- Project (1244)
: : : : +- Scan parquet (1243)
: : : +- BroadcastExchange (1253)
: : : +- Exchange (1252)
: : : +- Project (1251)
: : : +- Filter (1250)
: : : +- Scan parquet (1249)
: : +- Sort (1503)
: : +- Exchange (1502)
: : +- SerializeFromObject (1501)
: : +- MapElements (1500)
: : +- DeserializeToObject (1499)
: : +- ObjectHashAggregate (1498)
: : +- ObjectHashAggregate (1497)
: : +- Project (1496)
: : +- BroadcastHashJoin LeftOuter BuildRight (1495)
: : :- Project (1491)
: : : +- SortMergeJoin LeftOuter (1490)
: : : :- Sort (1303)
: : : : +- Project (1302)
: : : : +- Project (1301)
: : : : +- Generate (1300)
: : : : +- Generate (1299)
: : : : +- Project (1298)
: : : : +- Project (1297)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1296)
: : : : :- Project (1290)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1289)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (1284)
: : : : : : :- Exchange (1278)
: : : : : : : +- Scan parquet (1277)
: : : : : : +- BroadcastExchange (1283)
: : : : : : +- Project (1282)
: : : : : : +- Exchange (1281)
: : : : : : +- Project (1280)
: : : : : : +- Scan parquet (1279)
: : : : : +- BroadcastExchange (1288)
: : : : : +- Exchange (1287)
: : : : : +- Project (1286)
: : : : : +- Scan parquet (1285)
: : : : +- BroadcastExchange (1295)
: : : : +- Exchange (1294)
: : : : +- Project (1293)
: : : : +- Filter (1292)
: : : : +- Scan parquet (1291)
: : : +- Sort (1489)
: : : +- HashAggregate (1488)
: : : +- Exchange (1487)
: : : +- HashAggregate (1486)
: : : +- Project (1485)
: : : +- SortMergeJoin Inner (1484)
: : : :- Sort (1392)
: : : : +- Exchange (1391)
: : : : +- Project (1390)
: : : : +- SortMergeJoin Inner (1389)
: : : : :- Sort (1360)
: : : : : +- Exchange (1359)
: : : : : +- Project (1358)
: : : : : +- Filter (1357)
: : : : : +- Generate (1356)
: : : : : +- Filter (1355)
: : : : : +- ObjectHashAggregate (1354)
: : : : : +- ObjectHashAggregate (1353)
: : : : : +- Generate (1352)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1351)
: : : : : :- BroadcastExchange (1308)
: : : : : : +- Exchange (1307)
: : : : : : +- Project (1306)
: : : : : : +- Filter (1305)
: : : : : : +- Scan parquet (1304)
: : : : : +- Project (1350)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1349)
: : : : : :- BroadcastExchange (1318)
: : : : : : +- Project (1317)
: : : : : : +- Generate (1316)
: : : : : : +- Project (1315)
: : : : : : +- Filter (1314)
: : : : : : +- Generate (1313)
: : : : : : +- Exchange (1312)
: : : : : : +- Project (1311)
: : : : : : +- Filter (1310)
: : : : : : +- Scan parquet (1309)
: : : : : +- HashAggregate (1348)
: : : : : +- Exchange (1347)
: : : : : +- HashAggregate (1346)
: : : : : +- Project (1345)
: : : : : +- Generate (1344)
: : : : : +- Project (1343)
: : : : : +- Generate (1342)
: : : : : +- Project (1341)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1340)
: : : : : :- Project (1334)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1333)
: : : : : : :- Project (1328)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1327)
: : : : : : : :- Exchange (1321)
: : : : : : : : +- Filter (1320)
: : : : : : : : +- Scan parquet (1319)
: : : : : : : +- BroadcastExchange (1326)
: : : : : : : +- Project (1325)
: : : : : : : +- Exchange (1324)
: : : : : : : +- Project (1323)
: : : : : : : +- Scan parquet (1322)
: : : : : : +- BroadcastExchange (1332)
: : : : : : +- Exchange (1331)
: : : : : : +- Project (1330)
: : : : : : +- Scan parquet (1329)
: : : : : +- BroadcastExchange (1339)
: : : : : +- Exchange (1338)
: : : : : +- Project (1337)
: : : : : +- Filter (1336)
: : : : : +- Scan parquet (1335)
: : : : +- Sort (1388)
: : : : +- Project (1387)
: : : : +- Generate (1386)
: : : : +- Project (1385)
: : : : +- Generate (1384)
: : : : +- Project (1383)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1382)
: : : : :- Project (1376)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1375)
: : : : : :- Project (1370)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1369)
: : : : : : :- Exchange (1363)
: : : : : : : +- Filter (1362)
: : : : : : : +- Scan parquet (1361)
: : : : : : +- BroadcastExchange (1368)
: : : : : : +- Project (1367)
: : : : : : +- Exchange (1366)
: : : : : : +- Project (1365)
: : : : : : +- Scan parquet (1364)
: : : : : +- BroadcastExchange (1374)
: : : : : +- Exchange (1373)
: : : : : +- Project (1372)
: : : : : +- Scan parquet (1371)
: : : : +- BroadcastExchange (1381)
: : : : +- Exchange (1380)
: : : : +- Project (1379)
: : : : +- Filter (1378)
: : : : +- Scan parquet (1377)
: : : +- Sort (1483)
: : : +- Exchange (1482)
: : : +- HashAggregate (1481)
: : : +- HashAggregate (1480)
: : : +- Project (1479)
: : : +- SortMergeJoin Inner (1478)
: : : :- Sort (1449)
: : : : +- Exchange (1448)
: : : : +- Project (1447)
: : : : +- Filter (1446)
: : : : +- Generate (1445)
: : : : +- Filter (1444)
: : : : +- ObjectHashAggregate (1443)
: : : : +- ObjectHashAggregate (1442)
: : : : +- Generate (1441)
: : : : +- BroadcastHashJoin Inner BuildLeft (1440)
: : : : :- BroadcastExchange (1397)
: : : : : +- Exchange (1396)
: : : : : +- Project (1395)
: : : : : +- Filter (1394)
: : : : : +- Scan parquet (1393)
: : : : +- Project (1439)
: : : : +- BroadcastHashJoin Inner BuildLeft (1438)
: : : : :- BroadcastExchange (1407)
: : : : : +- Project (1406)
: : : : : +- Generate (1405)
: : : : : +- Project (1404)
: : : : : +- Filter (1403)
: : : : : +- Generate (1402)
: : : : : +- Exchange (1401)
: : : : : +- Project (1400)
: : : : : +- Filter (1399)
: : : : : +- Scan parquet (1398)
: : : : +- HashAggregate (1437)
: : : : +- Exchange (1436)
: : : : +- HashAggregate (1435)
: : : : +- Project (1434)
: : : : +- Generate (1433)
: : : : +- Project (1432)
: : : : +- Generate (1431)
: : : : +- Project (1430)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1429)
: : : : :- Project (1423)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1422)
: : : : : :- Project (1417)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1416)
: : : : : : :- Exchange (1410)
: : : : : : : +- Filter (1409)
: : : : : : : +- Scan parquet (1408)
: : : : : : +- BroadcastExchange (1415)
: : : : : : +- Project (1414)
: : : : : : +- Exchange (1413)
: : : : : : +- Project (1412)
: : : : : : +- Scan parquet (1411)
: : : : : +- BroadcastExchange (1421)
: : : : : +- Exchange (1420)
: : : : : +- Project (1419)
: : : : : +- Scan parquet (1418)
: : : : +- BroadcastExchange (1428)
: : : : +- Exchange (1427)
: : : : +- Project (1426)
: : : : +- Filter (1425)
: : : : +- Scan parquet (1424)
: : : +- Sort (1477)
: : : +- Project (1476)
: : : +- Generate (1475)
: : : +- Project (1474)
: : : +- Generate (1473)
: : : +- Project (1472)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1471)
: : : :- Project (1465)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1464)
: : : : :- Project (1459)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1458)
: : : : : :- Exchange (1452)
: : : : : : +- Filter (1451)
: : : : : : +- Scan parquet (1450)
: : : : : +- BroadcastExchange (1457)
: : : : : +- Project (1456)
: : : : : +- Exchange (1455)
: : : : : +- Project (1454)
: : : : : +- Scan parquet (1453)
: : : : +- BroadcastExchange (1463)
: : : : +- Exchange (1462)
: : : : +- Project (1461)
: : : : +- Scan parquet (1460)
: : : +- BroadcastExchange (1470)
: : : +- Exchange (1469)
: : : +- Project (1468)
: : : +- Filter (1467)
: : : +- Scan parquet (1466)
: : +- BroadcastExchange (1494)
: : +- Filter (1493)
: : +- Scan parquet (1492)
: +- BroadcastExchange (1513)
: +- Project (1512)
: +- Filter (1511)
: +- Generate (1510)
: +- Exchange (1509)
: +- Project (1508)
: +- Filter (1507)
: +- Scan parquet (1506)
+- Sort (2453)
+- Exchange (2452)
+- Filter (2451)
+- SerializeFromObject (2450)
+- MapElements (2449)
+- DeserializeToObject (2448)
+- Project (2447)
+- SortMergeJoin LeftOuter (2446)
:- Sort (1975)
: +- Exchange (1974)
: +- Project (1973)
: +- SortMergeJoin LeftOuter (1972)
: :- Sort (1744)
: : +- Exchange (1743)
: : +- Project (1742)
: : +- SortMergeJoin LeftOuter (1741)
: : :- Sort (1554)
: : : +- Project (1553)
: : : +- Project (1552)
: : : +- Generate (1551)
: : : +- Generate (1550)
: : : +- Project (1549)
: : : +- Project (1548)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1547)
: : : :- Project (1541)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1540)
: : : : :- BroadcastHashJoin LeftOuter BuildRight (1535)
: : : : : :- Exchange (1529)
: : : : : : +- Scan parquet (1528)
: : : : : +- BroadcastExchange (1534)
: : : : : +- Project (1533)
: : : : : +- Exchange (1532)
: : : : : +- Project (1531)
: : : : : +- Scan parquet (1530)
: : : : +- BroadcastExchange (1539)
: : : : +- Exchange (1538)
: : : : +- Project (1537)
: : : : +- Scan parquet (1536)
: : : +- BroadcastExchange (1546)
: : : +- Exchange (1545)
: : : +- Project (1544)
: : : +- Filter (1543)
: : : +- Scan parquet (1542)
: : +- Sort (1740)
: : +- HashAggregate (1739)
: : +- Exchange (1738)
: : +- HashAggregate (1737)
: : +- Project (1736)
: : +- SortMergeJoin Inner (1735)
: : :- Sort (1643)
: : : +- Exchange (1642)
: : : +- Project (1641)
: : : +- SortMergeJoin Inner (1640)
: : : :- Sort (1611)
: : : : +- Exchange (1610)
: : : : +- Project (1609)
: : : : +- Filter (1608)
: : : : +- Generate (1607)
: : : : +- Filter (1606)
: : : : +- ObjectHashAggregate (1605)
: : : : +- ObjectHashAggregate (1604)
: : : : +- Generate (1603)
: : : : +- BroadcastHashJoin Inner BuildLeft (1602)
: : : : :- BroadcastExchange (1559)
: : : : : +- Exchange (1558)
: : : : : +- Project (1557)
: : : : : +- Filter (1556)
: : : : : +- Scan parquet (1555)
: : : : +- Project (1601)
: : : : +- BroadcastHashJoin Inner BuildLeft (1600)
: : : : :- BroadcastExchange (1569)
: : : : : +- Project (1568)
: : : : : +- Generate (1567)
: : : : : +- Project (1566)
: : : : : +- Filter (1565)
: : : : : +- Generate (1564)
: : : : : +- Exchange (1563)
: : : : : +- Project (1562)
: : : : : +- Filter (1561)
: : : : : +- Scan parquet (1560)
: : : : +- HashAggregate (1599)
: : : : +- Exchange (1598)
: : : : +- HashAggregate (1597)
: : : : +- Project (1596)
: : : : +- Generate (1595)
: : : : +- Project (1594)
: : : : +- Generate (1593)
: : : : +- Project (1592)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1591)
: : : : :- Project (1585)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1584)
: : : : : :- Project (1579)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1578)
: : : : : : :- Exchange (1572)
: : : : : : : +- Filter (1571)
: : : : : : : +- Scan parquet (1570)
: : : : : : +- BroadcastExchange (1577)
: : : : : : +- Project (1576)
: : : : : : +- Exchange (1575)
: : : : : : +- Project (1574)
: : : : : : +- Scan parquet (1573)
: : : : : +- BroadcastExchange (1583)
: : : : : +- Exchange (1582)
: : : : : +- Project (1581)
: : : : : +- Scan parquet (1580)
: : : : +- BroadcastExchange (1590)
: : : : +- Exchange (1589)
: : : : +- Project (1588)
: : : : +- Filter (1587)
: : : : +- Scan parquet (1586)
: : : +- Sort (1639)
: : : +- Project (1638)
: : : +- Generate (1637)
: : : +- Project (1636)
: : : +- Generate (1635)
: : : +- Project (1634)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1633)
: : : :- Project (1627)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1626)
: : : : :- Project (1621)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1620)
: : : : : :- Exchange (1614)
: : : : : : +- Filter (1613)
: : : : : : +- Scan parquet (1612)
: : : : : +- BroadcastExchange (1619)
: : : : : +- Project (1618)
: : : : : +- Exchange (1617)
: : : : : +- Project (1616)
: : : : : +- Scan parquet (1615)
: : : : +- BroadcastExchange (1625)
: : : : +- Exchange (1624)
: : : : +- Project (1623)
: : : : +- Scan parquet (1622)
: : : +- BroadcastExchange (1632)
: : : +- Exchange (1631)
: : : +- Project (1630)
: : : +- Filter (1629)
: : : +- Scan parquet (1628)
: : +- Sort (1734)
: : +- Exchange (1733)
: : +- HashAggregate (1732)
: : +- HashAggregate (1731)
: : +- Project (1730)
: : +- SortMergeJoin Inner (1729)
: : :- Sort (1700)
: : : +- Exchange (1699)
: : : +- Project (1698)
: : : +- Filter (1697)
: : : +- Generate (1696)
: : : +- Filter (1695)
: : : +- ObjectHashAggregate (1694)
: : : +- ObjectHashAggregate (1693)
: : : +- Generate (1692)
: : : +- BroadcastHashJoin Inner BuildLeft (1691)
: : : :- BroadcastExchange (1648)
: : : : +- Exchange (1647)
: : : : +- Project (1646)
: : : : +- Filter (1645)
: : : : +- Scan parquet (1644)
: : : +- Project (1690)
: : : +- BroadcastHashJoin Inner BuildLeft (1689)
: : : :- BroadcastExchange (1658)
: : : : +- Project (1657)
: : : : +- Generate (1656)
: : : : +- Project (1655)
: : : : +- Filter (1654)
: : : : +- Generate (1653)
: : : : +- Exchange (1652)
: : : : +- Project (1651)
: : : : +- Filter (1650)
: : : : +- Scan parquet (1649)
: : : +- HashAggregate (1688)
: : : +- Exchange (1687)
: : : +- HashAggregate (1686)
: : : +- Project (1685)
: : : +- Generate (1684)
: : : +- Project (1683)
: : : +- Generate (1682)
: : : +- Project (1681)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1680)
: : : :- Project (1674)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1673)
: : : : :- Project (1668)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1667)
: : : : : :- Exchange (1661)
: : : : : : +- Filter (1660)
: : : : : : +- Scan parquet (1659)
: : : : : +- BroadcastExchange (1666)
: : : : : +- Project (1665)
: : : : : +- Exchange (1664)
: : : : : +- Project (1663)
: : : : : +- Scan parquet (1662)
: : : : +- BroadcastExchange (1672)
: : : : +- Exchange (1671)
: : : : +- Project (1670)
: : : : +- Scan parquet (1669)
: : : +- BroadcastExchange (1679)
: : : +- Exchange (1678)
: : : +- Project (1677)
: : : +- Filter (1676)
: : : +- Scan parquet (1675)
: : +- Sort (1728)
: : +- Project (1727)
: : +- Generate (1726)
: : +- Project (1725)
: : +- Generate (1724)
: : +- Project (1723)
: : +- BroadcastHashJoin LeftOuter BuildRight (1722)
: : :- Project (1716)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1715)
: : : :- Project (1710)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1709)
: : : : :- Exchange (1703)
: : : : : +- Filter (1702)
: : : : : +- Scan parquet (1701)
: : : : +- BroadcastExchange (1708)
: : : : +- Project (1707)
: : : : +- Exchange (1706)
: : : : +- Project (1705)
: : : : +- Scan parquet (1704)
: : : +- BroadcastExchange (1714)
: : : +- Exchange (1713)
: : : +- Project (1712)
: : : +- Scan parquet (1711)
: : +- BroadcastExchange (1721)
: : +- Exchange (1720)
: : +- Project (1719)
: : +- Filter (1718)
: : +- Scan parquet (1717)
: +- Sort (1971)
: +- Exchange (1970)
: +- SerializeFromObject (1969)
: +- MapElements (1968)
: +- DeserializeToObject (1967)
: +- ObjectHashAggregate (1966)
: +- ObjectHashAggregate (1965)
: +- Project (1964)
: +- BroadcastHashJoin LeftOuter BuildRight (1963)
: :- Project (1959)
: : +- SortMergeJoin LeftOuter (1958)
: : :- Sort (1771)
: : : +- Project (1770)
: : : +- Project (1769)
: : : +- Generate (1768)
: : : +- Generate (1767)
: : : +- Project (1766)
: : : +- Project (1765)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1764)
: : : :- Project (1758)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1757)
: : : : :- BroadcastHashJoin LeftOuter BuildRight (1752)
: : : : : :- Exchange (1746)
: : : : : : +- Scan parquet (1745)
: : : : : +- BroadcastExchange (1751)
: : : : : +- Project (1750)
: : : : : +- Exchange (1749)
: : : : : +- Project (1748)
: : : : : +- Scan parquet (1747)
: : : : +- BroadcastExchange (1756)
: : : : +- Exchange (1755)
: : : : +- Project (1754)
: : : : +- Scan parquet (1753)
: : : +- BroadcastExchange (1763)
: : : +- Exchange (1762)
: : : +- Project (1761)
: : : +- Filter (1760)
: : : +- Scan parquet (1759)
: : +- Sort (1957)
: : +- HashAggregate (1956)
: : +- Exchange (1955)
: : +- HashAggregate (1954)
: : +- Project (1953)
: : +- SortMergeJoin Inner (1952)
: : :- Sort (1860)
: : : +- Exchange (1859)
: : : +- Project (1858)
: : : +- SortMergeJoin Inner (1857)
: : : :- Sort (1828)
: : : : +- Exchange (1827)
: : : : +- Project (1826)
: : : : +- Filter (1825)
: : : : +- Generate (1824)
: : : : +- Filter (1823)
: : : : +- ObjectHashAggregate (1822)
: : : : +- ObjectHashAggregate (1821)
: : : : +- Generate (1820)
: : : : +- BroadcastHashJoin Inner BuildLeft (1819)
: : : : :- BroadcastExchange (1776)
: : : : : +- Exchange (1775)
: : : : : +- Project (1774)
: : : : : +- Filter (1773)
: : : : : +- Scan parquet (1772)
: : : : +- Project (1818)
: : : : +- BroadcastHashJoin Inner BuildLeft (1817)
: : : : :- BroadcastExchange (1786)
: : : : : +- Project (1785)
: : : : : +- Generate (1784)
: : : : : +- Project (1783)
: : : : : +- Filter (1782)
: : : : : +- Generate (1781)
: : : : : +- Exchange (1780)
: : : : : +- Project (1779)
: : : : : +- Filter (1778)
: : : : : +- Scan parquet (1777)
: : : : +- HashAggregate (1816)
: : : : +- Exchange (1815)
: : : : +- HashAggregate (1814)
: : : : +- Project (1813)
: : : : +- Generate (1812)
: : : : +- Project (1811)
: : : : +- Generate (1810)
: : : : +- Project (1809)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1808)
: : : : :- Project (1802)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1801)
: : : : : :- Project (1796)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1795)
: : : : : : :- Exchange (1789)
: : : : : : : +- Filter (1788)
: : : : : : : +- Scan parquet (1787)
: : : : : : +- BroadcastExchange (1794)
: : : : : : +- Project (1793)
: : : : : : +- Exchange (1792)
: : : : : : +- Project (1791)
: : : : : : +- Scan parquet (1790)
: : : : : +- BroadcastExchange (1800)
: : : : : +- Exchange (1799)
: : : : : +- Project (1798)
: : : : : +- Scan parquet (1797)
: : : : +- BroadcastExchange (1807)
: : : : +- Exchange (1806)
: : : : +- Project (1805)
: : : : +- Filter (1804)
: : : : +- Scan parquet (1803)
: : : +- Sort (1856)
: : : +- Project (1855)
: : : +- Generate (1854)
: : : +- Project (1853)
: : : +- Generate (1852)
: : : +- Project (1851)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1850)
: : : :- Project (1844)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1843)
: : : : :- Project (1838)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1837)
: : : : : :- Exchange (1831)
: : : : : : +- Filter (1830)
: : : : : : +- Scan parquet (1829)
: : : : : +- BroadcastExchange (1836)
: : : : : +- Project (1835)
: : : : : +- Exchange (1834)
: : : : : +- Project (1833)
: : : : : +- Scan parquet (1832)
: : : : +- BroadcastExchange (1842)
: : : : +- Exchange (1841)
: : : : +- Project (1840)
: : : : +- Scan parquet (1839)
: : : +- BroadcastExchange (1849)
: : : +- Exchange (1848)
: : : +- Project (1847)
: : : +- Filter (1846)
: : : +- Scan parquet (1845)
: : +- Sort (1951)
: : +- Exchange (1950)
: : +- HashAggregate (1949)
: : +- HashAggregate (1948)
: : +- Project (1947)
: : +- SortMergeJoin Inner (1946)
: : :- Sort (1917)
: : : +- Exchange (1916)
: : : +- Project (1915)
: : : +- Filter (1914)
: : : +- Generate (1913)
: : : +- Filter (1912)
: : : +- ObjectHashAggregate (1911)
: : : +- ObjectHashAggregate (1910)
: : : +- Generate (1909)
: : : +- BroadcastHashJoin Inner BuildLeft (1908)
: : : :- BroadcastExchange (1865)
: : : : +- Exchange (1864)
: : : : +- Project (1863)
: : : : +- Filter (1862)
: : : : +- Scan parquet (1861)
: : : +- Project (1907)
: : : +- BroadcastHashJoin Inner BuildLeft (1906)
: : : :- BroadcastExchange (1875)
: : : : +- Project (1874)
: : : : +- Generate (1873)
: : : : +- Project (1872)
: : : : +- Filter (1871)
: : : : +- Generate (1870)
: : : : +- Exchange (1869)
: : : : +- Project (1868)
: : : : +- Filter (1867)
: : : : +- Scan parquet (1866)
: : : +- HashAggregate (1905)
: : : +- Exchange (1904)
: : : +- HashAggregate (1903)
: : : +- Project (1902)
: : : +- Generate (1901)
: : : +- Project (1900)
: : : +- Generate (1899)
: : : +- Project (1898)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1897)
: : : :- Project (1891)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1890)
: : : : :- Project (1885)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1884)
: : : : : :- Exchange (1878)
: : : : : : +- Filter (1877)
: : : : : : +- Scan parquet (1876)
: : : : : +- BroadcastExchange (1883)
: : : : : +- Project (1882)
: : : : : +- Exchange (1881)
: : : : : +- Project (1880)
: : : : : +- Scan parquet (1879)
: : : : +- BroadcastExchange (1889)
: : : : +- Exchange (1888)
: : : : +- Project (1887)
: : : : +- Scan parquet (1886)
: : : +- BroadcastExchange (1896)
: : : +- Exchange (1895)
: : : +- Project (1894)
: : : +- Filter (1893)
: : : +- Scan parquet (1892)
: : +- Sort (1945)
: : +- Project (1944)
: : +- Generate (1943)
: : +- Project (1942)
: : +- Generate (1941)
: : +- Project (1940)
: : +- BroadcastHashJoin LeftOuter BuildRight (1939)
: : :- Project (1933)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1932)
: : : :- Project (1927)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1926)
: : : : :- Exchange (1920)
: : : : : +- Filter (1919)
: : : : : +- Scan parquet (1918)
: : : : +- BroadcastExchange (1925)
: : : : +- Project (1924)
: : : : +- Exchange (1923)
: : : : +- Project (1922)
: : : : +- Scan parquet (1921)
: : : +- BroadcastExchange (1931)
: : : +- Exchange (1930)
: : : +- Project (1929)
: : : +- Scan parquet (1928)
: : +- BroadcastExchange (1938)
: : +- Exchange (1937)
: : +- Project (1936)
: : +- Filter (1935)
: : +- Scan parquet (1934)
: +- BroadcastExchange (1962)
: +- Filter (1961)
: +- Scan parquet (1960)
+- Sort (2445)
+- Project (2444)
+- ObjectHashAggregate (2443)
+- Exchange (2442)
+- ObjectHashAggregate (2441)
+- Union (2440)
:- Filter (1978)
: +- InMemoryTableScan (1976)
: +- InMemoryRelation (1977)
: +- AdaptiveSparkPlan (1057)
+- == Final Plan ==
ResultQueryStage (732)
+- EmptyRelation (731)
+- Filter (unknown)
+- EmptyRelation (unknown)
+- == Initial Plan ==
Filter (1056)
+- ObjectHashAggregate (1055)
+- Exchange (1054)
+- ObjectHashAggregate (1053)
+- Project (1052)
+- Window (1051)
+- Sort (1050)
+- Exchange (1049)
+- Project (1048)
+- BroadcastHashJoin Inner BuildRight (1047)
:- Project (1038)
: +- SortMergeJoin Inner (1037)
: :- Sort (992)
: : +- Exchange (991)
: : +- Project (990)
: : +- SortMergeJoin LeftOuter (989)
: : :- Sort (761)
: : : +- Exchange (760)
: : : +- Project (759)
: : : +- Generate (758)
: : : +- Project (757)
: : : +- Generate (756)
: : : +- Project (755)
: : : +- BroadcastHashJoin LeftOuter BuildRight (754)
: : : :- Project (748)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (747)
: : : : :- Project (742)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (741)
: : : : : :- Exchange (735)
: : : : : : +- Filter (734)
: : : : : : +- Scan parquet (733)
: : : : : +- BroadcastExchange (740)
: : : : : +- Project (739)
: : : : : +- Exchange (738)
: : : : : +- Project (737)
: : : : : +- Scan parquet (736)
: : : : +- BroadcastExchange (746)
: : : : +- Exchange (745)
: : : : +- Project (744)
: : : : +- Scan parquet (743)
: : : +- BroadcastExchange (753)
: : : +- Exchange (752)
: : : +- Project (751)
: : : +- Filter (750)
: : : +- Scan parquet (749)
: : +- Sort (988)
: : +- Exchange (987)
: : +- SerializeFromObject (986)
: : +- MapElements (985)
: : +- DeserializeToObject (984)
: : +- ObjectHashAggregate (983)
: : +- ObjectHashAggregate (982)
: : +- Project (981)
: : +- BroadcastHashJoin LeftOuter BuildRight (980)
: : :- Project (976)
: : : +- SortMergeJoin LeftOuter (975)
: : : :- Sort (788)
: : : : +- Project (787)
: : : : +- Project (786)
: : : : +- Generate (785)
: : : : +- Generate (784)
: : : : +- Project (783)
: : : : +- Project (782)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (781)
: : : : :- Project (775)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (774)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (769)
: : : : : : :- Exchange (763)
: : : : : : : +- Scan parquet (762)
: : : : : : +- BroadcastExchange (768)
: : : : : : +- Project (767)
: : : : : : +- Exchange (766)
: : : : : : +- Project (765)
: : : : : : +- Scan parquet (764)
: : : : : +- BroadcastExchange (773)
: : : : : +- Exchange (772)
: : : : : +- Project (771)
: : : : : +- Scan parquet (770)
: : : : +- BroadcastExchange (780)
: : : : +- Exchange (779)
: : : : +- Project (778)
: : : : +- Filter (777)
: : : : +- Scan parquet (776)
: : : +- Sort (974)
: : : +- HashAggregate (973)
: : : +- Exchange (972)
: : : +- HashAggregate (971)
: : : +- Project (970)
: : : +- SortMergeJoin Inner (969)
: : : :- Sort (877)
: : : : +- Exchange (876)
: : : : +- Project (875)
: : : : +- SortMergeJoin Inner (874)
: : : : :- Sort (845)
: : : : : +- Exchange (844)
: : : : : +- Project (843)
: : : : : +- Filter (842)
: : : : : +- Generate (841)
: : : : : +- Filter (840)
: : : : : +- ObjectHashAggregate (839)
: : : : : +- ObjectHashAggregate (838)
: : : : : +- Generate (837)
: : : : : +- BroadcastHashJoin Inner BuildLeft (836)
: : : : : :- BroadcastExchange (793)
: : : : : : +- Exchange (792)
: : : : : : +- Project (791)
: : : : : : +- Filter (790)
: : : : : : +- Scan parquet (789)
: : : : : +- Project (835)
: : : : : +- BroadcastHashJoin Inner BuildLeft (834)
: : : : : :- BroadcastExchange (803)
: : : : : : +- Project (802)
: : : : : : +- Generate (801)
: : : : : : +- Project (800)
: : : : : : +- Filter (799)
: : : : : : +- Generate (798)
: : : : : : +- Exchange (797)
: : : : : : +- Project (796)
: : : : : : +- Filter (795)
: : : : : : +- Scan parquet (794)
: : : : : +- HashAggregate (833)
: : : : : +- Exchange (832)
: : : : : +- HashAggregate (831)
: : : : : +- Project (830)
: : : : : +- Generate (829)
: : : : : +- Project (828)
: : : : : +- Generate (827)
: : : : : +- Project (826)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (825)
: : : : : :- Project (819)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (818)
: : : : : : :- Project (813)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (812)
: : : : : : : :- Exchange (806)
: : : : : : : : +- Filter (805)
: : : : : : : : +- Scan parquet (804)
: : : : : : : +- BroadcastExchange (811)
: : : : : : : +- Project (810)
: : : : : : : +- Exchange (809)
: : : : : : : +- Project (808)
: : : : : : : +- Scan parquet (807)
: : : : : : +- BroadcastExchange (817)
: : : : : : +- Exchange (816)
: : : : : : +- Project (815)
: : : : : : +- Scan parquet (814)
: : : : : +- BroadcastExchange (824)
: : : : : +- Exchange (823)
: : : : : +- Project (822)
: : : : : +- Filter (821)
: : : : : +- Scan parquet (820)
: : : : +- Sort (873)
: : : : +- Project (872)
: : : : +- Generate (871)
: : : : +- Project (870)
: : : : +- Generate (869)
: : : : +- Project (868)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (867)
: : : : :- Project (861)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (860)
: : : : : :- Project (855)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (854)
: : : : : : :- Exchange (848)
: : : : : : : +- Filter (847)
: : : : : : : +- Scan parquet (846)
: : : : : : +- BroadcastExchange (853)
: : : : : : +- Project (852)
: : : : : : +- Exchange (851)
: : : : : : +- Project (850)
: : : : : : +- Scan parquet (849)
: : : : : +- BroadcastExchange (859)
: : : : : +- Exchange (858)
: : : : : +- Project (857)
: : : : : +- Scan parquet (856)
: : : : +- BroadcastExchange (866)
: : : : +- Exchange (865)
: : : : +- Project (864)
: : : : +- Filter (863)
: : : : +- Scan parquet (862)
: : : +- Sort (968)
: : : +- Exchange (967)
: : : +- HashAggregate (966)
: : : +- HashAggregate (965)
: : : +- Project (964)
: : : +- SortMergeJoin Inner (963)
: : : :- Sort (934)
: : : : +- Exchange (933)
: : : : +- Project (932)
: : : : +- Filter (931)
: : : : +- Generate (930)
: : : : +- Filter (929)
: : : : +- ObjectHashAggregate (928)
: : : : +- ObjectHashAggregate (927)
: : : : +- Generate (926)
: : : : +- BroadcastHashJoin Inner BuildLeft (925)
: : : : :- BroadcastExchange (882)
: : : : : +- Exchange (881)
: : : : : +- Project (880)
: : : : : +- Filter (879)
: : : : : +- Scan parquet (878)
: : : : +- Project (924)
: : : : +- BroadcastHashJoin Inner BuildLeft (923)
: : : : :- BroadcastExchange (892)
: : : : : +- Project (891)
: : : : : +- Generate (890)
: : : : : +- Project (889)
: : : : : +- Filter (888)
: : : : : +- Generate (887)
: : : : : +- Exchange (886)
: : : : : +- Project (885)
: : : : : +- Filter (884)
: : : : : +- Scan parquet (883)
: : : : +- HashAggregate (922)
: : : : +- Exchange (921)
: : : : +- HashAggregate (920)
: : : : +- Project (919)
: : : : +- Generate (918)
: : : : +- Project (917)
: : : : +- Generate (916)
: : : : +- Project (915)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (914)
: : : : :- Project (908)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (907)
: : : : : :- Project (902)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (901)
: : : : : : :- Exchange (895)
: : : : : : : +- Filter (894)
: : : : : : : +- Scan parquet (893)
: : : : : : +- BroadcastExchange (900)
: : : : : : +- Project (899)
: : : : : : +- Exchange (898)
: : : : : : +- Project (897)
: : : : : : +- Scan parquet (896)
: : : : : +- BroadcastExchange (906)
: : : : : +- Exchange (905)
: : : : : +- Project (904)
: : : : : +- Scan parquet (903)
: : : : +- BroadcastExchange (913)
: : : : +- Exchange (912)
: : : : +- Project (911)
: : : : +- Filter (910)
: : : : +- Scan parquet (909)
: : : +- Sort (962)
: : : +- Project (961)
: : : +- Generate (960)
: : : +- Project (959)
: : : +- Generate (958)
: : : +- Project (957)
: : : +- BroadcastHashJoin LeftOuter BuildRight (956)
: : : :- Project (950)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (949)
: : : : :- Project (944)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (943)
: : : : : :- Exchange (937)
: : : : : : +- Filter (936)
: : : : : : +- Scan parquet (935)
: : : : : +- BroadcastExchange (942)
: : : : : +- Project (941)
: : : : : +- Exchange (940)
: : : : : +- Project (939)
: : : : : +- Scan parquet (938)
: : : : +- BroadcastExchange (948)
: : : : +- Exchange (947)
: : : : +- Project (946)
: : : : +- Scan parquet (945)
: : : +- BroadcastExchange (955)
: : : +- Exchange (954)
: : : +- Project (953)
: : : +- Filter (952)
: : : +- Scan parquet (951)
: : +- BroadcastExchange (979)
: : +- Filter (978)
: : +- Scan parquet (977)
: +- Sort (1036)
: +- Project (1035)
: +- BroadcastHashJoin Inner BuildLeft (1034)
: :- BroadcastExchange (1003)
: : +- Project (1002)
: : +- Filter (1001)
: : +- Generate (1000)
: : +- Project (999)
: : +- Filter (998)
: : +- Generate (997)
: : +- Exchange (996)
: : +- Project (995)
: : +- Filter (994)
: : +- Scan parquet (993)
: +- HashAggregate (1033)
: +- Exchange (1032)
: +- HashAggregate (1031)
: +- Project (1030)
: +- Generate (1029)
: +- Project (1028)
: +- Generate (1027)
: +- Project (1026)
: +- BroadcastHashJoin LeftOuter BuildRight (1025)
: :- Project (1019)
: : +- BroadcastHashJoin LeftOuter BuildRight (1018)
: : :- Project (1013)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1012)
: : : :- Exchange (1006)
: : : : +- Filter (1005)
: : : : +- Scan parquet (1004)
: : : +- BroadcastExchange (1011)
: : : +- Project (1010)
: : : +- Exchange (1009)
: : : +- Project (1008)
: : : +- Scan parquet (1007)
: : +- BroadcastExchange (1017)
: : +- Exchange (1016)
: : +- Project (1015)
: : +- Scan parquet (1014)
: +- BroadcastExchange (1024)
: +- Exchange (1023)
: +- Project (1022)
: +- Filter (1021)
: +- Scan parquet (1020)
+- BroadcastExchange (1046)
+- Project (1045)
+- Filter (1044)
+- Generate (1043)
+- Exchange (1042)
+- Project (1041)
+- Filter (1040)
+- Scan parquet (1039)
+- Filter (2439)
+- ObjectHashAggregate (2438)
+- Exchange (2437)
+- ObjectHashAggregate (2436)
+- Project (2435)
+- BroadcastHashJoin Inner BuildRight (2434)
:- Project (2425)
: +- SortMergeJoin LeftOuter (2424)
: :- Sort (2196)
: : +- Exchange (2195)
: : +- Project (2194)
: : +- SortMergeJoin LeftOuter (2193)
: : :- Sort (2006)
: : : +- Project (2005)
: : : +- Generate (2004)
: : : +- Project (2003)
: : : +- Generate (2002)
: : : +- Project (2001)
: : : +- BroadcastHashJoin LeftOuter BuildRight (2000)
: : : :- Project (1994)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1993)
: : : : :- Project (1988)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1987)
: : : : : :- Exchange (1981)
: : : : : : +- Filter (1980)
: : : : : : +- Scan parquet (1979)
: : : : : +- BroadcastExchange (1986)
: : : : : +- Project (1985)
: : : : : +- Exchange (1984)
: : : : : +- Project (1983)
: : : : : +- Scan parquet (1982)
: : : : +- BroadcastExchange (1992)
: : : : +- Exchange (1991)
: : : : +- Project (1990)
: : : : +- Scan parquet (1989)
: : : +- BroadcastExchange (1999)
: : : +- Exchange (1998)
: : : +- Project (1997)
: : : +- Filter (1996)
: : : +- Scan parquet (1995)
: : +- Sort (2192)
: : +- HashAggregate (2191)
: : +- Exchange (2190)
: : +- HashAggregate (2189)
: : +- Project (2188)
: : +- SortMergeJoin Inner (2187)
: : :- Sort (2095)
: : : +- Exchange (2094)
: : : +- Project (2093)
: : : +- SortMergeJoin Inner (2092)
: : : :- Sort (2063)
: : : : +- Exchange (2062)
: : : : +- Project (2061)
: : : : +- Filter (2060)
: : : : +- Generate (2059)
: : : : +- Filter (2058)
: : : : +- ObjectHashAggregate (2057)
: : : : +- ObjectHashAggregate (2056)
: : : : +- Generate (2055)
: : : : +- BroadcastHashJoin Inner BuildLeft (2054)
: : : : :- BroadcastExchange (2011)
: : : : : +- Exchange (2010)
: : : : : +- Project (2009)
: : : : : +- Filter (2008)
: : : : : +- Scan parquet (2007)
: : : : +- Project (2053)
: : : : +- BroadcastHashJoin Inner BuildLeft (2052)
: : : : :- BroadcastExchange (2021)
: : : : : +- Project (2020)
: : : : : +- Generate (2019)
: : : : : +- Project (2018)
: : : : : +- Filter (2017)
: : : : : +- Generate (2016)
: : : : : +- Exchange (2015)
: : : : : +- Project (2014)
: : : : : +- Filter (2013)
: : : : : +- Scan parquet (2012)
: : : : +- HashAggregate (2051)
: : : : +- Exchange (2050)
: : : : +- HashAggregate (2049)
: : : : +- Project (2048)
: : : : +- Generate (2047)
: : : : +- Project (2046)
: : : : +- Generate (2045)
: : : : +- Project (2044)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2043)
: : : : :- Project (2037)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (2036)
: : : : : :- Project (2031)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (2030)
: : : : : : :- Exchange (2024)
: : : : : : : +- Filter (2023)
: : : : : : : +- Scan parquet (2022)
: : : : : : +- BroadcastExchange (2029)
: : : : : : +- Project (2028)
: : : : : : +- Exchange (2027)
: : : : : : +- Project (2026)
: : : : : : +- Scan parquet (2025)
: : : : : +- BroadcastExchange (2035)
: : : : : +- Exchange (2034)
: : : : : +- Project (2033)
: : : : : +- Scan parquet (2032)
: : : : +- BroadcastExchange (2042)
: : : : +- Exchange (2041)
: : : : +- Project (2040)
: : : : +- Filter (2039)
: : : : +- Scan parquet (2038)
: : : +- Sort (2091)
: : : +- Project (2090)
: : : +- Generate (2089)
: : : +- Project (2088)
: : : +- Generate (2087)
: : : +- Project (2086)
: : : +- BroadcastHashJoin LeftOuter BuildRight (2085)
: : : :- Project (2079)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2078)
: : : : :- Project (2073)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (2072)
: : : : : :- Exchange (2066)
: : : : : : +- Filter (2065)
: : : : : : +- Scan parquet (2064)
: : : : : +- BroadcastExchange (2071)
: : : : : +- Project (2070)
: : : : : +- Exchange (2069)
: : : : : +- Project (2068)
: : : : : +- Scan parquet (2067)
: : : : +- BroadcastExchange (2077)
: : : : +- Exchange (2076)
: : : : +- Project (2075)
: : : : +- Scan parquet (2074)
: : : +- BroadcastExchange (2084)
: : : +- Exchange (2083)
: : : +- Project (2082)
: : : +- Filter (2081)
: : : +- Scan parquet (2080)
: : +- Sort (2186)
: : +- Exchange (2185)
: : +- HashAggregate (2184)
: : +- HashAggregate (2183)
: : +- Project (2182)
: : +- SortMergeJoin Inner (2181)
: : :- Sort (2152)
: : : +- Exchange (2151)
: : : +- Project (2150)
: : : +- Filter (2149)
: : : +- Generate (2148)
: : : +- Filter (2147)
: : : +- ObjectHashAggregate (2146)
: : : +- ObjectHashAggregate (2145)
: : : +- Generate (2144)
: : : +- BroadcastHashJoin Inner BuildLeft (2143)
: : : :- BroadcastExchange (2100)
: : : : +- Exchange (2099)
: : : : +- Project (2098)
: : : : +- Filter (2097)
: : : : +- Scan parquet (2096)
: : : +- Project (2142)
: : : +- BroadcastHashJoin Inner BuildLeft (2141)
: : : :- BroadcastExchange (2110)
: : : : +- Project (2109)
: : : : +- Generate (2108)
: : : : +- Project (2107)
: : : : +- Filter (2106)
: : : : +- Generate (2105)
: : : : +- Exchange (2104)
: : : : +- Project (2103)
: : : : +- Filter (2102)
: : : : +- Scan parquet (2101)
: : : +- HashAggregate (2140)
: : : +- Exchange (2139)
: : : +- HashAggregate (2138)
: : : +- Project (2137)
: : : +- Generate (2136)
: : : +- Project (2135)
: : : +- Generate (2134)
: : : +- Project (2133)
: : : +- BroadcastHashJoin LeftOuter BuildRight (2132)
: : : :- Project (2126)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2125)
: : : : :- Project (2120)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (2119)
: : : : : :- Exchange (2113)
: : : : : : +- Filter (2112)
: : : : : : +- Scan parquet (2111)
: : : : : +- BroadcastExchange (2118)
: : : : : +- Project (2117)
: : : : : +- Exchange (2116)
: : : : : +- Project (2115)
: : : : : +- Scan parquet (2114)
: : : : +- BroadcastExchange (2124)
: : : : +- Exchange (2123)
: : : : +- Project (2122)
: : : : +- Scan parquet (2121)
: : : +- BroadcastExchange (2131)
: : : +- Exchange (2130)
: : : +- Project (2129)
: : : +- Filter (2128)
: : : +- Scan parquet (2127)
: : +- Sort (2180)
: : +- Project (2179)
: : +- Generate (2178)
: : +- Project (2177)
: : +- Generate (2176)
: : +- Project (2175)
: : +- BroadcastHashJoin LeftOuter BuildRight (2174)
: : :- Project (2168)
: : : +- BroadcastHashJoin LeftOuter BuildRight (2167)
: : : :- Project (2162)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2161)
: : : : :- Exchange (2155)
: : : : : +- Filter (2154)
: : : : : +- Scan parquet (2153)
: : : : +- BroadcastExchange (2160)
: : : : +- Project (2159)
: : : : +- Exchange (2158)
: : : : +- Project (2157)
: : : : +- Scan parquet (2156)
: : : +- BroadcastExchange (2166)
: : : +- Exchange (2165)
: : : +- Project (2164)
: : : +- Scan parquet (2163)
: : +- BroadcastExchange (2173)
: : +- Exchange (2172)
: : +- Project (2171)
: : +- Filter (2170)
: : +- Scan parquet (2169)
: +- Sort (2423)
: +- Exchange (2422)
: +- SerializeFromObject (2421)
: +- MapElements (2420)
: +- DeserializeToObject (2419)
: +- ObjectHashAggregate (2418)
: +- ObjectHashAggregate (2417)
: +- Project (2416)
: +- BroadcastHashJoin LeftOuter BuildRight (2415)
: :- Project (2411)
: : +- SortMergeJoin LeftOuter (2410)
: : :- Sort (2223)
: : : +- Project (2222)
: : : +- Project (2221)
: : : +- Generate (2220)
: : : +- Generate (2219)
: : : +- Project (2218)
: : : +- Project (2217)
: : : +- BroadcastHashJoin LeftOuter BuildRight (2216)
: : : :- Project (2210)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2209)
: : : : :- BroadcastHashJoin LeftOuter BuildRight (2204)
: : : : : :- Exchange (2198)
: : : : : : +- Scan parquet (2197)
: : : : : +- BroadcastExchange (2203)
: : : : : +- Project (2202)
: : : : : +- Exchange (2201)
: : : : : +- Project (2200)
: : : : : +- Scan parquet (2199)
: : : : +- BroadcastExchange (2208)
: : : : +- Exchange (2207)
: : : : +- Project (2206)
: : : : +- Scan parquet (2205)
: : : +- BroadcastExchange (2215)
: : : +- Exchange (2214)
: : : +- Project (2213)
: : : +- Filter (2212)
: : : +- Scan parquet (2211)
: : +- Sort (2409)
: : +- HashAggregate (2408)
: : +- Exchange (2407)
: : +- HashAggregate (2406)
: : +- Project (2405)
: : +- SortMergeJoin Inner (2404)
: : :- Sort (2312)
: : : +- Exchange (2311)
: : : +- Project (2310)
: : : +- SortMergeJoin Inner (2309)
: : : :- Sort (2280)
: : : : +- Exchange (2279)
: : : : +- Project (2278)
: : : : +- Filter (2277)
: : : : +- Generate (2276)
: : : : +- Filter (2275)
: : : : +- ObjectHashAggregate (2274)
: : : : +- ObjectHashAggregate (2273)
: : : : +- Generate (2272)
: : : : +- BroadcastHashJoin Inner BuildLeft (2271)
: : : : :- BroadcastExchange (2228)
: : : : : +- Exchange (2227)
: : : : : +- Project (2226)
: : : : : +- Filter (2225)
: : : : : +- Scan parquet (2224)
: : : : +- Project (2270)
: : : : +- BroadcastHashJoin Inner BuildLeft (2269)
: : : : :- BroadcastExchange (2238)
: : : : : +- Project (2237)
: : : : : +- Generate (2236)
: : : : : +- Project (2235)
: : : : : +- Filter (2234)
: : : : : +- Generate (2233)
: : : : : +- Exchange (2232)
: : : : : +- Project (2231)
: : : : : +- Filter (2230)
: : : : : +- Scan parquet (2229)
: : : : +- HashAggregate (2268)
: : : : +- Exchange (2267)
: : : : +- HashAggregate (2266)
: : : : +- Project (2265)
: : : : +- Generate (2264)
: : : : +- Project (2263)
: : : : +- Generate (2262)
: : : : +- Project (2261)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2260)
: : : : :- Project (2254)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (2253)
: : : : : :- Project (2248)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (2247)
: : : : : : :- Exchange (2241)
: : : : : : : +- Filter (2240)
: : : : : : : +- Scan parquet (2239)
: : : : : : +- BroadcastExchange (2246)
: : : : : : +- Project (2245)
: : : : : : +- Exchange (2244)
: : : : : : +- Project (2243)
: : : : : : +- Scan parquet (2242)
: : : : : +- BroadcastExchange (2252)
: : : : : +- Exchange (2251)
: : : : : +- Project (2250)
: : : : : +- Scan parquet (2249)
: : : : +- BroadcastExchange (2259)
: : : : +- Exchange (2258)
: : : : +- Project (2257)
: : : : +- Filter (2256)
: : : : +- Scan parquet (2255)
: : : +- Sort (2308)
: : : +- Project (2307)
: : : +- Generate (2306)
: : : +- Project (2305)
: : : +- Generate (2304)
: : : +- Project (2303)
: : : +- BroadcastHashJoin LeftOuter BuildRight (2302)
: : : :- Project (2296)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2295)
: : : : :- Project (2290)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (2289)
: : : : : :- Exchange (2283)
: : : : : : +- Filter (2282)
: : : : : : +- Scan parquet (2281)
: : : : : +- BroadcastExchange (2288)
: : : : : +- Project (2287)
: : : : : +- Exchange (2286)
: : : : : +- Project (2285)
: : : : : +- Scan parquet (2284)
: : : : +- BroadcastExchange (2294)
: : : : +- Exchange (2293)
: : : : +- Project (2292)
: : : : +- Scan parquet (2291)
: : : +- BroadcastExchange (2301)
: : : +- Exchange (2300)
: : : +- Project (2299)
: : : +- Filter (2298)
: : : +- Scan parquet (2297)
: : +- Sort (2403)
: : +- Exchange (2402)
: : +- HashAggregate (2401)
: : +- HashAggregate (2400)
: : +- Project (2399)
: : +- SortMergeJoin Inner (2398)
: : :- Sort (2369)
: : : +- Exchange (2368)
: : : +- Project (2367)
: : : +- Filter (2366)
: : : +- Generate (2365)
: : : +- Filter (2364)
: : : +- ObjectHashAggregate (2363)
: : : +- ObjectHashAggregate (2362)
: : : +- Generate (2361)
: : : +- BroadcastHashJoin Inner BuildLeft (2360)
: : : :- BroadcastExchange (2317)
: : : : +- Exchange (2316)
: : : : +- Project (2315)
: : : : +- Filter (2314)
: : : : +- Scan parquet (2313)
: : : +- Project (2359)
: : : +- BroadcastHashJoin Inner BuildLeft (2358)
: : : :- BroadcastExchange (2327)
: : : : +- Project (2326)
: : : : +- Generate (2325)
: : : : +- Project (2324)
: : : : +- Filter (2323)
: : : : +- Generate (2322)
: : : : +- Exchange (2321)
: : : : +- Project (2320)
: : : : +- Filter (2319)
: : : : +- Scan parquet (2318)
: : : +- HashAggregate (2357)
: : : +- Exchange (2356)
: : : +- HashAggregate (2355)
: : : +- Project (2354)
: : : +- Generate (2353)
: : : +- Project (2352)
: : : +- Generate (2351)
: : : +- Project (2350)
: : : +- BroadcastHashJoin LeftOuter BuildRight (2349)
: : : :- Project (2343)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2342)
: : : : :- Project (2337)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (2336)
: : : : : :- Exchange (2330)
: : : : : : +- Filter (2329)
: : : : : : +- Scan parquet (2328)
: : : : : +- BroadcastExchange (2335)
: : : : : +- Project (2334)
: : : : : +- Exchange (2333)
: : : : : +- Project (2332)
: : : : : +- Scan parquet (2331)
: : : : +- BroadcastExchange (2341)
: : : : +- Exchange (2340)
: : : : +- Project (2339)
: : : : +- Scan parquet (2338)
: : : +- BroadcastExchange (2348)
: : : +- Exchange (2347)
: : : +- Project (2346)
: : : +- Filter (2345)
: : : +- Scan parquet (2344)
: : +- Sort (2397)
: : +- Project (2396)
: : +- Generate (2395)
: : +- Project (2394)
: : +- Generate (2393)
: : +- Project (2392)
: : +- BroadcastHashJoin LeftOuter BuildRight (2391)
: : :- Project (2385)
: : : +- BroadcastHashJoin LeftOuter BuildRight (2384)
: : : :- Project (2379)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2378)
: : : : :- Exchange (2372)
: : : : : +- Filter (2371)
: : : : : +- Scan parquet (2370)
: : : : +- BroadcastExchange (2377)
: : : : +- Project (2376)
: : : : +- Exchange (2375)
: : : : +- Project (2374)
: : : : +- Scan parquet (2373)
: : : +- BroadcastExchange (2383)
: : : +- Exchange (2382)
: : : +- Project (2381)
: : : +- Scan parquet (2380)
: : +- BroadcastExchange (2390)
: : +- Exchange (2389)
: : +- Project (2388)
: : +- Filter (2387)
: : +- Scan parquet (2386)
: +- BroadcastExchange (2414)
: +- Filter (2413)
: +- Scan parquet (2412)
+- BroadcastExchange (2433)
+- Project (2432)
+- Filter (2431)
+- Generate (2430)
+- Exchange (2429)
+- Project (2428)
+- Filter (2427)
+- Scan parquet (2426)
(1) Scan parquet
Output [3]: [product#50545, plant#50546, orderDateTime#50547]
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/10000000006/shardId=0_1_10000000006]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2) ColumnarToRow [codegen id : 1]
Input [3]: [product#50545, plant#50546, orderDateTime#50547]
(3) Exchange
Input [3]: [product#50545, plant#50546, orderDateTime#50547]
Arguments: hashpartitioning(product#50545, plant#50546, 10), REPARTITION_BY_NUM, [plan_id=229249]
(4) ShuffleQueryStage
Output [3]: [product#50545, plant#50546, orderDateTime#50547]
Arguments: 0
(5) Scan parquet
Output [4]: [plant#50552, product#50553, productionAspect#50555, systemId#50550]
Batched: 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#50552, product#50553, productionAspect#50555, systemId#50550]
(7) Project [codegen id : 2]
Output [4]: [plant#50552.internalRefUUID AS _extract_internalRefUUID#58668, product#50553.internalRefUUID AS _extract_internalRefUUID#58667, productionAspect#50555.productMovementPlants.unitOfIssue.code AS _extract_code#58669, productionAspect#50555.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58670]
Input [4]: [plant#50552, product#50553, productionAspect#50555, systemId#50550]
(8) Exchange
Input [4]: [_extract_internalRefUUID#58668, _extract_internalRefUUID#58667, _extract_code#58669, _extract_internalRefUUID#58670]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=229263]
(9) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#58668, _extract_internalRefUUID#58667, _extract_code#58669, _extract_internalRefUUID#58670]
Arguments: 1
(10) Project [codegen id : 199]
Output [4]: [_extract_code#58669, _extract_internalRefUUID#58670, _extract_internalRefUUID#58667, _extract_internalRefUUID#58668]
Input [4]: [_extract_internalRefUUID#58668, _extract_internalRefUUID#58667, _extract_code#58669, _extract_internalRefUUID#58670]
(11) BroadcastExchange
Input [4]: [_extract_code#58669, _extract_internalRefUUID#58670, _extract_internalRefUUID#58667, _extract_internalRefUUID#58668]
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=274521]
(12) BroadcastQueryStage
Output [4]: [_extract_code#58669, _extract_internalRefUUID#58670, _extract_internalRefUUID#58667, _extract_internalRefUUID#58668]
Arguments: 385
(13) BroadcastHashJoin [codegen id : 373]
Left keys [4]: [coalesce(product#50545, ), isnull(product#50545), coalesce(plant#50546, ), isnull(plant#50546)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58667, ), isnull(_extract_internalRefUUID#58667), coalesce(_extract_internalRefUUID#58668, ), isnull(_extract_internalRefUUID#58668)]
Join type: LeftOuter
Join condition: None
(14) Project [codegen id : 373]
Output [5]: [product#50545, plant#50546, orderDateTime#50547, _extract_code#58669, _extract_internalRefUUID#58670]
Input [7]: [product#50545, plant#50546, orderDateTime#50547, _extract_code#58669, _extract_internalRefUUID#58670, _extract_internalRefUUID#58667, _extract_internalRefUUID#58668]
(15) Scan parquet
Output [2]: [internalUUID#50563, systemId#50562]
Batched: 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#50563, systemId#50562]
(17) Project [codegen id : 3]
Output [1]: [internalUUID#50563]
Input [2]: [internalUUID#50563, systemId#50562]
(18) Exchange
Input [1]: [internalUUID#50563]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=229282]
(19) ShuffleQueryStage
Output [1]: [internalUUID#50563]
Arguments: 2
(20) BroadcastExchange
Input [1]: [internalUUID#50563]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=229290]
(21) BroadcastQueryStage
Output [1]: [internalUUID#50563]
Arguments: 386
(22) BroadcastHashJoin [codegen id : 373]
Left keys [2]: [coalesce(plant#50546, ), isnull(plant#50546)]
Right keys [2]: [coalesce(internalUUID#50563, ), isnull(internalUUID#50563)]
Join type: LeftOuter
Join condition: None
(23) Project [codegen id : 373]
Output [5]: [product#50545, plant#50546, orderDateTime#50547, _extract_code#58669, _extract_internalRefUUID#58670]
Input [6]: [product#50545, plant#50546, orderDateTime#50547, _extract_code#58669, _extract_internalRefUUID#58670, internalUUID#50563]
(24) Scan parquet
Output [4]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585, systemId#50578]
Batched: 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#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585, systemId#50578]
(26) Filter [codegen id : 4]
Input [4]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585, systemId#50578]
Condition : isnotnull(internalUUID#50579)
(27) Project [codegen id : 4]
Output [3]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585]
Input [4]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585, systemId#50578]
(28) Exchange
Input [3]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=229302]
(29) ShuffleQueryStage
Output [3]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585]
Arguments: 3
(30) BroadcastExchange
Input [3]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=229312]
(31) BroadcastQueryStage
Output [3]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585]
Arguments: 387
(32) BroadcastHashJoin [codegen id : 373]
Left keys [1]: [product#50545]
Right keys [1]: [internalUUID#50579]
Join type: LeftOuter
Join condition: None
(33) Project
Output [4]: [product#50545, plant#50546, orderDateTime#50547, filter(unitOfMeasureConversions#50585, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58669) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58670)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#50583.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#50583.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#50591]
Input [8]: [product#50545, plant#50546, orderDateTime#50547, _extract_code#58669, _extract_internalRefUUID#58670, internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585]
(34) Project [codegen id : 374]
Output [5]: [product#50545, plant#50546, orderDateTime#50547, filteredUnitOfMeasureConversions#50591.quantityDenominator AS _extract_quantityDenominator#58162, filteredUnitOfMeasureConversions#50591.quantityNumerator AS _extract_quantityNumerator#58163]
Input [4]: [product#50545, plant#50546, orderDateTime#50547, filteredUnitOfMeasureConversions#50591]
(35) Generate [codegen id : 374]
Input [5]: [product#50545, plant#50546, orderDateTime#50547, _extract_quantityDenominator#58162, _extract_quantityNumerator#58163]
Arguments: explode(_extract_quantityNumerator#58163), [product#50545, plant#50546, orderDateTime#50547, _extract_quantityDenominator#58162], true, [quantityNumerator#50599]
(36) Generate [codegen id : 374]
Input [5]: [product#50545, plant#50546, orderDateTime#50547, _extract_quantityDenominator#58162, quantityNumerator#50599]
Arguments: explode(_extract_quantityDenominator#58162), [product#50545, plant#50546, orderDateTime#50547, quantityNumerator#50599], true, [quantityDenominator#50602]
(37) Project [codegen id : 374]
Output [4]: [product#50545, plant#50546, orderDateTime#50547, (cast(quantityNumerator#50599 as double) / cast(quantityDenominator#50602 as double)) AS outboundUnit#50603]
Input [5]: [product#50545, plant#50546, orderDateTime#50547, quantityNumerator#50599, quantityDenominator#50602]
(38) Project [codegen id : 374]
Output [4]: [product#50545, plant#50546, orderDateTime#50547, CASE WHEN (isnull(outboundUnit#50603) OR (outboundUnit#50603 <= 0.0)) THEN 1.0 ELSE outboundUnit#50603 END AS outboundUnit#50604]
Input [4]: [product#50545, plant#50546, orderDateTime#50547, outboundUnit#50603]
(39) Scan parquet
Output [6]: [internalUUID#50642, product#50643, plant#50644, calculationDateTime#50645, stockQuantities#50646, systemId#50641]
Batched: 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#50642, product#50643, plant#50644, calculationDateTime#50645, stockQuantities#50646, systemId#50641]
(41) Filter [codegen id : 5]
Input [6]: [internalUUID#50642, product#50643, plant#50644, calculationDateTime#50645, stockQuantities#50646, systemId#50641]
Condition : (isnotnull(plant#50644.internalRefUUID) AND isnotnull(product#50643.internalRefUUID))
(42) Project [codegen id : 5]
Output [6]: [systemId#50641, internalUUID#50642, product#50643, plant#50644, calculationDateTime#50645, stockQuantities#50646]
Input [6]: [internalUUID#50642, product#50643, plant#50644, calculationDateTime#50645, stockQuantities#50646, systemId#50641]
(43) Exchange
Input [6]: [systemId#50641, internalUUID#50642, product#50643, plant#50644, calculationDateTime#50645, stockQuantities#50646]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=229330]
(44) ShuffleQueryStage
Output [6]: [systemId#50641, internalUUID#50642, product#50643, plant#50644, calculationDateTime#50645, stockQuantities#50646]
Arguments: 4
(45) BroadcastExchange
Input [6]: [systemId#50641, internalUUID#50642, product#50643, plant#50644, calculationDateTime#50645, stockQuantities#50646]
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=229340]
(46) BroadcastQueryStage
Output [6]: [systemId#50641, internalUUID#50642, product#50643, plant#50644, calculationDateTime#50645, stockQuantities#50646]
Arguments: 388
(47) Scan parquet
Output [2]: [marketUnit#50605, distributionCenters#50611]
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#50605, distributionCenters#50611]
(49) Filter [codegen id : 6]
Input [2]: [marketUnit#50605, distributionCenters#50611]
Condition : (((marketUnit#50605 <=> DIP_1691) AND (size(distributionCenters#50611, true) > 0)) AND isnotnull(distributionCenters#50611))
(50) Project [codegen id : 6]
Output [1]: [distributionCenters#50611]
Input [2]: [marketUnit#50605, distributionCenters#50611]
(51) Exchange
Input [1]: [distributionCenters#50611]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=229350]
(52) ShuffleQueryStage
Output [1]: [distributionCenters#50611]
Arguments: 5
(53) Generate [codegen id : 200]
Input [1]: [distributionCenters#50611]
Arguments: explode(distributionCenters#50611), false, [distributionCenters#50629]
(54) Filter [codegen id : 200]
Input [1]: [distributionCenters#50629]
Condition : (((size(distributionCenters#50629.storageLocations, true) > 0) AND isnotnull(distributionCenters#50629.storageLocations)) AND isnotnull(distributionCenters#50629.internalRefUUID))
(55) Project [codegen id : 200]
Output [2]: [distributionCenters#50629.internalRefUUID AS _extract_internalRefUUID#57981, distributionCenters#50629.storageLocations AS _extract_storageLocations#57982]
Input [1]: [distributionCenters#50629]
(56) Generate [codegen id : 200]
Input [2]: [_extract_internalRefUUID#57981, _extract_storageLocations#57982]
Arguments: explode(_extract_storageLocations#57982), [_extract_internalRefUUID#57981], false, [storageLocations#50636]
(57) Project [codegen id : 200]
Output [3]: [_extract_internalRefUUID#57981 AS plantUuid#50631, storageLocations#50636.id AS storageLocId#50637, storageLocations#50636.internalRefUUID AS storageLocUuid#50638]
Input [2]: [_extract_internalRefUUID#57981, storageLocations#50636]
(58) BroadcastExchange
Input [3]: [plantUuid#50631, storageLocId#50637, storageLocUuid#50638]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=274550]
(59) BroadcastQueryStage
Output [3]: [plantUuid#50631, storageLocId#50637, storageLocUuid#50638]
Arguments: 389
(60) Scan parquet
Output [2]: [product#50901, plant#50902]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(61) ColumnarToRow [codegen id : 7]
Input [2]: [product#50901, plant#50902]
(62) Filter [codegen id : 7]
Input [2]: [product#50901, plant#50902]
Condition : isnotnull(plant#50902)
(63) Exchange
Input [2]: [product#50901, plant#50902]
Arguments: hashpartitioning(product#50901, plant#50902, 10), REPARTITION_BY_NUM, [plan_id=229373]
(64) ShuffleQueryStage
Output [2]: [product#50901, plant#50902]
Arguments: 6
(65) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#58672, _extract_internalRefUUID#58673, _extract_internalRefUUID#58671, _extract_internalRefUUID#58674]
(66) BroadcastQueryStage
Output [4]: [_extract_code#58672, _extract_internalRefUUID#58673, _extract_internalRefUUID#58671, _extract_internalRefUUID#58674]
Arguments: 391
(67) BroadcastHashJoin [codegen id : 257]
Left keys [4]: [coalesce(product#50901, ), isnull(product#50901), coalesce(plant#50902, ), isnull(plant#50902)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58671, ), isnull(_extract_internalRefUUID#58671), coalesce(_extract_internalRefUUID#58674, ), isnull(_extract_internalRefUUID#58674)]
Join type: LeftOuter
Join condition: None
(68) Project [codegen id : 257]
Output [4]: [product#50901, plant#50902, _extract_code#58672, _extract_internalRefUUID#58673]
Input [6]: [product#50901, plant#50902, _extract_code#58672, _extract_internalRefUUID#58673, _extract_internalRefUUID#58671, _extract_internalRefUUID#58674]
(69) ReusedExchange [Reuses operator id: 20]
Output [1]: [internalUUID#50915]
(70) BroadcastQueryStage
Output [1]: [internalUUID#50915]
Arguments: 392
(71) BroadcastHashJoin [codegen id : 257]
Left keys [2]: [coalesce(plant#50902, ), isnull(plant#50902)]
Right keys [2]: [coalesce(internalUUID#50915, ), isnull(internalUUID#50915)]
Join type: LeftOuter
Join condition: None
(72) Project [codegen id : 257]
Output [4]: [product#50901, plant#50902, _extract_code#58672, _extract_internalRefUUID#58673]
Input [5]: [product#50901, plant#50902, _extract_code#58672, _extract_internalRefUUID#58673, internalUUID#50915]
(73) ReusedExchange [Reuses operator id: 30]
Output [3]: [internalUUID#50929, baseUnitOfMeasure#50933, unitOfMeasureConversions#50935]
(74) BroadcastQueryStage
Output [3]: [internalUUID#50929, baseUnitOfMeasure#50933, unitOfMeasureConversions#50935]
Arguments: 393
(75) BroadcastHashJoin [codegen id : 257]
Left keys [1]: [product#50901]
Right keys [1]: [internalUUID#50929]
Join type: LeftOuter
Join condition: None
(76) Project
Output [2]: [plant#50902, filter(unitOfMeasureConversions#50935, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58672) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58673)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#50933.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#50933.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#50940]
Input [7]: [product#50901, plant#50902, _extract_code#58672, _extract_internalRefUUID#58673, internalUUID#50929, baseUnitOfMeasure#50933, unitOfMeasureConversions#50935]
(77) Generate [codegen id : 258]
Input [2]: [plant#50902, filteredUnitOfMeasureConversions#50940]
Arguments: explode(filteredUnitOfMeasureConversions#50940.quantityNumerator), [plant#50902, filteredUnitOfMeasureConversions#50940], true, [quantityNumerator#50941]
(78) Project [codegen id : 258]
Output [2]: [plant#50902, filteredUnitOfMeasureConversions#50940.quantityDenominator AS _extract_quantityDenominator#57983]
Input [3]: [plant#50902, filteredUnitOfMeasureConversions#50940, quantityNumerator#50941]
(79) Generate [codegen id : 258]
Input [2]: [plant#50902, _extract_quantityDenominator#57983]
Arguments: explode(_extract_quantityDenominator#57983), [plant#50902], true, [quantityDenominator#50942]
(80) Project [codegen id : 258]
Output [1]: [plant#50902]
Input [2]: [plant#50902, quantityDenominator#50942]
(81) HashAggregate [codegen id : 258]
Input [1]: [plant#50902]
Keys [1]: [plant#50902]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#50902]
(82) Exchange
Input [1]: [plant#50902]
Arguments: hashpartitioning(plant#50902, 10), ENSURE_REQUIREMENTS, [plan_id=286817]
(83) ShuffleQueryStage
Output [1]: [plant#50902]
Arguments: 593
(84) AQEShuffleRead
Input [1]: [plant#50902]
Arguments: coalesced
(85) HashAggregate
Input [1]: [plant#50902]
Keys [1]: [plant#50902]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#50902]
(86) BroadcastHashJoin
Left keys [1]: [plantUuid#50631]
Right keys [1]: [plant#50902]
Join type: Inner
Join condition: None
(87) Project
Output [3]: [plantUuid#50631, storageLocId#50637, storageLocUuid#50638]
Input [4]: [plantUuid#50631, storageLocId#50637, storageLocUuid#50638, plant#50902]
(88) BroadcastHashJoin [codegen id : 289]
Left keys [2]: [coalesce(plant#50644.internalRefUUID, ), isnull(plant#50644.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#50631, ), isnull(plantUuid#50631)]
Join type: Inner
Join condition: None
(89) Generate
Input [9]: [systemId#50641, internalUUID#50642, product#50643, plant#50644, calculationDateTime#50645, stockQuantities#50646, plantUuid#50631, storageLocId#50637, storageLocUuid#50638]
Arguments: explode(filter(stockQuantities#50646, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#50638) AND (lambda x#50650.storageLocation.Id = storageLocId#50637)), lambda x#50650, false))), [systemId#50641, internalUUID#50642, product#50643, plant#50644, calculationDateTime#50645, plantUuid#50631], false, [stockQuantity#50651]
(90) ObjectHashAggregate
Input [7]: [systemId#50641, internalUUID#50642, product#50643, plant#50644, calculationDateTime#50645, plantUuid#50631, stockQuantity#50651]
Keys [5]: [plantUuid#50631, internalUUID#50642, plant#50644, product#50643, systemId#50641]
Functions [2]: [partial_first(calculationDateTime#50645, false), partial_collect_list(stockQuantity#50651, 0, 0)]
Aggregate Attributes [3]: [first#59717, valueSet#59718, buf#59719]
Results [8]: [plantUuid#50631, internalUUID#50642, plant#50644, product#50643, systemId#50641, first#59720, valueSet#59721, buf#59722]
(91) ObjectHashAggregate
Input [8]: [plantUuid#50631, internalUUID#50642, plant#50644, product#50643, systemId#50641, first#59720, valueSet#59721, buf#59722]
Keys [5]: [plantUuid#50631, internalUUID#50642, plant#50644, product#50643, systemId#50641]
Functions [2]: [first(calculationDateTime#50645, false), collect_list(stockQuantity#50651, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#50645)()#50665, collect_list(stockQuantity#50651, 0, 0)#50666]
Results [4]: [product#50643, plant#50644, first(calculationDateTime#50645)()#50665 AS calculationDateTime#50652, collect_list(stockQuantity#50651, 0, 0)#50666 AS stockQuantities#50653]
(92) Filter [codegen id : 290]
Input [4]: [product#50643, plant#50644, calculationDateTime#50652, stockQuantities#50653]
Condition : ((size(stockQuantities#50653, true) > 0) AND isnotnull(calculationDateTime#50652))
(93) Generate [codegen id : 290]
Input [4]: [product#50643, plant#50644, calculationDateTime#50652, stockQuantities#50653]
Arguments: explode(stockQuantities#50653), [product#50643, plant#50644, calculationDateTime#50652], false, [stockQuantity#50668]
(94) Filter [codegen id : 290]
Input [4]: [product#50643, plant#50644, calculationDateTime#50652, stockQuantity#50668]
Condition : (((isnotnull(stockQuantity#50668.specialStockIndicator.code) AND isnotnull(stockQuantity#50668.stockType.code)) AND (stockQuantity#50668.specialStockIndicator.code = )) AND (stockQuantity#50668.stockType.code = 01))
(95) Project [codegen id : 290]
Output [5]: [plant#50644.internalRefUUID AS plantUuid#50670, product#50643.internalRefUUID AS productUuid#50672, calculationDateTime#50652, stockQuantity#50668.storagelocation.id AS storageLocId#50673, stockQuantity#50668.quantity.measure AS quantity#50675]
Input [4]: [product#50643, plant#50644, calculationDateTime#50652, stockQuantity#50668]
(96) Exchange
Input [5]: [plantUuid#50670, productUuid#50672, calculationDateTime#50652, storageLocId#50673, quantity#50675]
Arguments: hashpartitioning(productUuid#50672, plantUuid#50670, 10), ENSURE_REQUIREMENTS, [plan_id=295819]
(97) ShuffleQueryStage
Output [5]: [plantUuid#50670, productUuid#50672, calculationDateTime#50652, storageLocId#50673, quantity#50675]
Arguments: 624
(98) AQEShuffleRead
Input [5]: [plantUuid#50670, productUuid#50672, calculationDateTime#50652, storageLocId#50673, quantity#50675]
Arguments: local
(99) BroadcastExchange
Input [5]: [plantUuid#50670, productUuid#50672, calculationDateTime#50652, storageLocId#50673, quantity#50675]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=305835]
(100) BroadcastQueryStage
Output [5]: [plantUuid#50670, productUuid#50672, calculationDateTime#50652, storageLocId#50673, quantity#50675]
Arguments: 673
(101) Scan parquet
Output [3]: [product#50687, plant#50688, orderDateTime#50689]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(102) ColumnarToRow [codegen id : 11]
Input [3]: [product#50687, plant#50688, orderDateTime#50689]
(103) Filter [codegen id : 11]
Input [3]: [product#50687, plant#50688, orderDateTime#50689]
Condition : ((isnotnull(orderDateTime#50689) AND isnotnull(plant#50688)) AND isnotnull(product#50687))
(104) Exchange
Input [3]: [product#50687, plant#50688, orderDateTime#50689]
Arguments: hashpartitioning(product#50687, plant#50688, 10), REPARTITION_BY_NUM, [plan_id=229473]
(105) ShuffleQueryStage
Output [3]: [product#50687, plant#50688, orderDateTime#50689]
Arguments: 13
(106) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#58677, _extract_internalRefUUID#58678, _extract_internalRefUUID#58675, _extract_internalRefUUID#58676]
(107) BroadcastQueryStage
Output [4]: [_extract_code#58677, _extract_internalRefUUID#58678, _extract_internalRefUUID#58675, _extract_internalRefUUID#58676]
Arguments: 395
(108) BroadcastHashJoin [codegen id : 341]
Left keys [4]: [coalesce(product#50687, ), isnull(product#50687), coalesce(plant#50688, ), isnull(plant#50688)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58675, ), isnull(_extract_internalRefUUID#58675), coalesce(_extract_internalRefUUID#58676, ), isnull(_extract_internalRefUUID#58676)]
Join type: LeftOuter
Join condition: None
(109) Project [codegen id : 341]
Output [5]: [product#50687, plant#50688, orderDateTime#50689, _extract_code#58677, _extract_internalRefUUID#58678]
Input [7]: [product#50687, plant#50688, orderDateTime#50689, _extract_code#58677, _extract_internalRefUUID#58678, _extract_internalRefUUID#58675, _extract_internalRefUUID#58676]
(110) ReusedExchange [Reuses operator id: 20]
Output [1]: [internalUUID#50701]
(111) BroadcastQueryStage
Output [1]: [internalUUID#50701]
Arguments: 396
(112) BroadcastHashJoin [codegen id : 341]
Left keys [2]: [coalesce(plant#50688, ), isnull(plant#50688)]
Right keys [2]: [coalesce(internalUUID#50701, ), isnull(internalUUID#50701)]
Join type: LeftOuter
Join condition: None
(113) Project [codegen id : 341]
Output [5]: [product#50687, plant#50688, orderDateTime#50689, _extract_code#58677, _extract_internalRefUUID#58678]
Input [6]: [product#50687, plant#50688, orderDateTime#50689, _extract_code#58677, _extract_internalRefUUID#58678, internalUUID#50701]
(114) ReusedExchange [Reuses operator id: 30]
Output [3]: [internalUUID#50715, baseUnitOfMeasure#50719, unitOfMeasureConversions#50721]
(115) BroadcastQueryStage
Output [3]: [internalUUID#50715, baseUnitOfMeasure#50719, unitOfMeasureConversions#50721]
Arguments: 397
(116) BroadcastHashJoin [codegen id : 341]
Left keys [1]: [product#50687]
Right keys [1]: [internalUUID#50715]
Join type: LeftOuter
Join condition: None
(117) Project
Output [4]: [product#50687, plant#50688, orderDateTime#50689, filter(unitOfMeasureConversions#50721, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58677) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58678)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#50719.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#50719.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#50726]
Input [8]: [product#50687, plant#50688, orderDateTime#50689, _extract_code#58677, _extract_internalRefUUID#58678, internalUUID#50715, baseUnitOfMeasure#50719, unitOfMeasureConversions#50721]
(118) Generate
Input [4]: [product#50687, plant#50688, orderDateTime#50689, filteredUnitOfMeasureConversions#50726]
Arguments: explode(filteredUnitOfMeasureConversions#50726.quantityNumerator), [product#50687, plant#50688, orderDateTime#50689, filteredUnitOfMeasureConversions#50726], true, [quantityNumerator#50727]
(119) Project
Output [4]: [product#50687, plant#50688, orderDateTime#50689, filteredUnitOfMeasureConversions#50726.quantityDenominator AS _extract_quantityDenominator#57987]
Input [5]: [product#50687, plant#50688, orderDateTime#50689, filteredUnitOfMeasureConversions#50726, quantityNumerator#50727]
(120) Generate
Input [4]: [product#50687, plant#50688, orderDateTime#50689, _extract_quantityDenominator#57987]
Arguments: explode(_extract_quantityDenominator#57987), [product#50687, plant#50688, orderDateTime#50689], true, [quantityDenominator#50728]
(121) Project
Output [3]: [product#50687, plant#50688, orderDateTime#50689]
Input [4]: [product#50687, plant#50688, orderDateTime#50689, quantityDenominator#50728]
(122) BroadcastHashJoin [codegen id : 342]
Left keys [2]: [plantUuid#50670, productUuid#50672]
Right keys [2]: [plant#50688, product#50687]
Join type: Inner
Join condition: (calculationDateTime#50652 <= orderDateTime#50689)
(123) Project [codegen id : 342]
Output [5]: [plantUuid#50670 AS plant#50735, productUuid#50672 AS product#50736, storageLocId#50673, calculationDateTime#50652, quantity#50675]
Input [8]: [plantUuid#50670, productUuid#50672, calculationDateTime#50652, storageLocId#50673, quantity#50675, product#50687, plant#50688, orderDateTime#50689]
(124) Exchange
Input [5]: [plant#50735, product#50736, storageLocId#50673, calculationDateTime#50652, quantity#50675]
Arguments: hashpartitioning(coalesce(plant#50735, ), isnull(plant#50735), coalesce(product#50736, ), isnull(product#50736), coalesce(storageLocId#50673, ), isnull(storageLocId#50673), coalesce(calculationDateTime#50652, 1970-01-01 00:00:00), isnull(calculationDateTime#50652), 10), ENSURE_REQUIREMENTS, [plan_id=311531]
(125) ShuffleQueryStage
Output [5]: [plant#50735, product#50736, storageLocId#50673, calculationDateTime#50652, quantity#50675]
Arguments: 702
(126) AQEShuffleRead
Input [5]: [plant#50735, product#50736, storageLocId#50673, calculationDateTime#50652, quantity#50675]
Arguments: local
(127) ReusedExchange [Reuses operator id: 45]
Output [6]: [systemId#50744, internalUUID#50745, product#50746, plant#50747, calculationDateTime#50748, stockQuantities#50749]
(128) BroadcastQueryStage
Output [6]: [systemId#50744, internalUUID#50745, product#50746, plant#50747, calculationDateTime#50748, stockQuantities#50749]
Arguments: 398
(129) ReusedExchange [Reuses operator id: 58]
Output [3]: [plantUuid#50775, storageLocId#50776, storageLocUuid#50777]
(130) BroadcastQueryStage
Output [3]: [plantUuid#50775, storageLocId#50776, storageLocUuid#50777]
Arguments: 400
(131) ReusedExchange [Reuses operator id: 82]
Output [1]: [plant#50779]
(132) ShuffleQueryStage
Output [1]: [plant#50779]
Arguments: 595
(133) AQEShuffleRead
Input [1]: [plant#50779]
Arguments: coalesced
(134) HashAggregate
Input [1]: [plant#50779]
Keys [1]: [plant#50779]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#50779]
(135) BroadcastHashJoin
Left keys [1]: [plantUuid#50775]
Right keys [1]: [plant#50779]
Join type: Inner
Join condition: None
(136) Project
Output [3]: [plantUuid#50775, storageLocId#50776, storageLocUuid#50777]
Input [4]: [plantUuid#50775, storageLocId#50776, storageLocUuid#50777, plant#50779]
(137) BroadcastHashJoin [codegen id : 291]
Left keys [2]: [coalesce(plant#50747.internalRefUUID, ), isnull(plant#50747.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#50775, ), isnull(plantUuid#50775)]
Join type: Inner
Join condition: None
(138) Generate
Input [9]: [systemId#50744, internalUUID#50745, product#50746, plant#50747, calculationDateTime#50748, stockQuantities#50749, plantUuid#50775, storageLocId#50776, storageLocUuid#50777]
Arguments: explode(filter(stockQuantities#50749, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#50777) AND (lambda x#50650.storageLocation.Id = storageLocId#50776)), lambda x#50650, false))), [systemId#50744, internalUUID#50745, product#50746, plant#50747, calculationDateTime#50748, plantUuid#50775], false, [stockQuantity#50822]
(139) ObjectHashAggregate
Input [7]: [systemId#50744, internalUUID#50745, product#50746, plant#50747, calculationDateTime#50748, plantUuid#50775, stockQuantity#50822]
Keys [5]: [plantUuid#50775, internalUUID#50745, plant#50747, product#50746, systemId#50744]
Functions [2]: [partial_first(calculationDateTime#50748, false), partial_collect_list(stockQuantity#50822, 0, 0)]
Aggregate Attributes [3]: [first#59725, valueSet#59726, buf#59727]
Results [8]: [plantUuid#50775, internalUUID#50745, plant#50747, product#50746, systemId#50744, first#59728, valueSet#59729, buf#59730]
(140) ObjectHashAggregate
Input [8]: [plantUuid#50775, internalUUID#50745, plant#50747, product#50746, systemId#50744, first#59728, valueSet#59729, buf#59730]
Keys [5]: [plantUuid#50775, internalUUID#50745, plant#50747, product#50746, systemId#50744]
Functions [2]: [first(calculationDateTime#50748, false), collect_list(stockQuantity#50822, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#50748)()#50665, collect_list(stockQuantity#50822, 0, 0)#50666]
Results [4]: [product#50746, plant#50747, first(calculationDateTime#50748)()#50665 AS calculationDateTime#50823, collect_list(stockQuantity#50822, 0, 0)#50666 AS stockQuantities#50824]
(141) Filter [codegen id : 292]
Input [4]: [product#50746, plant#50747, calculationDateTime#50823, stockQuantities#50824]
Condition : ((size(stockQuantities#50824, true) > 0) AND isnotnull(calculationDateTime#50823))
(142) Generate [codegen id : 292]
Input [4]: [product#50746, plant#50747, calculationDateTime#50823, stockQuantities#50824]
Arguments: explode(stockQuantities#50824), [product#50746, plant#50747, calculationDateTime#50823], false, [stockQuantity#50825]
(143) Filter [codegen id : 292]
Input [4]: [product#50746, plant#50747, calculationDateTime#50823, stockQuantity#50825]
Condition : (((isnotnull(stockQuantity#50825.specialStockIndicator.code) AND isnotnull(stockQuantity#50825.stockType.code)) AND (stockQuantity#50825.specialStockIndicator.code = )) AND (stockQuantity#50825.stockType.code = 01))
(144) Project [codegen id : 292]
Output [4]: [plant#50747.internalRefUUID AS plantUuid#50827, product#50746.internalRefUUID AS productUuid#50829, calculationDateTime#50823, stockQuantity#50825.storagelocation.id AS storageLocId#50830]
Input [4]: [product#50746, plant#50747, calculationDateTime#50823, stockQuantity#50825]
(145) Exchange
Input [4]: [plantUuid#50827, productUuid#50829, calculationDateTime#50823, storageLocId#50830]
Arguments: hashpartitioning(productUuid#50829, plantUuid#50827, 10), ENSURE_REQUIREMENTS, [plan_id=295887]
(146) ShuffleQueryStage
Output [4]: [plantUuid#50827, productUuid#50829, calculationDateTime#50823, storageLocId#50830]
Arguments: 625
(147) AQEShuffleRead
Input [4]: [plantUuid#50827, productUuid#50829, calculationDateTime#50823, storageLocId#50830]
Arguments: local
(148) BroadcastExchange
Input [4]: [plantUuid#50827, productUuid#50829, calculationDateTime#50823, storageLocId#50830]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=302881]
(149) BroadcastQueryStage
Output [4]: [plantUuid#50827, productUuid#50829, calculationDateTime#50823, storageLocId#50830]
Arguments: 654
(150) ReusedExchange [Reuses operator id: 104]
Output [3]: [product#50835, plant#50836, orderDateTime#50837]
(151) ShuffleQueryStage
Output [3]: [product#50835, plant#50836, orderDateTime#50837]
Arguments: 33
(152) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#58685, _extract_internalRefUUID#58686, _extract_internalRefUUID#58684, _extract_internalRefUUID#58683]
(153) BroadcastQueryStage
Output [4]: [_extract_code#58685, _extract_internalRefUUID#58686, _extract_internalRefUUID#58684, _extract_internalRefUUID#58683]
Arguments: 406
(154) BroadcastHashJoin [codegen id : 321]
Left keys [4]: [coalesce(product#50835, ), isnull(product#50835), coalesce(plant#50836, ), isnull(plant#50836)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58684, ), isnull(_extract_internalRefUUID#58684), coalesce(_extract_internalRefUUID#58683, ), isnull(_extract_internalRefUUID#58683)]
Join type: LeftOuter
Join condition: None
(155) Project [codegen id : 321]
Output [5]: [product#50835, plant#50836, orderDateTime#50837, _extract_code#58685, _extract_internalRefUUID#58686]
Input [7]: [product#50835, plant#50836, orderDateTime#50837, _extract_code#58685, _extract_internalRefUUID#58686, _extract_internalRefUUID#58684, _extract_internalRefUUID#58683]
(156) ReusedExchange [Reuses operator id: 20]
Output [1]: [internalUUID#50849]
(157) BroadcastQueryStage
Output [1]: [internalUUID#50849]
Arguments: 407
(158) BroadcastHashJoin [codegen id : 321]
Left keys [2]: [coalesce(plant#50836, ), isnull(plant#50836)]
Right keys [2]: [coalesce(internalUUID#50849, ), isnull(internalUUID#50849)]
Join type: LeftOuter
Join condition: None
(159) Project [codegen id : 321]
Output [5]: [product#50835, plant#50836, orderDateTime#50837, _extract_code#58685, _extract_internalRefUUID#58686]
Input [6]: [product#50835, plant#50836, orderDateTime#50837, _extract_code#58685, _extract_internalRefUUID#58686, internalUUID#50849]
(160) ReusedExchange [Reuses operator id: 30]
Output [3]: [internalUUID#50863, baseUnitOfMeasure#50867, unitOfMeasureConversions#50869]
(161) BroadcastQueryStage
Output [3]: [internalUUID#50863, baseUnitOfMeasure#50867, unitOfMeasureConversions#50869]
Arguments: 408
(162) BroadcastHashJoin [codegen id : 321]
Left keys [1]: [product#50835]
Right keys [1]: [internalUUID#50863]
Join type: LeftOuter
Join condition: None
(163) Project
Output [4]: [product#50835, plant#50836, orderDateTime#50837, filter(unitOfMeasureConversions#50869, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58685) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58686)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#50867.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#50867.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#50874]
Input [8]: [product#50835, plant#50836, orderDateTime#50837, _extract_code#58685, _extract_internalRefUUID#58686, internalUUID#50863, baseUnitOfMeasure#50867, unitOfMeasureConversions#50869]
(164) Generate
Input [4]: [product#50835, plant#50836, orderDateTime#50837, filteredUnitOfMeasureConversions#50874]
Arguments: explode(filteredUnitOfMeasureConversions#50874.quantityNumerator), [product#50835, plant#50836, orderDateTime#50837, filteredUnitOfMeasureConversions#50874], true, [quantityNumerator#50875]
(165) Project
Output [4]: [product#50835, plant#50836, orderDateTime#50837, filteredUnitOfMeasureConversions#50874.quantityDenominator AS _extract_quantityDenominator#57997]
Input [5]: [product#50835, plant#50836, orderDateTime#50837, filteredUnitOfMeasureConversions#50874, quantityNumerator#50875]
(166) Generate
Input [4]: [product#50835, plant#50836, orderDateTime#50837, _extract_quantityDenominator#57997]
Arguments: explode(_extract_quantityDenominator#57997), [product#50835, plant#50836, orderDateTime#50837], true, [quantityDenominator#50876]
(167) Project
Output [3]: [product#50835, plant#50836, orderDateTime#50837]
Input [4]: [product#50835, plant#50836, orderDateTime#50837, quantityDenominator#50876]
(168) BroadcastHashJoin [codegen id : 322]
Left keys [2]: [plantUuid#50827, productUuid#50829]
Right keys [2]: [plant#50836, product#50835]
Join type: Inner
Join condition: (calculationDateTime#50823 <= orderDateTime#50837)
(169) Project [codegen id : 322]
Output [4]: [plantUuid#50827 AS plant#50879, productUuid#50829 AS product#50880, storageLocId#50830, calculationDateTime#50823]
Input [7]: [plantUuid#50827, productUuid#50829, calculationDateTime#50823, storageLocId#50830, product#50835, plant#50836, orderDateTime#50837]
(170) HashAggregate [codegen id : 322]
Input [4]: [plant#50879, product#50880, storageLocId#50830, calculationDateTime#50823]
Keys [3]: [plant#50879, product#50880, storageLocId#50830]
Functions [1]: [partial_max(calculationDateTime#50823)]
Aggregate Attributes [1]: [max#59723]
Results [4]: [plant#50879, product#50880, storageLocId#50830, max#59724]
(171) HashAggregate [codegen id : 322]
Input [4]: [plant#50879, product#50880, storageLocId#50830, max#59724]
Keys [3]: [plant#50879, product#50880, storageLocId#50830]
Functions [1]: [max(calculationDateTime#50823)]
Aggregate Attributes [1]: [max(calculationDateTime#50823)#50743]
Results [4]: [plant#50879, product#50880, storageLocId#50830, max(calculationDateTime#50823)#50743 AS max_calc_datetime#50737]
(172) Exchange
Input [4]: [plant#50879, product#50880, storageLocId#50830, max_calc_datetime#50737]
Arguments: hashpartitioning(coalesce(plant#50879, ), isnull(plant#50879), coalesce(product#50880, ), isnull(product#50880), coalesce(storageLocId#50830, ), isnull(storageLocId#50830), coalesce(max_calc_datetime#50737, 1970-01-01 00:00:00), isnull(max_calc_datetime#50737), 10), ENSURE_REQUIREMENTS, [plan_id=308679]
(173) ShuffleQueryStage
Output [4]: [plant#50879, product#50880, storageLocId#50830, max_calc_datetime#50737]
Arguments: 684
(174) AQEShuffleRead
Input [4]: [plant#50879, product#50880, storageLocId#50830, max_calc_datetime#50737]
Arguments: local
(175) BroadcastExchange
Input [4]: [plant#50879, product#50880, storageLocId#50830, max_calc_datetime#50737]
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=316333]
(176) BroadcastQueryStage
Output [4]: [plant#50879, product#50880, storageLocId#50830, max_calc_datetime#50737]
Arguments: 716
(177) BroadcastHashJoin [codegen id : 355]
Left keys [8]: [coalesce(plant#50735, ), isnull(plant#50735), coalesce(product#50736, ), isnull(product#50736), coalesce(storageLocId#50673, ), isnull(storageLocId#50673), coalesce(calculationDateTime#50652, 1970-01-01 00:00:00), isnull(calculationDateTime#50652)]
Right keys [8]: [coalesce(plant#50879, ), isnull(plant#50879), coalesce(product#50880, ), isnull(product#50880), coalesce(storageLocId#50830, ), isnull(storageLocId#50830), coalesce(max_calc_datetime#50737, 1970-01-01 00:00:00), isnull(max_calc_datetime#50737)]
Join type: Inner
Join condition: None
(178) Project [codegen id : 355]
Output [4]: [plant#50735, product#50736, calculationDateTime#50652, quantity#50675]
Input [9]: [plant#50735, product#50736, storageLocId#50673, calculationDateTime#50652, quantity#50675, plant#50879, product#50880, storageLocId#50830, max_calc_datetime#50737]
(179) HashAggregate [codegen id : 355]
Input [4]: [plant#50735, product#50736, calculationDateTime#50652, quantity#50675]
Keys [2]: [product#50736, plant#50735]
Functions [2]: [partial_min(calculationDateTime#50652), partial_sum(quantity#50675)]
Aggregate Attributes [2]: [min#59713, sum#59714]
Results [4]: [product#50736, plant#50735, min#59715, sum#59716]
(180) Exchange
Input [4]: [product#50736, plant#50735, min#59715, sum#59716]
Arguments: hashpartitioning(product#50736, plant#50735, 10), ENSURE_REQUIREMENTS, [plan_id=319248]
(181) ShuffleQueryStage
Output [4]: [product#50736, plant#50735, min#59715, sum#59716]
Arguments: 730
(182) AQEShuffleRead
Input [4]: [product#50736, plant#50735, min#59715, sum#59716]
Arguments: coalesced
(183) HashAggregate [codegen id : 363]
Input [4]: [product#50736, plant#50735, min#59715, sum#59716]
Keys [2]: [product#50736, plant#50735]
Functions [2]: [min(calculationDateTime#50652), sum(quantity#50675)]
Aggregate Attributes [2]: [min(calculationDateTime#50652)#50899, sum(quantity#50675)#50898]
Results [4]: [product#50736, plant#50735, min(calculationDateTime#50652)#50899 AS minCalculationDateTime#50892, round(sum(quantity#50675)#50898, 0) AS roundedQuantitySum#50900]
(184) BroadcastExchange
Input [4]: [product#50736, plant#50735, minCalculationDateTime#50892, roundedQuantitySum#50900]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=321851]
(185) BroadcastQueryStage
Output [4]: [product#50736, plant#50735, minCalculationDateTime#50892, roundedQuantitySum#50900]
Arguments: 744
(186) BroadcastHashJoin [codegen id : 374]
Left keys [2]: [plant#50546, product#50545]
Right keys [2]: [plant#50735, product#50736]
Join type: LeftOuter
Join condition: None
(187) Project [codegen id : 374]
Output [5]: [product#50545, plant#50546, outboundUnit#50604, CASE WHEN isnotnull(minCalculationDateTime#50892) THEN minCalculationDateTime#50892 ELSE orderDateTime#50547 END AS stockDatetime#50949, CASE WHEN isnotnull(roundedQuantitySum#50900) THEN array(roundedQuantitySum#50900) ELSE [0.0] END AS stockBatchQuantities#50950]
Input [8]: [product#50545, plant#50546, orderDateTime#50547, outboundUnit#50604, product#50736, plant#50735, minCalculationDateTime#50892, roundedQuantitySum#50900]
(188) Exchange
Input [5]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950]
Arguments: hashpartitioning(coalesce(plant#50546, ), isnull(plant#50546), coalesce(product#50545, ), isnull(product#50545), 10), ENSURE_REQUIREMENTS, [plan_id=324142]
(189) ShuffleQueryStage
Output [5]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950]
Arguments: 758
(190) AQEShuffleRead
Input [5]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950]
Arguments: local
(191) ReusedExchange [Reuses operator id: 3]
Output [3]: [product#51026, plant#51027, orderDateTime#51028]
(192) ShuffleQueryStage
Output [3]: [product#51026, plant#51027, orderDateTime#51028]
Arguments: 41
(193) Scan parquet
Output [8]: [internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037, systemId#51030]
Batched: 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#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037, systemId#51030]
(195) Project [codegen id : 26]
Output [8]: [systemId#51030, internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037]
Input [8]: [internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037, systemId#51030]
(196) Exchange
Input [8]: [systemId#51030, internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=229832]
(197) ShuffleQueryStage
Output [8]: [systemId#51030, internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037]
Arguments: 42
(198) Project [codegen id : 206]
Output [1]: [struct(systemId, systemId#51030, internalUUID, internalUUID#51031, plant, plant#51032, product, product#51033, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#51034, productionAspect, productionAspect#51035, salesPlant, salesPlant#51036, listing, listing#51037) AS productPlant#51038]
Input [8]: [systemId#51030, internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037]
(199) BroadcastExchange
Input [1]: [productPlant#51038]
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=274750]
(200) BroadcastQueryStage
Output [1]: [productPlant#51038]
Arguments: 409
(201) BroadcastHashJoin [codegen id : 375]
Left keys [4]: [coalesce(product#51026, ), isnull(product#51026), coalesce(plant#51027, ), isnull(plant#51027)]
Right keys [4]: [coalesce(productPlant#51038.product.internalRefUUID, ), isnull(productPlant#51038.product.internalRefUUID), coalesce(productPlant#51038.plant.internalRefUUID, ), isnull(productPlant#51038.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(202) Scan parquet
Output [3]: [internalUUID#51040, address#51046, systemId#51039]
Batched: 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#51040, address#51046, systemId#51039]
(204) Project [codegen id : 27]
Output [2]: [internalUUID#51040, address#51046.timeZone.code AS timezonecode#51051]
Input [3]: [internalUUID#51040, address#51046, systemId#51039]
(205) Exchange
Input [2]: [internalUUID#51040, timezonecode#51051]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=229850]
(206) ShuffleQueryStage
Output [2]: [internalUUID#51040, timezonecode#51051]
Arguments: 43
(207) BroadcastExchange
Input [2]: [internalUUID#51040, timezonecode#51051]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=229858]
(208) BroadcastQueryStage
Output [2]: [internalUUID#51040, timezonecode#51051]
Arguments: 410
(209) BroadcastHashJoin [codegen id : 375]
Left keys [2]: [coalesce(plant#51027, ), isnull(plant#51027)]
Right keys [2]: [coalesce(internalUUID#51040, ), isnull(internalUUID#51040)]
Join type: LeftOuter
Join condition: None
(210) Project [codegen id : 375]
Output [5]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, CASE WHEN isnotnull(timezonecode#51051) THEN timezonecode#51051 ELSE UTC END AS timezonecode#51052]
Input [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, internalUUID#51040, timezonecode#51051]
(211) ReusedExchange [Reuses operator id: 30]
Output [3]: [internalUUID#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060]
(212) BroadcastQueryStage
Output [3]: [internalUUID#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060]
Arguments: 411
(213) BroadcastHashJoin [codegen id : 375]
Left keys [1]: [product#51026]
Right keys [1]: [internalUUID#51054]
Join type: LeftOuter
Join condition: None
(214) Project
Output [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, filter(unitOfMeasureConversions#51060, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#51038.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#51038.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51058.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51058.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51065]
Input [8]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, internalUUID#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060]
(215) Project [codegen id : 376]
Output [7]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, filteredUnitOfMeasureConversions#51065.quantityDenominator AS _extract_quantityDenominator#58194, filteredUnitOfMeasureConversions#51065.quantityNumerator AS _extract_quantityNumerator#58195]
Input [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, filteredUnitOfMeasureConversions#51065]
(216) Generate [codegen id : 376]
Input [7]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, _extract_quantityDenominator#58194, _extract_quantityNumerator#58195]
Arguments: explode(_extract_quantityNumerator#58195), [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, _extract_quantityDenominator#58194], true, [quantityNumerator#51066]
(217) Generate [codegen id : 376]
Input [7]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, _extract_quantityDenominator#58194, quantityNumerator#51066]
Arguments: explode(_extract_quantityDenominator#58194), [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, quantityNumerator#51066], true, [quantityDenominator#51067]
(218) Project [codegen id : 376]
Output [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, (cast(quantityNumerator#51066 as double) / cast(quantityDenominator#51067 as double)) AS outboundUnit#51068]
Input [7]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, quantityNumerator#51066, quantityDenominator#51067]
(219) Project [codegen id : 376]
Output [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, CASE WHEN (isnull(outboundUnit#51068) OR (outboundUnit#51068 <= 0.0)) THEN 1.0 ELSE outboundUnit#51068 END AS outboundUnit#51069]
Input [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51068]
(220) ReusedExchange [Reuses operator id: 184]
Output [4]: [product#51206, plant#51205, minCalculationDateTime#51346, roundedQuantitySum#51347]
(221) BroadcastQueryStage
Output [4]: [product#51206, plant#51205, minCalculationDateTime#51346, roundedQuantitySum#51347]
Arguments: 746
(222) BroadcastHashJoin [codegen id : 376]
Left keys [2]: [plant#51027, product#51026]
Right keys [2]: [plant#51205, product#51206]
Join type: LeftOuter
Join condition: None
(223) Project [codegen id : 376]
Output [8]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, CASE WHEN isnotnull(minCalculationDateTime#51346) THEN minCalculationDateTime#51346 ELSE orderDateTime#51028 END AS stockDatetime#51348, CASE WHEN isnotnull(roundedQuantitySum#51347) THEN array(roundedQuantitySum#51347) ELSE [0.0] END AS stockBatchQuantities#51349]
Input [10]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, product#51206, plant#51205, minCalculationDateTime#51346, roundedQuantitySum#51347]
(224) Scan parquet
Output [9]: [product#50952, plant#50953, demandChannel#50954, demandStream#50955, considerVariance#50956, demandTimeBuckets#50957, demandPointInTimeStart#50958, demandPointInTimeEnd#50959, demandPointInTime#50960]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000006/0_1_10000000006]
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#50952, plant#50953, demandChannel#50954, demandStream#50955, considerVariance#50956, demandTimeBuckets#50957, demandPointInTimeStart#50958, demandPointInTimeEnd#50959, demandPointInTime#50960]
(226) Filter [codegen id : 49]
Input [9]: [product#50952, plant#50953, demandChannel#50954, demandStream#50955, considerVariance#50956, demandTimeBuckets#50957, demandPointInTimeStart#50958, demandPointInTimeEnd#50959, demandPointInTime#50960]
Condition : (isnotnull(product#50952) AND isnotnull(plant#50953))
(227) BroadcastExchange
Input [9]: [product#50952, plant#50953, demandChannel#50954, demandStream#50955, considerVariance#50956, demandTimeBuckets#50957, demandPointInTimeStart#50958, demandPointInTimeEnd#50959, demandPointInTime#50960]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=230394]
(228) BroadcastQueryStage
Output [9]: [product#50952, plant#50953, demandChannel#50954, demandStream#50955, considerVariance#50956, demandTimeBuckets#50957, demandPointInTimeStart#50958, demandPointInTimeEnd#50959, demandPointInTime#50960]
Arguments: 86
(229) BroadcastHashJoin [codegen id : 376]
Left keys [2]: [product#51026, plant#51027]
Right keys [2]: [product#50952, plant#50953]
Join type: LeftOuter
Join condition: None
(230) Project [codegen id : 376]
Output [9]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, CASE WHEN isnotnull(product#50952) THEN struct(demandChannel, demandChannel#50954, demandStream, demandStream#50955, considerVariance, considerVariance#50956, demandTimeBuckets, demandTimeBuckets#50957, demandPointInTimeStart, demandPointInTimeStart#50958, demandPointInTimeEnd, demandPointInTimeEnd#50959, demandPointInTime, demandPointInTime#50960) END AS rawDemands#50972]
Input [17]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, product#50952, plant#50953, demandChannel#50954, demandStream#50955, considerVariance#50956, demandTimeBuckets#50957, demandPointInTimeStart#50958, demandPointInTimeEnd#50959, demandPointInTime#50960]
(231) ObjectHashAggregate
Input [9]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, rawDemands#50972]
Keys [9]: [product#51026, plant#51027, orderDateTime#51028, knownfloatingpointnormalized(if (isnull(productPlant#51038)) null else named_struct(systemId, productPlant#51038.systemId, internalUUID, productPlant#51038.internalUUID, plant, productPlant#51038.plant, product, productPlant#51038.product, blockedForReplenishmentStartingFrom, productPlant#51038.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#51038.productionAspect)) null else named_struct(productMovementPlants, productPlant#51038.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#51038.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#51038.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#51038.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#51038.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#51038.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#51038.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#51038.salesPlant, listing, productPlant#51038.listing)) AS productPlant#51038, timezonecode#51052, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#51069)) AS outboundUnit#51069, stockDatetime#51348, knownfloatingpointnormalized(transform(stockBatchQuantities#51349, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#63304)), lambda arg#63304, false))) AS stockBatchQuantities#51349, [7226582400000000] AS [7226582400000000]#63303]
Functions [1]: [partial_collect_list(rawDemands#50972, 0, 0)]
Aggregate Attributes [1]: [buf#53703]
Results [10]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, [7226582400000000]#63303, buf#53704]
(232) ObjectHashAggregate
Input [10]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, [7226582400000000]#63303, buf#53704]
Keys [9]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, [7226582400000000]#63303]
Functions [1]: [collect_list(rawDemands#50972, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#50972, 0, 0)#50991]
Results [10]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#51350, collect_list(rawDemands#50972, 0, 0)#50991 AS rawDemands#50973]
(233) DeserializeToObject [codegen id : 377]
Input [10]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, stockBatchShelfLifeEndDatetimes#51350, rawDemands#50973]
Arguments: createexternalrow(invoke(product#51026.toString()), invoke(plant#51027.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#51028)), if (isnull(productPlant#51038)) null else createexternalrow(invoke(productPlant#51038.systemId.toString()), invoke(productPlant#51038.internalUUID.toString()), if (isnull(productPlant#51038.plant)) null else createexternalrow(invoke(productPlant#51038.plant.internalRefUUID.toString()), invoke(productPlant#51038.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#51038.product)) null else createexternalrow(invoke(productPlant#51038.product.internalRefUUID.toString()), invoke(productPlant#51038.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#51038.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#51038.productionAspect)) null else createexternalrow(if (isnull(productPlant#51038.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#51038.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#51038.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#51038.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#51038.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#51038.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#51038.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#51038.salesPlant)) null else createexternalrow(if (isnull(productPlant#51038.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#51038.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#51038.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#51038.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#51052.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#51069)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#51348)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#51349, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#51350, 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#50973, 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#51012: org.apache.spark.sql.Row
(234) MapElements [codegen id : 377]
Input [1]: [obj#51012]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@22994051, obj#51017: org.apache.spark.sql.Row
(235) SerializeFromObject [codegen id : 377]
Input [1]: [obj#51017]
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#51022, 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#51023, 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#51024, 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#51025]
(236) Exchange
Input [4]: [product#51022, plant#51023, dayBucketDemands#51024, pointInTimeDemands#51025]
Arguments: hashpartitioning(coalesce(plant#51023, ), isnull(plant#51023), coalesce(product#51022, ), isnull(product#51022), 10), ENSURE_REQUIREMENTS, [plan_id=324211]
(237) ShuffleQueryStage
Output [4]: [product#51022, plant#51023, dayBucketDemands#51024, pointInTimeDemands#51025]
Arguments: 759
(238) AQEShuffleRead
Input [4]: [product#51022, plant#51023, dayBucketDemands#51024, pointInTimeDemands#51025]
Arguments: local
(239) BroadcastExchange
Input [4]: [product#51022, plant#51023, dayBucketDemands#51024, pointInTimeDemands#51025]
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=326488]
(240) BroadcastQueryStage
Output [4]: [product#51022, plant#51023, dayBucketDemands#51024, pointInTimeDemands#51025]
Arguments: 769
(241) BroadcastHashJoin [codegen id : 391]
Left keys [4]: [coalesce(plant#50546, ), isnull(plant#50546), coalesce(product#50545, ), isnull(product#50545)]
Right keys [4]: [coalesce(plant#51023, ), isnull(plant#51023), coalesce(product#51022, ), isnull(product#51022)]
Join type: LeftOuter
Join condition: None
(242) Project [codegen id : 391]
Output [7]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, dayBucketDemands#51024, pointInTimeDemands#51025]
Input [9]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, product#51022, plant#51023, dayBucketDemands#51024, pointInTimeDemands#51025]
(243) Exchange
Input [7]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, dayBucketDemands#51024, pointInTimeDemands#51025]
Arguments: hashpartitioning(product#50545, plant#50546, 10), ENSURE_REQUIREMENTS, [plan_id=327027]
(244) ShuffleQueryStage
Output [7]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, dayBucketDemands#51024, pointInTimeDemands#51025]
Arguments: 775
(245) AQEShuffleRead
Input [7]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, dayBucketDemands#51024, pointInTimeDemands#51025]
Arguments: coalesced
(246) Project [codegen id : 397]
Output [12]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, dayBucketDemands#51024, pointInTimeDemands#51025, cast(null as string) AS product#51393, cast(null as string) AS plant#51392, cast(null as array<double>) AS _extract_openQtyInBaseUnit#58159, cast(null as array<timestamp>) AS _extract_availabilityDatetime#58160, cast(null as array<timestamp>) AS _extract_shelfLifeEndDatetime#58161]
Input [7]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, dayBucketDemands#51024, pointInTimeDemands#51025]
(247) Project [codegen id : 397]
Output [10]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, dayBucketDemands#51024, pointInTimeDemands#51025, coalesce(_extract_openQtyInBaseUnit#58159, []) AS openGoodsMovementQuantities#55221, coalesce(_extract_availabilityDatetime#58160, []) AS openGoodsMovementAvailabilityDatetimes#55222, coalesce(_extract_shelfLifeEndDatetime#58161, []) AS openGoodsMovementShelfLifeEndDatetimes#55223]
Input [12]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, dayBucketDemands#51024, pointInTimeDemands#51025, product#51393, plant#51392, _extract_openQtyInBaseUnit#58159, _extract_availabilityDatetime#58160, _extract_shelfLifeEndDatetime#58161]
(248) ReusedExchange [Reuses operator id: 3]
Output [3]: [product#55523, plant#55524, orderDateTime#55525]
(249) ShuffleQueryStage
Output [3]: [product#55523, plant#55524, orderDateTime#55525]
Arguments: 187
(250) ReusedExchange [Reuses operator id: 199]
Output [1]: [productPlant#55535]
(251) BroadcastQueryStage
Output [1]: [productPlant#55535]
Arguments: 487
(252) BroadcastHashJoin [codegen id : 381]
Left keys [4]: [coalesce(product#55523, ), isnull(product#55523), coalesce(plant#55524, ), isnull(plant#55524)]
Right keys [4]: [coalesce(productPlant#55535.product.internalRefUUID, ), isnull(productPlant#55535.product.internalRefUUID), coalesce(productPlant#55535.plant.internalRefUUID, ), isnull(productPlant#55535.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(253) ReusedExchange [Reuses operator id: 207]
Output [2]: [internalUUID#55537, timezonecode#55548]
(254) BroadcastQueryStage
Output [2]: [internalUUID#55537, timezonecode#55548]
Arguments: 488
(255) BroadcastHashJoin [codegen id : 381]
Left keys [2]: [coalesce(plant#55524, ), isnull(plant#55524)]
Right keys [2]: [coalesce(internalUUID#55537, ), isnull(internalUUID#55537)]
Join type: LeftOuter
Join condition: None
(256) Project [codegen id : 381]
Output [5]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, CASE WHEN isnotnull(timezonecode#55548) THEN timezonecode#55548 ELSE UTC END AS timezonecode#55549]
Input [6]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, internalUUID#55537, timezonecode#55548]
(257) ReusedExchange [Reuses operator id: 30]
Output [3]: [internalUUID#55551, baseUnitOfMeasure#55555, unitOfMeasureConversions#55557]
(258) BroadcastQueryStage
Output [3]: [internalUUID#55551, baseUnitOfMeasure#55555, unitOfMeasureConversions#55557]
Arguments: 489
(259) BroadcastHashJoin [codegen id : 381]
Left keys [1]: [product#55523]
Right keys [1]: [internalUUID#55551]
Join type: LeftOuter
Join condition: None
(260) Project
Output [6]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, filter(unitOfMeasureConversions#55557, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#55535.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#55535.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#55555.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#55555.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#55562]
Input [8]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, internalUUID#55551, baseUnitOfMeasure#55555, unitOfMeasureConversions#55557]
(261) Project [codegen id : 382]
Output [7]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, filteredUnitOfMeasureConversions#55562.quantityDenominator AS _extract_quantityDenominator#58279, filteredUnitOfMeasureConversions#55562.quantityNumerator AS _extract_quantityNumerator#58280]
Input [6]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, filteredUnitOfMeasureConversions#55562]
(262) Generate [codegen id : 382]
Input [7]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, _extract_quantityDenominator#58279, _extract_quantityNumerator#58280]
Arguments: explode(_extract_quantityNumerator#58280), [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, _extract_quantityDenominator#58279], true, [quantityNumerator#55563]
(263) Generate [codegen id : 382]
Input [7]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, _extract_quantityDenominator#58279, quantityNumerator#55563]
Arguments: explode(_extract_quantityDenominator#58279), [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, quantityNumerator#55563], true, [quantityDenominator#55564]
(264) Project [codegen id : 382]
Output [6]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, (cast(quantityNumerator#55563 as double) / cast(quantityDenominator#55564 as double)) AS outboundUnit#55565]
Input [7]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, quantityNumerator#55563, quantityDenominator#55564]
(265) Project [codegen id : 382]
Output [6]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, CASE WHEN (isnull(outboundUnit#55565) OR (outboundUnit#55565 <= 0.0)) THEN 1.0 ELSE outboundUnit#55565 END AS outboundUnit#55566]
Input [6]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55565]
(266) ReusedExchange [Reuses operator id: 184]
Output [4]: [product#55703, plant#55702, minCalculationDateTime#55843, roundedQuantitySum#55844]
(267) BroadcastQueryStage
Output [4]: [product#55703, plant#55702, minCalculationDateTime#55843, roundedQuantitySum#55844]
Arguments: 750
(268) BroadcastHashJoin [codegen id : 382]
Left keys [2]: [plant#55524, product#55523]
Right keys [2]: [plant#55702, product#55703]
Join type: LeftOuter
Join condition: None
(269) Project [codegen id : 382]
Output [8]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, CASE WHEN isnotnull(minCalculationDateTime#55843) THEN minCalculationDateTime#55843 ELSE orderDateTime#55525 END AS stockDatetime#55845, CASE WHEN isnotnull(roundedQuantitySum#55844) THEN array(roundedQuantitySum#55844) ELSE [0.0] END AS stockBatchQuantities#55846]
Input [10]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, product#55703, plant#55702, minCalculationDateTime#55843, roundedQuantitySum#55844]
(270) Exchange
Input [8]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846]
Arguments: hashpartitioning(coalesce(plant#55524, ), isnull(plant#55524), coalesce(product#55523, ), isnull(product#55523), 10), ENSURE_REQUIREMENTS, [plan_id=324617]
(271) ShuffleQueryStage
Output [8]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846]
Arguments: 761
(272) AQEShuffleRead
Input [8]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846]
Arguments: local
(273) ReusedExchange [Reuses operator id: 239]
Output [4]: [product#56184, plant#56185, dayBucketDemands#56186, pointInTimeDemands#56187]
(274) BroadcastQueryStage
Output [4]: [product#56184, plant#56185, dayBucketDemands#56186, pointInTimeDemands#56187]
Arguments: 771
(275) BroadcastHashJoin [codegen id : 392]
Left keys [4]: [coalesce(plant#55524, ), isnull(plant#55524), coalesce(product#55523, ), isnull(product#55523)]
Right keys [4]: [coalesce(plant#56185, ), isnull(plant#56185), coalesce(product#56184, ), isnull(product#56184)]
Join type: LeftOuter
Join condition: None
(276) Project [codegen id : 392]
Output [10]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, dayBucketDemands#56186, pointInTimeDemands#56187]
Input [12]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, product#56184, plant#56185, dayBucketDemands#56186, pointInTimeDemands#56187]
(277) Exchange
Input [10]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, dayBucketDemands#56186, pointInTimeDemands#56187]
Arguments: hashpartitioning(product#55523, plant#55524, 10), ENSURE_REQUIREMENTS, [plan_id=327092]
(278) ShuffleQueryStage
Output [10]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, dayBucketDemands#56186, pointInTimeDemands#56187]
Arguments: 776
(279) AQEShuffleRead
Input [10]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, dayBucketDemands#56186, pointInTimeDemands#56187]
Arguments: coalesced
(280) Project [codegen id : 395]
Output [15]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, dayBucketDemands#56186, pointInTimeDemands#56187, cast(null as string) AS product#56938, cast(null as string) AS plant#56937, cast(null as array<double>) AS _extract_openQtyInBaseUnit#58276, cast(null as array<timestamp>) AS _extract_availabilityDatetime#58277, cast(null as array<timestamp>) AS _extract_shelfLifeEndDatetime#58278]
Input [10]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, dayBucketDemands#56186, pointInTimeDemands#56187]
(281) Project
Output [16]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#55847, dayBucketDemands#56186, pointInTimeDemands#56187, coalesce(_extract_openQtyInBaseUnit#58276, []) AS openGoodsMovementQuantities#57638, coalesce(_extract_availabilityDatetime#58277, []) AS openGoodsMovementAvailabilityDatetimes#57639, coalesce(_extract_shelfLifeEndDatetime#58278, []) AS openGoodsMovementShelfLifeEndDatetimes#57640, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#57641, array_sort(filter(CASE WHEN isnotnull(productPlant#55535.listing) THEN productPlant#55535.listing ELSE [] END, lambdafunction(lambda listing#55467.isListed, lambda listing#55467, false)), lambdafunction(if ((isnull(lambda left#55469) AND isnull(lambda right#55470))) 0 else if (isnull(lambda left#55469)) 1 else if (isnull(lambda right#55470)) -1 else if ((lambda left#55469 < lambda right#55470)) -1 else if ((lambda left#55469 > lambda right#55470)) 1 else 0, lambda left#55469, lambda right#55470, false), false) AS listing#55468]
Input [15]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, dayBucketDemands#56186, pointInTimeDemands#56187, product#56938, plant#56937, _extract_openQtyInBaseUnit#58276, _extract_availabilityDatetime#58277, _extract_shelfLifeEndDatetime#58278]
(282) DeserializeToObject [codegen id : 396]
Input [16]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, stockBatchShelfLifeEndDatetimes#55847, dayBucketDemands#56186, pointInTimeDemands#56187, openGoodsMovementQuantities#57638, openGoodsMovementAvailabilityDatetimes#57639, openGoodsMovementShelfLifeEndDatetimes#57640, configuration#57641, listing#55468]
Arguments: createexternalrow(invoke(product#55523.toString()), invoke(plant#55524.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#55525)), if (isnull(productPlant#55535)) null else createexternalrow(invoke(productPlant#55535.systemId.toString()), invoke(productPlant#55535.internalUUID.toString()), if (isnull(productPlant#55535.plant)) null else createexternalrow(invoke(productPlant#55535.plant.internalRefUUID.toString()), invoke(productPlant#55535.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#55535.product)) null else createexternalrow(invoke(productPlant#55535.product.internalRefUUID.toString()), invoke(productPlant#55535.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#55535.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#55535.productionAspect)) null else createexternalrow(if (isnull(productPlant#55535.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#55535.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#55535.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#55535.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#55535.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#55535.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#55535.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#55535.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#55535.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#55535.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#55535.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#55535.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#55535.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#55535.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#55535.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#55535.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#55535.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#55535.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#55535.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#55535.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#55535.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#55535.salesPlant)) null else createexternalrow(if (isnull(productPlant#55535.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#55535.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#55535.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#55535.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#55549.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#55566)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#55845)), mapobjects(lambdavariable(MapObject, DoubleType, true, -22), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -22))), stockBatchQuantities#55846, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -23), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -23))), stockBatchShelfLifeEndDatetimes#55847, 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#56186, 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#56187, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -34), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -34))), openGoodsMovementQuantities#57638, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, -35), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, true, -35))), openGoodsMovementAvailabilityDatetimes#57639, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -36), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -36))), openGoodsMovementShelfLifeEndDatetimes#57640, 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#57641, 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#55468, 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#55503: org.apache.spark.sql.Row
(283) MapElements [codegen id : 396]
Input [1]: [obj#55503]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.ListingSnapshotEnhancementImpl$$Lambda/0x0000000801f6de40@134cd86f, obj#55510: org.apache.spark.sql.Row
(284) SerializeFromObject [codegen id : 396]
Input [1]: [obj#55510]
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#55517, 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#55518, 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#55519, 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#55520, 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#55521, 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#55522]
(285) Filter [codegen id : 396]
Input [6]: [product#55517, plant#55518, timeDependentSettingsName#55519, timeDependentSettingsStartDatetime#55520, timeDependentSettingsEndDatetime#55521, timeDependentSettingsValue#55522]
Condition : (isnotnull(product#55517) AND isnotnull(plant#55518))
(286) BroadcastExchange
Input [6]: [product#55517, plant#55518, timeDependentSettingsName#55519, timeDependentSettingsStartDatetime#55520, timeDependentSettingsEndDatetime#55521, timeDependentSettingsValue#55522]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=327570]
(287) BroadcastQueryStage
Output [6]: [product#55517, plant#55518, timeDependentSettingsName#55519, timeDependentSettingsStartDatetime#55520, timeDependentSettingsEndDatetime#55521, timeDependentSettingsValue#55522]
Arguments: 779
(288) BroadcastHashJoin [codegen id : 397]
Left keys [2]: [product#50545, plant#50546]
Right keys [2]: [product#55517, plant#55518]
Join type: LeftOuter
Join condition: None
(289) Project [codegen id : 397]
Output [16]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#50951, dayBucketDemands#51024, pointInTimeDemands#51025, openGoodsMovementQuantities#55221, openGoodsMovementAvailabilityDatetimes#55222, openGoodsMovementShelfLifeEndDatetimes#55223, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#55324, CASE WHEN isnotnull(timeDependentSettingsName#55519) THEN timeDependentSettingsName#55519 ELSE [] END AS timeDependentSettingsName#57796, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#55520) THEN timeDependentSettingsStartDatetime#55520 ELSE [] END AS timeDependentSettingsStartDatetime#57797, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#55521) THEN timeDependentSettingsEndDatetime#55521 ELSE [] END AS timeDependentSettingsEndDatetime#57798, CASE WHEN isnotnull(timeDependentSettingsValue#55522) THEN timeDependentSettingsValue#55522 ELSE [] END AS timeDependentSettingsValue#57799]
Input [16]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, dayBucketDemands#51024, pointInTimeDemands#51025, openGoodsMovementQuantities#55221, openGoodsMovementAvailabilityDatetimes#55222, openGoodsMovementShelfLifeEndDatetimes#55223, product#55517, plant#55518, timeDependentSettingsName#55519, timeDependentSettingsStartDatetime#55520, timeDependentSettingsEndDatetime#55521, timeDependentSettingsValue#55522]
(290) ResultQueryStage
Output [16]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, stockBatchShelfLifeEndDatetimes#50951, dayBucketDemands#51024, pointInTimeDemands#51025, openGoodsMovementQuantities#55221, openGoodsMovementAvailabilityDatetimes#55222, openGoodsMovementShelfLifeEndDatetimes#55223, configuration#55324, timeDependentSettingsName#57796, timeDependentSettingsStartDatetime#57797, timeDependentSettingsEndDatetime#57798, timeDependentSettingsValue#57799]
Arguments: 781
(291) Exchange
Input [3]: [product#50545, plant#50546, orderDateTime#50547]
Arguments: hashpartitioning(product#50545, plant#50546, 10), REPARTITION_BY_NUM, [plan_id=224885]
(292) Project
Output [4]: [plant#50552.internalRefUUID AS _extract_internalRefUUID#58668, product#50553.internalRefUUID AS _extract_internalRefUUID#58667, productionAspect#50555.productMovementPlants.unitOfIssue.code AS _extract_code#58669, productionAspect#50555.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58670]
Input [4]: [plant#50552, product#50553, productionAspect#50555, systemId#50550]
(293) Exchange
Input [4]: [_extract_internalRefUUID#58668, _extract_internalRefUUID#58667, _extract_code#58669, _extract_internalRefUUID#58670]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=224888]
(294) Project
Output [4]: [_extract_code#58669, _extract_internalRefUUID#58670, _extract_internalRefUUID#58667, _extract_internalRefUUID#58668]
Input [4]: [_extract_internalRefUUID#58668, _extract_internalRefUUID#58667, _extract_code#58669, _extract_internalRefUUID#58670]
(295) BroadcastExchange
Input [4]: [_extract_code#58669, _extract_internalRefUUID#58670, _extract_internalRefUUID#58667, _extract_internalRefUUID#58668]
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=227190]
(296) BroadcastHashJoin
Left keys [4]: [coalesce(product#50545, ), isnull(product#50545), coalesce(plant#50546, ), isnull(plant#50546)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58667, ), isnull(_extract_internalRefUUID#58667), coalesce(_extract_internalRefUUID#58668, ), isnull(_extract_internalRefUUID#58668)]
Join type: LeftOuter
Join condition: None
(297) Project
Output [5]: [product#50545, plant#50546, orderDateTime#50547, _extract_code#58669, _extract_internalRefUUID#58670]
Input [7]: [product#50545, plant#50546, orderDateTime#50547, _extract_code#58669, _extract_internalRefUUID#58670, _extract_internalRefUUID#58667, _extract_internalRefUUID#58668]
(298) Project
Output [1]: [internalUUID#50563]
Input [2]: [internalUUID#50563, systemId#50562]
(299) Exchange
Input [1]: [internalUUID#50563]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=224894]
(300) BroadcastExchange
Input [1]: [internalUUID#50563]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227194]
(301) BroadcastHashJoin
Left keys [2]: [coalesce(plant#50546, ), isnull(plant#50546)]
Right keys [2]: [coalesce(internalUUID#50563, ), isnull(internalUUID#50563)]
Join type: LeftOuter
Join condition: None
(302) Project
Output [5]: [product#50545, plant#50546, orderDateTime#50547, _extract_code#58669, _extract_internalRefUUID#58670]
Input [6]: [product#50545, plant#50546, orderDateTime#50547, _extract_code#58669, _extract_internalRefUUID#58670, internalUUID#50563]
(303) Filter
Input [4]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585, systemId#50578]
Condition : isnotnull(internalUUID#50579)
(304) Project
Output [3]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585]
Input [4]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585, systemId#50578]
(305) Exchange
Input [3]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=224900]
(306) BroadcastExchange
Input [3]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227198]
(307) BroadcastHashJoin
Left keys [1]: [product#50545]
Right keys [1]: [internalUUID#50579]
Join type: LeftOuter
Join condition: None
(308) Project
Output [4]: [product#50545, plant#50546, orderDateTime#50547, filter(unitOfMeasureConversions#50585, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58669) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58670)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#50583.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#50583.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#50591]
Input [8]: [product#50545, plant#50546, orderDateTime#50547, _extract_code#58669, _extract_internalRefUUID#58670, internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585]
(309) Project
Output [5]: [product#50545, plant#50546, orderDateTime#50547, filteredUnitOfMeasureConversions#50591.quantityDenominator AS _extract_quantityDenominator#58162, filteredUnitOfMeasureConversions#50591.quantityNumerator AS _extract_quantityNumerator#58163]
Input [4]: [product#50545, plant#50546, orderDateTime#50547, filteredUnitOfMeasureConversions#50591]
(310) Generate
Input [5]: [product#50545, plant#50546, orderDateTime#50547, _extract_quantityDenominator#58162, _extract_quantityNumerator#58163]
Arguments: explode(_extract_quantityNumerator#58163), [product#50545, plant#50546, orderDateTime#50547, _extract_quantityDenominator#58162], true, [quantityNumerator#50599]
(311) Generate
Input [5]: [product#50545, plant#50546, orderDateTime#50547, _extract_quantityDenominator#58162, quantityNumerator#50599]
Arguments: explode(_extract_quantityDenominator#58162), [product#50545, plant#50546, orderDateTime#50547, quantityNumerator#50599], true, [quantityDenominator#50602]
(312) Project
Output [4]: [product#50545, plant#50546, orderDateTime#50547, (cast(quantityNumerator#50599 as double) / cast(quantityDenominator#50602 as double)) AS outboundUnit#50603]
Input [5]: [product#50545, plant#50546, orderDateTime#50547, quantityNumerator#50599, quantityDenominator#50602]
(313) Project
Output [4]: [product#50545, plant#50546, orderDateTime#50547, CASE WHEN (isnull(outboundUnit#50603) OR (outboundUnit#50603 <= 0.0)) THEN 1.0 ELSE outboundUnit#50603 END AS outboundUnit#50604]
Input [4]: [product#50545, plant#50546, orderDateTime#50547, outboundUnit#50603]
(314) Sort
Input [4]: [product#50545, plant#50546, orderDateTime#50547, outboundUnit#50604]
Arguments: [product#50545 ASC NULLS FIRST, plant#50546 ASC NULLS FIRST], false, 0
(315) Filter
Input [6]: [internalUUID#50642, product#50643, plant#50644, calculationDateTime#50645, stockQuantities#50646, systemId#50641]
Condition : (isnotnull(plant#50644.internalRefUUID) AND isnotnull(product#50643.internalRefUUID))
(316) Project
Output [6]: [systemId#50641, internalUUID#50642, product#50643, plant#50644, calculationDateTime#50645, stockQuantities#50646]
Input [6]: [internalUUID#50642, product#50643, plant#50644, calculationDateTime#50645, stockQuantities#50646, systemId#50641]
(317) Exchange
Input [6]: [systemId#50641, internalUUID#50642, product#50643, plant#50644, calculationDateTime#50645, stockQuantities#50646]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=224911]
(318) BroadcastExchange
Input [6]: [systemId#50641, internalUUID#50642, product#50643, plant#50644, calculationDateTime#50645, stockQuantities#50646]
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=227230]
(319) Filter
Input [2]: [marketUnit#50605, distributionCenters#50611]
Condition : (((marketUnit#50605 <=> DIP_1691) AND (size(distributionCenters#50611, true) > 0)) AND isnotnull(distributionCenters#50611))
(320) Project
Output [1]: [distributionCenters#50611]
Input [2]: [marketUnit#50605, distributionCenters#50611]
(321) Exchange
Input [1]: [distributionCenters#50611]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=224915]
(322) Generate
Input [1]: [distributionCenters#50611]
Arguments: explode(distributionCenters#50611), false, [distributionCenters#50629]
(323) Filter
Input [1]: [distributionCenters#50629]
Condition : (((size(distributionCenters#50629.storageLocations, true) > 0) AND isnotnull(distributionCenters#50629.storageLocations)) AND isnotnull(distributionCenters#50629.internalRefUUID))
(324) Project
Output [2]: [distributionCenters#50629.internalRefUUID AS _extract_internalRefUUID#57981, distributionCenters#50629.storageLocations AS _extract_storageLocations#57982]
Input [1]: [distributionCenters#50629]
(325) Generate
Input [2]: [_extract_internalRefUUID#57981, _extract_storageLocations#57982]
Arguments: explode(_extract_storageLocations#57982), [_extract_internalRefUUID#57981], false, [storageLocations#50636]
(326) Project
Output [3]: [_extract_internalRefUUID#57981 AS plantUuid#50631, storageLocations#50636.id AS storageLocId#50637, storageLocations#50636.internalRefUUID AS storageLocUuid#50638]
Input [2]: [_extract_internalRefUUID#57981, storageLocations#50636]
(327) BroadcastExchange
Input [3]: [plantUuid#50631, storageLocId#50637, storageLocUuid#50638]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227226]
(328) Filter
Input [2]: [product#50901, plant#50902]
Condition : isnotnull(plant#50902)
(329) Exchange
Input [2]: [product#50901, plant#50902]
Arguments: hashpartitioning(product#50901, plant#50902, 10), REPARTITION_BY_NUM, [plan_id=226464]
(330) Scan parquet
Output [4]: [plant#50907, product#50908, productionAspect#50910, systemId#50905]
Batched: 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#50907.internalRefUUID AS _extract_internalRefUUID#58674, product#50908.internalRefUUID AS _extract_internalRefUUID#58671, productionAspect#50910.productMovementPlants.unitOfIssue.code AS _extract_code#58672, productionAspect#50910.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58673]
Input [4]: [plant#50907, product#50908, productionAspect#50910, systemId#50905]
(332) Exchange
Input [4]: [_extract_internalRefUUID#58674, _extract_internalRefUUID#58671, _extract_code#58672, _extract_internalRefUUID#58673]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=224927]
(333) Project
Output [4]: [_extract_code#58672, _extract_internalRefUUID#58673, _extract_internalRefUUID#58671, _extract_internalRefUUID#58674]
Input [4]: [_extract_internalRefUUID#58674, _extract_internalRefUUID#58671, _extract_code#58672, _extract_internalRefUUID#58673]
(334) BroadcastExchange
Input [4]: [_extract_code#58672, _extract_internalRefUUID#58673, _extract_internalRefUUID#58671, _extract_internalRefUUID#58674]
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=227206]
(335) BroadcastHashJoin
Left keys [4]: [coalesce(product#50901, ), isnull(product#50901), coalesce(plant#50902, ), isnull(plant#50902)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58671, ), isnull(_extract_internalRefUUID#58671), coalesce(_extract_internalRefUUID#58674, ), isnull(_extract_internalRefUUID#58674)]
Join type: LeftOuter
Join condition: None
(336) Project
Output [4]: [product#50901, plant#50902, _extract_code#58672, _extract_internalRefUUID#58673]
Input [6]: [product#50901, plant#50902, _extract_code#58672, _extract_internalRefUUID#58673, _extract_internalRefUUID#58671, _extract_internalRefUUID#58674]
(337) Scan parquet
Output [2]: [internalUUID#50915, systemId#50914]
Batched: 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#50915]
Input [2]: [internalUUID#50915, systemId#50914]
(339) Exchange
Input [1]: [internalUUID#50915]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=224933]
(340) BroadcastExchange
Input [1]: [internalUUID#50915]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227210]
(341) BroadcastHashJoin
Left keys [2]: [coalesce(plant#50902, ), isnull(plant#50902)]
Right keys [2]: [coalesce(internalUUID#50915, ), isnull(internalUUID#50915)]
Join type: LeftOuter
Join condition: None
(342) Project
Output [4]: [product#50901, plant#50902, _extract_code#58672, _extract_internalRefUUID#58673]
Input [5]: [product#50901, plant#50902, _extract_code#58672, _extract_internalRefUUID#58673, internalUUID#50915]
(343) Scan parquet
Output [4]: [internalUUID#50929, baseUnitOfMeasure#50933, unitOfMeasureConversions#50935, systemId#50928]
Batched: 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#50929, baseUnitOfMeasure#50933, unitOfMeasureConversions#50935, systemId#50928]
Condition : isnotnull(internalUUID#50929)
(345) Project
Output [3]: [internalUUID#50929, baseUnitOfMeasure#50933, unitOfMeasureConversions#50935]
Input [4]: [internalUUID#50929, baseUnitOfMeasure#50933, unitOfMeasureConversions#50935, systemId#50928]
(346) Exchange
Input [3]: [internalUUID#50929, baseUnitOfMeasure#50933, unitOfMeasureConversions#50935]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=224939]
(347) BroadcastExchange
Input [3]: [internalUUID#50929, baseUnitOfMeasure#50933, unitOfMeasureConversions#50935]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227214]
(348) BroadcastHashJoin
Left keys [1]: [product#50901]
Right keys [1]: [internalUUID#50929]
Join type: LeftOuter
Join condition: None
(349) Project
Output [2]: [plant#50902, filter(unitOfMeasureConversions#50935, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58672) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58673)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#50933.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#50933.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#50940]
Input [7]: [product#50901, plant#50902, _extract_code#58672, _extract_internalRefUUID#58673, internalUUID#50929, baseUnitOfMeasure#50933, unitOfMeasureConversions#50935]
(350) Generate
Input [2]: [plant#50902, filteredUnitOfMeasureConversions#50940]
Arguments: explode(filteredUnitOfMeasureConversions#50940.quantityNumerator), [plant#50902, filteredUnitOfMeasureConversions#50940], true, [quantityNumerator#50941]
(351) Project
Output [2]: [plant#50902, filteredUnitOfMeasureConversions#50940.quantityDenominator AS _extract_quantityDenominator#57983]
Input [3]: [plant#50902, filteredUnitOfMeasureConversions#50940, quantityNumerator#50941]
(352) Generate
Input [2]: [plant#50902, _extract_quantityDenominator#57983]
Arguments: explode(_extract_quantityDenominator#57983), [plant#50902], true, [quantityDenominator#50942]
(353) Project
Output [1]: [plant#50902]
Input [2]: [plant#50902, quantityDenominator#50942]
(354) HashAggregate
Input [1]: [plant#50902]
Keys [1]: [plant#50902]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#50902]
(355) Exchange
Input [1]: [plant#50902]
Arguments: hashpartitioning(plant#50902, 10), ENSURE_REQUIREMENTS, [plan_id=227223]
(356) HashAggregate
Input [1]: [plant#50902]
Keys [1]: [plant#50902]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#50902]
(357) BroadcastHashJoin
Left keys [1]: [plantUuid#50631]
Right keys [1]: [plant#50902]
Join type: Inner
Join condition: None
(358) Project
Output [3]: [plantUuid#50631, storageLocId#50637, storageLocUuid#50638]
Input [4]: [plantUuid#50631, storageLocId#50637, storageLocUuid#50638, plant#50902]
(359) BroadcastHashJoin
Left keys [2]: [coalesce(plant#50644.internalRefUUID, ), isnull(plant#50644.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#50631, ), isnull(plantUuid#50631)]
Join type: Inner
Join condition: None
(360) Generate
Input [9]: [systemId#50641, internalUUID#50642, product#50643, plant#50644, calculationDateTime#50645, stockQuantities#50646, plantUuid#50631, storageLocId#50637, storageLocUuid#50638]
Arguments: explode(filter(stockQuantities#50646, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#50638) AND (lambda x#50650.storageLocation.Id = storageLocId#50637)), lambda x#50650, false))), [systemId#50641, internalUUID#50642, product#50643, plant#50644, calculationDateTime#50645, plantUuid#50631], false, [stockQuantity#50651]
(361) ObjectHashAggregate
Input [7]: [systemId#50641, internalUUID#50642, product#50643, plant#50644, calculationDateTime#50645, plantUuid#50631, stockQuantity#50651]
Keys [5]: [plantUuid#50631, internalUUID#50642, plant#50644, product#50643, systemId#50641]
Functions [2]: [partial_first(calculationDateTime#50645, false), partial_collect_list(stockQuantity#50651, 0, 0)]
Aggregate Attributes [3]: [first#59717, valueSet#59718, buf#59719]
Results [8]: [plantUuid#50631, internalUUID#50642, plant#50644, product#50643, systemId#50641, first#59720, valueSet#59721, buf#59722]
(362) ObjectHashAggregate
Input [8]: [plantUuid#50631, internalUUID#50642, plant#50644, product#50643, systemId#50641, first#59720, valueSet#59721, buf#59722]
Keys [5]: [plantUuid#50631, internalUUID#50642, plant#50644, product#50643, systemId#50641]
Functions [2]: [first(calculationDateTime#50645, false), collect_list(stockQuantity#50651, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#50645)()#50665, collect_list(stockQuantity#50651, 0, 0)#50666]
Results [4]: [product#50643, plant#50644, first(calculationDateTime#50645)()#50665 AS calculationDateTime#50652, collect_list(stockQuantity#50651, 0, 0)#50666 AS stockQuantities#50653]
(363) Filter
Input [4]: [product#50643, plant#50644, calculationDateTime#50652, stockQuantities#50653]
Condition : ((size(stockQuantities#50653, true) > 0) AND isnotnull(calculationDateTime#50652))
(364) Generate
Input [4]: [product#50643, plant#50644, calculationDateTime#50652, stockQuantities#50653]
Arguments: explode(stockQuantities#50653), [product#50643, plant#50644, calculationDateTime#50652], false, [stockQuantity#50668]
(365) Filter
Input [4]: [product#50643, plant#50644, calculationDateTime#50652, stockQuantity#50668]
Condition : (((isnotnull(stockQuantity#50668.specialStockIndicator.code) AND isnotnull(stockQuantity#50668.stockType.code)) AND (stockQuantity#50668.specialStockIndicator.code = )) AND (stockQuantity#50668.stockType.code = 01))
(366) Project
Output [5]: [plant#50644.internalRefUUID AS plantUuid#50670, product#50643.internalRefUUID AS productUuid#50672, calculationDateTime#50652, stockQuantity#50668.storagelocation.id AS storageLocId#50673, stockQuantity#50668.quantity.measure AS quantity#50675]
Input [4]: [product#50643, plant#50644, calculationDateTime#50652, stockQuantity#50668]
(367) Exchange
Input [5]: [plantUuid#50670, productUuid#50672, calculationDateTime#50652, storageLocId#50673, quantity#50675]
Arguments: hashpartitioning(productUuid#50672, plantUuid#50670, 10), ENSURE_REQUIREMENTS, [plan_id=227256]
(368) Sort
Input [5]: [plantUuid#50670, productUuid#50672, calculationDateTime#50652, storageLocId#50673, quantity#50675]
Arguments: [productUuid#50672 ASC NULLS FIRST, plantUuid#50670 ASC NULLS FIRST], false, 0
(369) Filter
Input [3]: [product#50687, plant#50688, orderDateTime#50689]
Condition : ((isnotnull(orderDateTime#50689) AND isnotnull(plant#50688)) AND isnotnull(product#50687))
(370) Exchange
Input [3]: [product#50687, plant#50688, orderDateTime#50689]
Arguments: hashpartitioning(product#50687, plant#50688, 10), REPARTITION_BY_NUM, [plan_id=226487]
(371) Scan parquet
Output [4]: [plant#50693, product#50694, productionAspect#50696, systemId#50691]
Batched: 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#50693.internalRefUUID AS _extract_internalRefUUID#58676, product#50694.internalRefUUID AS _extract_internalRefUUID#58675, productionAspect#50696.productMovementPlants.unitOfIssue.code AS _extract_code#58677, productionAspect#50696.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58678]
Input [4]: [plant#50693, product#50694, productionAspect#50696, systemId#50691]
(373) Exchange
Input [4]: [_extract_internalRefUUID#58676, _extract_internalRefUUID#58675, _extract_code#58677, _extract_internalRefUUID#58678]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=224964]
(374) Project
Output [4]: [_extract_code#58677, _extract_internalRefUUID#58678, _extract_internalRefUUID#58675, _extract_internalRefUUID#58676]
Input [4]: [_extract_internalRefUUID#58676, _extract_internalRefUUID#58675, _extract_code#58677, _extract_internalRefUUID#58678]
(375) BroadcastExchange
Input [4]: [_extract_code#58677, _extract_internalRefUUID#58678, _extract_internalRefUUID#58675, _extract_internalRefUUID#58676]
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=227239]
(376) BroadcastHashJoin
Left keys [4]: [coalesce(product#50687, ), isnull(product#50687), coalesce(plant#50688, ), isnull(plant#50688)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58675, ), isnull(_extract_internalRefUUID#58675), coalesce(_extract_internalRefUUID#58676, ), isnull(_extract_internalRefUUID#58676)]
Join type: LeftOuter
Join condition: None
(377) Project
Output [5]: [product#50687, plant#50688, orderDateTime#50689, _extract_code#58677, _extract_internalRefUUID#58678]
Input [7]: [product#50687, plant#50688, orderDateTime#50689, _extract_code#58677, _extract_internalRefUUID#58678, _extract_internalRefUUID#58675, _extract_internalRefUUID#58676]
(378) Scan parquet
Output [2]: [internalUUID#50701, systemId#50700]
Batched: 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#50701]
Input [2]: [internalUUID#50701, systemId#50700]
(380) Exchange
Input [1]: [internalUUID#50701]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=224970]
(381) BroadcastExchange
Input [1]: [internalUUID#50701]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227243]
(382) BroadcastHashJoin
Left keys [2]: [coalesce(plant#50688, ), isnull(plant#50688)]
Right keys [2]: [coalesce(internalUUID#50701, ), isnull(internalUUID#50701)]
Join type: LeftOuter
Join condition: None
(383) Project
Output [5]: [product#50687, plant#50688, orderDateTime#50689, _extract_code#58677, _extract_internalRefUUID#58678]
Input [6]: [product#50687, plant#50688, orderDateTime#50689, _extract_code#58677, _extract_internalRefUUID#58678, internalUUID#50701]
(384) Scan parquet
Output [4]: [internalUUID#50715, baseUnitOfMeasure#50719, unitOfMeasureConversions#50721, systemId#50714]
Batched: 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#50715, baseUnitOfMeasure#50719, unitOfMeasureConversions#50721, systemId#50714]
Condition : isnotnull(internalUUID#50715)
(386) Project
Output [3]: [internalUUID#50715, baseUnitOfMeasure#50719, unitOfMeasureConversions#50721]
Input [4]: [internalUUID#50715, baseUnitOfMeasure#50719, unitOfMeasureConversions#50721, systemId#50714]
(387) Exchange
Input [3]: [internalUUID#50715, baseUnitOfMeasure#50719, unitOfMeasureConversions#50721]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=224976]
(388) BroadcastExchange
Input [3]: [internalUUID#50715, baseUnitOfMeasure#50719, unitOfMeasureConversions#50721]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227247]
(389) BroadcastHashJoin
Left keys [1]: [product#50687]
Right keys [1]: [internalUUID#50715]
Join type: LeftOuter
Join condition: None
(390) Project
Output [4]: [product#50687, plant#50688, orderDateTime#50689, filter(unitOfMeasureConversions#50721, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58677) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58678)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#50719.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#50719.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#50726]
Input [8]: [product#50687, plant#50688, orderDateTime#50689, _extract_code#58677, _extract_internalRefUUID#58678, internalUUID#50715, baseUnitOfMeasure#50719, unitOfMeasureConversions#50721]
(391) Generate
Input [4]: [product#50687, plant#50688, orderDateTime#50689, filteredUnitOfMeasureConversions#50726]
Arguments: explode(filteredUnitOfMeasureConversions#50726.quantityNumerator), [product#50687, plant#50688, orderDateTime#50689, filteredUnitOfMeasureConversions#50726], true, [quantityNumerator#50727]
(392) Project
Output [4]: [product#50687, plant#50688, orderDateTime#50689, filteredUnitOfMeasureConversions#50726.quantityDenominator AS _extract_quantityDenominator#57987]
Input [5]: [product#50687, plant#50688, orderDateTime#50689, filteredUnitOfMeasureConversions#50726, quantityNumerator#50727]
(393) Generate
Input [4]: [product#50687, plant#50688, orderDateTime#50689, _extract_quantityDenominator#57987]
Arguments: explode(_extract_quantityDenominator#57987), [product#50687, plant#50688, orderDateTime#50689], true, [quantityDenominator#50728]
(394) Project
Output [3]: [product#50687, plant#50688, orderDateTime#50689]
Input [4]: [product#50687, plant#50688, orderDateTime#50689, quantityDenominator#50728]
(395) Sort
Input [3]: [product#50687, plant#50688, orderDateTime#50689]
Arguments: [product#50687 ASC NULLS FIRST, plant#50688 ASC NULLS FIRST], false, 0
(396) SortMergeJoin
Left keys [2]: [productUuid#50672, plantUuid#50670]
Right keys [2]: [product#50687, plant#50688]
Join type: Inner
Join condition: (calculationDateTime#50652 <= orderDateTime#50689)
(397) Project
Output [5]: [plantUuid#50670 AS plant#50735, productUuid#50672 AS product#50736, storageLocId#50673, calculationDateTime#50652, quantity#50675]
Input [8]: [plantUuid#50670, productUuid#50672, calculationDateTime#50652, storageLocId#50673, quantity#50675, product#50687, plant#50688, orderDateTime#50689]
(398) Exchange
Input [5]: [plant#50735, product#50736, storageLocId#50673, calculationDateTime#50652, quantity#50675]
Arguments: hashpartitioning(coalesce(plant#50735, ), isnull(plant#50735), coalesce(product#50736, ), isnull(product#50736), coalesce(storageLocId#50673, ), isnull(storageLocId#50673), coalesce(calculationDateTime#50652, 1970-01-01 00:00:00), isnull(calculationDateTime#50652), 10), ENSURE_REQUIREMENTS, [plan_id=227320]
(399) Sort
Input [5]: [plant#50735, product#50736, storageLocId#50673, calculationDateTime#50652, quantity#50675]
Arguments: [coalesce(plant#50735, ) ASC NULLS FIRST, isnull(plant#50735) ASC NULLS FIRST, coalesce(product#50736, ) ASC NULLS FIRST, isnull(product#50736) ASC NULLS FIRST, coalesce(storageLocId#50673, ) ASC NULLS FIRST, isnull(storageLocId#50673) ASC NULLS FIRST, coalesce(calculationDateTime#50652, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#50652) ASC NULLS FIRST], false, 0
(400) Scan parquet
Output [6]: [internalUUID#50745, product#50746, plant#50747, calculationDateTime#50748, stockQuantities#50749, systemId#50744]
Batched: 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#50745, product#50746, plant#50747, calculationDateTime#50748, stockQuantities#50749, systemId#50744]
Condition : (isnotnull(plant#50747.internalRefUUID) AND isnotnull(product#50746.internalRefUUID))
(402) Project
Output [6]: [systemId#50744, internalUUID#50745, product#50746, plant#50747, calculationDateTime#50748, stockQuantities#50749]
Input [6]: [internalUUID#50745, product#50746, plant#50747, calculationDateTime#50748, stockQuantities#50749, systemId#50744]
(403) Exchange
Input [6]: [systemId#50744, internalUUID#50745, product#50746, plant#50747, calculationDateTime#50748, stockQuantities#50749]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=224988]
(404) BroadcastExchange
Input [6]: [systemId#50744, internalUUID#50745, product#50746, plant#50747, calculationDateTime#50748, stockQuantities#50749]
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=227285]
(405) Scan parquet
Output [2]: [marketUnit#50750, distributionCenters#50756]
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#50750, distributionCenters#50756]
Condition : (((marketUnit#50750 <=> DIP_1691) AND (size(distributionCenters#50756, true) > 0)) AND isnotnull(distributionCenters#50756))
(407) Project
Output [1]: [distributionCenters#50756]
Input [2]: [marketUnit#50750, distributionCenters#50756]
(408) Exchange
Input [1]: [distributionCenters#50756]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=224992]
(409) Generate
Input [1]: [distributionCenters#50756]
Arguments: explode(distributionCenters#50756), false, [distributionCenters#50772]
(410) Filter
Input [1]: [distributionCenters#50772]
Condition : (((size(distributionCenters#50772.storageLocations, true) > 0) AND isnotnull(distributionCenters#50772.storageLocations)) AND isnotnull(distributionCenters#50772.internalRefUUID))
(411) Project
Output [2]: [distributionCenters#50772.internalRefUUID AS _extract_internalRefUUID#57991, distributionCenters#50772.storageLocations AS _extract_storageLocations#57992]
Input [1]: [distributionCenters#50772]
(412) Generate
Input [2]: [_extract_internalRefUUID#57991, _extract_storageLocations#57992]
Arguments: explode(_extract_storageLocations#57992), [_extract_internalRefUUID#57991], false, [storageLocations#50773]
(413) Project
Output [3]: [_extract_internalRefUUID#57991 AS plantUuid#50775, storageLocations#50773.id AS storageLocId#50776, storageLocations#50773.internalRefUUID AS storageLocUuid#50777]
Input [2]: [_extract_internalRefUUID#57991, storageLocations#50773]
(414) BroadcastExchange
Input [3]: [plantUuid#50775, storageLocId#50776, storageLocUuid#50777]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227281]
(415) Scan parquet
Output [2]: [product#50778, plant#50779]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(416) Filter
Input [2]: [product#50778, plant#50779]
Condition : isnotnull(plant#50779)
(417) Exchange
Input [2]: [product#50778, plant#50779]
Arguments: hashpartitioning(product#50778, plant#50779, 10), REPARTITION_BY_NUM, [plan_id=226500]
(418) Scan parquet
Output [4]: [plant#50784, product#50785, productionAspect#50787, systemId#50782]
Batched: 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#50784.internalRefUUID AS _extract_internalRefUUID#58681, product#50785.internalRefUUID AS _extract_internalRefUUID#58682, productionAspect#50787.productMovementPlants.unitOfIssue.code AS _extract_code#58679, productionAspect#50787.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58680]
Input [4]: [plant#50784, product#50785, productionAspect#50787, systemId#50782]
(420) Exchange
Input [4]: [_extract_internalRefUUID#58681, _extract_internalRefUUID#58682, _extract_code#58679, _extract_internalRefUUID#58680]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225004]
(421) Project
Output [4]: [_extract_code#58679, _extract_internalRefUUID#58680, _extract_internalRefUUID#58682, _extract_internalRefUUID#58681]
Input [4]: [_extract_internalRefUUID#58681, _extract_internalRefUUID#58682, _extract_code#58679, _extract_internalRefUUID#58680]
(422) BroadcastExchange
Input [4]: [_extract_code#58679, _extract_internalRefUUID#58680, _extract_internalRefUUID#58682, _extract_internalRefUUID#58681]
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=227261]
(423) BroadcastHashJoin
Left keys [4]: [coalesce(product#50778, ), isnull(product#50778), coalesce(plant#50779, ), isnull(plant#50779)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58682, ), isnull(_extract_internalRefUUID#58682), coalesce(_extract_internalRefUUID#58681, ), isnull(_extract_internalRefUUID#58681)]
Join type: LeftOuter
Join condition: None
(424) Project
Output [4]: [product#50778, plant#50779, _extract_code#58679, _extract_internalRefUUID#58680]
Input [6]: [product#50778, plant#50779, _extract_code#58679, _extract_internalRefUUID#58680, _extract_internalRefUUID#58682, _extract_internalRefUUID#58681]
(425) Scan parquet
Output [2]: [internalUUID#50792, systemId#50791]
Batched: 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#50792]
Input [2]: [internalUUID#50792, systemId#50791]
(427) Exchange
Input [1]: [internalUUID#50792]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225010]
(428) BroadcastExchange
Input [1]: [internalUUID#50792]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227265]
(429) BroadcastHashJoin
Left keys [2]: [coalesce(plant#50779, ), isnull(plant#50779)]
Right keys [2]: [coalesce(internalUUID#50792, ), isnull(internalUUID#50792)]
Join type: LeftOuter
Join condition: None
(430) Project
Output [4]: [product#50778, plant#50779, _extract_code#58679, _extract_internalRefUUID#58680]
Input [5]: [product#50778, plant#50779, _extract_code#58679, _extract_internalRefUUID#58680, internalUUID#50792]
(431) Scan parquet
Output [4]: [internalUUID#50806, baseUnitOfMeasure#50810, unitOfMeasureConversions#50812, systemId#50805]
Batched: 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#50806, baseUnitOfMeasure#50810, unitOfMeasureConversions#50812, systemId#50805]
Condition : isnotnull(internalUUID#50806)
(433) Project
Output [3]: [internalUUID#50806, baseUnitOfMeasure#50810, unitOfMeasureConversions#50812]
Input [4]: [internalUUID#50806, baseUnitOfMeasure#50810, unitOfMeasureConversions#50812, systemId#50805]
(434) Exchange
Input [3]: [internalUUID#50806, baseUnitOfMeasure#50810, unitOfMeasureConversions#50812]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225016]
(435) BroadcastExchange
Input [3]: [internalUUID#50806, baseUnitOfMeasure#50810, unitOfMeasureConversions#50812]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227269]
(436) BroadcastHashJoin
Left keys [1]: [product#50778]
Right keys [1]: [internalUUID#50806]
Join type: LeftOuter
Join condition: None
(437) Project
Output [2]: [plant#50779, filter(unitOfMeasureConversions#50812, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58679) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58680)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#50810.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#50810.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#50817]
Input [7]: [product#50778, plant#50779, _extract_code#58679, _extract_internalRefUUID#58680, internalUUID#50806, baseUnitOfMeasure#50810, unitOfMeasureConversions#50812]
(438) Generate
Input [2]: [plant#50779, filteredUnitOfMeasureConversions#50817]
Arguments: explode(filteredUnitOfMeasureConversions#50817.quantityNumerator), [plant#50779, filteredUnitOfMeasureConversions#50817], true, [quantityNumerator#50818]
(439) Project
Output [2]: [plant#50779, filteredUnitOfMeasureConversions#50817.quantityDenominator AS _extract_quantityDenominator#57993]
Input [3]: [plant#50779, filteredUnitOfMeasureConversions#50817, quantityNumerator#50818]
(440) Generate
Input [2]: [plant#50779, _extract_quantityDenominator#57993]
Arguments: explode(_extract_quantityDenominator#57993), [plant#50779], true, [quantityDenominator#50819]
(441) Project
Output [1]: [plant#50779]
Input [2]: [plant#50779, quantityDenominator#50819]
(442) HashAggregate
Input [1]: [plant#50779]
Keys [1]: [plant#50779]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#50779]
(443) Exchange
Input [1]: [plant#50779]
Arguments: hashpartitioning(plant#50779, 10), ENSURE_REQUIREMENTS, [plan_id=227278]
(444) HashAggregate
Input [1]: [plant#50779]
Keys [1]: [plant#50779]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#50779]
(445) BroadcastHashJoin
Left keys [1]: [plantUuid#50775]
Right keys [1]: [plant#50779]
Join type: Inner
Join condition: None
(446) Project
Output [3]: [plantUuid#50775, storageLocId#50776, storageLocUuid#50777]
Input [4]: [plantUuid#50775, storageLocId#50776, storageLocUuid#50777, plant#50779]
(447) BroadcastHashJoin
Left keys [2]: [coalesce(plant#50747.internalRefUUID, ), isnull(plant#50747.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#50775, ), isnull(plantUuid#50775)]
Join type: Inner
Join condition: None
(448) Generate
Input [9]: [systemId#50744, internalUUID#50745, product#50746, plant#50747, calculationDateTime#50748, stockQuantities#50749, plantUuid#50775, storageLocId#50776, storageLocUuid#50777]
Arguments: explode(filter(stockQuantities#50749, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#50777) AND (lambda x#50650.storageLocation.Id = storageLocId#50776)), lambda x#50650, false))), [systemId#50744, internalUUID#50745, product#50746, plant#50747, calculationDateTime#50748, plantUuid#50775], false, [stockQuantity#50822]
(449) ObjectHashAggregate
Input [7]: [systemId#50744, internalUUID#50745, product#50746, plant#50747, calculationDateTime#50748, plantUuid#50775, stockQuantity#50822]
Keys [5]: [plantUuid#50775, internalUUID#50745, plant#50747, product#50746, systemId#50744]
Functions [2]: [partial_first(calculationDateTime#50748, false), partial_collect_list(stockQuantity#50822, 0, 0)]
Aggregate Attributes [3]: [first#59725, valueSet#59726, buf#59727]
Results [8]: [plantUuid#50775, internalUUID#50745, plant#50747, product#50746, systemId#50744, first#59728, valueSet#59729, buf#59730]
(450) ObjectHashAggregate
Input [8]: [plantUuid#50775, internalUUID#50745, plant#50747, product#50746, systemId#50744, first#59728, valueSet#59729, buf#59730]
Keys [5]: [plantUuid#50775, internalUUID#50745, plant#50747, product#50746, systemId#50744]
Functions [2]: [first(calculationDateTime#50748, false), collect_list(stockQuantity#50822, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#50748)()#50665, collect_list(stockQuantity#50822, 0, 0)#50666]
Results [4]: [product#50746, plant#50747, first(calculationDateTime#50748)()#50665 AS calculationDateTime#50823, collect_list(stockQuantity#50822, 0, 0)#50666 AS stockQuantities#50824]
(451) Filter
Input [4]: [product#50746, plant#50747, calculationDateTime#50823, stockQuantities#50824]
Condition : ((size(stockQuantities#50824, true) > 0) AND isnotnull(calculationDateTime#50823))
(452) Generate
Input [4]: [product#50746, plant#50747, calculationDateTime#50823, stockQuantities#50824]
Arguments: explode(stockQuantities#50824), [product#50746, plant#50747, calculationDateTime#50823], false, [stockQuantity#50825]
(453) Filter
Input [4]: [product#50746, plant#50747, calculationDateTime#50823, stockQuantity#50825]
Condition : (((isnotnull(stockQuantity#50825.specialStockIndicator.code) AND isnotnull(stockQuantity#50825.stockType.code)) AND (stockQuantity#50825.specialStockIndicator.code = )) AND (stockQuantity#50825.stockType.code = 01))
(454) Project
Output [4]: [plant#50747.internalRefUUID AS plantUuid#50827, product#50746.internalRefUUID AS productUuid#50829, calculationDateTime#50823, stockQuantity#50825.storagelocation.id AS storageLocId#50830]
Input [4]: [product#50746, plant#50747, calculationDateTime#50823, stockQuantity#50825]
(455) Exchange
Input [4]: [plantUuid#50827, productUuid#50829, calculationDateTime#50823, storageLocId#50830]
Arguments: hashpartitioning(productUuid#50829, plantUuid#50827, 10), ENSURE_REQUIREMENTS, [plan_id=227311]
(456) Sort
Input [4]: [plantUuid#50827, productUuid#50829, calculationDateTime#50823, storageLocId#50830]
Arguments: [productUuid#50829 ASC NULLS FIRST, plantUuid#50827 ASC NULLS FIRST], false, 0
(457) Scan parquet
Output [3]: [product#50835, plant#50836, orderDateTime#50837]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(458) Filter
Input [3]: [product#50835, plant#50836, orderDateTime#50837]
Condition : ((isnotnull(orderDateTime#50837) AND isnotnull(plant#50836)) AND isnotnull(product#50835))
(459) Exchange
Input [3]: [product#50835, plant#50836, orderDateTime#50837]
Arguments: hashpartitioning(product#50835, plant#50836, 10), REPARTITION_BY_NUM, [plan_id=226523]
(460) Scan parquet
Output [4]: [plant#50841, product#50842, productionAspect#50844, systemId#50839]
Batched: 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#50841.internalRefUUID AS _extract_internalRefUUID#58683, product#50842.internalRefUUID AS _extract_internalRefUUID#58684, productionAspect#50844.productMovementPlants.unitOfIssue.code AS _extract_code#58685, productionAspect#50844.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58686]
Input [4]: [plant#50841, product#50842, productionAspect#50844, systemId#50839]
(462) Exchange
Input [4]: [_extract_internalRefUUID#58683, _extract_internalRefUUID#58684, _extract_code#58685, _extract_internalRefUUID#58686]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225041]
(463) Project
Output [4]: [_extract_code#58685, _extract_internalRefUUID#58686, _extract_internalRefUUID#58684, _extract_internalRefUUID#58683]
Input [4]: [_extract_internalRefUUID#58683, _extract_internalRefUUID#58684, _extract_code#58685, _extract_internalRefUUID#58686]
(464) BroadcastExchange
Input [4]: [_extract_code#58685, _extract_internalRefUUID#58686, _extract_internalRefUUID#58684, _extract_internalRefUUID#58683]
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=227294]
(465) BroadcastHashJoin
Left keys [4]: [coalesce(product#50835, ), isnull(product#50835), coalesce(plant#50836, ), isnull(plant#50836)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58684, ), isnull(_extract_internalRefUUID#58684), coalesce(_extract_internalRefUUID#58683, ), isnull(_extract_internalRefUUID#58683)]
Join type: LeftOuter
Join condition: None
(466) Project
Output [5]: [product#50835, plant#50836, orderDateTime#50837, _extract_code#58685, _extract_internalRefUUID#58686]
Input [7]: [product#50835, plant#50836, orderDateTime#50837, _extract_code#58685, _extract_internalRefUUID#58686, _extract_internalRefUUID#58684, _extract_internalRefUUID#58683]
(467) Scan parquet
Output [2]: [internalUUID#50849, systemId#50848]
Batched: 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#50849]
Input [2]: [internalUUID#50849, systemId#50848]
(469) Exchange
Input [1]: [internalUUID#50849]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225047]
(470) BroadcastExchange
Input [1]: [internalUUID#50849]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227298]
(471) BroadcastHashJoin
Left keys [2]: [coalesce(plant#50836, ), isnull(plant#50836)]
Right keys [2]: [coalesce(internalUUID#50849, ), isnull(internalUUID#50849)]
Join type: LeftOuter
Join condition: None
(472) Project
Output [5]: [product#50835, plant#50836, orderDateTime#50837, _extract_code#58685, _extract_internalRefUUID#58686]
Input [6]: [product#50835, plant#50836, orderDateTime#50837, _extract_code#58685, _extract_internalRefUUID#58686, internalUUID#50849]
(473) Scan parquet
Output [4]: [internalUUID#50863, baseUnitOfMeasure#50867, unitOfMeasureConversions#50869, systemId#50862]
Batched: 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#50863, baseUnitOfMeasure#50867, unitOfMeasureConversions#50869, systemId#50862]
Condition : isnotnull(internalUUID#50863)
(475) Project
Output [3]: [internalUUID#50863, baseUnitOfMeasure#50867, unitOfMeasureConversions#50869]
Input [4]: [internalUUID#50863, baseUnitOfMeasure#50867, unitOfMeasureConversions#50869, systemId#50862]
(476) Exchange
Input [3]: [internalUUID#50863, baseUnitOfMeasure#50867, unitOfMeasureConversions#50869]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225053]
(477) BroadcastExchange
Input [3]: [internalUUID#50863, baseUnitOfMeasure#50867, unitOfMeasureConversions#50869]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227302]
(478) BroadcastHashJoin
Left keys [1]: [product#50835]
Right keys [1]: [internalUUID#50863]
Join type: LeftOuter
Join condition: None
(479) Project
Output [4]: [product#50835, plant#50836, orderDateTime#50837, filter(unitOfMeasureConversions#50869, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58685) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58686)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#50867.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#50867.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#50874]
Input [8]: [product#50835, plant#50836, orderDateTime#50837, _extract_code#58685, _extract_internalRefUUID#58686, internalUUID#50863, baseUnitOfMeasure#50867, unitOfMeasureConversions#50869]
(480) Generate
Input [4]: [product#50835, plant#50836, orderDateTime#50837, filteredUnitOfMeasureConversions#50874]
Arguments: explode(filteredUnitOfMeasureConversions#50874.quantityNumerator), [product#50835, plant#50836, orderDateTime#50837, filteredUnitOfMeasureConversions#50874], true, [quantityNumerator#50875]
(481) Project
Output [4]: [product#50835, plant#50836, orderDateTime#50837, filteredUnitOfMeasureConversions#50874.quantityDenominator AS _extract_quantityDenominator#57997]
Input [5]: [product#50835, plant#50836, orderDateTime#50837, filteredUnitOfMeasureConversions#50874, quantityNumerator#50875]
(482) Generate
Input [4]: [product#50835, plant#50836, orderDateTime#50837, _extract_quantityDenominator#57997]
Arguments: explode(_extract_quantityDenominator#57997), [product#50835, plant#50836, orderDateTime#50837], true, [quantityDenominator#50876]
(483) Project
Output [3]: [product#50835, plant#50836, orderDateTime#50837]
Input [4]: [product#50835, plant#50836, orderDateTime#50837, quantityDenominator#50876]
(484) Sort
Input [3]: [product#50835, plant#50836, orderDateTime#50837]
Arguments: [product#50835 ASC NULLS FIRST, plant#50836 ASC NULLS FIRST], false, 0
(485) SortMergeJoin
Left keys [2]: [productUuid#50829, plantUuid#50827]
Right keys [2]: [product#50835, plant#50836]
Join type: Inner
Join condition: (calculationDateTime#50823 <= orderDateTime#50837)
(486) Project
Output [4]: [plantUuid#50827 AS plant#50879, productUuid#50829 AS product#50880, storageLocId#50830, calculationDateTime#50823]
Input [7]: [plantUuid#50827, productUuid#50829, calculationDateTime#50823, storageLocId#50830, product#50835, plant#50836, orderDateTime#50837]
(487) HashAggregate
Input [4]: [plant#50879, product#50880, storageLocId#50830, calculationDateTime#50823]
Keys [3]: [plant#50879, product#50880, storageLocId#50830]
Functions [1]: [partial_max(calculationDateTime#50823)]
Aggregate Attributes [1]: [max#59723]
Results [4]: [plant#50879, product#50880, storageLocId#50830, max#59724]
(488) HashAggregate
Input [4]: [plant#50879, product#50880, storageLocId#50830, max#59724]
Keys [3]: [plant#50879, product#50880, storageLocId#50830]
Functions [1]: [max(calculationDateTime#50823)]
Aggregate Attributes [1]: [max(calculationDateTime#50823)#50743]
Results [4]: [plant#50879, product#50880, storageLocId#50830, max(calculationDateTime#50823)#50743 AS max_calc_datetime#50737]
(489) Exchange
Input [4]: [plant#50879, product#50880, storageLocId#50830, max_calc_datetime#50737]
Arguments: hashpartitioning(coalesce(plant#50879, ), isnull(plant#50879), coalesce(product#50880, ), isnull(product#50880), coalesce(storageLocId#50830, ), isnull(storageLocId#50830), coalesce(max_calc_datetime#50737, 1970-01-01 00:00:00), isnull(max_calc_datetime#50737), 10), ENSURE_REQUIREMENTS, [plan_id=227321]
(490) Sort
Input [4]: [plant#50879, product#50880, storageLocId#50830, max_calc_datetime#50737]
Arguments: [coalesce(plant#50879, ) ASC NULLS FIRST, isnull(plant#50879) ASC NULLS FIRST, coalesce(product#50880, ) ASC NULLS FIRST, isnull(product#50880) ASC NULLS FIRST, coalesce(storageLocId#50830, ) ASC NULLS FIRST, isnull(storageLocId#50830) ASC NULLS FIRST, coalesce(max_calc_datetime#50737, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#50737) ASC NULLS FIRST], false, 0
(491) SortMergeJoin
Left keys [8]: [coalesce(plant#50735, ), isnull(plant#50735), coalesce(product#50736, ), isnull(product#50736), coalesce(storageLocId#50673, ), isnull(storageLocId#50673), coalesce(calculationDateTime#50652, 1970-01-01 00:00:00), isnull(calculationDateTime#50652)]
Right keys [8]: [coalesce(plant#50879, ), isnull(plant#50879), coalesce(product#50880, ), isnull(product#50880), coalesce(storageLocId#50830, ), isnull(storageLocId#50830), coalesce(max_calc_datetime#50737, 1970-01-01 00:00:00), isnull(max_calc_datetime#50737)]
Join type: Inner
Join condition: None
(492) Project
Output [4]: [plant#50735, product#50736, calculationDateTime#50652, quantity#50675]
Input [9]: [plant#50735, product#50736, storageLocId#50673, calculationDateTime#50652, quantity#50675, plant#50879, product#50880, storageLocId#50830, max_calc_datetime#50737]
(493) HashAggregate
Input [4]: [plant#50735, product#50736, calculationDateTime#50652, quantity#50675]
Keys [2]: [product#50736, plant#50735]
Functions [2]: [partial_min(calculationDateTime#50652), partial_sum(quantity#50675)]
Aggregate Attributes [2]: [min#59713, sum#59714]
Results [4]: [product#50736, plant#50735, min#59715, sum#59716]
(494) Exchange
Input [4]: [product#50736, plant#50735, min#59715, sum#59716]
Arguments: hashpartitioning(product#50736, plant#50735, 10), ENSURE_REQUIREMENTS, [plan_id=227328]
(495) HashAggregate
Input [4]: [product#50736, plant#50735, min#59715, sum#59716]
Keys [2]: [product#50736, plant#50735]
Functions [2]: [min(calculationDateTime#50652), sum(quantity#50675)]
Aggregate Attributes [2]: [min(calculationDateTime#50652)#50899, sum(quantity#50675)#50898]
Results [4]: [product#50736, plant#50735, min(calculationDateTime#50652)#50899 AS minCalculationDateTime#50892, round(sum(quantity#50675)#50898, 0) AS roundedQuantitySum#50900]
(496) Sort
Input [4]: [product#50736, plant#50735, minCalculationDateTime#50892, roundedQuantitySum#50900]
Arguments: [product#50736 ASC NULLS FIRST, plant#50735 ASC NULLS FIRST], false, 0
(497) SortMergeJoin
Left keys [2]: [product#50545, plant#50546]
Right keys [2]: [product#50736, plant#50735]
Join type: LeftOuter
Join condition: None
(498) Project
Output [5]: [product#50545, plant#50546, outboundUnit#50604, CASE WHEN isnotnull(minCalculationDateTime#50892) THEN minCalculationDateTime#50892 ELSE orderDateTime#50547 END AS stockDatetime#50949, CASE WHEN isnotnull(roundedQuantitySum#50900) THEN array(roundedQuantitySum#50900) ELSE [0.0] END AS stockBatchQuantities#50950]
Input [8]: [product#50545, plant#50546, orderDateTime#50547, outboundUnit#50604, product#50736, plant#50735, minCalculationDateTime#50892, roundedQuantitySum#50900]
(499) Exchange
Input [5]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950]
Arguments: hashpartitioning(coalesce(plant#50546, ), isnull(plant#50546), coalesce(product#50545, ), isnull(product#50545), 10), ENSURE_REQUIREMENTS, [plan_id=227492]
(500) Sort
Input [5]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950]
Arguments: [coalesce(plant#50546, ) ASC NULLS FIRST, isnull(plant#50546) ASC NULLS FIRST, coalesce(product#50545, ) ASC NULLS FIRST, isnull(product#50545) ASC NULLS FIRST], false, 0
(501) Scan parquet
Output [3]: [product#51026, plant#51027, orderDateTime#51028]
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/10000000006/shardId=0_1_10000000006]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(502) Exchange
Input [3]: [product#51026, plant#51027, orderDateTime#51028]
Arguments: hashpartitioning(product#51026, plant#51027, 10), REPARTITION_BY_NUM, [plan_id=225071]
(503) Project
Output [8]: [systemId#51030, internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037]
Input [8]: [internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037, systemId#51030]
(504) Exchange
Input [8]: [systemId#51030, internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225074]
(505) Project
Output [1]: [struct(systemId, systemId#51030, internalUUID, internalUUID#51031, plant, plant#51032, product, product#51033, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#51034, productionAspect, productionAspect#51035, salesPlant, salesPlant#51036, listing, listing#51037) AS productPlant#51038]
Input [8]: [systemId#51030, internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037]
(506) BroadcastExchange
Input [1]: [productPlant#51038]
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=227336]
(507) BroadcastHashJoin
Left keys [4]: [coalesce(product#51026, ), isnull(product#51026), coalesce(plant#51027, ), isnull(plant#51027)]
Right keys [4]: [coalesce(productPlant#51038.product.internalRefUUID, ), isnull(productPlant#51038.product.internalRefUUID), coalesce(productPlant#51038.plant.internalRefUUID, ), isnull(productPlant#51038.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(508) Project
Output [2]: [internalUUID#51040, address#51046.timeZone.code AS timezonecode#51051]
Input [3]: [internalUUID#51040, address#51046, systemId#51039]
(509) Exchange
Input [2]: [internalUUID#51040, timezonecode#51051]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225079]
(510) BroadcastExchange
Input [2]: [internalUUID#51040, timezonecode#51051]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227339]
(511) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51027, ), isnull(plant#51027)]
Right keys [2]: [coalesce(internalUUID#51040, ), isnull(internalUUID#51040)]
Join type: LeftOuter
Join condition: None
(512) Project
Output [5]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, CASE WHEN isnotnull(timezonecode#51051) THEN timezonecode#51051 ELSE UTC END AS timezonecode#51052]
Input [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, internalUUID#51040, timezonecode#51051]
(513) Scan parquet
Output [4]: [internalUUID#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060, systemId#51053]
Batched: 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#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060, systemId#51053]
Condition : isnotnull(internalUUID#51054)
(515) Project
Output [3]: [internalUUID#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060]
Input [4]: [internalUUID#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060, systemId#51053]
(516) Exchange
Input [3]: [internalUUID#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225085]
(517) BroadcastExchange
Input [3]: [internalUUID#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227343]
(518) BroadcastHashJoin
Left keys [1]: [product#51026]
Right keys [1]: [internalUUID#51054]
Join type: LeftOuter
Join condition: None
(519) Project
Output [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, filter(unitOfMeasureConversions#51060, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#51038.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#51038.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51058.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51058.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51065]
Input [8]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, internalUUID#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060]
(520) Project
Output [7]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, filteredUnitOfMeasureConversions#51065.quantityDenominator AS _extract_quantityDenominator#58194, filteredUnitOfMeasureConversions#51065.quantityNumerator AS _extract_quantityNumerator#58195]
Input [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, filteredUnitOfMeasureConversions#51065]
(521) Generate
Input [7]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, _extract_quantityDenominator#58194, _extract_quantityNumerator#58195]
Arguments: explode(_extract_quantityNumerator#58195), [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, _extract_quantityDenominator#58194], true, [quantityNumerator#51066]
(522) Generate
Input [7]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, _extract_quantityDenominator#58194, quantityNumerator#51066]
Arguments: explode(_extract_quantityDenominator#58194), [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, quantityNumerator#51066], true, [quantityDenominator#51067]
(523) Project
Output [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, (cast(quantityNumerator#51066 as double) / cast(quantityDenominator#51067 as double)) AS outboundUnit#51068]
Input [7]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, quantityNumerator#51066, quantityDenominator#51067]
(524) Project
Output [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, CASE WHEN (isnull(outboundUnit#51068) OR (outboundUnit#51068 <= 0.0)) THEN 1.0 ELSE outboundUnit#51068 END AS outboundUnit#51069]
Input [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51068]
(525) Sort
Input [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069]
Arguments: [product#51026 ASC NULLS FIRST, plant#51027 ASC NULLS FIRST], false, 0
(526) Scan parquet
Output [6]: [internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075, systemId#51070]
Batched: 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#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075, systemId#51070]
Condition : (isnotnull(plant#51073.internalRefUUID) AND isnotnull(product#51072.internalRefUUID))
(528) Project
Output [6]: [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075]
Input [6]: [internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075, systemId#51070]
(529) Exchange
Input [6]: [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225096]
(530) BroadcastExchange
Input [6]: [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075]
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=227375]
(531) Scan parquet
Output [2]: [marketUnit#51076, distributionCenters#51082]
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#51076, distributionCenters#51082]
Condition : (((marketUnit#51076 <=> DIP_1691) AND (size(distributionCenters#51082, true) > 0)) AND isnotnull(distributionCenters#51082))
(533) Project
Output [1]: [distributionCenters#51082]
Input [2]: [marketUnit#51076, distributionCenters#51082]
(534) Exchange
Input [1]: [distributionCenters#51082]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225100]
(535) Generate
Input [1]: [distributionCenters#51082]
Arguments: explode(distributionCenters#51082), false, [distributionCenters#51098]
(536) Filter
Input [1]: [distributionCenters#51098]
Condition : (((size(distributionCenters#51098.storageLocations, true) > 0) AND isnotnull(distributionCenters#51098.storageLocations)) AND isnotnull(distributionCenters#51098.internalRefUUID))
(537) Project
Output [2]: [distributionCenters#51098.internalRefUUID AS _extract_internalRefUUID#58003, distributionCenters#51098.storageLocations AS _extract_storageLocations#58004]
Input [1]: [distributionCenters#51098]
(538) Generate
Input [2]: [_extract_internalRefUUID#58003, _extract_storageLocations#58004]
Arguments: explode(_extract_storageLocations#58004), [_extract_internalRefUUID#58003], false, [storageLocations#51099]
(539) Project
Output [3]: [_extract_internalRefUUID#58003 AS plantUuid#51101, storageLocations#51099.id AS storageLocId#51102, storageLocations#51099.internalRefUUID AS storageLocUuid#51103]
Input [2]: [_extract_internalRefUUID#58003, storageLocations#51099]
(540) BroadcastExchange
Input [3]: [plantUuid#51101, storageLocId#51102, storageLocUuid#51103]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227371]
(541) Scan parquet
Output [2]: [product#51104, plant#51105]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(542) Filter
Input [2]: [product#51104, plant#51105]
Condition : isnotnull(plant#51105)
(543) Exchange
Input [2]: [product#51104, plant#51105]
Arguments: hashpartitioning(product#51104, plant#51105, 10), REPARTITION_BY_NUM, [plan_id=226544]
(544) Scan parquet
Output [4]: [plant#51110, product#51111, productionAspect#51113, systemId#51108]
Batched: 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#51110.internalRefUUID AS _extract_internalRefUUID#58690, product#51111.internalRefUUID AS _extract_internalRefUUID#58689, productionAspect#51113.productMovementPlants.unitOfIssue.code AS _extract_code#58687, productionAspect#51113.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58688]
Input [4]: [plant#51110, product#51111, productionAspect#51113, systemId#51108]
(546) Exchange
Input [4]: [_extract_internalRefUUID#58690, _extract_internalRefUUID#58689, _extract_code#58687, _extract_internalRefUUID#58688]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225112]
(547) Project
Output [4]: [_extract_code#58687, _extract_internalRefUUID#58688, _extract_internalRefUUID#58689, _extract_internalRefUUID#58690]
Input [4]: [_extract_internalRefUUID#58690, _extract_internalRefUUID#58689, _extract_code#58687, _extract_internalRefUUID#58688]
(548) BroadcastExchange
Input [4]: [_extract_code#58687, _extract_internalRefUUID#58688, _extract_internalRefUUID#58689, _extract_internalRefUUID#58690]
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=227351]
(549) BroadcastHashJoin
Left keys [4]: [coalesce(product#51104, ), isnull(product#51104), coalesce(plant#51105, ), isnull(plant#51105)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58689, ), isnull(_extract_internalRefUUID#58689), coalesce(_extract_internalRefUUID#58690, ), isnull(_extract_internalRefUUID#58690)]
Join type: LeftOuter
Join condition: None
(550) Project
Output [4]: [product#51104, plant#51105, _extract_code#58687, _extract_internalRefUUID#58688]
Input [6]: [product#51104, plant#51105, _extract_code#58687, _extract_internalRefUUID#58688, _extract_internalRefUUID#58689, _extract_internalRefUUID#58690]
(551) Scan parquet
Output [2]: [internalUUID#51118, systemId#51117]
Batched: 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#51118]
Input [2]: [internalUUID#51118, systemId#51117]
(553) Exchange
Input [1]: [internalUUID#51118]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225118]
(554) BroadcastExchange
Input [1]: [internalUUID#51118]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227355]
(555) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51105, ), isnull(plant#51105)]
Right keys [2]: [coalesce(internalUUID#51118, ), isnull(internalUUID#51118)]
Join type: LeftOuter
Join condition: None
(556) Project
Output [4]: [product#51104, plant#51105, _extract_code#58687, _extract_internalRefUUID#58688]
Input [5]: [product#51104, plant#51105, _extract_code#58687, _extract_internalRefUUID#58688, internalUUID#51118]
(557) Scan parquet
Output [4]: [internalUUID#51132, baseUnitOfMeasure#51136, unitOfMeasureConversions#51138, systemId#51131]
Batched: 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#51132, baseUnitOfMeasure#51136, unitOfMeasureConversions#51138, systemId#51131]
Condition : isnotnull(internalUUID#51132)
(559) Project
Output [3]: [internalUUID#51132, baseUnitOfMeasure#51136, unitOfMeasureConversions#51138]
Input [4]: [internalUUID#51132, baseUnitOfMeasure#51136, unitOfMeasureConversions#51138, systemId#51131]
(560) Exchange
Input [3]: [internalUUID#51132, baseUnitOfMeasure#51136, unitOfMeasureConversions#51138]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225124]
(561) BroadcastExchange
Input [3]: [internalUUID#51132, baseUnitOfMeasure#51136, unitOfMeasureConversions#51138]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227359]
(562) BroadcastHashJoin
Left keys [1]: [product#51104]
Right keys [1]: [internalUUID#51132]
Join type: LeftOuter
Join condition: None
(563) Project
Output [2]: [plant#51105, filter(unitOfMeasureConversions#51138, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58687) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58688)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51136.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51136.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51143]
Input [7]: [product#51104, plant#51105, _extract_code#58687, _extract_internalRefUUID#58688, internalUUID#51132, baseUnitOfMeasure#51136, unitOfMeasureConversions#51138]
(564) Generate
Input [2]: [plant#51105, filteredUnitOfMeasureConversions#51143]
Arguments: explode(filteredUnitOfMeasureConversions#51143.quantityNumerator), [plant#51105, filteredUnitOfMeasureConversions#51143], true, [quantityNumerator#51144]
(565) Project
Output [2]: [plant#51105, filteredUnitOfMeasureConversions#51143.quantityDenominator AS _extract_quantityDenominator#58005]
Input [3]: [plant#51105, filteredUnitOfMeasureConversions#51143, quantityNumerator#51144]
(566) Generate
Input [2]: [plant#51105, _extract_quantityDenominator#58005]
Arguments: explode(_extract_quantityDenominator#58005), [plant#51105], true, [quantityDenominator#51145]
(567) Project
Output [1]: [plant#51105]
Input [2]: [plant#51105, quantityDenominator#51145]
(568) HashAggregate
Input [1]: [plant#51105]
Keys [1]: [plant#51105]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#51105]
(569) Exchange
Input [1]: [plant#51105]
Arguments: hashpartitioning(plant#51105, 10), ENSURE_REQUIREMENTS, [plan_id=227368]
(570) HashAggregate
Input [1]: [plant#51105]
Keys [1]: [plant#51105]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#51105]
(571) BroadcastHashJoin
Left keys [1]: [plantUuid#51101]
Right keys [1]: [plant#51105]
Join type: Inner
Join condition: None
(572) Project
Output [3]: [plantUuid#51101, storageLocId#51102, storageLocUuid#51103]
Input [4]: [plantUuid#51101, storageLocId#51102, storageLocUuid#51103, plant#51105]
(573) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51073.internalRefUUID, ), isnull(plant#51073.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#51101, ), isnull(plantUuid#51101)]
Join type: Inner
Join condition: None
(574) Generate
Input [9]: [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075, plantUuid#51101, storageLocId#51102, storageLocUuid#51103]
Arguments: explode(filter(stockQuantities#51075, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#51103) AND (lambda x#50650.storageLocation.Id = storageLocId#51102)), lambda x#50650, false))), [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, plantUuid#51101], false, [stockQuantity#51148]
(575) ObjectHashAggregate
Input [7]: [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, plantUuid#51101, stockQuantity#51148]
Keys [5]: [plantUuid#51101, internalUUID#51071, plant#51073, product#51072, systemId#51070]
Functions [2]: [partial_first(calculationDateTime#51074, false), partial_collect_list(stockQuantity#51148, 0, 0)]
Aggregate Attributes [3]: [first#53709, valueSet#53710, buf#53711]
Results [8]: [plantUuid#51101, internalUUID#51071, plant#51073, product#51072, systemId#51070, first#53712, valueSet#53713, buf#53714]
(576) ObjectHashAggregate
Input [8]: [plantUuid#51101, internalUUID#51071, plant#51073, product#51072, systemId#51070, first#53712, valueSet#53713, buf#53714]
Keys [5]: [plantUuid#51101, internalUUID#51071, plant#51073, product#51072, systemId#51070]
Functions [2]: [first(calculationDateTime#51074, false), collect_list(stockQuantity#51148, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#51074)()#50665, collect_list(stockQuantity#51148, 0, 0)#50666]
Results [4]: [product#51072, plant#51073, first(calculationDateTime#51074)()#50665 AS calculationDateTime#51149, collect_list(stockQuantity#51148, 0, 0)#50666 AS stockQuantities#51150]
(577) Filter
Input [4]: [product#51072, plant#51073, calculationDateTime#51149, stockQuantities#51150]
Condition : ((size(stockQuantities#51150, true) > 0) AND isnotnull(calculationDateTime#51149))
(578) Generate
Input [4]: [product#51072, plant#51073, calculationDateTime#51149, stockQuantities#51150]
Arguments: explode(stockQuantities#51150), [product#51072, plant#51073, calculationDateTime#51149], false, [stockQuantity#51151]
(579) Filter
Input [4]: [product#51072, plant#51073, calculationDateTime#51149, stockQuantity#51151]
Condition : (((isnotnull(stockQuantity#51151.specialStockIndicator.code) AND isnotnull(stockQuantity#51151.stockType.code)) AND (stockQuantity#51151.specialStockIndicator.code = )) AND (stockQuantity#51151.stockType.code = 01))
(580) Project
Output [5]: [plant#51073.internalRefUUID AS plantUuid#51153, product#51072.internalRefUUID AS productUuid#51155, calculationDateTime#51149, stockQuantity#51151.storagelocation.id AS storageLocId#51156, stockQuantity#51151.quantity.measure AS quantity#51158]
Input [4]: [product#51072, plant#51073, calculationDateTime#51149, stockQuantity#51151]
(581) Exchange
Input [5]: [plantUuid#51153, productUuid#51155, calculationDateTime#51149, storageLocId#51156, quantity#51158]
Arguments: hashpartitioning(productUuid#51155, plantUuid#51153, 10), ENSURE_REQUIREMENTS, [plan_id=227401]
(582) Sort
Input [5]: [plantUuid#51153, productUuid#51155, calculationDateTime#51149, storageLocId#51156, quantity#51158]
Arguments: [productUuid#51155 ASC NULLS FIRST, plantUuid#51153 ASC NULLS FIRST], false, 0
(583) Scan parquet
Output [3]: [product#51161, plant#51162, orderDateTime#51163]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(584) Filter
Input [3]: [product#51161, plant#51162, orderDateTime#51163]
Condition : ((isnotnull(orderDateTime#51163) AND isnotnull(plant#51162)) AND isnotnull(product#51161))
(585) Exchange
Input [3]: [product#51161, plant#51162, orderDateTime#51163]
Arguments: hashpartitioning(product#51161, plant#51162, 10), REPARTITION_BY_NUM, [plan_id=226567]
(586) Scan parquet
Output [4]: [plant#51167, product#51168, productionAspect#51170, systemId#51165]
Batched: 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#51167.internalRefUUID AS _extract_internalRefUUID#58694, product#51168.internalRefUUID AS _extract_internalRefUUID#58693, productionAspect#51170.productMovementPlants.unitOfIssue.code AS _extract_code#58691, productionAspect#51170.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58692]
Input [4]: [plant#51167, product#51168, productionAspect#51170, systemId#51165]
(588) Exchange
Input [4]: [_extract_internalRefUUID#58694, _extract_internalRefUUID#58693, _extract_code#58691, _extract_internalRefUUID#58692]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225149]
(589) Project
Output [4]: [_extract_code#58691, _extract_internalRefUUID#58692, _extract_internalRefUUID#58693, _extract_internalRefUUID#58694]
Input [4]: [_extract_internalRefUUID#58694, _extract_internalRefUUID#58693, _extract_code#58691, _extract_internalRefUUID#58692]
(590) BroadcastExchange
Input [4]: [_extract_code#58691, _extract_internalRefUUID#58692, _extract_internalRefUUID#58693, _extract_internalRefUUID#58694]
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=227384]
(591) BroadcastHashJoin
Left keys [4]: [coalesce(product#51161, ), isnull(product#51161), coalesce(plant#51162, ), isnull(plant#51162)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58693, ), isnull(_extract_internalRefUUID#58693), coalesce(_extract_internalRefUUID#58694, ), isnull(_extract_internalRefUUID#58694)]
Join type: LeftOuter
Join condition: None
(592) Project
Output [5]: [product#51161, plant#51162, orderDateTime#51163, _extract_code#58691, _extract_internalRefUUID#58692]
Input [7]: [product#51161, plant#51162, orderDateTime#51163, _extract_code#58691, _extract_internalRefUUID#58692, _extract_internalRefUUID#58693, _extract_internalRefUUID#58694]
(593) Scan parquet
Output [2]: [internalUUID#51175, systemId#51174]
Batched: 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#51175]
Input [2]: [internalUUID#51175, systemId#51174]
(595) Exchange
Input [1]: [internalUUID#51175]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225155]
(596) BroadcastExchange
Input [1]: [internalUUID#51175]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227388]
(597) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51162, ), isnull(plant#51162)]
Right keys [2]: [coalesce(internalUUID#51175, ), isnull(internalUUID#51175)]
Join type: LeftOuter
Join condition: None
(598) Project
Output [5]: [product#51161, plant#51162, orderDateTime#51163, _extract_code#58691, _extract_internalRefUUID#58692]
Input [6]: [product#51161, plant#51162, orderDateTime#51163, _extract_code#58691, _extract_internalRefUUID#58692, internalUUID#51175]
(599) Scan parquet
Output [4]: [internalUUID#51189, baseUnitOfMeasure#51193, unitOfMeasureConversions#51195, systemId#51188]
Batched: 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#51189, baseUnitOfMeasure#51193, unitOfMeasureConversions#51195, systemId#51188]
Condition : isnotnull(internalUUID#51189)
(601) Project
Output [3]: [internalUUID#51189, baseUnitOfMeasure#51193, unitOfMeasureConversions#51195]
Input [4]: [internalUUID#51189, baseUnitOfMeasure#51193, unitOfMeasureConversions#51195, systemId#51188]
(602) Exchange
Input [3]: [internalUUID#51189, baseUnitOfMeasure#51193, unitOfMeasureConversions#51195]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225161]
(603) BroadcastExchange
Input [3]: [internalUUID#51189, baseUnitOfMeasure#51193, unitOfMeasureConversions#51195]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227392]
(604) BroadcastHashJoin
Left keys [1]: [product#51161]
Right keys [1]: [internalUUID#51189]
Join type: LeftOuter
Join condition: None
(605) Project
Output [4]: [product#51161, plant#51162, orderDateTime#51163, filter(unitOfMeasureConversions#51195, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58691) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58692)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51193.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51193.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51200]
Input [8]: [product#51161, plant#51162, orderDateTime#51163, _extract_code#58691, _extract_internalRefUUID#58692, internalUUID#51189, baseUnitOfMeasure#51193, unitOfMeasureConversions#51195]
(606) Generate
Input [4]: [product#51161, plant#51162, orderDateTime#51163, filteredUnitOfMeasureConversions#51200]
Arguments: explode(filteredUnitOfMeasureConversions#51200.quantityNumerator), [product#51161, plant#51162, orderDateTime#51163, filteredUnitOfMeasureConversions#51200], true, [quantityNumerator#51201]
(607) Project
Output [4]: [product#51161, plant#51162, orderDateTime#51163, filteredUnitOfMeasureConversions#51200.quantityDenominator AS _extract_quantityDenominator#58009]
Input [5]: [product#51161, plant#51162, orderDateTime#51163, filteredUnitOfMeasureConversions#51200, quantityNumerator#51201]
(608) Generate
Input [4]: [product#51161, plant#51162, orderDateTime#51163, _extract_quantityDenominator#58009]
Arguments: explode(_extract_quantityDenominator#58009), [product#51161, plant#51162, orderDateTime#51163], true, [quantityDenominator#51202]
(609) Project
Output [3]: [product#51161, plant#51162, orderDateTime#51163]
Input [4]: [product#51161, plant#51162, orderDateTime#51163, quantityDenominator#51202]
(610) Sort
Input [3]: [product#51161, plant#51162, orderDateTime#51163]
Arguments: [product#51161 ASC NULLS FIRST, plant#51162 ASC NULLS FIRST], false, 0
(611) SortMergeJoin
Left keys [2]: [productUuid#51155, plantUuid#51153]
Right keys [2]: [product#51161, plant#51162]
Join type: Inner
Join condition: (calculationDateTime#51149 <= orderDateTime#51163)
(612) Project
Output [5]: [plantUuid#51153 AS plant#51205, productUuid#51155 AS product#51206, storageLocId#51156, calculationDateTime#51149, quantity#51158]
Input [8]: [plantUuid#51153, productUuid#51155, calculationDateTime#51149, storageLocId#51156, quantity#51158, product#51161, plant#51162, orderDateTime#51163]
(613) Exchange
Input [5]: [plant#51205, product#51206, storageLocId#51156, calculationDateTime#51149, quantity#51158]
Arguments: hashpartitioning(coalesce(plant#51205, ), isnull(plant#51205), coalesce(product#51206, ), isnull(product#51206), coalesce(storageLocId#51156, ), isnull(storageLocId#51156), coalesce(calculationDateTime#51149, 1970-01-01 00:00:00), isnull(calculationDateTime#51149), 10), ENSURE_REQUIREMENTS, [plan_id=227465]
(614) Sort
Input [5]: [plant#51205, product#51206, storageLocId#51156, calculationDateTime#51149, quantity#51158]
Arguments: [coalesce(plant#51205, ) ASC NULLS FIRST, isnull(plant#51205) ASC NULLS FIRST, coalesce(product#51206, ) ASC NULLS FIRST, isnull(product#51206) ASC NULLS FIRST, coalesce(storageLocId#51156, ) ASC NULLS FIRST, isnull(storageLocId#51156) ASC NULLS FIRST, coalesce(calculationDateTime#51149, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#51149) ASC NULLS FIRST], false, 0
(615) Scan parquet
Output [6]: [internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212, systemId#51207]
Batched: 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#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212, systemId#51207]
Condition : (isnotnull(plant#51210.internalRefUUID) AND isnotnull(product#51209.internalRefUUID))
(617) Project
Output [6]: [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212]
Input [6]: [internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212, systemId#51207]
(618) Exchange
Input [6]: [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225173]
(619) BroadcastExchange
Input [6]: [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212]
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=227430]
(620) Scan parquet
Output [2]: [marketUnit#51213, distributionCenters#51219]
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#51213, distributionCenters#51219]
Condition : (((marketUnit#51213 <=> DIP_1691) AND (size(distributionCenters#51219, true) > 0)) AND isnotnull(distributionCenters#51219))
(622) Project
Output [1]: [distributionCenters#51219]
Input [2]: [marketUnit#51213, distributionCenters#51219]
(623) Exchange
Input [1]: [distributionCenters#51219]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225177]
(624) Generate
Input [1]: [distributionCenters#51219]
Arguments: explode(distributionCenters#51219), false, [distributionCenters#51235]
(625) Filter
Input [1]: [distributionCenters#51235]
Condition : (((size(distributionCenters#51235.storageLocations, true) > 0) AND isnotnull(distributionCenters#51235.storageLocations)) AND isnotnull(distributionCenters#51235.internalRefUUID))
(626) Project
Output [2]: [distributionCenters#51235.internalRefUUID AS _extract_internalRefUUID#58013, distributionCenters#51235.storageLocations AS _extract_storageLocations#58014]
Input [1]: [distributionCenters#51235]
(627) Generate
Input [2]: [_extract_internalRefUUID#58013, _extract_storageLocations#58014]
Arguments: explode(_extract_storageLocations#58014), [_extract_internalRefUUID#58013], false, [storageLocations#51236]
(628) Project
Output [3]: [_extract_internalRefUUID#58013 AS plantUuid#51238, storageLocations#51236.id AS storageLocId#51239, storageLocations#51236.internalRefUUID AS storageLocUuid#51240]
Input [2]: [_extract_internalRefUUID#58013, storageLocations#51236]
(629) BroadcastExchange
Input [3]: [plantUuid#51238, storageLocId#51239, storageLocUuid#51240]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227426]
(630) Scan parquet
Output [2]: [product#51241, plant#51242]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(631) Filter
Input [2]: [product#51241, plant#51242]
Condition : isnotnull(plant#51242)
(632) Exchange
Input [2]: [product#51241, plant#51242]
Arguments: hashpartitioning(product#51241, plant#51242, 10), REPARTITION_BY_NUM, [plan_id=226580]
(633) Scan parquet
Output [4]: [plant#51247, product#51248, productionAspect#51250, systemId#51245]
Batched: 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#51247.internalRefUUID AS _extract_internalRefUUID#58698, product#51248.internalRefUUID AS _extract_internalRefUUID#58695, productionAspect#51250.productMovementPlants.unitOfIssue.code AS _extract_code#58696, productionAspect#51250.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58697]
Input [4]: [plant#51247, product#51248, productionAspect#51250, systemId#51245]
(635) Exchange
Input [4]: [_extract_internalRefUUID#58698, _extract_internalRefUUID#58695, _extract_code#58696, _extract_internalRefUUID#58697]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225189]
(636) Project
Output [4]: [_extract_code#58696, _extract_internalRefUUID#58697, _extract_internalRefUUID#58695, _extract_internalRefUUID#58698]
Input [4]: [_extract_internalRefUUID#58698, _extract_internalRefUUID#58695, _extract_code#58696, _extract_internalRefUUID#58697]
(637) BroadcastExchange
Input [4]: [_extract_code#58696, _extract_internalRefUUID#58697, _extract_internalRefUUID#58695, _extract_internalRefUUID#58698]
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=227406]
(638) BroadcastHashJoin
Left keys [4]: [coalesce(product#51241, ), isnull(product#51241), coalesce(plant#51242, ), isnull(plant#51242)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58695, ), isnull(_extract_internalRefUUID#58695), coalesce(_extract_internalRefUUID#58698, ), isnull(_extract_internalRefUUID#58698)]
Join type: LeftOuter
Join condition: None
(639) Project
Output [4]: [product#51241, plant#51242, _extract_code#58696, _extract_internalRefUUID#58697]
Input [6]: [product#51241, plant#51242, _extract_code#58696, _extract_internalRefUUID#58697, _extract_internalRefUUID#58695, _extract_internalRefUUID#58698]
(640) Scan parquet
Output [2]: [internalUUID#51255, systemId#51254]
Batched: 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#51255]
Input [2]: [internalUUID#51255, systemId#51254]
(642) Exchange
Input [1]: [internalUUID#51255]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225195]
(643) BroadcastExchange
Input [1]: [internalUUID#51255]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227410]
(644) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51242, ), isnull(plant#51242)]
Right keys [2]: [coalesce(internalUUID#51255, ), isnull(internalUUID#51255)]
Join type: LeftOuter
Join condition: None
(645) Project
Output [4]: [product#51241, plant#51242, _extract_code#58696, _extract_internalRefUUID#58697]
Input [5]: [product#51241, plant#51242, _extract_code#58696, _extract_internalRefUUID#58697, internalUUID#51255]
(646) Scan parquet
Output [4]: [internalUUID#51269, baseUnitOfMeasure#51273, unitOfMeasureConversions#51275, systemId#51268]
Batched: 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#51269, baseUnitOfMeasure#51273, unitOfMeasureConversions#51275, systemId#51268]
Condition : isnotnull(internalUUID#51269)
(648) Project
Output [3]: [internalUUID#51269, baseUnitOfMeasure#51273, unitOfMeasureConversions#51275]
Input [4]: [internalUUID#51269, baseUnitOfMeasure#51273, unitOfMeasureConversions#51275, systemId#51268]
(649) Exchange
Input [3]: [internalUUID#51269, baseUnitOfMeasure#51273, unitOfMeasureConversions#51275]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225201]
(650) BroadcastExchange
Input [3]: [internalUUID#51269, baseUnitOfMeasure#51273, unitOfMeasureConversions#51275]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227414]
(651) BroadcastHashJoin
Left keys [1]: [product#51241]
Right keys [1]: [internalUUID#51269]
Join type: LeftOuter
Join condition: None
(652) Project
Output [2]: [plant#51242, filter(unitOfMeasureConversions#51275, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58696) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58697)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51273.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51273.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51280]
Input [7]: [product#51241, plant#51242, _extract_code#58696, _extract_internalRefUUID#58697, internalUUID#51269, baseUnitOfMeasure#51273, unitOfMeasureConversions#51275]
(653) Generate
Input [2]: [plant#51242, filteredUnitOfMeasureConversions#51280]
Arguments: explode(filteredUnitOfMeasureConversions#51280.quantityNumerator), [plant#51242, filteredUnitOfMeasureConversions#51280], true, [quantityNumerator#51281]
(654) Project
Output [2]: [plant#51242, filteredUnitOfMeasureConversions#51280.quantityDenominator AS _extract_quantityDenominator#58015]
Input [3]: [plant#51242, filteredUnitOfMeasureConversions#51280, quantityNumerator#51281]
(655) Generate
Input [2]: [plant#51242, _extract_quantityDenominator#58015]
Arguments: explode(_extract_quantityDenominator#58015), [plant#51242], true, [quantityDenominator#51282]
(656) Project
Output [1]: [plant#51242]
Input [2]: [plant#51242, quantityDenominator#51282]
(657) HashAggregate
Input [1]: [plant#51242]
Keys [1]: [plant#51242]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#51242]
(658) Exchange
Input [1]: [plant#51242]
Arguments: hashpartitioning(plant#51242, 10), ENSURE_REQUIREMENTS, [plan_id=227423]
(659) HashAggregate
Input [1]: [plant#51242]
Keys [1]: [plant#51242]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#51242]
(660) BroadcastHashJoin
Left keys [1]: [plantUuid#51238]
Right keys [1]: [plant#51242]
Join type: Inner
Join condition: None
(661) Project
Output [3]: [plantUuid#51238, storageLocId#51239, storageLocUuid#51240]
Input [4]: [plantUuid#51238, storageLocId#51239, storageLocUuid#51240, plant#51242]
(662) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51210.internalRefUUID, ), isnull(plant#51210.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#51238, ), isnull(plantUuid#51238)]
Join type: Inner
Join condition: None
(663) Generate
Input [9]: [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212, plantUuid#51238, storageLocId#51239, storageLocUuid#51240]
Arguments: explode(filter(stockQuantities#51212, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#51240) AND (lambda x#50650.storageLocation.Id = storageLocId#51239)), lambda x#50650, false))), [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, plantUuid#51238], false, [stockQuantity#51285]
(664) ObjectHashAggregate
Input [7]: [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, plantUuid#51238, stockQuantity#51285]
Keys [5]: [plantUuid#51238, internalUUID#51208, plant#51210, product#51209, systemId#51207]
Functions [2]: [partial_first(calculationDateTime#51211, false), partial_collect_list(stockQuantity#51285, 0, 0)]
Aggregate Attributes [3]: [first#53717, valueSet#53718, buf#53719]
Results [8]: [plantUuid#51238, internalUUID#51208, plant#51210, product#51209, systemId#51207, first#53720, valueSet#53721, buf#53722]
(665) ObjectHashAggregate
Input [8]: [plantUuid#51238, internalUUID#51208, plant#51210, product#51209, systemId#51207, first#53720, valueSet#53721, buf#53722]
Keys [5]: [plantUuid#51238, internalUUID#51208, plant#51210, product#51209, systemId#51207]
Functions [2]: [first(calculationDateTime#51211, false), collect_list(stockQuantity#51285, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#51211)()#50665, collect_list(stockQuantity#51285, 0, 0)#50666]
Results [4]: [product#51209, plant#51210, first(calculationDateTime#51211)()#50665 AS calculationDateTime#51286, collect_list(stockQuantity#51285, 0, 0)#50666 AS stockQuantities#51287]
(666) Filter
Input [4]: [product#51209, plant#51210, calculationDateTime#51286, stockQuantities#51287]
Condition : ((size(stockQuantities#51287, true) > 0) AND isnotnull(calculationDateTime#51286))
(667) Generate
Input [4]: [product#51209, plant#51210, calculationDateTime#51286, stockQuantities#51287]
Arguments: explode(stockQuantities#51287), [product#51209, plant#51210, calculationDateTime#51286], false, [stockQuantity#51288]
(668) Filter
Input [4]: [product#51209, plant#51210, calculationDateTime#51286, stockQuantity#51288]
Condition : (((isnotnull(stockQuantity#51288.specialStockIndicator.code) AND isnotnull(stockQuantity#51288.stockType.code)) AND (stockQuantity#51288.specialStockIndicator.code = )) AND (stockQuantity#51288.stockType.code = 01))
(669) Project
Output [4]: [plant#51210.internalRefUUID AS plantUuid#51290, product#51209.internalRefUUID AS productUuid#51292, calculationDateTime#51286, stockQuantity#51288.storagelocation.id AS storageLocId#51293]
Input [4]: [product#51209, plant#51210, calculationDateTime#51286, stockQuantity#51288]
(670) Exchange
Input [4]: [plantUuid#51290, productUuid#51292, calculationDateTime#51286, storageLocId#51293]
Arguments: hashpartitioning(productUuid#51292, plantUuid#51290, 10), ENSURE_REQUIREMENTS, [plan_id=227456]
(671) Sort
Input [4]: [plantUuid#51290, productUuid#51292, calculationDateTime#51286, storageLocId#51293]
Arguments: [productUuid#51292 ASC NULLS FIRST, plantUuid#51290 ASC NULLS FIRST], false, 0
(672) Scan parquet
Output [3]: [product#51298, plant#51299, orderDateTime#51300]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(673) Filter
Input [3]: [product#51298, plant#51299, orderDateTime#51300]
Condition : ((isnotnull(orderDateTime#51300) AND isnotnull(plant#51299)) AND isnotnull(product#51298))
(674) Exchange
Input [3]: [product#51298, plant#51299, orderDateTime#51300]
Arguments: hashpartitioning(product#51298, plant#51299, 10), REPARTITION_BY_NUM, [plan_id=226603]
(675) Scan parquet
Output [4]: [plant#51304, product#51305, productionAspect#51307, systemId#51302]
Batched: 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#51304.internalRefUUID AS _extract_internalRefUUID#58699, product#51305.internalRefUUID AS _extract_internalRefUUID#58700, productionAspect#51307.productMovementPlants.unitOfIssue.code AS _extract_code#58701, productionAspect#51307.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58702]
Input [4]: [plant#51304, product#51305, productionAspect#51307, systemId#51302]
(677) Exchange
Input [4]: [_extract_internalRefUUID#58699, _extract_internalRefUUID#58700, _extract_code#58701, _extract_internalRefUUID#58702]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225226]
(678) Project
Output [4]: [_extract_code#58701, _extract_internalRefUUID#58702, _extract_internalRefUUID#58700, _extract_internalRefUUID#58699]
Input [4]: [_extract_internalRefUUID#58699, _extract_internalRefUUID#58700, _extract_code#58701, _extract_internalRefUUID#58702]
(679) BroadcastExchange
Input [4]: [_extract_code#58701, _extract_internalRefUUID#58702, _extract_internalRefUUID#58700, _extract_internalRefUUID#58699]
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=227439]
(680) BroadcastHashJoin
Left keys [4]: [coalesce(product#51298, ), isnull(product#51298), coalesce(plant#51299, ), isnull(plant#51299)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58700, ), isnull(_extract_internalRefUUID#58700), coalesce(_extract_internalRefUUID#58699, ), isnull(_extract_internalRefUUID#58699)]
Join type: LeftOuter
Join condition: None
(681) Project
Output [5]: [product#51298, plant#51299, orderDateTime#51300, _extract_code#58701, _extract_internalRefUUID#58702]
Input [7]: [product#51298, plant#51299, orderDateTime#51300, _extract_code#58701, _extract_internalRefUUID#58702, _extract_internalRefUUID#58700, _extract_internalRefUUID#58699]
(682) Scan parquet
Output [2]: [internalUUID#51312, systemId#51311]
Batched: 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#51312]
Input [2]: [internalUUID#51312, systemId#51311]
(684) Exchange
Input [1]: [internalUUID#51312]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225232]
(685) BroadcastExchange
Input [1]: [internalUUID#51312]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227443]
(686) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51299, ), isnull(plant#51299)]
Right keys [2]: [coalesce(internalUUID#51312, ), isnull(internalUUID#51312)]
Join type: LeftOuter
Join condition: None
(687) Project
Output [5]: [product#51298, plant#51299, orderDateTime#51300, _extract_code#58701, _extract_internalRefUUID#58702]
Input [6]: [product#51298, plant#51299, orderDateTime#51300, _extract_code#58701, _extract_internalRefUUID#58702, internalUUID#51312]
(688) Scan parquet
Output [4]: [internalUUID#51326, baseUnitOfMeasure#51330, unitOfMeasureConversions#51332, systemId#51325]
Batched: 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#51326, baseUnitOfMeasure#51330, unitOfMeasureConversions#51332, systemId#51325]
Condition : isnotnull(internalUUID#51326)
(690) Project
Output [3]: [internalUUID#51326, baseUnitOfMeasure#51330, unitOfMeasureConversions#51332]
Input [4]: [internalUUID#51326, baseUnitOfMeasure#51330, unitOfMeasureConversions#51332, systemId#51325]
(691) Exchange
Input [3]: [internalUUID#51326, baseUnitOfMeasure#51330, unitOfMeasureConversions#51332]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225238]
(692) BroadcastExchange
Input [3]: [internalUUID#51326, baseUnitOfMeasure#51330, unitOfMeasureConversions#51332]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227447]
(693) BroadcastHashJoin
Left keys [1]: [product#51298]
Right keys [1]: [internalUUID#51326]
Join type: LeftOuter
Join condition: None
(694) Project
Output [4]: [product#51298, plant#51299, orderDateTime#51300, filter(unitOfMeasureConversions#51332, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58701) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58702)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51330.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51330.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51337]
Input [8]: [product#51298, plant#51299, orderDateTime#51300, _extract_code#58701, _extract_internalRefUUID#58702, internalUUID#51326, baseUnitOfMeasure#51330, unitOfMeasureConversions#51332]
(695) Generate
Input [4]: [product#51298, plant#51299, orderDateTime#51300, filteredUnitOfMeasureConversions#51337]
Arguments: explode(filteredUnitOfMeasureConversions#51337.quantityNumerator), [product#51298, plant#51299, orderDateTime#51300, filteredUnitOfMeasureConversions#51337], true, [quantityNumerator#51338]
(696) Project
Output [4]: [product#51298, plant#51299, orderDateTime#51300, filteredUnitOfMeasureConversions#51337.quantityDenominator AS _extract_quantityDenominator#58019]
Input [5]: [product#51298, plant#51299, orderDateTime#51300, filteredUnitOfMeasureConversions#51337, quantityNumerator#51338]
(697) Generate
Input [4]: [product#51298, plant#51299, orderDateTime#51300, _extract_quantityDenominator#58019]
Arguments: explode(_extract_quantityDenominator#58019), [product#51298, plant#51299, orderDateTime#51300], true, [quantityDenominator#51339]
(698) Project
Output [3]: [product#51298, plant#51299, orderDateTime#51300]
Input [4]: [product#51298, plant#51299, orderDateTime#51300, quantityDenominator#51339]
(699) Sort
Input [3]: [product#51298, plant#51299, orderDateTime#51300]
Arguments: [product#51298 ASC NULLS FIRST, plant#51299 ASC NULLS FIRST], false, 0
(700) SortMergeJoin
Left keys [2]: [productUuid#51292, plantUuid#51290]
Right keys [2]: [product#51298, plant#51299]
Join type: Inner
Join condition: (calculationDateTime#51286 <= orderDateTime#51300)
(701) Project
Output [4]: [plantUuid#51290 AS plant#51342, productUuid#51292 AS product#51343, storageLocId#51293, calculationDateTime#51286]
Input [7]: [plantUuid#51290, productUuid#51292, calculationDateTime#51286, storageLocId#51293, product#51298, plant#51299, orderDateTime#51300]
(702) HashAggregate
Input [4]: [plant#51342, product#51343, storageLocId#51293, calculationDateTime#51286]
Keys [3]: [plant#51342, product#51343, storageLocId#51293]
Functions [1]: [partial_max(calculationDateTime#51286)]
Aggregate Attributes [1]: [max#53715]
Results [4]: [plant#51342, product#51343, storageLocId#51293, max#53716]
(703) HashAggregate
Input [4]: [plant#51342, product#51343, storageLocId#51293, max#53716]
Keys [3]: [plant#51342, product#51343, storageLocId#51293]
Functions [1]: [max(calculationDateTime#51286)]
Aggregate Attributes [1]: [max(calculationDateTime#51286)#50743]
Results [4]: [plant#51342, product#51343, storageLocId#51293, max(calculationDateTime#51286)#50743 AS max_calc_datetime#51344]
(704) Exchange
Input [4]: [plant#51342, product#51343, storageLocId#51293, max_calc_datetime#51344]
Arguments: hashpartitioning(coalesce(plant#51342, ), isnull(plant#51342), coalesce(product#51343, ), isnull(product#51343), coalesce(storageLocId#51293, ), isnull(storageLocId#51293), coalesce(max_calc_datetime#51344, 1970-01-01 00:00:00), isnull(max_calc_datetime#51344), 10), ENSURE_REQUIREMENTS, [plan_id=227466]
(705) Sort
Input [4]: [plant#51342, product#51343, storageLocId#51293, max_calc_datetime#51344]
Arguments: [coalesce(plant#51342, ) ASC NULLS FIRST, isnull(plant#51342) ASC NULLS FIRST, coalesce(product#51343, ) ASC NULLS FIRST, isnull(product#51343) ASC NULLS FIRST, coalesce(storageLocId#51293, ) ASC NULLS FIRST, isnull(storageLocId#51293) ASC NULLS FIRST, coalesce(max_calc_datetime#51344, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#51344) ASC NULLS FIRST], false, 0
(706) SortMergeJoin
Left keys [8]: [coalesce(plant#51205, ), isnull(plant#51205), coalesce(product#51206, ), isnull(product#51206), coalesce(storageLocId#51156, ), isnull(storageLocId#51156), coalesce(calculationDateTime#51149, 1970-01-01 00:00:00), isnull(calculationDateTime#51149)]
Right keys [8]: [coalesce(plant#51342, ), isnull(plant#51342), coalesce(product#51343, ), isnull(product#51343), coalesce(storageLocId#51293, ), isnull(storageLocId#51293), coalesce(max_calc_datetime#51344, 1970-01-01 00:00:00), isnull(max_calc_datetime#51344)]
Join type: Inner
Join condition: None
(707) Project
Output [4]: [plant#51205, product#51206, calculationDateTime#51149, quantity#51158]
Input [9]: [plant#51205, product#51206, storageLocId#51156, calculationDateTime#51149, quantity#51158, plant#51342, product#51343, storageLocId#51293, max_calc_datetime#51344]
(708) HashAggregate
Input [4]: [plant#51205, product#51206, calculationDateTime#51149, quantity#51158]
Keys [2]: [product#51206, plant#51205]
Functions [2]: [partial_min(calculationDateTime#51149), partial_sum(quantity#51158)]
Aggregate Attributes [2]: [min#53705, sum#53706]
Results [4]: [product#51206, plant#51205, min#53707, sum#53708]
(709) Exchange
Input [4]: [product#51206, plant#51205, min#53707, sum#53708]
Arguments: hashpartitioning(product#51206, plant#51205, 10), ENSURE_REQUIREMENTS, [plan_id=227473]
(710) HashAggregate
Input [4]: [product#51206, plant#51205, min#53707, sum#53708]
Keys [2]: [product#51206, plant#51205]
Functions [2]: [min(calculationDateTime#51149), sum(quantity#51158)]
Aggregate Attributes [2]: [min(calculationDateTime#51149)#50899, sum(quantity#51158)#50898]
Results [4]: [product#51206, plant#51205, min(calculationDateTime#51149)#50899 AS minCalculationDateTime#51346, round(sum(quantity#51158)#50898, 0) AS roundedQuantitySum#51347]
(711) Sort
Input [4]: [product#51206, plant#51205, minCalculationDateTime#51346, roundedQuantitySum#51347]
Arguments: [product#51206 ASC NULLS FIRST, plant#51205 ASC NULLS FIRST], false, 0
(712) SortMergeJoin
Left keys [2]: [product#51026, plant#51027]
Right keys [2]: [product#51206, plant#51205]
Join type: LeftOuter
Join condition: None
(713) Project
Output [8]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, CASE WHEN isnotnull(minCalculationDateTime#51346) THEN minCalculationDateTime#51346 ELSE orderDateTime#51028 END AS stockDatetime#51348, CASE WHEN isnotnull(roundedQuantitySum#51347) THEN array(roundedQuantitySum#51347) ELSE [0.0] END AS stockBatchQuantities#51349]
Input [10]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, product#51206, plant#51205, minCalculationDateTime#51346, roundedQuantitySum#51347]
(714) Filter
Input [9]: [product#50952, plant#50953, demandChannel#50954, demandStream#50955, considerVariance#50956, demandTimeBuckets#50957, demandPointInTimeStart#50958, demandPointInTimeEnd#50959, demandPointInTime#50960]
Condition : (isnotnull(product#50952) AND isnotnull(plant#50953))
(715) BroadcastExchange
Input [9]: [product#50952, plant#50953, demandChannel#50954, demandStream#50955, considerVariance#50956, demandTimeBuckets#50957, demandPointInTimeStart#50958, demandPointInTimeEnd#50959, demandPointInTime#50960]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=227482]
(716) BroadcastHashJoin
Left keys [2]: [product#51026, plant#51027]
Right keys [2]: [product#50952, plant#50953]
Join type: LeftOuter
Join condition: None
(717) Project
Output [9]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, CASE WHEN isnotnull(product#50952) THEN struct(demandChannel, demandChannel#50954, demandStream, demandStream#50955, considerVariance, considerVariance#50956, demandTimeBuckets, demandTimeBuckets#50957, demandPointInTimeStart, demandPointInTimeStart#50958, demandPointInTimeEnd, demandPointInTimeEnd#50959, demandPointInTime, demandPointInTime#50960) END AS rawDemands#50972]
Input [17]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, product#50952, plant#50953, demandChannel#50954, demandStream#50955, considerVariance#50956, demandTimeBuckets#50957, demandPointInTimeStart#50958, demandPointInTimeEnd#50959, demandPointInTime#50960]
(718) ObjectHashAggregate
Input [9]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, rawDemands#50972]
Keys [9]: [product#51026, plant#51027, orderDateTime#51028, knownfloatingpointnormalized(if (isnull(productPlant#51038)) null else named_struct(systemId, productPlant#51038.systemId, internalUUID, productPlant#51038.internalUUID, plant, productPlant#51038.plant, product, productPlant#51038.product, blockedForReplenishmentStartingFrom, productPlant#51038.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#51038.productionAspect)) null else named_struct(productMovementPlants, productPlant#51038.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#51038.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#51038.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#51038.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#51038.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#51038.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#51038.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#51038.salesPlant, listing, productPlant#51038.listing)) AS productPlant#51038, timezonecode#51052, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#51069)) AS outboundUnit#51069, stockDatetime#51348, knownfloatingpointnormalized(transform(stockBatchQuantities#51349, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#59732)), lambda arg#59732, false))) AS stockBatchQuantities#51349, [7226582400000000] AS [7226582400000000]#59731]
Functions [1]: [partial_collect_list(rawDemands#50972, 0, 0)]
Aggregate Attributes [1]: [buf#53703]
Results [10]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, [7226582400000000]#59731, buf#53704]
(719) ObjectHashAggregate
Input [10]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, [7226582400000000]#59731, buf#53704]
Keys [9]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, [7226582400000000]#59731]
Functions [1]: [collect_list(rawDemands#50972, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#50972, 0, 0)#50991]
Results [10]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#51350, collect_list(rawDemands#50972, 0, 0)#50991 AS rawDemands#50973]
(720) DeserializeToObject
Input [10]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, stockBatchShelfLifeEndDatetimes#51350, rawDemands#50973]
Arguments: createexternalrow(invoke(product#51026.toString()), invoke(plant#51027.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#51028)), if (isnull(productPlant#51038)) null else createexternalrow(invoke(productPlant#51038.systemId.toString()), invoke(productPlant#51038.internalUUID.toString()), if (isnull(productPlant#51038.plant)) null else createexternalrow(invoke(productPlant#51038.plant.internalRefUUID.toString()), invoke(productPlant#51038.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#51038.product)) null else createexternalrow(invoke(productPlant#51038.product.internalRefUUID.toString()), invoke(productPlant#51038.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#51038.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#51038.productionAspect)) null else createexternalrow(if (isnull(productPlant#51038.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#51038.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#51038.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#51038.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#51038.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#51038.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#51038.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#51038.salesPlant)) null else createexternalrow(if (isnull(productPlant#51038.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#51038.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#51038.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#51038.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#51052.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#51069)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#51348)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#51349, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#51350, 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#50973, 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#51012: org.apache.spark.sql.Row
(721) MapElements
Input [1]: [obj#51012]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@22994051, obj#51017: org.apache.spark.sql.Row
(722) SerializeFromObject
Input [1]: [obj#51017]
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#51022, 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#51023, 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#51024, 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#51025]
(723) Exchange
Input [4]: [product#51022, plant#51023, dayBucketDemands#51024, pointInTimeDemands#51025]
Arguments: hashpartitioning(coalesce(plant#51023, ), isnull(plant#51023), coalesce(product#51022, ), isnull(product#51022), 10), ENSURE_REQUIREMENTS, [plan_id=227493]
(724) Sort
Input [4]: [product#51022, plant#51023, dayBucketDemands#51024, pointInTimeDemands#51025]
Arguments: [coalesce(plant#51023, ) ASC NULLS FIRST, isnull(plant#51023) ASC NULLS FIRST, coalesce(product#51022, ) ASC NULLS FIRST, isnull(product#51022) ASC NULLS FIRST], false, 0
(725) SortMergeJoin
Left keys [4]: [coalesce(plant#50546, ), isnull(plant#50546), coalesce(product#50545, ), isnull(product#50545)]
Right keys [4]: [coalesce(plant#51023, ), isnull(plant#51023), coalesce(product#51022, ), isnull(product#51022)]
Join type: LeftOuter
Join condition: None
(726) Project
Output [7]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, dayBucketDemands#51024, pointInTimeDemands#51025]
Input [9]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, product#51022, plant#51023, dayBucketDemands#51024, pointInTimeDemands#51025]
(727) Exchange
Input [7]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, dayBucketDemands#51024, pointInTimeDemands#51025]
Arguments: hashpartitioning(product#50545, plant#50546, 10), ENSURE_REQUIREMENTS, [plan_id=227822]
(728) Sort
Input [7]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, dayBucketDemands#51024, pointInTimeDemands#51025]
Arguments: [product#50545 ASC NULLS FIRST, plant#50546 ASC NULLS FIRST], false, 0
(729) InMemoryTableScan
Output [3]: [product#51393, plant#51392, openGoodsMovements#51770]
Arguments: [product#51393, plant#51392, openGoodsMovements#51770], [isnotnull(product#51393), isnotnull(plant#51392)]
(730) InMemoryRelation
Arguments: [product#51393, plant#51392, openGoodsMovements#51770], StorageLevel(disk, memory, 2 replicas)
(731) EmptyRelation
Output [3]: [product#51393, plant#51392, openGoodsMovements#51770]
Arguments: [plan_id=269704]
(732) ResultQueryStage
Output [3]: [product#51393, plant#51392, openGoodsMovements#51770]
Arguments: 110
(733) Scan parquet
Output [2]: [product#50545, plant#50546]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string>
(734) Filter
Input [2]: [product#50545, plant#50546]
Condition : (isnotnull(plant#50546) AND isnotnull(product#50545))
(735) Exchange
Input [2]: [product#50545, plant#50546]
Arguments: hashpartitioning(product#50545, plant#50546, 10), REPARTITION_BY_NUM, [plan_id=220198]
(736) Scan parquet
Output [4]: [plant#50552, product#50553, productionAspect#50555, systemId#50550]
Batched: 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#50552.internalRefUUID AS _extract_internalRefUUID#51926, product#50553.internalRefUUID AS _extract_internalRefUUID#51925, productionAspect#50555.productMovementPlants.unitOfIssue.code AS _extract_code#51927, productionAspect#50555.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#51928]
Input [4]: [plant#50552, product#50553, productionAspect#50555, systemId#50550]
(738) Exchange
Input [4]: [_extract_internalRefUUID#51926, _extract_internalRefUUID#51925, _extract_code#51927, _extract_internalRefUUID#51928]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=219926]
(739) Project
Output [4]: [_extract_code#51927, _extract_internalRefUUID#51928, _extract_internalRefUUID#51925, _extract_internalRefUUID#51926]
Input [4]: [_extract_internalRefUUID#51926, _extract_internalRefUUID#51925, _extract_code#51927, _extract_internalRefUUID#51928]
(740) BroadcastExchange
Input [4]: [_extract_code#51927, _extract_internalRefUUID#51928, _extract_internalRefUUID#51925, _extract_internalRefUUID#51926]
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=220322]
(741) BroadcastHashJoin
Left keys [4]: [coalesce(product#50545, ), isnull(product#50545), coalesce(plant#50546, ), isnull(plant#50546)]
Right keys [4]: [coalesce(_extract_internalRefUUID#51925, ), isnull(_extract_internalRefUUID#51925), coalesce(_extract_internalRefUUID#51926, ), isnull(_extract_internalRefUUID#51926)]
Join type: LeftOuter
Join condition: None
(742) Project
Output [4]: [product#50545, plant#50546, _extract_code#51927, _extract_internalRefUUID#51928]
Input [6]: [product#50545, plant#50546, _extract_code#51927, _extract_internalRefUUID#51928, _extract_internalRefUUID#51925, _extract_internalRefUUID#51926]
(743) Scan parquet
Output [2]: [internalUUID#50563, systemId#50562]
Batched: 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#50563]
Input [2]: [internalUUID#50563, systemId#50562]
(745) Exchange
Input [1]: [internalUUID#50563]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=219932]
(746) BroadcastExchange
Input [1]: [internalUUID#50563]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=220326]
(747) BroadcastHashJoin
Left keys [2]: [coalesce(plant#50546, ), isnull(plant#50546)]
Right keys [2]: [coalesce(internalUUID#50563, ), isnull(internalUUID#50563)]
Join type: LeftOuter
Join condition: None
(748) Project
Output [4]: [product#50545, plant#50546, _extract_code#51927, _extract_internalRefUUID#51928]
Input [5]: [product#50545, plant#50546, _extract_code#51927, _extract_internalRefUUID#51928, internalUUID#50563]
(749) Scan parquet
Output [4]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585, systemId#50578]
Batched: 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#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585, systemId#50578]
Condition : isnotnull(internalUUID#50579)
(751) Project
Output [3]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585]
Input [4]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585, systemId#50578]
(752) Exchange
Input [3]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=219938]
(753) BroadcastExchange
Input [3]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220330]
(754) BroadcastHashJoin
Left keys [1]: [product#50545]
Right keys [1]: [internalUUID#50579]
Join type: LeftOuter
Join condition: None
(755) Project
Output [3]: [product#50545, plant#50546, filter(unitOfMeasureConversions#50585, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#51927) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#51928)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#50583.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#50583.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#50591]
Input [7]: [product#50545, plant#50546, _extract_code#51927, _extract_internalRefUUID#51928, internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585]
(756) Generate
Input [3]: [product#50545, plant#50546, filteredUnitOfMeasureConversions#50591]
Arguments: explode(filteredUnitOfMeasureConversions#50591.quantityNumerator), [product#50545, plant#50546, filteredUnitOfMeasureConversions#50591], true, [quantityNumerator#50599]
(757) Project
Output [3]: [product#50545, plant#50546, filteredUnitOfMeasureConversions#50591.quantityDenominator AS _extract_quantityDenominator#51787]
Input [4]: [product#50545, plant#50546, filteredUnitOfMeasureConversions#50591, quantityNumerator#50599]
(758) Generate
Input [3]: [product#50545, plant#50546, _extract_quantityDenominator#51787]
Arguments: explode(_extract_quantityDenominator#51787), [product#50545, plant#50546], true, [quantityDenominator#50602]
(759) Project
Output [2]: [product#50545, plant#50546]
Input [3]: [product#50545, plant#50546, quantityDenominator#50602]
(760) Exchange
Input [2]: [product#50545, plant#50546]
Arguments: hashpartitioning(coalesce(plant#50546, ), isnull(plant#50546), coalesce(product#50545, ), isnull(product#50545), 10), ENSURE_REQUIREMENTS, [plan_id=220493]
(761) Sort
Input [2]: [product#50545, plant#50546]
Arguments: [coalesce(plant#50546, ) ASC NULLS FIRST, isnull(plant#50546) ASC NULLS FIRST, coalesce(product#50545, ) ASC NULLS FIRST, isnull(product#50545) ASC NULLS FIRST], false, 0
(762) Scan parquet
Output [3]: [product#51026, plant#51027, orderDateTime#51028]
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/10000000006/shardId=0_1_10000000006]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(763) Exchange
Input [3]: [product#51026, plant#51027, orderDateTime#51028]
Arguments: hashpartitioning(product#51026, plant#51027, 10), REPARTITION_BY_NUM, [plan_id=219946]
(764) Scan parquet
Output [8]: [internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037, systemId#51030]
Batched: 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#51030, internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037]
Input [8]: [internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037, systemId#51030]
(766) Exchange
Input [8]: [systemId#51030, internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=219949]
(767) Project
Output [1]: [struct(systemId, systemId#51030, internalUUID, internalUUID#51031, plant, plant#51032, product, product#51033, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#51034, productionAspect, productionAspect#51035, salesPlant, salesPlant#51036, listing, listing#51037) AS productPlant#51038]
Input [8]: [systemId#51030, internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037]
(768) BroadcastExchange
Input [1]: [productPlant#51038]
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=220337]
(769) BroadcastHashJoin
Left keys [4]: [coalesce(product#51026, ), isnull(product#51026), coalesce(plant#51027, ), isnull(plant#51027)]
Right keys [4]: [coalesce(productPlant#51038.product.internalRefUUID, ), isnull(productPlant#51038.product.internalRefUUID), coalesce(productPlant#51038.plant.internalRefUUID, ), isnull(productPlant#51038.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(770) Scan parquet
Output [3]: [internalUUID#51040, address#51046, systemId#51039]
Batched: 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#51040, address#51046.timeZone.code AS timezonecode#51051]
Input [3]: [internalUUID#51040, address#51046, systemId#51039]
(772) Exchange
Input [2]: [internalUUID#51040, timezonecode#51051]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=219954]
(773) BroadcastExchange
Input [2]: [internalUUID#51040, timezonecode#51051]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=220340]
(774) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51027, ), isnull(plant#51027)]
Right keys [2]: [coalesce(internalUUID#51040, ), isnull(internalUUID#51040)]
Join type: LeftOuter
Join condition: None
(775) Project
Output [5]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, CASE WHEN isnotnull(timezonecode#51051) THEN timezonecode#51051 ELSE UTC END AS timezonecode#51052]
Input [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, internalUUID#51040, timezonecode#51051]
(776) Scan parquet
Output [4]: [internalUUID#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060, systemId#51053]
Batched: 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#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060, systemId#51053]
Condition : isnotnull(internalUUID#51054)
(778) Project
Output [3]: [internalUUID#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060]
Input [4]: [internalUUID#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060, systemId#51053]
(779) Exchange
Input [3]: [internalUUID#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=219960]
(780) BroadcastExchange
Input [3]: [internalUUID#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220344]
(781) BroadcastHashJoin
Left keys [1]: [product#51026]
Right keys [1]: [internalUUID#51054]
Join type: LeftOuter
Join condition: None
(782) Project
Output [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, filter(unitOfMeasureConversions#51060, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#51038.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#51038.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51058.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51058.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51065]
Input [8]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, internalUUID#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060]
(783) Project
Output [7]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, filteredUnitOfMeasureConversions#51065.quantityDenominator AS _extract_quantityDenominator#51845, filteredUnitOfMeasureConversions#51065.quantityNumerator AS _extract_quantityNumerator#51846]
Input [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, filteredUnitOfMeasureConversions#51065]
(784) Generate
Input [7]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, _extract_quantityDenominator#51845, _extract_quantityNumerator#51846]
Arguments: explode(_extract_quantityNumerator#51846), [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, _extract_quantityDenominator#51845], true, [quantityNumerator#51066]
(785) Generate
Input [7]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, _extract_quantityDenominator#51845, quantityNumerator#51066]
Arguments: explode(_extract_quantityDenominator#51845), [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, quantityNumerator#51066], true, [quantityDenominator#51067]
(786) Project
Output [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, (cast(quantityNumerator#51066 as double) / cast(quantityDenominator#51067 as double)) AS outboundUnit#51068]
Input [7]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, quantityNumerator#51066, quantityDenominator#51067]
(787) Project
Output [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, CASE WHEN (isnull(outboundUnit#51068) OR (outboundUnit#51068 <= 0.0)) THEN 1.0 ELSE outboundUnit#51068 END AS outboundUnit#51069]
Input [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51068]
(788) Sort
Input [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069]
Arguments: [product#51026 ASC NULLS FIRST, plant#51027 ASC NULLS FIRST], false, 0
(789) Scan parquet
Output [6]: [internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075, systemId#51070]
Batched: 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#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075, systemId#51070]
Condition : (isnotnull(plant#51073.internalRefUUID) AND isnotnull(product#51072.internalRefUUID))
(791) Project
Output [6]: [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075]
Input [6]: [internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075, systemId#51070]
(792) Exchange
Input [6]: [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=219971]
(793) BroadcastExchange
Input [6]: [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075]
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=220376]
(794) Scan parquet
Output [2]: [marketUnit#51076, distributionCenters#51082]
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#51076, distributionCenters#51082]
Condition : (((marketUnit#51076 <=> DIP_1691) AND (size(distributionCenters#51082, true) > 0)) AND isnotnull(distributionCenters#51082))
(796) Project
Output [1]: [distributionCenters#51082]
Input [2]: [marketUnit#51076, distributionCenters#51082]
(797) Exchange
Input [1]: [distributionCenters#51082]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=219975]
(798) Generate
Input [1]: [distributionCenters#51082]
Arguments: explode(distributionCenters#51082), false, [distributionCenters#51098]
(799) Filter
Input [1]: [distributionCenters#51098]
Condition : (((size(distributionCenters#51098.storageLocations, true) > 0) AND isnotnull(distributionCenters#51098.storageLocations)) AND isnotnull(distributionCenters#51098.internalRefUUID))
(800) Project
Output [2]: [distributionCenters#51098.internalRefUUID AS _extract_internalRefUUID#51813, distributionCenters#51098.storageLocations AS _extract_storageLocations#51814]
Input [1]: [distributionCenters#51098]
(801) Generate
Input [2]: [_extract_internalRefUUID#51813, _extract_storageLocations#51814]
Arguments: explode(_extract_storageLocations#51814), [_extract_internalRefUUID#51813], false, [storageLocations#51099]
(802) Project
Output [3]: [_extract_internalRefUUID#51813 AS plantUuid#51101, storageLocations#51099.id AS storageLocId#51102, storageLocations#51099.internalRefUUID AS storageLocUuid#51103]
Input [2]: [_extract_internalRefUUID#51813, storageLocations#51099]
(803) BroadcastExchange
Input [3]: [plantUuid#51101, storageLocId#51102, storageLocUuid#51103]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220372]
(804) Scan parquet
Output [2]: [product#51104, plant#51105]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(805) Filter
Input [2]: [product#51104, plant#51105]
Condition : isnotnull(plant#51105)
(806) Exchange
Input [2]: [product#51104, plant#51105]
Arguments: hashpartitioning(product#51104, plant#51105, 10), REPARTITION_BY_NUM, [plan_id=220209]
(807) Scan parquet
Output [4]: [plant#51110, product#51111, productionAspect#51113, systemId#51108]
Batched: 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#51110.internalRefUUID AS _extract_internalRefUUID#51932, product#51111.internalRefUUID AS _extract_internalRefUUID#51931, productionAspect#51113.productMovementPlants.unitOfIssue.code AS _extract_code#51929, productionAspect#51113.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#51930]
Input [4]: [plant#51110, product#51111, productionAspect#51113, systemId#51108]
(809) Exchange
Input [4]: [_extract_internalRefUUID#51932, _extract_internalRefUUID#51931, _extract_code#51929, _extract_internalRefUUID#51930]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=219987]
(810) Project
Output [4]: [_extract_code#51929, _extract_internalRefUUID#51930, _extract_internalRefUUID#51931, _extract_internalRefUUID#51932]
Input [4]: [_extract_internalRefUUID#51932, _extract_internalRefUUID#51931, _extract_code#51929, _extract_internalRefUUID#51930]
(811) BroadcastExchange
Input [4]: [_extract_code#51929, _extract_internalRefUUID#51930, _extract_internalRefUUID#51931, _extract_internalRefUUID#51932]
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=220352]
(812) BroadcastHashJoin
Left keys [4]: [coalesce(product#51104, ), isnull(product#51104), coalesce(plant#51105, ), isnull(plant#51105)]
Right keys [4]: [coalesce(_extract_internalRefUUID#51931, ), isnull(_extract_internalRefUUID#51931), coalesce(_extract_internalRefUUID#51932, ), isnull(_extract_internalRefUUID#51932)]
Join type: LeftOuter
Join condition: None
(813) Project
Output [4]: [product#51104, plant#51105, _extract_code#51929, _extract_internalRefUUID#51930]
Input [6]: [product#51104, plant#51105, _extract_code#51929, _extract_internalRefUUID#51930, _extract_internalRefUUID#51931, _extract_internalRefUUID#51932]
(814) Scan parquet
Output [2]: [internalUUID#51118, systemId#51117]
Batched: 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#51118]
Input [2]: [internalUUID#51118, systemId#51117]
(816) Exchange
Input [1]: [internalUUID#51118]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=219993]
(817) BroadcastExchange
Input [1]: [internalUUID#51118]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=220356]
(818) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51105, ), isnull(plant#51105)]
Right keys [2]: [coalesce(internalUUID#51118, ), isnull(internalUUID#51118)]
Join type: LeftOuter
Join condition: None
(819) Project
Output [4]: [product#51104, plant#51105, _extract_code#51929, _extract_internalRefUUID#51930]
Input [5]: [product#51104, plant#51105, _extract_code#51929, _extract_internalRefUUID#51930, internalUUID#51118]
(820) Scan parquet
Output [4]: [internalUUID#51132, baseUnitOfMeasure#51136, unitOfMeasureConversions#51138, systemId#51131]
Batched: 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#51132, baseUnitOfMeasure#51136, unitOfMeasureConversions#51138, systemId#51131]
Condition : isnotnull(internalUUID#51132)
(822) Project
Output [3]: [internalUUID#51132, baseUnitOfMeasure#51136, unitOfMeasureConversions#51138]
Input [4]: [internalUUID#51132, baseUnitOfMeasure#51136, unitOfMeasureConversions#51138, systemId#51131]
(823) Exchange
Input [3]: [internalUUID#51132, baseUnitOfMeasure#51136, unitOfMeasureConversions#51138]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=219999]
(824) BroadcastExchange
Input [3]: [internalUUID#51132, baseUnitOfMeasure#51136, unitOfMeasureConversions#51138]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220360]
(825) BroadcastHashJoin
Left keys [1]: [product#51104]
Right keys [1]: [internalUUID#51132]
Join type: LeftOuter
Join condition: None
(826) Project
Output [2]: [plant#51105, filter(unitOfMeasureConversions#51138, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#51929) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#51930)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51136.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51136.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51143]
Input [7]: [product#51104, plant#51105, _extract_code#51929, _extract_internalRefUUID#51930, internalUUID#51132, baseUnitOfMeasure#51136, unitOfMeasureConversions#51138]
(827) Generate
Input [2]: [plant#51105, filteredUnitOfMeasureConversions#51143]
Arguments: explode(filteredUnitOfMeasureConversions#51143.quantityNumerator), [plant#51105, filteredUnitOfMeasureConversions#51143], true, [quantityNumerator#51144]
(828) Project
Output [2]: [plant#51105, filteredUnitOfMeasureConversions#51143.quantityDenominator AS _extract_quantityDenominator#51815]
Input [3]: [plant#51105, filteredUnitOfMeasureConversions#51143, quantityNumerator#51144]
(829) Generate
Input [2]: [plant#51105, _extract_quantityDenominator#51815]
Arguments: explode(_extract_quantityDenominator#51815), [plant#51105], true, [quantityDenominator#51145]
(830) Project
Output [1]: [plant#51105]
Input [2]: [plant#51105, quantityDenominator#51145]
(831) HashAggregate
Input [1]: [plant#51105]
Keys [1]: [plant#51105]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#51105]
(832) Exchange
Input [1]: [plant#51105]
Arguments: hashpartitioning(plant#51105, 10), ENSURE_REQUIREMENTS, [plan_id=220369]
(833) HashAggregate
Input [1]: [plant#51105]
Keys [1]: [plant#51105]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#51105]
(834) BroadcastHashJoin
Left keys [1]: [plantUuid#51101]
Right keys [1]: [plant#51105]
Join type: Inner
Join condition: None
(835) Project
Output [3]: [plantUuid#51101, storageLocId#51102, storageLocUuid#51103]
Input [4]: [plantUuid#51101, storageLocId#51102, storageLocUuid#51103, plant#51105]
(836) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51073.internalRefUUID, ), isnull(plant#51073.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#51101, ), isnull(plantUuid#51101)]
Join type: Inner
Join condition: None
(837) Generate
Input [9]: [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075, plantUuid#51101, storageLocId#51102, storageLocUuid#51103]
Arguments: explode(filter(stockQuantities#51075, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#51103) AND (lambda x#50650.storageLocation.Id = storageLocId#51102)), lambda x#50650, false))), [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, plantUuid#51101], false, [stockQuantity#51148]
(838) ObjectHashAggregate
Input [7]: [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, plantUuid#51101, stockQuantity#51148]
Keys [5]: [plantUuid#51101, internalUUID#51071, plant#51073, product#51072, systemId#51070]
Functions [2]: [partial_first(calculationDateTime#51074, false), partial_collect_list(stockQuantity#51148, 0, 0)]
Aggregate Attributes [3]: [first#53709, valueSet#53710, buf#53711]
Results [8]: [plantUuid#51101, internalUUID#51071, plant#51073, product#51072, systemId#51070, first#53712, valueSet#53713, buf#53714]
(839) ObjectHashAggregate
Input [8]: [plantUuid#51101, internalUUID#51071, plant#51073, product#51072, systemId#51070, first#53712, valueSet#53713, buf#53714]
Keys [5]: [plantUuid#51101, internalUUID#51071, plant#51073, product#51072, systemId#51070]
Functions [2]: [first(calculationDateTime#51074, false), collect_list(stockQuantity#51148, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#51074)()#50665, collect_list(stockQuantity#51148, 0, 0)#50666]
Results [4]: [product#51072, plant#51073, first(calculationDateTime#51074)()#50665 AS calculationDateTime#51149, collect_list(stockQuantity#51148, 0, 0)#50666 AS stockQuantities#51150]
(840) Filter
Input [4]: [product#51072, plant#51073, calculationDateTime#51149, stockQuantities#51150]
Condition : ((size(stockQuantities#51150, true) > 0) AND isnotnull(calculationDateTime#51149))
(841) Generate
Input [4]: [product#51072, plant#51073, calculationDateTime#51149, stockQuantities#51150]
Arguments: explode(stockQuantities#51150), [product#51072, plant#51073, calculationDateTime#51149], false, [stockQuantity#51151]
(842) Filter
Input [4]: [product#51072, plant#51073, calculationDateTime#51149, stockQuantity#51151]
Condition : (((isnotnull(stockQuantity#51151.specialStockIndicator.code) AND isnotnull(stockQuantity#51151.stockType.code)) AND (stockQuantity#51151.specialStockIndicator.code = )) AND (stockQuantity#51151.stockType.code = 01))
(843) Project
Output [5]: [plant#51073.internalRefUUID AS plantUuid#51153, product#51072.internalRefUUID AS productUuid#51155, calculationDateTime#51149, stockQuantity#51151.storagelocation.id AS storageLocId#51156, stockQuantity#51151.quantity.measure AS quantity#51158]
Input [4]: [product#51072, plant#51073, calculationDateTime#51149, stockQuantity#51151]
(844) Exchange
Input [5]: [plantUuid#51153, productUuid#51155, calculationDateTime#51149, storageLocId#51156, quantity#51158]
Arguments: hashpartitioning(productUuid#51155, plantUuid#51153, 10), ENSURE_REQUIREMENTS, [plan_id=220402]
(845) Sort
Input [5]: [plantUuid#51153, productUuid#51155, calculationDateTime#51149, storageLocId#51156, quantity#51158]
Arguments: [productUuid#51155 ASC NULLS FIRST, plantUuid#51153 ASC NULLS FIRST], false, 0
(846) Scan parquet
Output [3]: [product#51161, plant#51162, orderDateTime#51163]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(847) Filter
Input [3]: [product#51161, plant#51162, orderDateTime#51163]
Condition : ((isnotnull(orderDateTime#51163) AND isnotnull(plant#51162)) AND isnotnull(product#51161))
(848) Exchange
Input [3]: [product#51161, plant#51162, orderDateTime#51163]
Arguments: hashpartitioning(product#51161, plant#51162, 10), REPARTITION_BY_NUM, [plan_id=220232]
(849) Scan parquet
Output [4]: [plant#51167, product#51168, productionAspect#51170, systemId#51165]
Batched: 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#51167.internalRefUUID AS _extract_internalRefUUID#51936, product#51168.internalRefUUID AS _extract_internalRefUUID#51935, productionAspect#51170.productMovementPlants.unitOfIssue.code AS _extract_code#51933, productionAspect#51170.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#51934]
Input [4]: [plant#51167, product#51168, productionAspect#51170, systemId#51165]
(851) Exchange
Input [4]: [_extract_internalRefUUID#51936, _extract_internalRefUUID#51935, _extract_code#51933, _extract_internalRefUUID#51934]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220024]
(852) Project
Output [4]: [_extract_code#51933, _extract_internalRefUUID#51934, _extract_internalRefUUID#51935, _extract_internalRefUUID#51936]
Input [4]: [_extract_internalRefUUID#51936, _extract_internalRefUUID#51935, _extract_code#51933, _extract_internalRefUUID#51934]
(853) BroadcastExchange
Input [4]: [_extract_code#51933, _extract_internalRefUUID#51934, _extract_internalRefUUID#51935, _extract_internalRefUUID#51936]
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=220385]
(854) BroadcastHashJoin
Left keys [4]: [coalesce(product#51161, ), isnull(product#51161), coalesce(plant#51162, ), isnull(plant#51162)]
Right keys [4]: [coalesce(_extract_internalRefUUID#51935, ), isnull(_extract_internalRefUUID#51935), coalesce(_extract_internalRefUUID#51936, ), isnull(_extract_internalRefUUID#51936)]
Join type: LeftOuter
Join condition: None
(855) Project
Output [5]: [product#51161, plant#51162, orderDateTime#51163, _extract_code#51933, _extract_internalRefUUID#51934]
Input [7]: [product#51161, plant#51162, orderDateTime#51163, _extract_code#51933, _extract_internalRefUUID#51934, _extract_internalRefUUID#51935, _extract_internalRefUUID#51936]
(856) Scan parquet
Output [2]: [internalUUID#51175, systemId#51174]
Batched: 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#51175]
Input [2]: [internalUUID#51175, systemId#51174]
(858) Exchange
Input [1]: [internalUUID#51175]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220030]
(859) BroadcastExchange
Input [1]: [internalUUID#51175]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=220389]
(860) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51162, ), isnull(plant#51162)]
Right keys [2]: [coalesce(internalUUID#51175, ), isnull(internalUUID#51175)]
Join type: LeftOuter
Join condition: None
(861) Project
Output [5]: [product#51161, plant#51162, orderDateTime#51163, _extract_code#51933, _extract_internalRefUUID#51934]
Input [6]: [product#51161, plant#51162, orderDateTime#51163, _extract_code#51933, _extract_internalRefUUID#51934, internalUUID#51175]
(862) Scan parquet
Output [4]: [internalUUID#51189, baseUnitOfMeasure#51193, unitOfMeasureConversions#51195, systemId#51188]
Batched: 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#51189, baseUnitOfMeasure#51193, unitOfMeasureConversions#51195, systemId#51188]
Condition : isnotnull(internalUUID#51189)
(864) Project
Output [3]: [internalUUID#51189, baseUnitOfMeasure#51193, unitOfMeasureConversions#51195]
Input [4]: [internalUUID#51189, baseUnitOfMeasure#51193, unitOfMeasureConversions#51195, systemId#51188]
(865) Exchange
Input [3]: [internalUUID#51189, baseUnitOfMeasure#51193, unitOfMeasureConversions#51195]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220036]
(866) BroadcastExchange
Input [3]: [internalUUID#51189, baseUnitOfMeasure#51193, unitOfMeasureConversions#51195]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220393]
(867) BroadcastHashJoin
Left keys [1]: [product#51161]
Right keys [1]: [internalUUID#51189]
Join type: LeftOuter
Join condition: None
(868) Project
Output [4]: [product#51161, plant#51162, orderDateTime#51163, filter(unitOfMeasureConversions#51195, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#51933) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#51934)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51193.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51193.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51200]
Input [8]: [product#51161, plant#51162, orderDateTime#51163, _extract_code#51933, _extract_internalRefUUID#51934, internalUUID#51189, baseUnitOfMeasure#51193, unitOfMeasureConversions#51195]
(869) Generate
Input [4]: [product#51161, plant#51162, orderDateTime#51163, filteredUnitOfMeasureConversions#51200]
Arguments: explode(filteredUnitOfMeasureConversions#51200.quantityNumerator), [product#51161, plant#51162, orderDateTime#51163, filteredUnitOfMeasureConversions#51200], true, [quantityNumerator#51201]
(870) Project
Output [4]: [product#51161, plant#51162, orderDateTime#51163, filteredUnitOfMeasureConversions#51200.quantityDenominator AS _extract_quantityDenominator#51819]
Input [5]: [product#51161, plant#51162, orderDateTime#51163, filteredUnitOfMeasureConversions#51200, quantityNumerator#51201]
(871) Generate
Input [4]: [product#51161, plant#51162, orderDateTime#51163, _extract_quantityDenominator#51819]
Arguments: explode(_extract_quantityDenominator#51819), [product#51161, plant#51162, orderDateTime#51163], true, [quantityDenominator#51202]
(872) Project
Output [3]: [product#51161, plant#51162, orderDateTime#51163]
Input [4]: [product#51161, plant#51162, orderDateTime#51163, quantityDenominator#51202]
(873) Sort
Input [3]: [product#51161, plant#51162, orderDateTime#51163]
Arguments: [product#51161 ASC NULLS FIRST, plant#51162 ASC NULLS FIRST], false, 0
(874) SortMergeJoin
Left keys [2]: [productUuid#51155, plantUuid#51153]
Right keys [2]: [product#51161, plant#51162]
Join type: Inner
Join condition: (calculationDateTime#51149 <= orderDateTime#51163)
(875) Project
Output [5]: [plantUuid#51153 AS plant#51205, productUuid#51155 AS product#51206, storageLocId#51156, calculationDateTime#51149, quantity#51158]
Input [8]: [plantUuid#51153, productUuid#51155, calculationDateTime#51149, storageLocId#51156, quantity#51158, product#51161, plant#51162, orderDateTime#51163]
(876) Exchange
Input [5]: [plant#51205, product#51206, storageLocId#51156, calculationDateTime#51149, quantity#51158]
Arguments: hashpartitioning(coalesce(plant#51205, ), isnull(plant#51205), coalesce(product#51206, ), isnull(product#51206), coalesce(storageLocId#51156, ), isnull(storageLocId#51156), coalesce(calculationDateTime#51149, 1970-01-01 00:00:00), isnull(calculationDateTime#51149), 10), ENSURE_REQUIREMENTS, [plan_id=220466]
(877) Sort
Input [5]: [plant#51205, product#51206, storageLocId#51156, calculationDateTime#51149, quantity#51158]
Arguments: [coalesce(plant#51205, ) ASC NULLS FIRST, isnull(plant#51205) ASC NULLS FIRST, coalesce(product#51206, ) ASC NULLS FIRST, isnull(product#51206) ASC NULLS FIRST, coalesce(storageLocId#51156, ) ASC NULLS FIRST, isnull(storageLocId#51156) ASC NULLS FIRST, coalesce(calculationDateTime#51149, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#51149) ASC NULLS FIRST], false, 0
(878) Scan parquet
Output [6]: [internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212, systemId#51207]
Batched: 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#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212, systemId#51207]
Condition : (isnotnull(plant#51210.internalRefUUID) AND isnotnull(product#51209.internalRefUUID))
(880) Project
Output [6]: [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212]
Input [6]: [internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212, systemId#51207]
(881) Exchange
Input [6]: [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220048]
(882) BroadcastExchange
Input [6]: [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212]
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=220431]
(883) Scan parquet
Output [2]: [marketUnit#51213, distributionCenters#51219]
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#51213, distributionCenters#51219]
Condition : (((marketUnit#51213 <=> DIP_1691) AND (size(distributionCenters#51219, true) > 0)) AND isnotnull(distributionCenters#51219))
(885) Project
Output [1]: [distributionCenters#51219]
Input [2]: [marketUnit#51213, distributionCenters#51219]
(886) Exchange
Input [1]: [distributionCenters#51219]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220052]
(887) Generate
Input [1]: [distributionCenters#51219]
Arguments: explode(distributionCenters#51219), false, [distributionCenters#51235]
(888) Filter
Input [1]: [distributionCenters#51235]
Condition : (((size(distributionCenters#51235.storageLocations, true) > 0) AND isnotnull(distributionCenters#51235.storageLocations)) AND isnotnull(distributionCenters#51235.internalRefUUID))
(889) Project
Output [2]: [distributionCenters#51235.internalRefUUID AS _extract_internalRefUUID#51823, distributionCenters#51235.storageLocations AS _extract_storageLocations#51824]
Input [1]: [distributionCenters#51235]
(890) Generate
Input [2]: [_extract_internalRefUUID#51823, _extract_storageLocations#51824]
Arguments: explode(_extract_storageLocations#51824), [_extract_internalRefUUID#51823], false, [storageLocations#51236]
(891) Project
Output [3]: [_extract_internalRefUUID#51823 AS plantUuid#51238, storageLocations#51236.id AS storageLocId#51239, storageLocations#51236.internalRefUUID AS storageLocUuid#51240]
Input [2]: [_extract_internalRefUUID#51823, storageLocations#51236]
(892) BroadcastExchange
Input [3]: [plantUuid#51238, storageLocId#51239, storageLocUuid#51240]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220427]
(893) Scan parquet
Output [2]: [product#51241, plant#51242]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(894) Filter
Input [2]: [product#51241, plant#51242]
Condition : isnotnull(plant#51242)
(895) Exchange
Input [2]: [product#51241, plant#51242]
Arguments: hashpartitioning(product#51241, plant#51242, 10), REPARTITION_BY_NUM, [plan_id=220245]
(896) Scan parquet
Output [4]: [plant#51247, product#51248, productionAspect#51250, systemId#51245]
Batched: 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#51247.internalRefUUID AS _extract_internalRefUUID#51940, product#51248.internalRefUUID AS _extract_internalRefUUID#51937, productionAspect#51250.productMovementPlants.unitOfIssue.code AS _extract_code#51938, productionAspect#51250.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#51939]
Input [4]: [plant#51247, product#51248, productionAspect#51250, systemId#51245]
(898) Exchange
Input [4]: [_extract_internalRefUUID#51940, _extract_internalRefUUID#51937, _extract_code#51938, _extract_internalRefUUID#51939]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220064]
(899) Project
Output [4]: [_extract_code#51938, _extract_internalRefUUID#51939, _extract_internalRefUUID#51937, _extract_internalRefUUID#51940]
Input [4]: [_extract_internalRefUUID#51940, _extract_internalRefUUID#51937, _extract_code#51938, _extract_internalRefUUID#51939]
(900) BroadcastExchange
Input [4]: [_extract_code#51938, _extract_internalRefUUID#51939, _extract_internalRefUUID#51937, _extract_internalRefUUID#51940]
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=220407]
(901) BroadcastHashJoin
Left keys [4]: [coalesce(product#51241, ), isnull(product#51241), coalesce(plant#51242, ), isnull(plant#51242)]
Right keys [4]: [coalesce(_extract_internalRefUUID#51937, ), isnull(_extract_internalRefUUID#51937), coalesce(_extract_internalRefUUID#51940, ), isnull(_extract_internalRefUUID#51940)]
Join type: LeftOuter
Join condition: None
(902) Project
Output [4]: [product#51241, plant#51242, _extract_code#51938, _extract_internalRefUUID#51939]
Input [6]: [product#51241, plant#51242, _extract_code#51938, _extract_internalRefUUID#51939, _extract_internalRefUUID#51937, _extract_internalRefUUID#51940]
(903) Scan parquet
Output [2]: [internalUUID#51255, systemId#51254]
Batched: 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#51255]
Input [2]: [internalUUID#51255, systemId#51254]
(905) Exchange
Input [1]: [internalUUID#51255]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220070]
(906) BroadcastExchange
Input [1]: [internalUUID#51255]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=220411]
(907) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51242, ), isnull(plant#51242)]
Right keys [2]: [coalesce(internalUUID#51255, ), isnull(internalUUID#51255)]
Join type: LeftOuter
Join condition: None
(908) Project
Output [4]: [product#51241, plant#51242, _extract_code#51938, _extract_internalRefUUID#51939]
Input [5]: [product#51241, plant#51242, _extract_code#51938, _extract_internalRefUUID#51939, internalUUID#51255]
(909) Scan parquet
Output [4]: [internalUUID#51269, baseUnitOfMeasure#51273, unitOfMeasureConversions#51275, systemId#51268]
Batched: 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#51269, baseUnitOfMeasure#51273, unitOfMeasureConversions#51275, systemId#51268]
Condition : isnotnull(internalUUID#51269)
(911) Project
Output [3]: [internalUUID#51269, baseUnitOfMeasure#51273, unitOfMeasureConversions#51275]
Input [4]: [internalUUID#51269, baseUnitOfMeasure#51273, unitOfMeasureConversions#51275, systemId#51268]
(912) Exchange
Input [3]: [internalUUID#51269, baseUnitOfMeasure#51273, unitOfMeasureConversions#51275]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220076]
(913) BroadcastExchange
Input [3]: [internalUUID#51269, baseUnitOfMeasure#51273, unitOfMeasureConversions#51275]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220415]
(914) BroadcastHashJoin
Left keys [1]: [product#51241]
Right keys [1]: [internalUUID#51269]
Join type: LeftOuter
Join condition: None
(915) Project
Output [2]: [plant#51242, filter(unitOfMeasureConversions#51275, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#51938) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#51939)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51273.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51273.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51280]
Input [7]: [product#51241, plant#51242, _extract_code#51938, _extract_internalRefUUID#51939, internalUUID#51269, baseUnitOfMeasure#51273, unitOfMeasureConversions#51275]
(916) Generate
Input [2]: [plant#51242, filteredUnitOfMeasureConversions#51280]
Arguments: explode(filteredUnitOfMeasureConversions#51280.quantityNumerator), [plant#51242, filteredUnitOfMeasureConversions#51280], true, [quantityNumerator#51281]
(917) Project
Output [2]: [plant#51242, filteredUnitOfMeasureConversions#51280.quantityDenominator AS _extract_quantityDenominator#51825]
Input [3]: [plant#51242, filteredUnitOfMeasureConversions#51280, quantityNumerator#51281]
(918) Generate
Input [2]: [plant#51242, _extract_quantityDenominator#51825]
Arguments: explode(_extract_quantityDenominator#51825), [plant#51242], true, [quantityDenominator#51282]
(919) Project
Output [1]: [plant#51242]
Input [2]: [plant#51242, quantityDenominator#51282]
(920) HashAggregate
Input [1]: [plant#51242]
Keys [1]: [plant#51242]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#51242]
(921) Exchange
Input [1]: [plant#51242]
Arguments: hashpartitioning(plant#51242, 10), ENSURE_REQUIREMENTS, [plan_id=220424]
(922) HashAggregate
Input [1]: [plant#51242]
Keys [1]: [plant#51242]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#51242]
(923) BroadcastHashJoin
Left keys [1]: [plantUuid#51238]
Right keys [1]: [plant#51242]
Join type: Inner
Join condition: None
(924) Project
Output [3]: [plantUuid#51238, storageLocId#51239, storageLocUuid#51240]
Input [4]: [plantUuid#51238, storageLocId#51239, storageLocUuid#51240, plant#51242]
(925) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51210.internalRefUUID, ), isnull(plant#51210.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#51238, ), isnull(plantUuid#51238)]
Join type: Inner
Join condition: None
(926) Generate
Input [9]: [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212, plantUuid#51238, storageLocId#51239, storageLocUuid#51240]
Arguments: explode(filter(stockQuantities#51212, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#51240) AND (lambda x#50650.storageLocation.Id = storageLocId#51239)), lambda x#50650, false))), [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, plantUuid#51238], false, [stockQuantity#51285]
(927) ObjectHashAggregate
Input [7]: [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, plantUuid#51238, stockQuantity#51285]
Keys [5]: [plantUuid#51238, internalUUID#51208, plant#51210, product#51209, systemId#51207]
Functions [2]: [partial_first(calculationDateTime#51211, false), partial_collect_list(stockQuantity#51285, 0, 0)]
Aggregate Attributes [3]: [first#53717, valueSet#53718, buf#53719]
Results [8]: [plantUuid#51238, internalUUID#51208, plant#51210, product#51209, systemId#51207, first#53720, valueSet#53721, buf#53722]
(928) ObjectHashAggregate
Input [8]: [plantUuid#51238, internalUUID#51208, plant#51210, product#51209, systemId#51207, first#53720, valueSet#53721, buf#53722]
Keys [5]: [plantUuid#51238, internalUUID#51208, plant#51210, product#51209, systemId#51207]
Functions [2]: [first(calculationDateTime#51211, false), collect_list(stockQuantity#51285, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#51211)()#50665, collect_list(stockQuantity#51285, 0, 0)#50666]
Results [4]: [product#51209, plant#51210, first(calculationDateTime#51211)()#50665 AS calculationDateTime#51286, collect_list(stockQuantity#51285, 0, 0)#50666 AS stockQuantities#51287]
(929) Filter
Input [4]: [product#51209, plant#51210, calculationDateTime#51286, stockQuantities#51287]
Condition : ((size(stockQuantities#51287, true) > 0) AND isnotnull(calculationDateTime#51286))
(930) Generate
Input [4]: [product#51209, plant#51210, calculationDateTime#51286, stockQuantities#51287]
Arguments: explode(stockQuantities#51287), [product#51209, plant#51210, calculationDateTime#51286], false, [stockQuantity#51288]
(931) Filter
Input [4]: [product#51209, plant#51210, calculationDateTime#51286, stockQuantity#51288]
Condition : (((isnotnull(stockQuantity#51288.specialStockIndicator.code) AND isnotnull(stockQuantity#51288.stockType.code)) AND (stockQuantity#51288.specialStockIndicator.code = )) AND (stockQuantity#51288.stockType.code = 01))
(932) Project
Output [4]: [plant#51210.internalRefUUID AS plantUuid#51290, product#51209.internalRefUUID AS productUuid#51292, calculationDateTime#51286, stockQuantity#51288.storagelocation.id AS storageLocId#51293]
Input [4]: [product#51209, plant#51210, calculationDateTime#51286, stockQuantity#51288]
(933) Exchange
Input [4]: [plantUuid#51290, productUuid#51292, calculationDateTime#51286, storageLocId#51293]
Arguments: hashpartitioning(productUuid#51292, plantUuid#51290, 10), ENSURE_REQUIREMENTS, [plan_id=220457]
(934) Sort
Input [4]: [plantUuid#51290, productUuid#51292, calculationDateTime#51286, storageLocId#51293]
Arguments: [productUuid#51292 ASC NULLS FIRST, plantUuid#51290 ASC NULLS FIRST], false, 0
(935) Scan parquet
Output [3]: [product#51298, plant#51299, orderDateTime#51300]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(936) Filter
Input [3]: [product#51298, plant#51299, orderDateTime#51300]
Condition : ((isnotnull(orderDateTime#51300) AND isnotnull(plant#51299)) AND isnotnull(product#51298))
(937) Exchange
Input [3]: [product#51298, plant#51299, orderDateTime#51300]
Arguments: hashpartitioning(product#51298, plant#51299, 10), REPARTITION_BY_NUM, [plan_id=220268]
(938) Scan parquet
Output [4]: [plant#51304, product#51305, productionAspect#51307, systemId#51302]
Batched: 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#51304.internalRefUUID AS _extract_internalRefUUID#51941, product#51305.internalRefUUID AS _extract_internalRefUUID#51942, productionAspect#51307.productMovementPlants.unitOfIssue.code AS _extract_code#51943, productionAspect#51307.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#51944]
Input [4]: [plant#51304, product#51305, productionAspect#51307, systemId#51302]
(940) Exchange
Input [4]: [_extract_internalRefUUID#51941, _extract_internalRefUUID#51942, _extract_code#51943, _extract_internalRefUUID#51944]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220101]
(941) Project
Output [4]: [_extract_code#51943, _extract_internalRefUUID#51944, _extract_internalRefUUID#51942, _extract_internalRefUUID#51941]
Input [4]: [_extract_internalRefUUID#51941, _extract_internalRefUUID#51942, _extract_code#51943, _extract_internalRefUUID#51944]
(942) BroadcastExchange
Input [4]: [_extract_code#51943, _extract_internalRefUUID#51944, _extract_internalRefUUID#51942, _extract_internalRefUUID#51941]
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=220440]
(943) BroadcastHashJoin
Left keys [4]: [coalesce(product#51298, ), isnull(product#51298), coalesce(plant#51299, ), isnull(plant#51299)]
Right keys [4]: [coalesce(_extract_internalRefUUID#51942, ), isnull(_extract_internalRefUUID#51942), coalesce(_extract_internalRefUUID#51941, ), isnull(_extract_internalRefUUID#51941)]
Join type: LeftOuter
Join condition: None
(944) Project
Output [5]: [product#51298, plant#51299, orderDateTime#51300, _extract_code#51943, _extract_internalRefUUID#51944]
Input [7]: [product#51298, plant#51299, orderDateTime#51300, _extract_code#51943, _extract_internalRefUUID#51944, _extract_internalRefUUID#51942, _extract_internalRefUUID#51941]
(945) Scan parquet
Output [2]: [internalUUID#51312, systemId#51311]
Batched: 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#51312]
Input [2]: [internalUUID#51312, systemId#51311]
(947) Exchange
Input [1]: [internalUUID#51312]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220107]
(948) BroadcastExchange
Input [1]: [internalUUID#51312]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=220444]
(949) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51299, ), isnull(plant#51299)]
Right keys [2]: [coalesce(internalUUID#51312, ), isnull(internalUUID#51312)]
Join type: LeftOuter
Join condition: None
(950) Project
Output [5]: [product#51298, plant#51299, orderDateTime#51300, _extract_code#51943, _extract_internalRefUUID#51944]
Input [6]: [product#51298, plant#51299, orderDateTime#51300, _extract_code#51943, _extract_internalRefUUID#51944, internalUUID#51312]
(951) Scan parquet
Output [4]: [internalUUID#51326, baseUnitOfMeasure#51330, unitOfMeasureConversions#51332, systemId#51325]
Batched: 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#51326, baseUnitOfMeasure#51330, unitOfMeasureConversions#51332, systemId#51325]
Condition : isnotnull(internalUUID#51326)
(953) Project
Output [3]: [internalUUID#51326, baseUnitOfMeasure#51330, unitOfMeasureConversions#51332]
Input [4]: [internalUUID#51326, baseUnitOfMeasure#51330, unitOfMeasureConversions#51332, systemId#51325]
(954) Exchange
Input [3]: [internalUUID#51326, baseUnitOfMeasure#51330, unitOfMeasureConversions#51332]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220113]
(955) BroadcastExchange
Input [3]: [internalUUID#51326, baseUnitOfMeasure#51330, unitOfMeasureConversions#51332]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220448]
(956) BroadcastHashJoin
Left keys [1]: [product#51298]
Right keys [1]: [internalUUID#51326]
Join type: LeftOuter
Join condition: None
(957) Project
Output [4]: [product#51298, plant#51299, orderDateTime#51300, filter(unitOfMeasureConversions#51332, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#51943) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#51944)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51330.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51330.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51337]
Input [8]: [product#51298, plant#51299, orderDateTime#51300, _extract_code#51943, _extract_internalRefUUID#51944, internalUUID#51326, baseUnitOfMeasure#51330, unitOfMeasureConversions#51332]
(958) Generate
Input [4]: [product#51298, plant#51299, orderDateTime#51300, filteredUnitOfMeasureConversions#51337]
Arguments: explode(filteredUnitOfMeasureConversions#51337.quantityNumerator), [product#51298, plant#51299, orderDateTime#51300, filteredUnitOfMeasureConversions#51337], true, [quantityNumerator#51338]
(959) Project
Output [4]: [product#51298, plant#51299, orderDateTime#51300, filteredUnitOfMeasureConversions#51337.quantityDenominator AS _extract_quantityDenominator#51829]
Input [5]: [product#51298, plant#51299, orderDateTime#51300, filteredUnitOfMeasureConversions#51337, quantityNumerator#51338]
(960) Generate
Input [4]: [product#51298, plant#51299, orderDateTime#51300, _extract_quantityDenominator#51829]
Arguments: explode(_extract_quantityDenominator#51829), [product#51298, plant#51299, orderDateTime#51300], true, [quantityDenominator#51339]
(961) Project
Output [3]: [product#51298, plant#51299, orderDateTime#51300]
Input [4]: [product#51298, plant#51299, orderDateTime#51300, quantityDenominator#51339]
(962) Sort
Input [3]: [product#51298, plant#51299, orderDateTime#51300]
Arguments: [product#51298 ASC NULLS FIRST, plant#51299 ASC NULLS FIRST], false, 0
(963) SortMergeJoin
Left keys [2]: [productUuid#51292, plantUuid#51290]
Right keys [2]: [product#51298, plant#51299]
Join type: Inner
Join condition: (calculationDateTime#51286 <= orderDateTime#51300)
(964) Project
Output [4]: [plantUuid#51290 AS plant#51342, productUuid#51292 AS product#51343, storageLocId#51293, calculationDateTime#51286]
Input [7]: [plantUuid#51290, productUuid#51292, calculationDateTime#51286, storageLocId#51293, product#51298, plant#51299, orderDateTime#51300]
(965) HashAggregate
Input [4]: [plant#51342, product#51343, storageLocId#51293, calculationDateTime#51286]
Keys [3]: [plant#51342, product#51343, storageLocId#51293]
Functions [1]: [partial_max(calculationDateTime#51286)]
Aggregate Attributes [1]: [max#53715]
Results [4]: [plant#51342, product#51343, storageLocId#51293, max#53716]
(966) HashAggregate
Input [4]: [plant#51342, product#51343, storageLocId#51293, max#53716]
Keys [3]: [plant#51342, product#51343, storageLocId#51293]
Functions [1]: [max(calculationDateTime#51286)]
Aggregate Attributes [1]: [max(calculationDateTime#51286)#50743]
Results [4]: [plant#51342, product#51343, storageLocId#51293, max(calculationDateTime#51286)#50743 AS max_calc_datetime#51344]
(967) Exchange
Input [4]: [plant#51342, product#51343, storageLocId#51293, max_calc_datetime#51344]
Arguments: hashpartitioning(coalesce(plant#51342, ), isnull(plant#51342), coalesce(product#51343, ), isnull(product#51343), coalesce(storageLocId#51293, ), isnull(storageLocId#51293), coalesce(max_calc_datetime#51344, 1970-01-01 00:00:00), isnull(max_calc_datetime#51344), 10), ENSURE_REQUIREMENTS, [plan_id=220467]
(968) Sort
Input [4]: [plant#51342, product#51343, storageLocId#51293, max_calc_datetime#51344]
Arguments: [coalesce(plant#51342, ) ASC NULLS FIRST, isnull(plant#51342) ASC NULLS FIRST, coalesce(product#51343, ) ASC NULLS FIRST, isnull(product#51343) ASC NULLS FIRST, coalesce(storageLocId#51293, ) ASC NULLS FIRST, isnull(storageLocId#51293) ASC NULLS FIRST, coalesce(max_calc_datetime#51344, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#51344) ASC NULLS FIRST], false, 0
(969) SortMergeJoin
Left keys [8]: [coalesce(plant#51205, ), isnull(plant#51205), coalesce(product#51206, ), isnull(product#51206), coalesce(storageLocId#51156, ), isnull(storageLocId#51156), coalesce(calculationDateTime#51149, 1970-01-01 00:00:00), isnull(calculationDateTime#51149)]
Right keys [8]: [coalesce(plant#51342, ), isnull(plant#51342), coalesce(product#51343, ), isnull(product#51343), coalesce(storageLocId#51293, ), isnull(storageLocId#51293), coalesce(max_calc_datetime#51344, 1970-01-01 00:00:00), isnull(max_calc_datetime#51344)]
Join type: Inner
Join condition: None
(970) Project
Output [4]: [plant#51205, product#51206, calculationDateTime#51149, quantity#51158]
Input [9]: [plant#51205, product#51206, storageLocId#51156, calculationDateTime#51149, quantity#51158, plant#51342, product#51343, storageLocId#51293, max_calc_datetime#51344]
(971) HashAggregate
Input [4]: [plant#51205, product#51206, calculationDateTime#51149, quantity#51158]
Keys [2]: [product#51206, plant#51205]
Functions [2]: [partial_min(calculationDateTime#51149), partial_sum(quantity#51158)]
Aggregate Attributes [2]: [min#53705, sum#53706]
Results [4]: [product#51206, plant#51205, min#53707, sum#53708]
(972) Exchange
Input [4]: [product#51206, plant#51205, min#53707, sum#53708]
Arguments: hashpartitioning(product#51206, plant#51205, 10), ENSURE_REQUIREMENTS, [plan_id=220474]
(973) HashAggregate
Input [4]: [product#51206, plant#51205, min#53707, sum#53708]
Keys [2]: [product#51206, plant#51205]
Functions [2]: [min(calculationDateTime#51149), sum(quantity#51158)]
Aggregate Attributes [2]: [min(calculationDateTime#51149)#50899, sum(quantity#51158)#50898]
Results [4]: [product#51206, plant#51205, min(calculationDateTime#51149)#50899 AS minCalculationDateTime#51346, round(sum(quantity#51158)#50898, 0) AS roundedQuantitySum#51347]
(974) Sort
Input [4]: [product#51206, plant#51205, minCalculationDateTime#51346, roundedQuantitySum#51347]
Arguments: [product#51206 ASC NULLS FIRST, plant#51205 ASC NULLS FIRST], false, 0
(975) SortMergeJoin
Left keys [2]: [product#51026, plant#51027]
Right keys [2]: [product#51206, plant#51205]
Join type: LeftOuter
Join condition: None
(976) Project
Output [8]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, CASE WHEN isnotnull(minCalculationDateTime#51346) THEN minCalculationDateTime#51346 ELSE orderDateTime#51028 END AS stockDatetime#51348, CASE WHEN isnotnull(roundedQuantitySum#51347) THEN array(roundedQuantitySum#51347) ELSE [0.0] END AS stockBatchQuantities#51349]
Input [10]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, product#51206, plant#51205, minCalculationDateTime#51346, roundedQuantitySum#51347]
(977) Scan parquet
Output [9]: [product#50952, plant#50953, demandChannel#50954, demandStream#50955, considerVariance#50956, demandTimeBuckets#50957, demandPointInTimeStart#50958, demandPointInTimeEnd#50959, demandPointInTime#50960]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000006/0_1_10000000006]
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#50952, plant#50953, demandChannel#50954, demandStream#50955, considerVariance#50956, demandTimeBuckets#50957, demandPointInTimeStart#50958, demandPointInTimeEnd#50959, demandPointInTime#50960]
Condition : (isnotnull(product#50952) AND isnotnull(plant#50953))
(979) BroadcastExchange
Input [9]: [product#50952, plant#50953, demandChannel#50954, demandStream#50955, considerVariance#50956, demandTimeBuckets#50957, demandPointInTimeStart#50958, demandPointInTimeEnd#50959, demandPointInTime#50960]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=220483]
(980) BroadcastHashJoin
Left keys [2]: [product#51026, plant#51027]
Right keys [2]: [product#50952, plant#50953]
Join type: LeftOuter
Join condition: None
(981) Project
Output [9]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, CASE WHEN isnotnull(product#50952) THEN struct(demandChannel, demandChannel#50954, demandStream, demandStream#50955, considerVariance, considerVariance#50956, demandTimeBuckets, demandTimeBuckets#50957, demandPointInTimeStart, demandPointInTimeStart#50958, demandPointInTimeEnd, demandPointInTimeEnd#50959, demandPointInTime, demandPointInTime#50960) END AS rawDemands#50972]
Input [17]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, product#50952, plant#50953, demandChannel#50954, demandStream#50955, considerVariance#50956, demandTimeBuckets#50957, demandPointInTimeStart#50958, demandPointInTimeEnd#50959, demandPointInTime#50960]
(982) ObjectHashAggregate
Input [9]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, rawDemands#50972]
Keys [9]: [product#51026, plant#51027, orderDateTime#51028, knownfloatingpointnormalized(if (isnull(productPlant#51038)) null else named_struct(systemId, productPlant#51038.systemId, internalUUID, productPlant#51038.internalUUID, plant, productPlant#51038.plant, product, productPlant#51038.product, blockedForReplenishmentStartingFrom, productPlant#51038.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#51038.productionAspect)) null else named_struct(productMovementPlants, productPlant#51038.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#51038.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#51038.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#51038.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#51038.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#51038.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#51038.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#51038.salesPlant, listing, productPlant#51038.listing)) AS productPlant#51038, timezonecode#51052, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#51069)) AS outboundUnit#51069, stockDatetime#51348, knownfloatingpointnormalized(transform(stockBatchQuantities#51349, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#53702)), lambda arg#53702, false))) AS stockBatchQuantities#51349, [7226582400000000] AS [7226582400000000]#53701]
Functions [1]: [partial_collect_list(rawDemands#50972, 0, 0)]
Aggregate Attributes [1]: [buf#53703]
Results [10]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, [7226582400000000]#53701, buf#53704]
(983) ObjectHashAggregate
Input [10]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, [7226582400000000]#53701, buf#53704]
Keys [9]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, [7226582400000000]#53701]
Functions [1]: [collect_list(rawDemands#50972, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#50972, 0, 0)#50991]
Results [10]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#51350, collect_list(rawDemands#50972, 0, 0)#50991 AS rawDemands#50973]
(984) DeserializeToObject
Input [10]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, stockBatchShelfLifeEndDatetimes#51350, rawDemands#50973]
Arguments: createexternalrow(invoke(product#51026.toString()), invoke(plant#51027.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#51028)), if (isnull(productPlant#51038)) null else createexternalrow(invoke(productPlant#51038.systemId.toString()), invoke(productPlant#51038.internalUUID.toString()), if (isnull(productPlant#51038.plant)) null else createexternalrow(invoke(productPlant#51038.plant.internalRefUUID.toString()), invoke(productPlant#51038.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#51038.product)) null else createexternalrow(invoke(productPlant#51038.product.internalRefUUID.toString()), invoke(productPlant#51038.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#51038.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#51038.productionAspect)) null else createexternalrow(if (isnull(productPlant#51038.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#51038.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#51038.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#51038.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#51038.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#51038.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#51038.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#51038.salesPlant)) null else createexternalrow(if (isnull(productPlant#51038.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#51038.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#51038.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#51038.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#51052.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#51069)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#51348)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#51349, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#51350, 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#50973, 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#51012: org.apache.spark.sql.Row
(985) MapElements
Input [1]: [obj#51012]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@22994051, obj#51017: org.apache.spark.sql.Row
(986) SerializeFromObject
Input [1]: [obj#51017]
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#51022, 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#51023]
(987) Exchange
Input [2]: [product#51022, plant#51023]
Arguments: hashpartitioning(coalesce(plant#51023, ), isnull(plant#51023), coalesce(product#51022, ), isnull(product#51022), 10), ENSURE_REQUIREMENTS, [plan_id=220494]
(988) Sort
Input [2]: [product#51022, plant#51023]
Arguments: [coalesce(plant#51023, ) ASC NULLS FIRST, isnull(plant#51023) ASC NULLS FIRST, coalesce(product#51022, ) ASC NULLS FIRST, isnull(product#51022) ASC NULLS FIRST], false, 0
(989) SortMergeJoin
Left keys [4]: [coalesce(plant#50546, ), isnull(plant#50546), coalesce(product#50545, ), isnull(product#50545)]
Right keys [4]: [coalesce(plant#51023, ), isnull(plant#51023), coalesce(product#51022, ), isnull(product#51022)]
Join type: LeftOuter
Join condition: None
(990) Project
Output [2]: [product#50545, plant#50546]
Input [4]: [product#50545, plant#50546, product#51022, plant#51023]
(991) Exchange
Input [2]: [product#50545, plant#50546]
Arguments: hashpartitioning(plant#50546, 10), ENSURE_REQUIREMENTS, [plan_id=220524]
(992) Sort
Input [2]: [product#50545, plant#50546]
Arguments: [plant#50546 ASC NULLS FIRST], false, 0
(993) Scan parquet
Output [2]: [marketUnit#51411, distributionCenters#51417]
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#51411, distributionCenters#51417]
Condition : (((marketUnit#51411 <=> DIP_1691) AND (size(distributionCenters#51417, true) > 0)) AND isnotnull(distributionCenters#51417))
(995) Project
Output [1]: [distributionCenters#51417]
Input [2]: [marketUnit#51411, distributionCenters#51417]
(996) Exchange
Input [1]: [distributionCenters#51417]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220145]
(997) Generate
Input [1]: [distributionCenters#51417]
Arguments: explode(distributionCenters#51417), false, [distributionCenters#51433]
(998) Filter
Input [1]: [distributionCenters#51433]
Condition : (((size(distributionCenters#51433.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#51433.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#51433.internalRefUUID))
(999) Project
Output [2]: [distributionCenters#51433.internalRefUUID AS _extract_internalRefUUID#51833, distributionCenters#51433.storageLocations.internalRefUUID AS _extract_internalRefUUID#51946]
Input [1]: [distributionCenters#51433]
(1000) Generate
Input [2]: [_extract_internalRefUUID#51833, _extract_internalRefUUID#51946]
Arguments: explode(_extract_internalRefUUID#51946), [_extract_internalRefUUID#51833], false, [storageLocations#51434]
(1001) Filter
Input [2]: [_extract_internalRefUUID#51833, storageLocations#51434]
Condition : isnotnull(storageLocations#51434)
(1002) Project
Output [2]: [_extract_internalRefUUID#51833 AS plantUuid#51436, storageLocations#51434 AS storageLocUuid#51438]
Input [2]: [_extract_internalRefUUID#51833, storageLocations#51434]
(1003) BroadcastExchange
Input [2]: [plantUuid#51436, storageLocUuid#51438]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220519]
(1004) Scan parquet
Output [2]: [product#51439, plant#51440]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1005) Filter
Input [2]: [product#51439, plant#51440]
Condition : isnotnull(plant#51440)
(1006) Exchange
Input [2]: [product#51439, plant#51440]
Arguments: hashpartitioning(product#51439, plant#51440, 10), REPARTITION_BY_NUM, [plan_id=220298]
(1007) Scan parquet
Output [4]: [plant#51445, product#51446, productionAspect#51448, systemId#51443]
Batched: 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#51445.internalRefUUID AS _extract_internalRefUUID#51948, product#51446.internalRefUUID AS _extract_internalRefUUID#51947, productionAspect#51448.productMovementPlants.unitOfIssue.code AS _extract_code#51949, productionAspect#51448.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#51950]
Input [4]: [plant#51445, product#51446, productionAspect#51448, systemId#51443]
(1009) Exchange
Input [4]: [_extract_internalRefUUID#51948, _extract_internalRefUUID#51947, _extract_code#51949, _extract_internalRefUUID#51950]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220158]
(1010) Project
Output [4]: [_extract_code#51949, _extract_internalRefUUID#51950, _extract_internalRefUUID#51947, _extract_internalRefUUID#51948]
Input [4]: [_extract_internalRefUUID#51948, _extract_internalRefUUID#51947, _extract_code#51949, _extract_internalRefUUID#51950]
(1011) BroadcastExchange
Input [4]: [_extract_code#51949, _extract_internalRefUUID#51950, _extract_internalRefUUID#51947, _extract_internalRefUUID#51948]
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=220499]
(1012) BroadcastHashJoin
Left keys [4]: [coalesce(product#51439, ), isnull(product#51439), coalesce(plant#51440, ), isnull(plant#51440)]
Right keys [4]: [coalesce(_extract_internalRefUUID#51947, ), isnull(_extract_internalRefUUID#51947), coalesce(_extract_internalRefUUID#51948, ), isnull(_extract_internalRefUUID#51948)]
Join type: LeftOuter
Join condition: None
(1013) Project
Output [4]: [product#51439, plant#51440, _extract_code#51949, _extract_internalRefUUID#51950]
Input [6]: [product#51439, plant#51440, _extract_code#51949, _extract_internalRefUUID#51950, _extract_internalRefUUID#51947, _extract_internalRefUUID#51948]
(1014) Scan parquet
Output [2]: [internalUUID#51453, systemId#51452]
Batched: 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#51453]
Input [2]: [internalUUID#51453, systemId#51452]
(1016) Exchange
Input [1]: [internalUUID#51453]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220164]
(1017) BroadcastExchange
Input [1]: [internalUUID#51453]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=220503]
(1018) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51440, ), isnull(plant#51440)]
Right keys [2]: [coalesce(internalUUID#51453, ), isnull(internalUUID#51453)]
Join type: LeftOuter
Join condition: None
(1019) Project
Output [4]: [product#51439, plant#51440, _extract_code#51949, _extract_internalRefUUID#51950]
Input [5]: [product#51439, plant#51440, _extract_code#51949, _extract_internalRefUUID#51950, internalUUID#51453]
(1020) Scan parquet
Output [4]: [internalUUID#51467, baseUnitOfMeasure#51471, unitOfMeasureConversions#51473, systemId#51466]
Batched: 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#51467, baseUnitOfMeasure#51471, unitOfMeasureConversions#51473, systemId#51466]
Condition : isnotnull(internalUUID#51467)
(1022) Project
Output [3]: [internalUUID#51467, baseUnitOfMeasure#51471, unitOfMeasureConversions#51473]
Input [4]: [internalUUID#51467, baseUnitOfMeasure#51471, unitOfMeasureConversions#51473, systemId#51466]
(1023) Exchange
Input [3]: [internalUUID#51467, baseUnitOfMeasure#51471, unitOfMeasureConversions#51473]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220170]
(1024) BroadcastExchange
Input [3]: [internalUUID#51467, baseUnitOfMeasure#51471, unitOfMeasureConversions#51473]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220507]
(1025) BroadcastHashJoin
Left keys [1]: [product#51439]
Right keys [1]: [internalUUID#51467]
Join type: LeftOuter
Join condition: None
(1026) Project
Output [2]: [plant#51440, filter(unitOfMeasureConversions#51473, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#51949) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#51950)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51471.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51471.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51478]
Input [7]: [product#51439, plant#51440, _extract_code#51949, _extract_internalRefUUID#51950, internalUUID#51467, baseUnitOfMeasure#51471, unitOfMeasureConversions#51473]
(1027) Generate
Input [2]: [plant#51440, filteredUnitOfMeasureConversions#51478]
Arguments: explode(filteredUnitOfMeasureConversions#51478.quantityNumerator), [plant#51440, filteredUnitOfMeasureConversions#51478], true, [quantityNumerator#51479]
(1028) Project
Output [2]: [plant#51440, filteredUnitOfMeasureConversions#51478.quantityDenominator AS _extract_quantityDenominator#51835]
Input [3]: [plant#51440, filteredUnitOfMeasureConversions#51478, quantityNumerator#51479]
(1029) Generate
Input [2]: [plant#51440, _extract_quantityDenominator#51835]
Arguments: explode(_extract_quantityDenominator#51835), [plant#51440], true, [quantityDenominator#51480]
(1030) Project
Output [1]: [plant#51440]
Input [2]: [plant#51440, quantityDenominator#51480]
(1031) HashAggregate
Input [1]: [plant#51440]
Keys [1]: [plant#51440]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#51440]
(1032) Exchange
Input [1]: [plant#51440]
Arguments: hashpartitioning(plant#51440, 10), ENSURE_REQUIREMENTS, [plan_id=220516]
(1033) HashAggregate
Input [1]: [plant#51440]
Keys [1]: [plant#51440]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#51440]
(1034) BroadcastHashJoin
Left keys [1]: [plantUuid#51436]
Right keys [1]: [plant#51440]
Join type: Inner
Join condition: None
(1035) Project
Output [2]: [plantUuid#51436 AS plant#51410, storageLocUuid#51438]
Input [3]: [plantUuid#51436, storageLocUuid#51438, plant#51440]
(1036) Sort
Input [2]: [plant#51410, storageLocUuid#51438]
Arguments: [plant#51410 ASC NULLS FIRST], false, 0
(1037) SortMergeJoin
Left keys [1]: [plant#50546]
Right keys [1]: [plant#51410]
Join type: Inner
Join condition: None
(1038) Project
Output [3]: [plant#50546, product#50545, storageLocUuid#51438]
Input [4]: [product#50545, plant#50546, plant#51410, storageLocUuid#51438]
(1039) Scan parquet
Output [5]: [internalUUID#51376, id#51377, isMarkedForDeletion#51382, items#51383, systemId#51375]
Batched: 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#51376, id#51377, isMarkedForDeletion#51382, items#51383, systemId#51375]
Condition : (((isnotnull(isMarkedForDeletion#51382) AND NOT isMarkedForDeletion#51382) AND (size(items#51383, true) > 0)) AND isnotnull(items#51383))
(1041) Project
Output [3]: [internalUUID#51376, id#51377, items#51383]
Input [5]: [internalUUID#51376, id#51377, isMarkedForDeletion#51382, items#51383, systemId#51375]
(1042) Exchange
Input [3]: [internalUUID#51376, id#51377, items#51383]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220186]
(1043) Generate
Input [3]: [internalUUID#51376, id#51377, items#51383]
Arguments: explode(items#51383), [internalUUID#51376, id#51377], false, [item#51387]
(1044) Filter
Input [3]: [internalUUID#51376, id#51377, item#51387]
Condition : ((((isnotnull(item#51387.deletionIndicator) AND isnotnull(item#51387.completeIndicator)) AND isnotnull(item#51387.returnIndicator)) AND ((NOT item#51387.deletionIndicator AND NOT item#51387.completeIndicator) AND NOT item#51387.returnIndicator)) AND ((isnotnull(item#51387.product.internalRefUUID) AND isnotnull(item#51387.plant.internalRefUUID)) AND isnotnull(item#51387.storageLocation.internalRefUUID)))
(1045) Project
Output [11]: [id#51377, internalUUID#51376, item#51387.plant.internalRefUUID AS plant#51392, item#51387.product.internalRefUUID AS product#51393, item#51387.storageLocation.internalRefUUID AS storageLocUuid#51394, item#51387.quantityUnit.code AS quantityUom#51395, item#51387.quantityUnit.internalRefUUID AS quantityUomUuid#51396, item#51387.quantityNumerator AS quantityNumerator#51397, item#51387.quantityDenominator AS quantityDenominator#51398, item#51387.scheduleLines AS scheduleLines#51399, item#51387.confirmations AS confirmations#51400]
Input [3]: [internalUUID#51376, id#51377, item#51387]
(1046) BroadcastExchange
Input [11]: [id#51377, internalUUID#51376, plant#51392, product#51393, storageLocUuid#51394, quantityUom#51395, quantityUomUuid#51396, quantityNumerator#51397, quantityDenominator#51398, scheduleLines#51399, confirmations#51400]
Arguments: HashedRelationBroadcastMode(List(input[3, string, true], input[2, string, true], input[4, string, true]),false), [plan_id=220530]
(1047) BroadcastHashJoin
Left keys [3]: [product#50545, plant#50546, storageLocUuid#51438]
Right keys [3]: [product#51393, plant#51392, storageLocUuid#51394]
Join type: Inner
Join condition: None
(1048) Project
Output [11]: [id#51377, internalUUID#51376, plant#51392, product#51393, quantityUom#51395, quantityUomUuid#51396, quantityNumerator#51397, quantityDenominator#51398, scheduleLines#51399, confirmations#51400, size(filter(confirmations#51400, lambdafunction(((NOT lambda x_22#51761.deletionIndicator AND lambda x_22#51761.isRelevantForConfirmation) AND isnotnull(lambda x_22#51761.confirmedDeliveryAt)), lambda x_22#51761, false)), false) AS _w0#51768]
Input [14]: [plant#50546, product#50545, storageLocUuid#51438, id#51377, internalUUID#51376, plant#51392, product#51393, storageLocUuid#51394, quantityUom#51395, quantityUomUuid#51396, quantityNumerator#51397, quantityDenominator#51398, scheduleLines#51399, confirmations#51400]
(1049) Exchange
Input [11]: [id#51377, internalUUID#51376, plant#51392, product#51393, quantityUom#51395, quantityUomUuid#51396, quantityNumerator#51397, quantityDenominator#51398, scheduleLines#51399, confirmations#51400, _w0#51768]
Arguments: hashpartitioning(internalUUID#51376, 10), ENSURE_REQUIREMENTS, [plan_id=220534]
(1050) Sort
Input [11]: [id#51377, internalUUID#51376, plant#51392, product#51393, quantityUom#51395, quantityUomUuid#51396, quantityNumerator#51397, quantityDenominator#51398, scheduleLines#51399, confirmations#51400, _w0#51768]
Arguments: [internalUUID#51376 ASC NULLS FIRST], false, 0
(1051) Window
Input [11]: [id#51377, internalUUID#51376, plant#51392, product#51393, quantityUom#51395, quantityUomUuid#51396, quantityNumerator#51397, quantityDenominator#51398, scheduleLines#51399, confirmations#51400, _w0#51768]
Arguments: [sum(_w0#51768) windowspecdefinition(internalUUID#51376, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#51769L], [internalUUID#51376]
(1052) Project
Output [3]: [plant#51392, product#51393, filter(transform(CASE WHEN (_we0#51769L > 0) THEN transform(filter(confirmations#51400, lambdafunction(((NOT lambda x_22#51762.deletionIndicator AND lambda x_22#51762.isRelevantForConfirmation) AND isnotnull(lambda x_22#51762.confirmedDeliveryAt)), lambda x_22#51762, false)), lambdafunction(struct(openQty, greatest((lambda x_23#51765.confirmedQuantity - coalesce(lambda x_23#51765.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_23#51765.confirmedDeliveryAt), lambda x_23#51765, false)) ELSE transform(scheduleLines#51399, lambdafunction(struct(openQty, greatest((lambda x_21#51763.quantity - coalesce(lambda x_21#51763.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_21#51763.deliveryAt), lambda x_21#51763, false)) END, lambdafunction(struct(documentId, id#51377, documentUuid, internalUUID#51376, openQty, lambda x_24#51766.openQty, openQtyInBaseUnit, ((lambda x_24#51766.openQty * quantityNumerator#51397) / quantityDenominator#51398), qtyUom, quantityUom#51395, qtyUomUuid, quantityUomUuid#51396, availabilityDatetime, lambda x_24#51766.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_24#51766, false)), lambdafunction(NOT (lambda x_25#51767.openQty = 0.0), lambda x_25#51767, false)) AS openGoodsMovements#51760]
Input [12]: [id#51377, internalUUID#51376, plant#51392, product#51393, quantityUom#51395, quantityUomUuid#51396, quantityNumerator#51397, quantityDenominator#51398, scheduleLines#51399, confirmations#51400, _w0#51768, _we0#51769L]
(1053) ObjectHashAggregate
Input [3]: [plant#51392, product#51393, openGoodsMovements#51760]
Keys [2]: [product#51393, plant#51392]
Functions [1]: [partial_collect_list(openGoodsMovements#51760, 0, 0)]
Aggregate Attributes [1]: [buf#53699]
Results [3]: [product#51393, plant#51392, buf#53700]
(1054) Exchange
Input [3]: [product#51393, plant#51392, buf#53700]
Arguments: hashpartitioning(product#51393, plant#51392, 10), ENSURE_REQUIREMENTS, [plan_id=220540]
(1055) ObjectHashAggregate
Input [3]: [product#51393, plant#51392, buf#53700]
Keys [2]: [product#51393, plant#51392]
Functions [1]: [collect_list(openGoodsMovements#51760, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#51760, 0, 0)#51786]
Results [3]: [product#51393, plant#51392, flatten(collect_list(openGoodsMovements#51760, 0, 0)#51786) AS openGoodsMovements#51770]
(1056) Filter
Input [3]: [product#51393, plant#51392, openGoodsMovements#51770]
Condition : (size(openGoodsMovements#51770, false) > 0)
(1057) AdaptiveSparkPlan
Output [3]: [product#51393, plant#51392, openGoodsMovements#51770]
Arguments: isFinalPlan=true
(1058) Filter
Input [3]: [product#51393, plant#51392, openGoodsMovements#51770]
Condition : (isnotnull(product#51393) AND isnotnull(plant#51392))
(1059) Scan parquet
Output [3]: [product#53767, plant#53768, orderDateTime#53769]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1060) Filter
Input [3]: [product#53767, plant#53768, orderDateTime#53769]
Condition : isnotnull(plant#53768)
(1061) Exchange
Input [3]: [product#53767, plant#53768, orderDateTime#53769]
Arguments: hashpartitioning(product#53767, plant#53768, 10), REPARTITION_BY_NUM, [plan_id=226633]
(1062) Scan parquet
Output [4]: [plant#53773, product#53774, productionAspect#53776, systemId#53771]
Batched: 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#53773.internalRefUUID AS _extract_internalRefUUID#58704, product#53774.internalRefUUID AS _extract_internalRefUUID#58703, productionAspect#53776.productMovementPlants.unitOfIssue.code AS _extract_code#58705, productionAspect#53776.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58706]
Input [4]: [plant#53773, product#53774, productionAspect#53776, systemId#53771]
(1064) Exchange
Input [4]: [_extract_internalRefUUID#58704, _extract_internalRefUUID#58703, _extract_code#58705, _extract_internalRefUUID#58706]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225275]
(1065) Project
Output [4]: [_extract_code#58705, _extract_internalRefUUID#58706, _extract_internalRefUUID#58703, _extract_internalRefUUID#58704]
Input [4]: [_extract_internalRefUUID#58704, _extract_internalRefUUID#58703, _extract_code#58705, _extract_internalRefUUID#58706]
(1066) BroadcastExchange
Input [4]: [_extract_code#58705, _extract_internalRefUUID#58706, _extract_internalRefUUID#58703, _extract_internalRefUUID#58704]
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=227498]
(1067) BroadcastHashJoin
Left keys [4]: [coalesce(product#53767, ), isnull(product#53767), coalesce(plant#53768, ), isnull(plant#53768)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58703, ), isnull(_extract_internalRefUUID#58703), coalesce(_extract_internalRefUUID#58704, ), isnull(_extract_internalRefUUID#58704)]
Join type: LeftOuter
Join condition: None
(1068) Project
Output [5]: [product#53767, plant#53768, orderDateTime#53769, _extract_code#58705, _extract_internalRefUUID#58706]
Input [7]: [product#53767, plant#53768, orderDateTime#53769, _extract_code#58705, _extract_internalRefUUID#58706, _extract_internalRefUUID#58703, _extract_internalRefUUID#58704]
(1069) Scan parquet
Output [2]: [internalUUID#53781, systemId#53780]
Batched: 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#53781]
Input [2]: [internalUUID#53781, systemId#53780]
(1071) Exchange
Input [1]: [internalUUID#53781]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225281]
(1072) BroadcastExchange
Input [1]: [internalUUID#53781]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227502]
(1073) BroadcastHashJoin
Left keys [2]: [coalesce(plant#53768, ), isnull(plant#53768)]
Right keys [2]: [coalesce(internalUUID#53781, ), isnull(internalUUID#53781)]
Join type: LeftOuter
Join condition: None
(1074) Project
Output [5]: [product#53767, plant#53768, orderDateTime#53769, _extract_code#58705, _extract_internalRefUUID#58706]
Input [6]: [product#53767, plant#53768, orderDateTime#53769, _extract_code#58705, _extract_internalRefUUID#58706, internalUUID#53781]
(1075) Scan parquet
Output [4]: [internalUUID#53795, baseUnitOfMeasure#53799, unitOfMeasureConversions#53801, systemId#53794]
Batched: 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#53795, baseUnitOfMeasure#53799, unitOfMeasureConversions#53801, systemId#53794]
Condition : isnotnull(internalUUID#53795)
(1077) Project
Output [3]: [internalUUID#53795, baseUnitOfMeasure#53799, unitOfMeasureConversions#53801]
Input [4]: [internalUUID#53795, baseUnitOfMeasure#53799, unitOfMeasureConversions#53801, systemId#53794]
(1078) Exchange
Input [3]: [internalUUID#53795, baseUnitOfMeasure#53799, unitOfMeasureConversions#53801]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225287]
(1079) BroadcastExchange
Input [3]: [internalUUID#53795, baseUnitOfMeasure#53799, unitOfMeasureConversions#53801]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227506]
(1080) BroadcastHashJoin
Left keys [1]: [product#53767]
Right keys [1]: [internalUUID#53795]
Join type: LeftOuter
Join condition: None
(1081) Project
Output [4]: [product#53767, plant#53768, orderDateTime#53769, filter(unitOfMeasureConversions#53801, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58705) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58706)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#53799.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#53799.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#53806]
Input [8]: [product#53767, plant#53768, orderDateTime#53769, _extract_code#58705, _extract_internalRefUUID#58706, internalUUID#53795, baseUnitOfMeasure#53799, unitOfMeasureConversions#53801]
(1082) Generate
Input [4]: [product#53767, plant#53768, orderDateTime#53769, filteredUnitOfMeasureConversions#53806]
Arguments: explode(filteredUnitOfMeasureConversions#53806.quantityNumerator), [product#53767, plant#53768, orderDateTime#53769, filteredUnitOfMeasureConversions#53806], true, [quantityNumerator#53807]
(1083) Project
Output [4]: [product#53767, plant#53768, orderDateTime#53769, filteredUnitOfMeasureConversions#53806.quantityDenominator AS _extract_quantityDenominator#58023]
Input [5]: [product#53767, plant#53768, orderDateTime#53769, filteredUnitOfMeasureConversions#53806, quantityNumerator#53807]
(1084) Generate
Input [4]: [product#53767, plant#53768, orderDateTime#53769, _extract_quantityDenominator#58023]
Arguments: explode(_extract_quantityDenominator#58023), [product#53767, plant#53768, orderDateTime#53769], true, [quantityDenominator#53808]
(1085) Project
Output [3]: [product#53767, plant#53768, orderDateTime#53769]
Input [4]: [product#53767, plant#53768, orderDateTime#53769, quantityDenominator#53808]
(1086) Sort
Input [3]: [product#53767, plant#53768, orderDateTime#53769]
Arguments: [product#53767 ASC NULLS FIRST, plant#53768 ASC NULLS FIRST], false, 0
(1087) Scan parquet
Output [6]: [internalUUID#53812, product#53813, plant#53814, calculationDateTime#53815, stockQuantities#53816, systemId#53811]
Batched: 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#53812, product#53813, plant#53814, calculationDateTime#53815, stockQuantities#53816, systemId#53811]
Condition : (isnotnull(plant#53814.internalRefUUID) AND isnotnull(product#53813.internalRefUUID))
(1089) Project
Output [6]: [systemId#53811, internalUUID#53812, product#53813, plant#53814, calculationDateTime#53815, stockQuantities#53816]
Input [6]: [internalUUID#53812, product#53813, plant#53814, calculationDateTime#53815, stockQuantities#53816, systemId#53811]
(1090) Exchange
Input [6]: [systemId#53811, internalUUID#53812, product#53813, plant#53814, calculationDateTime#53815, stockQuantities#53816]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225297]
(1091) BroadcastExchange
Input [6]: [systemId#53811, internalUUID#53812, product#53813, plant#53814, calculationDateTime#53815, stockQuantities#53816]
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=227537]
(1092) Scan parquet
Output [2]: [marketUnit#53817, distributionCenters#53823]
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#53817, distributionCenters#53823]
Condition : (((marketUnit#53817 <=> DIP_1691) AND (size(distributionCenters#53823, true) > 0)) AND isnotnull(distributionCenters#53823))
(1094) Project
Output [1]: [distributionCenters#53823]
Input [2]: [marketUnit#53817, distributionCenters#53823]
(1095) Exchange
Input [1]: [distributionCenters#53823]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225301]
(1096) Generate
Input [1]: [distributionCenters#53823]
Arguments: explode(distributionCenters#53823), false, [distributionCenters#53839]
(1097) Filter
Input [1]: [distributionCenters#53839]
Condition : (((size(distributionCenters#53839.storageLocations, true) > 0) AND isnotnull(distributionCenters#53839.storageLocations)) AND isnotnull(distributionCenters#53839.internalRefUUID))
(1098) Project
Output [2]: [distributionCenters#53839.internalRefUUID AS _extract_internalRefUUID#58027, distributionCenters#53839.storageLocations AS _extract_storageLocations#58028]
Input [1]: [distributionCenters#53839]
(1099) Generate
Input [2]: [_extract_internalRefUUID#58027, _extract_storageLocations#58028]
Arguments: explode(_extract_storageLocations#58028), [_extract_internalRefUUID#58027], false, [storageLocations#53840]
(1100) Project
Output [3]: [_extract_internalRefUUID#58027 AS plantUuid#53842, storageLocations#53840.id AS storageLocId#53843, storageLocations#53840.internalRefUUID AS storageLocUuid#53844]
Input [2]: [_extract_internalRefUUID#58027, storageLocations#53840]
(1101) BroadcastExchange
Input [3]: [plantUuid#53842, storageLocId#53843, storageLocUuid#53844]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227533]
(1102) Scan parquet
Output [2]: [product#53845, plant#53846]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1103) Filter
Input [2]: [product#53845, plant#53846]
Condition : isnotnull(plant#53846)
(1104) Exchange
Input [2]: [product#53845, plant#53846]
Arguments: hashpartitioning(product#53845, plant#53846, 10), REPARTITION_BY_NUM, [plan_id=226644]
(1105) Scan parquet
Output [4]: [plant#53851, product#53852, productionAspect#53854, systemId#53849]
Batched: 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#53851.internalRefUUID AS _extract_internalRefUUID#58710, product#53852.internalRefUUID AS _extract_internalRefUUID#58709, productionAspect#53854.productMovementPlants.unitOfIssue.code AS _extract_code#58707, productionAspect#53854.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58708]
Input [4]: [plant#53851, product#53852, productionAspect#53854, systemId#53849]
(1107) Exchange
Input [4]: [_extract_internalRefUUID#58710, _extract_internalRefUUID#58709, _extract_code#58707, _extract_internalRefUUID#58708]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225313]
(1108) Project
Output [4]: [_extract_code#58707, _extract_internalRefUUID#58708, _extract_internalRefUUID#58709, _extract_internalRefUUID#58710]
Input [4]: [_extract_internalRefUUID#58710, _extract_internalRefUUID#58709, _extract_code#58707, _extract_internalRefUUID#58708]
(1109) BroadcastExchange
Input [4]: [_extract_code#58707, _extract_internalRefUUID#58708, _extract_internalRefUUID#58709, _extract_internalRefUUID#58710]
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=227513]
(1110) BroadcastHashJoin
Left keys [4]: [coalesce(product#53845, ), isnull(product#53845), coalesce(plant#53846, ), isnull(plant#53846)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58709, ), isnull(_extract_internalRefUUID#58709), coalesce(_extract_internalRefUUID#58710, ), isnull(_extract_internalRefUUID#58710)]
Join type: LeftOuter
Join condition: None
(1111) Project
Output [4]: [product#53845, plant#53846, _extract_code#58707, _extract_internalRefUUID#58708]
Input [6]: [product#53845, plant#53846, _extract_code#58707, _extract_internalRefUUID#58708, _extract_internalRefUUID#58709, _extract_internalRefUUID#58710]
(1112) Scan parquet
Output [2]: [internalUUID#53859, systemId#53858]
Batched: 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#53859]
Input [2]: [internalUUID#53859, systemId#53858]
(1114) Exchange
Input [1]: [internalUUID#53859]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225319]
(1115) BroadcastExchange
Input [1]: [internalUUID#53859]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227517]
(1116) BroadcastHashJoin
Left keys [2]: [coalesce(plant#53846, ), isnull(plant#53846)]
Right keys [2]: [coalesce(internalUUID#53859, ), isnull(internalUUID#53859)]
Join type: LeftOuter
Join condition: None
(1117) Project
Output [4]: [product#53845, plant#53846, _extract_code#58707, _extract_internalRefUUID#58708]
Input [5]: [product#53845, plant#53846, _extract_code#58707, _extract_internalRefUUID#58708, internalUUID#53859]
(1118) Scan parquet
Output [4]: [internalUUID#53873, baseUnitOfMeasure#53877, unitOfMeasureConversions#53879, systemId#53872]
Batched: 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#53873, baseUnitOfMeasure#53877, unitOfMeasureConversions#53879, systemId#53872]
Condition : isnotnull(internalUUID#53873)
(1120) Project
Output [3]: [internalUUID#53873, baseUnitOfMeasure#53877, unitOfMeasureConversions#53879]
Input [4]: [internalUUID#53873, baseUnitOfMeasure#53877, unitOfMeasureConversions#53879, systemId#53872]
(1121) Exchange
Input [3]: [internalUUID#53873, baseUnitOfMeasure#53877, unitOfMeasureConversions#53879]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225325]
(1122) BroadcastExchange
Input [3]: [internalUUID#53873, baseUnitOfMeasure#53877, unitOfMeasureConversions#53879]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227521]
(1123) BroadcastHashJoin
Left keys [1]: [product#53845]
Right keys [1]: [internalUUID#53873]
Join type: LeftOuter
Join condition: None
(1124) Project
Output [2]: [plant#53846, filter(unitOfMeasureConversions#53879, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58707) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58708)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#53877.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#53877.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#53884]
Input [7]: [product#53845, plant#53846, _extract_code#58707, _extract_internalRefUUID#58708, internalUUID#53873, baseUnitOfMeasure#53877, unitOfMeasureConversions#53879]
(1125) Generate
Input [2]: [plant#53846, filteredUnitOfMeasureConversions#53884]
Arguments: explode(filteredUnitOfMeasureConversions#53884.quantityNumerator), [plant#53846, filteredUnitOfMeasureConversions#53884], true, [quantityNumerator#53885]
(1126) Project
Output [2]: [plant#53846, filteredUnitOfMeasureConversions#53884.quantityDenominator AS _extract_quantityDenominator#58029]
Input [3]: [plant#53846, filteredUnitOfMeasureConversions#53884, quantityNumerator#53885]
(1127) Generate
Input [2]: [plant#53846, _extract_quantityDenominator#58029]
Arguments: explode(_extract_quantityDenominator#58029), [plant#53846], true, [quantityDenominator#53886]
(1128) Project
Output [1]: [plant#53846]
Input [2]: [plant#53846, quantityDenominator#53886]
(1129) HashAggregate
Input [1]: [plant#53846]
Keys [1]: [plant#53846]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#53846]
(1130) Exchange
Input [1]: [plant#53846]
Arguments: hashpartitioning(plant#53846, 10), ENSURE_REQUIREMENTS, [plan_id=227530]
(1131) HashAggregate
Input [1]: [plant#53846]
Keys [1]: [plant#53846]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#53846]
(1132) BroadcastHashJoin
Left keys [1]: [plantUuid#53842]
Right keys [1]: [plant#53846]
Join type: Inner
Join condition: None
(1133) Project
Output [3]: [plantUuid#53842, storageLocId#53843, storageLocUuid#53844]
Input [4]: [plantUuid#53842, storageLocId#53843, storageLocUuid#53844, plant#53846]
(1134) BroadcastHashJoin
Left keys [2]: [coalesce(plant#53814.internalRefUUID, ), isnull(plant#53814.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#53842, ), isnull(plantUuid#53842)]
Join type: Inner
Join condition: None
(1135) Generate
Input [9]: [systemId#53811, internalUUID#53812, product#53813, plant#53814, calculationDateTime#53815, stockQuantities#53816, plantUuid#53842, storageLocId#53843, storageLocUuid#53844]
Arguments: explode(filter(stockQuantities#53816, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#53844) AND (lambda x#50650.storageLocation.Id = storageLocId#53843)), lambda x#50650, false))), [systemId#53811, internalUUID#53812, product#53813, plant#53814, calculationDateTime#53815, plantUuid#53842], false, [stockQuantity#53889]
(1136) ObjectHashAggregate
Input [7]: [systemId#53811, internalUUID#53812, product#53813, plant#53814, calculationDateTime#53815, plantUuid#53842, stockQuantity#53889]
Keys [5]: [plantUuid#53842, internalUUID#53812, plant#53814, product#53813, systemId#53811]
Functions [2]: [partial_first(calculationDateTime#53815, false), partial_collect_list(stockQuantity#53889, 0, 0)]
Aggregate Attributes [3]: [first#59739, valueSet#59740, buf#59741]
Results [8]: [plantUuid#53842, internalUUID#53812, plant#53814, product#53813, systemId#53811, first#59742, valueSet#59743, buf#59744]
(1137) ObjectHashAggregate
Input [8]: [plantUuid#53842, internalUUID#53812, plant#53814, product#53813, systemId#53811, first#59742, valueSet#59743, buf#59744]
Keys [5]: [plantUuid#53842, internalUUID#53812, plant#53814, product#53813, systemId#53811]
Functions [2]: [first(calculationDateTime#53815, false), collect_list(stockQuantity#53889, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#53815)()#50665, collect_list(stockQuantity#53889, 0, 0)#50666]
Results [4]: [product#53813, plant#53814, first(calculationDateTime#53815)()#50665 AS calculationDateTime#53890, collect_list(stockQuantity#53889, 0, 0)#50666 AS stockQuantities#53891]
(1138) Filter
Input [4]: [product#53813, plant#53814, calculationDateTime#53890, stockQuantities#53891]
Condition : ((size(stockQuantities#53891, true) > 0) AND isnotnull(calculationDateTime#53890))
(1139) Generate
Input [4]: [product#53813, plant#53814, calculationDateTime#53890, stockQuantities#53891]
Arguments: explode(stockQuantities#53891), [product#53813, plant#53814, calculationDateTime#53890], false, [stockQuantity#53892]
(1140) Filter
Input [4]: [product#53813, plant#53814, calculationDateTime#53890, stockQuantity#53892]
Condition : (((isnotnull(stockQuantity#53892.specialStockIndicator.code) AND isnotnull(stockQuantity#53892.stockType.code)) AND (stockQuantity#53892.specialStockIndicator.code = )) AND (stockQuantity#53892.stockType.code = 01))
(1141) Project
Output [4]: [plant#53814.internalRefUUID AS plantUuid#53894, product#53813.internalRefUUID AS productUuid#53896, calculationDateTime#53890, stockQuantity#53892.storagelocation.id AS storageLocId#53897]
Input [4]: [product#53813, plant#53814, calculationDateTime#53890, stockQuantity#53892]
(1142) Exchange
Input [4]: [plantUuid#53894, productUuid#53896, calculationDateTime#53890, storageLocId#53897]
Arguments: hashpartitioning(productUuid#53896, plantUuid#53894, 10), ENSURE_REQUIREMENTS, [plan_id=227563]
(1143) Sort
Input [4]: [plantUuid#53894, productUuid#53896, calculationDateTime#53890, storageLocId#53897]
Arguments: [productUuid#53896 ASC NULLS FIRST, plantUuid#53894 ASC NULLS FIRST], false, 0
(1144) Scan parquet
Output [3]: [product#53902, plant#53903, orderDateTime#53904]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1145) Filter
Input [3]: [product#53902, plant#53903, orderDateTime#53904]
Condition : ((isnotnull(orderDateTime#53904) AND isnotnull(plant#53903)) AND isnotnull(product#53902))
(1146) Exchange
Input [3]: [product#53902, plant#53903, orderDateTime#53904]
Arguments: hashpartitioning(product#53902, plant#53903, 10), REPARTITION_BY_NUM, [plan_id=226667]
(1147) Scan parquet
Output [4]: [plant#53908, product#53909, productionAspect#53911, systemId#53906]
Batched: 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#53908.internalRefUUID AS _extract_internalRefUUID#58712, product#53909.internalRefUUID AS _extract_internalRefUUID#58711, productionAspect#53911.productMovementPlants.unitOfIssue.code AS _extract_code#58713, productionAspect#53911.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58714]
Input [4]: [plant#53908, product#53909, productionAspect#53911, systemId#53906]
(1149) Exchange
Input [4]: [_extract_internalRefUUID#58712, _extract_internalRefUUID#58711, _extract_code#58713, _extract_internalRefUUID#58714]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225350]
(1150) Project
Output [4]: [_extract_code#58713, _extract_internalRefUUID#58714, _extract_internalRefUUID#58711, _extract_internalRefUUID#58712]
Input [4]: [_extract_internalRefUUID#58712, _extract_internalRefUUID#58711, _extract_code#58713, _extract_internalRefUUID#58714]
(1151) BroadcastExchange
Input [4]: [_extract_code#58713, _extract_internalRefUUID#58714, _extract_internalRefUUID#58711, _extract_internalRefUUID#58712]
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=227546]
(1152) BroadcastHashJoin
Left keys [4]: [coalesce(product#53902, ), isnull(product#53902), coalesce(plant#53903, ), isnull(plant#53903)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58711, ), isnull(_extract_internalRefUUID#58711), coalesce(_extract_internalRefUUID#58712, ), isnull(_extract_internalRefUUID#58712)]
Join type: LeftOuter
Join condition: None
(1153) Project
Output [5]: [product#53902, plant#53903, orderDateTime#53904, _extract_code#58713, _extract_internalRefUUID#58714]
Input [7]: [product#53902, plant#53903, orderDateTime#53904, _extract_code#58713, _extract_internalRefUUID#58714, _extract_internalRefUUID#58711, _extract_internalRefUUID#58712]
(1154) Scan parquet
Output [2]: [internalUUID#53916, systemId#53915]
Batched: 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#53916]
Input [2]: [internalUUID#53916, systemId#53915]
(1156) Exchange
Input [1]: [internalUUID#53916]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225356]
(1157) BroadcastExchange
Input [1]: [internalUUID#53916]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227550]
(1158) BroadcastHashJoin
Left keys [2]: [coalesce(plant#53903, ), isnull(plant#53903)]
Right keys [2]: [coalesce(internalUUID#53916, ), isnull(internalUUID#53916)]
Join type: LeftOuter
Join condition: None
(1159) Project
Output [5]: [product#53902, plant#53903, orderDateTime#53904, _extract_code#58713, _extract_internalRefUUID#58714]
Input [6]: [product#53902, plant#53903, orderDateTime#53904, _extract_code#58713, _extract_internalRefUUID#58714, internalUUID#53916]
(1160) Scan parquet
Output [4]: [internalUUID#53930, baseUnitOfMeasure#53934, unitOfMeasureConversions#53936, systemId#53929]
Batched: 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#53930, baseUnitOfMeasure#53934, unitOfMeasureConversions#53936, systemId#53929]
Condition : isnotnull(internalUUID#53930)
(1162) Project
Output [3]: [internalUUID#53930, baseUnitOfMeasure#53934, unitOfMeasureConversions#53936]
Input [4]: [internalUUID#53930, baseUnitOfMeasure#53934, unitOfMeasureConversions#53936, systemId#53929]
(1163) Exchange
Input [3]: [internalUUID#53930, baseUnitOfMeasure#53934, unitOfMeasureConversions#53936]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225362]
(1164) BroadcastExchange
Input [3]: [internalUUID#53930, baseUnitOfMeasure#53934, unitOfMeasureConversions#53936]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227554]
(1165) BroadcastHashJoin
Left keys [1]: [product#53902]
Right keys [1]: [internalUUID#53930]
Join type: LeftOuter
Join condition: None
(1166) Project
Output [4]: [product#53902, plant#53903, orderDateTime#53904, filter(unitOfMeasureConversions#53936, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58713) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58714)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#53934.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#53934.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#53941]
Input [8]: [product#53902, plant#53903, orderDateTime#53904, _extract_code#58713, _extract_internalRefUUID#58714, internalUUID#53930, baseUnitOfMeasure#53934, unitOfMeasureConversions#53936]
(1167) Generate
Input [4]: [product#53902, plant#53903, orderDateTime#53904, filteredUnitOfMeasureConversions#53941]
Arguments: explode(filteredUnitOfMeasureConversions#53941.quantityNumerator), [product#53902, plant#53903, orderDateTime#53904, filteredUnitOfMeasureConversions#53941], true, [quantityNumerator#53942]
(1168) Project
Output [4]: [product#53902, plant#53903, orderDateTime#53904, filteredUnitOfMeasureConversions#53941.quantityDenominator AS _extract_quantityDenominator#58033]
Input [5]: [product#53902, plant#53903, orderDateTime#53904, filteredUnitOfMeasureConversions#53941, quantityNumerator#53942]
(1169) Generate
Input [4]: [product#53902, plant#53903, orderDateTime#53904, _extract_quantityDenominator#58033]
Arguments: explode(_extract_quantityDenominator#58033), [product#53902, plant#53903, orderDateTime#53904], true, [quantityDenominator#53943]
(1170) Project
Output [3]: [product#53902, plant#53903, orderDateTime#53904]
Input [4]: [product#53902, plant#53903, orderDateTime#53904, quantityDenominator#53943]
(1171) Sort
Input [3]: [product#53902, plant#53903, orderDateTime#53904]
Arguments: [product#53902 ASC NULLS FIRST, plant#53903 ASC NULLS FIRST], false, 0
(1172) SortMergeJoin
Left keys [2]: [productUuid#53896, plantUuid#53894]
Right keys [2]: [product#53902, plant#53903]
Join type: Inner
Join condition: (calculationDateTime#53890 <= orderDateTime#53904)
(1173) Project
Output [4]: [plantUuid#53894 AS plant#53946, productUuid#53896 AS product#53947, storageLocId#53897, calculationDateTime#53890]
Input [7]: [plantUuid#53894, productUuid#53896, calculationDateTime#53890, storageLocId#53897, product#53902, plant#53903, orderDateTime#53904]
(1174) Exchange
Input [4]: [plant#53946, product#53947, storageLocId#53897, calculationDateTime#53890]
Arguments: hashpartitioning(coalesce(plant#53946, ), isnull(plant#53946), coalesce(product#53947, ), isnull(product#53947), coalesce(storageLocId#53897, ), isnull(storageLocId#53897), coalesce(calculationDateTime#53890, 1970-01-01 00:00:00), isnull(calculationDateTime#53890), 10), ENSURE_REQUIREMENTS, [plan_id=227627]
(1175) Sort
Input [4]: [plant#53946, product#53947, storageLocId#53897, calculationDateTime#53890]
Arguments: [coalesce(plant#53946, ) ASC NULLS FIRST, isnull(plant#53946) ASC NULLS FIRST, coalesce(product#53947, ) ASC NULLS FIRST, isnull(product#53947) ASC NULLS FIRST, coalesce(storageLocId#53897, ) ASC NULLS FIRST, isnull(storageLocId#53897) ASC NULLS FIRST, coalesce(calculationDateTime#53890, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#53890) ASC NULLS FIRST], false, 0
(1176) Scan parquet
Output [6]: [internalUUID#53949, product#53950, plant#53951, calculationDateTime#53952, stockQuantities#53953, systemId#53948]
Batched: 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#53949, product#53950, plant#53951, calculationDateTime#53952, stockQuantities#53953, systemId#53948]
Condition : (isnotnull(plant#53951.internalRefUUID) AND isnotnull(product#53950.internalRefUUID))
(1178) Project
Output [6]: [systemId#53948, internalUUID#53949, product#53950, plant#53951, calculationDateTime#53952, stockQuantities#53953]
Input [6]: [internalUUID#53949, product#53950, plant#53951, calculationDateTime#53952, stockQuantities#53953, systemId#53948]
(1179) Exchange
Input [6]: [systemId#53948, internalUUID#53949, product#53950, plant#53951, calculationDateTime#53952, stockQuantities#53953]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225374]
(1180) BroadcastExchange
Input [6]: [systemId#53948, internalUUID#53949, product#53950, plant#53951, calculationDateTime#53952, stockQuantities#53953]
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=227592]
(1181) Scan parquet
Output [2]: [marketUnit#53954, distributionCenters#53960]
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#53954, distributionCenters#53960]
Condition : (((marketUnit#53954 <=> DIP_1691) AND (size(distributionCenters#53960, true) > 0)) AND isnotnull(distributionCenters#53960))
(1183) Project
Output [1]: [distributionCenters#53960]
Input [2]: [marketUnit#53954, distributionCenters#53960]
(1184) Exchange
Input [1]: [distributionCenters#53960]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225378]
(1185) Generate
Input [1]: [distributionCenters#53960]
Arguments: explode(distributionCenters#53960), false, [distributionCenters#53976]
(1186) Filter
Input [1]: [distributionCenters#53976]
Condition : (((size(distributionCenters#53976.storageLocations, true) > 0) AND isnotnull(distributionCenters#53976.storageLocations)) AND isnotnull(distributionCenters#53976.internalRefUUID))
(1187) Project
Output [2]: [distributionCenters#53976.internalRefUUID AS _extract_internalRefUUID#58037, distributionCenters#53976.storageLocations AS _extract_storageLocations#58038]
Input [1]: [distributionCenters#53976]
(1188) Generate
Input [2]: [_extract_internalRefUUID#58037, _extract_storageLocations#58038]
Arguments: explode(_extract_storageLocations#58038), [_extract_internalRefUUID#58037], false, [storageLocations#53977]
(1189) Project
Output [3]: [_extract_internalRefUUID#58037 AS plantUuid#53979, storageLocations#53977.id AS storageLocId#53980, storageLocations#53977.internalRefUUID AS storageLocUuid#53981]
Input [2]: [_extract_internalRefUUID#58037, storageLocations#53977]
(1190) BroadcastExchange
Input [3]: [plantUuid#53979, storageLocId#53980, storageLocUuid#53981]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227588]
(1191) Scan parquet
Output [2]: [product#53982, plant#53983]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1192) Filter
Input [2]: [product#53982, plant#53983]
Condition : isnotnull(plant#53983)
(1193) Exchange
Input [2]: [product#53982, plant#53983]
Arguments: hashpartitioning(product#53982, plant#53983, 10), REPARTITION_BY_NUM, [plan_id=226680]
(1194) Scan parquet
Output [4]: [plant#53988, product#53989, productionAspect#53991, systemId#53986]
Batched: 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#53988.internalRefUUID AS _extract_internalRefUUID#58718, product#53989.internalRefUUID AS _extract_internalRefUUID#58717, productionAspect#53991.productMovementPlants.unitOfIssue.code AS _extract_code#58715, productionAspect#53991.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58716]
Input [4]: [plant#53988, product#53989, productionAspect#53991, systemId#53986]
(1196) Exchange
Input [4]: [_extract_internalRefUUID#58718, _extract_internalRefUUID#58717, _extract_code#58715, _extract_internalRefUUID#58716]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225390]
(1197) Project
Output [4]: [_extract_code#58715, _extract_internalRefUUID#58716, _extract_internalRefUUID#58717, _extract_internalRefUUID#58718]
Input [4]: [_extract_internalRefUUID#58718, _extract_internalRefUUID#58717, _extract_code#58715, _extract_internalRefUUID#58716]
(1198) BroadcastExchange
Input [4]: [_extract_code#58715, _extract_internalRefUUID#58716, _extract_internalRefUUID#58717, _extract_internalRefUUID#58718]
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=227568]
(1199) BroadcastHashJoin
Left keys [4]: [coalesce(product#53982, ), isnull(product#53982), coalesce(plant#53983, ), isnull(plant#53983)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58717, ), isnull(_extract_internalRefUUID#58717), coalesce(_extract_internalRefUUID#58718, ), isnull(_extract_internalRefUUID#58718)]
Join type: LeftOuter
Join condition: None
(1200) Project
Output [4]: [product#53982, plant#53983, _extract_code#58715, _extract_internalRefUUID#58716]
Input [6]: [product#53982, plant#53983, _extract_code#58715, _extract_internalRefUUID#58716, _extract_internalRefUUID#58717, _extract_internalRefUUID#58718]
(1201) Scan parquet
Output [2]: [internalUUID#53996, systemId#53995]
Batched: 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#53996]
Input [2]: [internalUUID#53996, systemId#53995]
(1203) Exchange
Input [1]: [internalUUID#53996]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225396]
(1204) BroadcastExchange
Input [1]: [internalUUID#53996]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227572]
(1205) BroadcastHashJoin
Left keys [2]: [coalesce(plant#53983, ), isnull(plant#53983)]
Right keys [2]: [coalesce(internalUUID#53996, ), isnull(internalUUID#53996)]
Join type: LeftOuter
Join condition: None
(1206) Project
Output [4]: [product#53982, plant#53983, _extract_code#58715, _extract_internalRefUUID#58716]
Input [5]: [product#53982, plant#53983, _extract_code#58715, _extract_internalRefUUID#58716, internalUUID#53996]
(1207) Scan parquet
Output [4]: [internalUUID#54010, baseUnitOfMeasure#54014, unitOfMeasureConversions#54016, systemId#54009]
Batched: 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#54010, baseUnitOfMeasure#54014, unitOfMeasureConversions#54016, systemId#54009]
Condition : isnotnull(internalUUID#54010)
(1209) Project
Output [3]: [internalUUID#54010, baseUnitOfMeasure#54014, unitOfMeasureConversions#54016]
Input [4]: [internalUUID#54010, baseUnitOfMeasure#54014, unitOfMeasureConversions#54016, systemId#54009]
(1210) Exchange
Input [3]: [internalUUID#54010, baseUnitOfMeasure#54014, unitOfMeasureConversions#54016]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225402]
(1211) BroadcastExchange
Input [3]: [internalUUID#54010, baseUnitOfMeasure#54014, unitOfMeasureConversions#54016]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227576]
(1212) BroadcastHashJoin
Left keys [1]: [product#53982]
Right keys [1]: [internalUUID#54010]
Join type: LeftOuter
Join condition: None
(1213) Project
Output [2]: [plant#53983, filter(unitOfMeasureConversions#54016, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58715) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58716)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#54014.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#54014.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#54021]
Input [7]: [product#53982, plant#53983, _extract_code#58715, _extract_internalRefUUID#58716, internalUUID#54010, baseUnitOfMeasure#54014, unitOfMeasureConversions#54016]
(1214) Generate
Input [2]: [plant#53983, filteredUnitOfMeasureConversions#54021]
Arguments: explode(filteredUnitOfMeasureConversions#54021.quantityNumerator), [plant#53983, filteredUnitOfMeasureConversions#54021], true, [quantityNumerator#54022]
(1215) Project
Output [2]: [plant#53983, filteredUnitOfMeasureConversions#54021.quantityDenominator AS _extract_quantityDenominator#58039]
Input [3]: [plant#53983, filteredUnitOfMeasureConversions#54021, quantityNumerator#54022]
(1216) Generate
Input [2]: [plant#53983, _extract_quantityDenominator#58039]
Arguments: explode(_extract_quantityDenominator#58039), [plant#53983], true, [quantityDenominator#54023]
(1217) Project
Output [1]: [plant#53983]
Input [2]: [plant#53983, quantityDenominator#54023]
(1218) HashAggregate
Input [1]: [plant#53983]
Keys [1]: [plant#53983]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#53983]
(1219) Exchange
Input [1]: [plant#53983]
Arguments: hashpartitioning(plant#53983, 10), ENSURE_REQUIREMENTS, [plan_id=227585]
(1220) HashAggregate
Input [1]: [plant#53983]
Keys [1]: [plant#53983]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#53983]
(1221) BroadcastHashJoin
Left keys [1]: [plantUuid#53979]
Right keys [1]: [plant#53983]
Join type: Inner
Join condition: None
(1222) Project
Output [3]: [plantUuid#53979, storageLocId#53980, storageLocUuid#53981]
Input [4]: [plantUuid#53979, storageLocId#53980, storageLocUuid#53981, plant#53983]
(1223) BroadcastHashJoin
Left keys [2]: [coalesce(plant#53951.internalRefUUID, ), isnull(plant#53951.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#53979, ), isnull(plantUuid#53979)]
Join type: Inner
Join condition: None
(1224) Generate
Input [9]: [systemId#53948, internalUUID#53949, product#53950, plant#53951, calculationDateTime#53952, stockQuantities#53953, plantUuid#53979, storageLocId#53980, storageLocUuid#53981]
Arguments: explode(filter(stockQuantities#53953, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#53981) AND (lambda x#50650.storageLocation.Id = storageLocId#53980)), lambda x#50650, false))), [systemId#53948, internalUUID#53949, product#53950, plant#53951, calculationDateTime#53952, plantUuid#53979], false, [stockQuantity#54026]
(1225) ObjectHashAggregate
Input [7]: [systemId#53948, internalUUID#53949, product#53950, plant#53951, calculationDateTime#53952, plantUuid#53979, stockQuantity#54026]
Keys [5]: [plantUuid#53979, internalUUID#53949, plant#53951, product#53950, systemId#53948]
Functions [2]: [partial_first(calculationDateTime#53952, false), partial_collect_list(stockQuantity#54026, 0, 0)]
Aggregate Attributes [3]: [first#59747, valueSet#59748, buf#59749]
Results [8]: [plantUuid#53979, internalUUID#53949, plant#53951, product#53950, systemId#53948, first#59750, valueSet#59751, buf#59752]
(1226) ObjectHashAggregate
Input [8]: [plantUuid#53979, internalUUID#53949, plant#53951, product#53950, systemId#53948, first#59750, valueSet#59751, buf#59752]
Keys [5]: [plantUuid#53979, internalUUID#53949, plant#53951, product#53950, systemId#53948]
Functions [2]: [first(calculationDateTime#53952, false), collect_list(stockQuantity#54026, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#53952)()#50665, collect_list(stockQuantity#54026, 0, 0)#50666]
Results [4]: [product#53950, plant#53951, first(calculationDateTime#53952)()#50665 AS calculationDateTime#54027, collect_list(stockQuantity#54026, 0, 0)#50666 AS stockQuantities#54028]
(1227) Filter
Input [4]: [product#53950, plant#53951, calculationDateTime#54027, stockQuantities#54028]
Condition : ((size(stockQuantities#54028, true) > 0) AND isnotnull(calculationDateTime#54027))
(1228) Generate
Input [4]: [product#53950, plant#53951, calculationDateTime#54027, stockQuantities#54028]
Arguments: explode(stockQuantities#54028), [product#53950, plant#53951, calculationDateTime#54027], false, [stockQuantity#54029]
(1229) Filter
Input [4]: [product#53950, plant#53951, calculationDateTime#54027, stockQuantity#54029]
Condition : (((isnotnull(stockQuantity#54029.specialStockIndicator.code) AND isnotnull(stockQuantity#54029.stockType.code)) AND (stockQuantity#54029.specialStockIndicator.code = )) AND (stockQuantity#54029.stockType.code = 01))
(1230) Project
Output [4]: [plant#53951.internalRefUUID AS plantUuid#54031, product#53950.internalRefUUID AS productUuid#54033, calculationDateTime#54027, stockQuantity#54029.storagelocation.id AS storageLocId#54034]
Input [4]: [product#53950, plant#53951, calculationDateTime#54027, stockQuantity#54029]
(1231) Exchange
Input [4]: [plantUuid#54031, productUuid#54033, calculationDateTime#54027, storageLocId#54034]
Arguments: hashpartitioning(productUuid#54033, plantUuid#54031, 10), ENSURE_REQUIREMENTS, [plan_id=227618]
(1232) Sort
Input [4]: [plantUuid#54031, productUuid#54033, calculationDateTime#54027, storageLocId#54034]
Arguments: [productUuid#54033 ASC NULLS FIRST, plantUuid#54031 ASC NULLS FIRST], false, 0
(1233) Scan parquet
Output [3]: [product#54039, plant#54040, orderDateTime#54041]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1234) Filter
Input [3]: [product#54039, plant#54040, orderDateTime#54041]
Condition : ((isnotnull(orderDateTime#54041) AND isnotnull(plant#54040)) AND isnotnull(product#54039))
(1235) Exchange
Input [3]: [product#54039, plant#54040, orderDateTime#54041]
Arguments: hashpartitioning(product#54039, plant#54040, 10), REPARTITION_BY_NUM, [plan_id=226703]
(1236) Scan parquet
Output [4]: [plant#54045, product#54046, productionAspect#54048, systemId#54043]
Batched: 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#54045.internalRefUUID AS _extract_internalRefUUID#58722, product#54046.internalRefUUID AS _extract_internalRefUUID#58719, productionAspect#54048.productMovementPlants.unitOfIssue.code AS _extract_code#58720, productionAspect#54048.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58721]
Input [4]: [plant#54045, product#54046, productionAspect#54048, systemId#54043]
(1238) Exchange
Input [4]: [_extract_internalRefUUID#58722, _extract_internalRefUUID#58719, _extract_code#58720, _extract_internalRefUUID#58721]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225427]
(1239) Project
Output [4]: [_extract_code#58720, _extract_internalRefUUID#58721, _extract_internalRefUUID#58719, _extract_internalRefUUID#58722]
Input [4]: [_extract_internalRefUUID#58722, _extract_internalRefUUID#58719, _extract_code#58720, _extract_internalRefUUID#58721]
(1240) BroadcastExchange
Input [4]: [_extract_code#58720, _extract_internalRefUUID#58721, _extract_internalRefUUID#58719, _extract_internalRefUUID#58722]
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=227601]
(1241) BroadcastHashJoin
Left keys [4]: [coalesce(product#54039, ), isnull(product#54039), coalesce(plant#54040, ), isnull(plant#54040)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58719, ), isnull(_extract_internalRefUUID#58719), coalesce(_extract_internalRefUUID#58722, ), isnull(_extract_internalRefUUID#58722)]
Join type: LeftOuter
Join condition: None
(1242) Project
Output [5]: [product#54039, plant#54040, orderDateTime#54041, _extract_code#58720, _extract_internalRefUUID#58721]
Input [7]: [product#54039, plant#54040, orderDateTime#54041, _extract_code#58720, _extract_internalRefUUID#58721, _extract_internalRefUUID#58719, _extract_internalRefUUID#58722]
(1243) Scan parquet
Output [2]: [internalUUID#54053, systemId#54052]
Batched: 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#54053]
Input [2]: [internalUUID#54053, systemId#54052]
(1245) Exchange
Input [1]: [internalUUID#54053]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225433]
(1246) BroadcastExchange
Input [1]: [internalUUID#54053]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227605]
(1247) BroadcastHashJoin
Left keys [2]: [coalesce(plant#54040, ), isnull(plant#54040)]
Right keys [2]: [coalesce(internalUUID#54053, ), isnull(internalUUID#54053)]
Join type: LeftOuter
Join condition: None
(1248) Project
Output [5]: [product#54039, plant#54040, orderDateTime#54041, _extract_code#58720, _extract_internalRefUUID#58721]
Input [6]: [product#54039, plant#54040, orderDateTime#54041, _extract_code#58720, _extract_internalRefUUID#58721, internalUUID#54053]
(1249) Scan parquet
Output [4]: [internalUUID#54067, baseUnitOfMeasure#54071, unitOfMeasureConversions#54073, systemId#54066]
Batched: 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#54067, baseUnitOfMeasure#54071, unitOfMeasureConversions#54073, systemId#54066]
Condition : isnotnull(internalUUID#54067)
(1251) Project
Output [3]: [internalUUID#54067, baseUnitOfMeasure#54071, unitOfMeasureConversions#54073]
Input [4]: [internalUUID#54067, baseUnitOfMeasure#54071, unitOfMeasureConversions#54073, systemId#54066]
(1252) Exchange
Input [3]: [internalUUID#54067, baseUnitOfMeasure#54071, unitOfMeasureConversions#54073]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225439]
(1253) BroadcastExchange
Input [3]: [internalUUID#54067, baseUnitOfMeasure#54071, unitOfMeasureConversions#54073]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227609]
(1254) BroadcastHashJoin
Left keys [1]: [product#54039]
Right keys [1]: [internalUUID#54067]
Join type: LeftOuter
Join condition: None
(1255) Project
Output [4]: [product#54039, plant#54040, orderDateTime#54041, filter(unitOfMeasureConversions#54073, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58720) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58721)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#54071.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#54071.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#54078]
Input [8]: [product#54039, plant#54040, orderDateTime#54041, _extract_code#58720, _extract_internalRefUUID#58721, internalUUID#54067, baseUnitOfMeasure#54071, unitOfMeasureConversions#54073]
(1256) Generate
Input [4]: [product#54039, plant#54040, orderDateTime#54041, filteredUnitOfMeasureConversions#54078]
Arguments: explode(filteredUnitOfMeasureConversions#54078.quantityNumerator), [product#54039, plant#54040, orderDateTime#54041, filteredUnitOfMeasureConversions#54078], true, [quantityNumerator#54079]
(1257) Project
Output [4]: [product#54039, plant#54040, orderDateTime#54041, filteredUnitOfMeasureConversions#54078.quantityDenominator AS _extract_quantityDenominator#58043]
Input [5]: [product#54039, plant#54040, orderDateTime#54041, filteredUnitOfMeasureConversions#54078, quantityNumerator#54079]
(1258) Generate
Input [4]: [product#54039, plant#54040, orderDateTime#54041, _extract_quantityDenominator#58043]
Arguments: explode(_extract_quantityDenominator#58043), [product#54039, plant#54040, orderDateTime#54041], true, [quantityDenominator#54080]
(1259) Project
Output [3]: [product#54039, plant#54040, orderDateTime#54041]
Input [4]: [product#54039, plant#54040, orderDateTime#54041, quantityDenominator#54080]
(1260) Sort
Input [3]: [product#54039, plant#54040, orderDateTime#54041]
Arguments: [product#54039 ASC NULLS FIRST, plant#54040 ASC NULLS FIRST], false, 0
(1261) SortMergeJoin
Left keys [2]: [productUuid#54033, plantUuid#54031]
Right keys [2]: [product#54039, plant#54040]
Join type: Inner
Join condition: (calculationDateTime#54027 <= orderDateTime#54041)
(1262) Project
Output [4]: [plantUuid#54031 AS plant#54083, productUuid#54033 AS product#54084, storageLocId#54034, calculationDateTime#54027]
Input [7]: [plantUuid#54031, productUuid#54033, calculationDateTime#54027, storageLocId#54034, product#54039, plant#54040, orderDateTime#54041]
(1263) HashAggregate
Input [4]: [plant#54083, product#54084, storageLocId#54034, calculationDateTime#54027]
Keys [3]: [plant#54083, product#54084, storageLocId#54034]
Functions [1]: [partial_max(calculationDateTime#54027)]
Aggregate Attributes [1]: [max#59745]
Results [4]: [plant#54083, product#54084, storageLocId#54034, max#59746]
(1264) HashAggregate
Input [4]: [plant#54083, product#54084, storageLocId#54034, max#59746]
Keys [3]: [plant#54083, product#54084, storageLocId#54034]
Functions [1]: [max(calculationDateTime#54027)]
Aggregate Attributes [1]: [max(calculationDateTime#54027)#50743]
Results [4]: [plant#54083, product#54084, storageLocId#54034, max(calculationDateTime#54027)#50743 AS max_calc_datetime#54085]
(1265) Exchange
Input [4]: [plant#54083, product#54084, storageLocId#54034, max_calc_datetime#54085]
Arguments: hashpartitioning(coalesce(plant#54083, ), isnull(plant#54083), coalesce(product#54084, ), isnull(product#54084), coalesce(storageLocId#54034, ), isnull(storageLocId#54034), coalesce(max_calc_datetime#54085, 1970-01-01 00:00:00), isnull(max_calc_datetime#54085), 10), ENSURE_REQUIREMENTS, [plan_id=227628]
(1266) Sort
Input [4]: [plant#54083, product#54084, storageLocId#54034, max_calc_datetime#54085]
Arguments: [coalesce(plant#54083, ) ASC NULLS FIRST, isnull(plant#54083) ASC NULLS FIRST, coalesce(product#54084, ) ASC NULLS FIRST, isnull(product#54084) ASC NULLS FIRST, coalesce(storageLocId#54034, ) ASC NULLS FIRST, isnull(storageLocId#54034) ASC NULLS FIRST, coalesce(max_calc_datetime#54085, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#54085) ASC NULLS FIRST], false, 0
(1267) SortMergeJoin
Left keys [8]: [coalesce(plant#53946, ), isnull(plant#53946), coalesce(product#53947, ), isnull(product#53947), coalesce(storageLocId#53897, ), isnull(storageLocId#53897), coalesce(calculationDateTime#53890, 1970-01-01 00:00:00), isnull(calculationDateTime#53890)]
Right keys [8]: [coalesce(plant#54083, ), isnull(plant#54083), coalesce(product#54084, ), isnull(product#54084), coalesce(storageLocId#54034, ), isnull(storageLocId#54034), coalesce(max_calc_datetime#54085, 1970-01-01 00:00:00), isnull(max_calc_datetime#54085)]
Join type: Inner
Join condition: None
(1268) Project
Output [3]: [plant#53946, product#53947, calculationDateTime#53890]
Input [8]: [plant#53946, product#53947, storageLocId#53897, calculationDateTime#53890, plant#54083, product#54084, storageLocId#54034, max_calc_datetime#54085]
(1269) HashAggregate
Input [3]: [plant#53946, product#53947, calculationDateTime#53890]
Keys [2]: [product#53947, plant#53946]
Functions [1]: [partial_min(calculationDateTime#53890)]
Aggregate Attributes [1]: [min#59737]
Results [3]: [product#53947, plant#53946, min#59738]
(1270) Exchange
Input [3]: [product#53947, plant#53946, min#59738]
Arguments: hashpartitioning(product#53947, plant#53946, 10), ENSURE_REQUIREMENTS, [plan_id=227635]
(1271) HashAggregate
Input [3]: [product#53947, plant#53946, min#59738]
Keys [2]: [product#53947, plant#53946]
Functions [1]: [min(calculationDateTime#53890)]
Aggregate Attributes [1]: [min(calculationDateTime#53890)#50899]
Results [3]: [product#53947, plant#53946, min(calculationDateTime#53890)#50899 AS minCalculationDateTime#54087]
(1272) Sort
Input [3]: [product#53947, plant#53946, minCalculationDateTime#54087]
Arguments: [product#53947 ASC NULLS FIRST, plant#53946 ASC NULLS FIRST], false, 0
(1273) SortMergeJoin
Left keys [2]: [product#53767, plant#53768]
Right keys [2]: [product#53947, plant#53946]
Join type: LeftOuter
Join condition: None
(1274) Project
Output [3]: [product#53767, plant#53768, CASE WHEN isnotnull(minCalculationDateTime#54087) THEN minCalculationDateTime#54087 ELSE orderDateTime#53769 END AS stockDatetime#54089]
Input [6]: [product#53767, plant#53768, orderDateTime#53769, product#53947, plant#53946, minCalculationDateTime#54087]
(1275) Exchange
Input [3]: [product#53767, plant#53768, stockDatetime#54089]
Arguments: hashpartitioning(coalesce(plant#53768, ), isnull(plant#53768), coalesce(product#53767, ), isnull(product#53767), 10), ENSURE_REQUIREMENTS, [plan_id=227799]
(1276) Sort
Input [3]: [product#53767, plant#53768, stockDatetime#54089]
Arguments: [coalesce(plant#53768, ) ASC NULLS FIRST, isnull(plant#53768) ASC NULLS FIRST, coalesce(product#53767, ) ASC NULLS FIRST, isnull(product#53767) ASC NULLS FIRST], false, 0
(1277) Scan parquet
Output [3]: [product#54092, plant#54093, orderDateTime#54094]
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/10000000006/shardId=0_1_10000000006]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1278) Exchange
Input [3]: [product#54092, plant#54093, orderDateTime#54094]
Arguments: hashpartitioning(product#54092, plant#54093, 10), REPARTITION_BY_NUM, [plan_id=225457]
(1279) Scan parquet
Output [8]: [internalUUID#54097, plant#54098, product#54099, blockedForReplenishmentStartingFrom#54100, productionAspect#54101, salesPlant#54102, listing#54103, systemId#54096]
Batched: 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#54096, internalUUID#54097, plant#54098, product#54099, blockedForReplenishmentStartingFrom#54100, productionAspect#54101, salesPlant#54102, listing#54103]
Input [8]: [internalUUID#54097, plant#54098, product#54099, blockedForReplenishmentStartingFrom#54100, productionAspect#54101, salesPlant#54102, listing#54103, systemId#54096]
(1281) Exchange
Input [8]: [systemId#54096, internalUUID#54097, plant#54098, product#54099, blockedForReplenishmentStartingFrom#54100, productionAspect#54101, salesPlant#54102, listing#54103]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225460]
(1282) Project
Output [1]: [struct(systemId, systemId#54096, internalUUID, internalUUID#54097, plant, plant#54098, product, product#54099, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#54100, productionAspect, productionAspect#54101, salesPlant, salesPlant#54102, listing, listing#54103) AS productPlant#54104]
Input [8]: [systemId#54096, internalUUID#54097, plant#54098, product#54099, blockedForReplenishmentStartingFrom#54100, productionAspect#54101, salesPlant#54102, listing#54103]
(1283) BroadcastExchange
Input [1]: [productPlant#54104]
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=227643]
(1284) BroadcastHashJoin
Left keys [4]: [coalesce(product#54092, ), isnull(product#54092), coalesce(plant#54093, ), isnull(plant#54093)]
Right keys [4]: [coalesce(productPlant#54104.product.internalRefUUID, ), isnull(productPlant#54104.product.internalRefUUID), coalesce(productPlant#54104.plant.internalRefUUID, ), isnull(productPlant#54104.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1285) Scan parquet
Output [3]: [internalUUID#54106, address#54112, systemId#54105]
Batched: 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#54106, address#54112.timeZone.code AS timezonecode#54117]
Input [3]: [internalUUID#54106, address#54112, systemId#54105]
(1287) Exchange
Input [2]: [internalUUID#54106, timezonecode#54117]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225465]
(1288) BroadcastExchange
Input [2]: [internalUUID#54106, timezonecode#54117]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227646]
(1289) BroadcastHashJoin
Left keys [2]: [coalesce(plant#54093, ), isnull(plant#54093)]
Right keys [2]: [coalesce(internalUUID#54106, ), isnull(internalUUID#54106)]
Join type: LeftOuter
Join condition: None
(1290) Project
Output [5]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, CASE WHEN isnotnull(timezonecode#54117) THEN timezonecode#54117 ELSE UTC END AS timezonecode#54118]
Input [6]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, internalUUID#54106, timezonecode#54117]
(1291) Scan parquet
Output [4]: [internalUUID#54120, baseUnitOfMeasure#54124, unitOfMeasureConversions#54126, systemId#54119]
Batched: 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#54120, baseUnitOfMeasure#54124, unitOfMeasureConversions#54126, systemId#54119]
Condition : isnotnull(internalUUID#54120)
(1293) Project
Output [3]: [internalUUID#54120, baseUnitOfMeasure#54124, unitOfMeasureConversions#54126]
Input [4]: [internalUUID#54120, baseUnitOfMeasure#54124, unitOfMeasureConversions#54126, systemId#54119]
(1294) Exchange
Input [3]: [internalUUID#54120, baseUnitOfMeasure#54124, unitOfMeasureConversions#54126]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225471]
(1295) BroadcastExchange
Input [3]: [internalUUID#54120, baseUnitOfMeasure#54124, unitOfMeasureConversions#54126]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227650]
(1296) BroadcastHashJoin
Left keys [1]: [product#54092]
Right keys [1]: [internalUUID#54120]
Join type: LeftOuter
Join condition: None
(1297) Project
Output [6]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, filter(unitOfMeasureConversions#54126, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#54104.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#54104.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#54124.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#54124.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#54131]
Input [8]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, internalUUID#54120, baseUnitOfMeasure#54124, unitOfMeasureConversions#54126]
(1298) Project
Output [7]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, filteredUnitOfMeasureConversions#54131.quantityDenominator AS _extract_quantityDenominator#58250, filteredUnitOfMeasureConversions#54131.quantityNumerator AS _extract_quantityNumerator#58251]
Input [6]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, filteredUnitOfMeasureConversions#54131]
(1299) Generate
Input [7]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, _extract_quantityDenominator#58250, _extract_quantityNumerator#58251]
Arguments: explode(_extract_quantityNumerator#58251), [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, _extract_quantityDenominator#58250], true, [quantityNumerator#54132]
(1300) Generate
Input [7]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, _extract_quantityDenominator#58250, quantityNumerator#54132]
Arguments: explode(_extract_quantityDenominator#58250), [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, quantityNumerator#54132], true, [quantityDenominator#54133]
(1301) Project
Output [6]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, (cast(quantityNumerator#54132 as double) / cast(quantityDenominator#54133 as double)) AS outboundUnit#54134]
Input [7]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, quantityNumerator#54132, quantityDenominator#54133]
(1302) Project
Output [6]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, CASE WHEN (isnull(outboundUnit#54134) OR (outboundUnit#54134 <= 0.0)) THEN 1.0 ELSE outboundUnit#54134 END AS outboundUnit#54135]
Input [6]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54134]
(1303) Sort
Input [6]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54135]
Arguments: [product#54092 ASC NULLS FIRST, plant#54093 ASC NULLS FIRST], false, 0
(1304) Scan parquet
Output [6]: [internalUUID#54137, product#54138, plant#54139, calculationDateTime#54140, stockQuantities#54141, systemId#54136]
Batched: 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#54137, product#54138, plant#54139, calculationDateTime#54140, stockQuantities#54141, systemId#54136]
Condition : (isnotnull(plant#54139.internalRefUUID) AND isnotnull(product#54138.internalRefUUID))
(1306) Project
Output [6]: [systemId#54136, internalUUID#54137, product#54138, plant#54139, calculationDateTime#54140, stockQuantities#54141]
Input [6]: [internalUUID#54137, product#54138, plant#54139, calculationDateTime#54140, stockQuantities#54141, systemId#54136]
(1307) Exchange
Input [6]: [systemId#54136, internalUUID#54137, product#54138, plant#54139, calculationDateTime#54140, stockQuantities#54141]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225482]
(1308) BroadcastExchange
Input [6]: [systemId#54136, internalUUID#54137, product#54138, plant#54139, calculationDateTime#54140, stockQuantities#54141]
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=227682]
(1309) Scan parquet
Output [2]: [marketUnit#54142, distributionCenters#54148]
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#54142, distributionCenters#54148]
Condition : (((marketUnit#54142 <=> DIP_1691) AND (size(distributionCenters#54148, true) > 0)) AND isnotnull(distributionCenters#54148))
(1311) Project
Output [1]: [distributionCenters#54148]
Input [2]: [marketUnit#54142, distributionCenters#54148]
(1312) Exchange
Input [1]: [distributionCenters#54148]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225486]
(1313) Generate
Input [1]: [distributionCenters#54148]
Arguments: explode(distributionCenters#54148), false, [distributionCenters#54164]
(1314) Filter
Input [1]: [distributionCenters#54164]
Condition : (((size(distributionCenters#54164.storageLocations, true) > 0) AND isnotnull(distributionCenters#54164.storageLocations)) AND isnotnull(distributionCenters#54164.internalRefUUID))
(1315) Project
Output [2]: [distributionCenters#54164.internalRefUUID AS _extract_internalRefUUID#58049, distributionCenters#54164.storageLocations AS _extract_storageLocations#58050]
Input [1]: [distributionCenters#54164]
(1316) Generate
Input [2]: [_extract_internalRefUUID#58049, _extract_storageLocations#58050]
Arguments: explode(_extract_storageLocations#58050), [_extract_internalRefUUID#58049], false, [storageLocations#54165]
(1317) Project
Output [3]: [_extract_internalRefUUID#58049 AS plantUuid#54167, storageLocations#54165.id AS storageLocId#54168, storageLocations#54165.internalRefUUID AS storageLocUuid#54169]
Input [2]: [_extract_internalRefUUID#58049, storageLocations#54165]
(1318) BroadcastExchange
Input [3]: [plantUuid#54167, storageLocId#54168, storageLocUuid#54169]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227678]
(1319) Scan parquet
Output [2]: [product#54170, plant#54171]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1320) Filter
Input [2]: [product#54170, plant#54171]
Condition : isnotnull(plant#54171)
(1321) Exchange
Input [2]: [product#54170, plant#54171]
Arguments: hashpartitioning(product#54170, plant#54171, 10), REPARTITION_BY_NUM, [plan_id=226724]
(1322) Scan parquet
Output [4]: [plant#54176, product#54177, productionAspect#54179, systemId#54174]
Batched: 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#54176.internalRefUUID AS _extract_internalRefUUID#58724, product#54177.internalRefUUID AS _extract_internalRefUUID#58723, productionAspect#54179.productMovementPlants.unitOfIssue.code AS _extract_code#58725, productionAspect#54179.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58726]
Input [4]: [plant#54176, product#54177, productionAspect#54179, systemId#54174]
(1324) Exchange
Input [4]: [_extract_internalRefUUID#58724, _extract_internalRefUUID#58723, _extract_code#58725, _extract_internalRefUUID#58726]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225498]
(1325) Project
Output [4]: [_extract_code#58725, _extract_internalRefUUID#58726, _extract_internalRefUUID#58723, _extract_internalRefUUID#58724]
Input [4]: [_extract_internalRefUUID#58724, _extract_internalRefUUID#58723, _extract_code#58725, _extract_internalRefUUID#58726]
(1326) BroadcastExchange
Input [4]: [_extract_code#58725, _extract_internalRefUUID#58726, _extract_internalRefUUID#58723, _extract_internalRefUUID#58724]
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=227658]
(1327) BroadcastHashJoin
Left keys [4]: [coalesce(product#54170, ), isnull(product#54170), coalesce(plant#54171, ), isnull(plant#54171)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58723, ), isnull(_extract_internalRefUUID#58723), coalesce(_extract_internalRefUUID#58724, ), isnull(_extract_internalRefUUID#58724)]
Join type: LeftOuter
Join condition: None
(1328) Project
Output [4]: [product#54170, plant#54171, _extract_code#58725, _extract_internalRefUUID#58726]
Input [6]: [product#54170, plant#54171, _extract_code#58725, _extract_internalRefUUID#58726, _extract_internalRefUUID#58723, _extract_internalRefUUID#58724]
(1329) Scan parquet
Output [2]: [internalUUID#54184, systemId#54183]
Batched: 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#54184]
Input [2]: [internalUUID#54184, systemId#54183]
(1331) Exchange
Input [1]: [internalUUID#54184]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225504]
(1332) BroadcastExchange
Input [1]: [internalUUID#54184]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227662]
(1333) BroadcastHashJoin
Left keys [2]: [coalesce(plant#54171, ), isnull(plant#54171)]
Right keys [2]: [coalesce(internalUUID#54184, ), isnull(internalUUID#54184)]
Join type: LeftOuter
Join condition: None
(1334) Project
Output [4]: [product#54170, plant#54171, _extract_code#58725, _extract_internalRefUUID#58726]
Input [5]: [product#54170, plant#54171, _extract_code#58725, _extract_internalRefUUID#58726, internalUUID#54184]
(1335) Scan parquet
Output [4]: [internalUUID#54198, baseUnitOfMeasure#54202, unitOfMeasureConversions#54204, systemId#54197]
Batched: 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#54198, baseUnitOfMeasure#54202, unitOfMeasureConversions#54204, systemId#54197]
Condition : isnotnull(internalUUID#54198)
(1337) Project
Output [3]: [internalUUID#54198, baseUnitOfMeasure#54202, unitOfMeasureConversions#54204]
Input [4]: [internalUUID#54198, baseUnitOfMeasure#54202, unitOfMeasureConversions#54204, systemId#54197]
(1338) Exchange
Input [3]: [internalUUID#54198, baseUnitOfMeasure#54202, unitOfMeasureConversions#54204]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225510]
(1339) BroadcastExchange
Input [3]: [internalUUID#54198, baseUnitOfMeasure#54202, unitOfMeasureConversions#54204]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227666]
(1340) BroadcastHashJoin
Left keys [1]: [product#54170]
Right keys [1]: [internalUUID#54198]
Join type: LeftOuter
Join condition: None
(1341) Project
Output [2]: [plant#54171, filter(unitOfMeasureConversions#54204, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58725) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58726)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#54202.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#54202.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#54209]
Input [7]: [product#54170, plant#54171, _extract_code#58725, _extract_internalRefUUID#58726, internalUUID#54198, baseUnitOfMeasure#54202, unitOfMeasureConversions#54204]
(1342) Generate
Input [2]: [plant#54171, filteredUnitOfMeasureConversions#54209]
Arguments: explode(filteredUnitOfMeasureConversions#54209.quantityNumerator), [plant#54171, filteredUnitOfMeasureConversions#54209], true, [quantityNumerator#54210]
(1343) Project
Output [2]: [plant#54171, filteredUnitOfMeasureConversions#54209.quantityDenominator AS _extract_quantityDenominator#58051]
Input [3]: [plant#54171, filteredUnitOfMeasureConversions#54209, quantityNumerator#54210]
(1344) Generate
Input [2]: [plant#54171, _extract_quantityDenominator#58051]
Arguments: explode(_extract_quantityDenominator#58051), [plant#54171], true, [quantityDenominator#54211]
(1345) Project
Output [1]: [plant#54171]
Input [2]: [plant#54171, quantityDenominator#54211]
(1346) HashAggregate
Input [1]: [plant#54171]
Keys [1]: [plant#54171]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#54171]
(1347) Exchange
Input [1]: [plant#54171]
Arguments: hashpartitioning(plant#54171, 10), ENSURE_REQUIREMENTS, [plan_id=227675]
(1348) HashAggregate
Input [1]: [plant#54171]
Keys [1]: [plant#54171]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#54171]
(1349) BroadcastHashJoin
Left keys [1]: [plantUuid#54167]
Right keys [1]: [plant#54171]
Join type: Inner
Join condition: None
(1350) Project
Output [3]: [plantUuid#54167, storageLocId#54168, storageLocUuid#54169]
Input [4]: [plantUuid#54167, storageLocId#54168, storageLocUuid#54169, plant#54171]
(1351) BroadcastHashJoin
Left keys [2]: [coalesce(plant#54139.internalRefUUID, ), isnull(plant#54139.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#54167, ), isnull(plantUuid#54167)]
Join type: Inner
Join condition: None
(1352) Generate
Input [9]: [systemId#54136, internalUUID#54137, product#54138, plant#54139, calculationDateTime#54140, stockQuantities#54141, plantUuid#54167, storageLocId#54168, storageLocUuid#54169]
Arguments: explode(filter(stockQuantities#54141, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#54169) AND (lambda x#50650.storageLocation.Id = storageLocId#54168)), lambda x#50650, false))), [systemId#54136, internalUUID#54137, product#54138, plant#54139, calculationDateTime#54140, plantUuid#54167], false, [stockQuantity#54214]
(1353) ObjectHashAggregate
Input [7]: [systemId#54136, internalUUID#54137, product#54138, plant#54139, calculationDateTime#54140, plantUuid#54167, stockQuantity#54214]
Keys [5]: [plantUuid#54167, internalUUID#54137, plant#54139, product#54138, systemId#54136]
Functions [2]: [partial_first(calculationDateTime#54140, false), partial_collect_list(stockQuantity#54214, 0, 0)]
Aggregate Attributes [3]: [first#59761, valueSet#59762, buf#59763]
Results [8]: [plantUuid#54167, internalUUID#54137, plant#54139, product#54138, systemId#54136, first#59764, valueSet#59765, buf#59766]
(1354) ObjectHashAggregate
Input [8]: [plantUuid#54167, internalUUID#54137, plant#54139, product#54138, systemId#54136, first#59764, valueSet#59765, buf#59766]
Keys [5]: [plantUuid#54167, internalUUID#54137, plant#54139, product#54138, systemId#54136]
Functions [2]: [first(calculationDateTime#54140, false), collect_list(stockQuantity#54214, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#54140)()#50665, collect_list(stockQuantity#54214, 0, 0)#50666]
Results [4]: [product#54138, plant#54139, first(calculationDateTime#54140)()#50665 AS calculationDateTime#54215, collect_list(stockQuantity#54214, 0, 0)#50666 AS stockQuantities#54216]
(1355) Filter
Input [4]: [product#54138, plant#54139, calculationDateTime#54215, stockQuantities#54216]
Condition : ((size(stockQuantities#54216, true) > 0) AND isnotnull(calculationDateTime#54215))
(1356) Generate
Input [4]: [product#54138, plant#54139, calculationDateTime#54215, stockQuantities#54216]
Arguments: explode(stockQuantities#54216), [product#54138, plant#54139, calculationDateTime#54215], false, [stockQuantity#54217]
(1357) Filter
Input [4]: [product#54138, plant#54139, calculationDateTime#54215, stockQuantity#54217]
Condition : (((isnotnull(stockQuantity#54217.specialStockIndicator.code) AND isnotnull(stockQuantity#54217.stockType.code)) AND (stockQuantity#54217.specialStockIndicator.code = )) AND (stockQuantity#54217.stockType.code = 01))
(1358) Project
Output [5]: [plant#54139.internalRefUUID AS plantUuid#54219, product#54138.internalRefUUID AS productUuid#54221, calculationDateTime#54215, stockQuantity#54217.storagelocation.id AS storageLocId#54222, stockQuantity#54217.quantity.measure AS quantity#54224]
Input [4]: [product#54138, plant#54139, calculationDateTime#54215, stockQuantity#54217]
(1359) Exchange
Input [5]: [plantUuid#54219, productUuid#54221, calculationDateTime#54215, storageLocId#54222, quantity#54224]
Arguments: hashpartitioning(productUuid#54221, plantUuid#54219, 10), ENSURE_REQUIREMENTS, [plan_id=227708]
(1360) Sort
Input [5]: [plantUuid#54219, productUuid#54221, calculationDateTime#54215, storageLocId#54222, quantity#54224]
Arguments: [productUuid#54221 ASC NULLS FIRST, plantUuid#54219 ASC NULLS FIRST], false, 0
(1361) Scan parquet
Output [3]: [product#54227, plant#54228, orderDateTime#54229]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1362) Filter
Input [3]: [product#54227, plant#54228, orderDateTime#54229]
Condition : ((isnotnull(orderDateTime#54229) AND isnotnull(plant#54228)) AND isnotnull(product#54227))
(1363) Exchange
Input [3]: [product#54227, plant#54228, orderDateTime#54229]
Arguments: hashpartitioning(product#54227, plant#54228, 10), REPARTITION_BY_NUM, [plan_id=226747]
(1364) Scan parquet
Output [4]: [plant#54233, product#54234, productionAspect#54236, systemId#54231]
Batched: 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#54233.internalRefUUID AS _extract_internalRefUUID#58727, product#54234.internalRefUUID AS _extract_internalRefUUID#58730, productionAspect#54236.productMovementPlants.unitOfIssue.code AS _extract_code#58728, productionAspect#54236.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58729]
Input [4]: [plant#54233, product#54234, productionAspect#54236, systemId#54231]
(1366) Exchange
Input [4]: [_extract_internalRefUUID#58727, _extract_internalRefUUID#58730, _extract_code#58728, _extract_internalRefUUID#58729]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225535]
(1367) Project
Output [4]: [_extract_code#58728, _extract_internalRefUUID#58729, _extract_internalRefUUID#58730, _extract_internalRefUUID#58727]
Input [4]: [_extract_internalRefUUID#58727, _extract_internalRefUUID#58730, _extract_code#58728, _extract_internalRefUUID#58729]
(1368) BroadcastExchange
Input [4]: [_extract_code#58728, _extract_internalRefUUID#58729, _extract_internalRefUUID#58730, _extract_internalRefUUID#58727]
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=227691]
(1369) BroadcastHashJoin
Left keys [4]: [coalesce(product#54227, ), isnull(product#54227), coalesce(plant#54228, ), isnull(plant#54228)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58730, ), isnull(_extract_internalRefUUID#58730), coalesce(_extract_internalRefUUID#58727, ), isnull(_extract_internalRefUUID#58727)]
Join type: LeftOuter
Join condition: None
(1370) Project
Output [5]: [product#54227, plant#54228, orderDateTime#54229, _extract_code#58728, _extract_internalRefUUID#58729]
Input [7]: [product#54227, plant#54228, orderDateTime#54229, _extract_code#58728, _extract_internalRefUUID#58729, _extract_internalRefUUID#58730, _extract_internalRefUUID#58727]
(1371) Scan parquet
Output [2]: [internalUUID#54241, systemId#54240]
Batched: 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#54241]
Input [2]: [internalUUID#54241, systemId#54240]
(1373) Exchange
Input [1]: [internalUUID#54241]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225541]
(1374) BroadcastExchange
Input [1]: [internalUUID#54241]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227695]
(1375) BroadcastHashJoin
Left keys [2]: [coalesce(plant#54228, ), isnull(plant#54228)]
Right keys [2]: [coalesce(internalUUID#54241, ), isnull(internalUUID#54241)]
Join type: LeftOuter
Join condition: None
(1376) Project
Output [5]: [product#54227, plant#54228, orderDateTime#54229, _extract_code#58728, _extract_internalRefUUID#58729]
Input [6]: [product#54227, plant#54228, orderDateTime#54229, _extract_code#58728, _extract_internalRefUUID#58729, internalUUID#54241]
(1377) Scan parquet
Output [4]: [internalUUID#54255, baseUnitOfMeasure#54259, unitOfMeasureConversions#54261, systemId#54254]
Batched: 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#54255, baseUnitOfMeasure#54259, unitOfMeasureConversions#54261, systemId#54254]
Condition : isnotnull(internalUUID#54255)
(1379) Project
Output [3]: [internalUUID#54255, baseUnitOfMeasure#54259, unitOfMeasureConversions#54261]
Input [4]: [internalUUID#54255, baseUnitOfMeasure#54259, unitOfMeasureConversions#54261, systemId#54254]
(1380) Exchange
Input [3]: [internalUUID#54255, baseUnitOfMeasure#54259, unitOfMeasureConversions#54261]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225547]
(1381) BroadcastExchange
Input [3]: [internalUUID#54255, baseUnitOfMeasure#54259, unitOfMeasureConversions#54261]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227699]
(1382) BroadcastHashJoin
Left keys [1]: [product#54227]
Right keys [1]: [internalUUID#54255]
Join type: LeftOuter
Join condition: None
(1383) Project
Output [4]: [product#54227, plant#54228, orderDateTime#54229, filter(unitOfMeasureConversions#54261, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58728) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58729)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#54259.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#54259.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#54266]
Input [8]: [product#54227, plant#54228, orderDateTime#54229, _extract_code#58728, _extract_internalRefUUID#58729, internalUUID#54255, baseUnitOfMeasure#54259, unitOfMeasureConversions#54261]
(1384) Generate
Input [4]: [product#54227, plant#54228, orderDateTime#54229, filteredUnitOfMeasureConversions#54266]
Arguments: explode(filteredUnitOfMeasureConversions#54266.quantityNumerator), [product#54227, plant#54228, orderDateTime#54229, filteredUnitOfMeasureConversions#54266], true, [quantityNumerator#54267]
(1385) Project
Output [4]: [product#54227, plant#54228, orderDateTime#54229, filteredUnitOfMeasureConversions#54266.quantityDenominator AS _extract_quantityDenominator#58055]
Input [5]: [product#54227, plant#54228, orderDateTime#54229, filteredUnitOfMeasureConversions#54266, quantityNumerator#54267]
(1386) Generate
Input [4]: [product#54227, plant#54228, orderDateTime#54229, _extract_quantityDenominator#58055]
Arguments: explode(_extract_quantityDenominator#58055), [product#54227, plant#54228, orderDateTime#54229], true, [quantityDenominator#54268]
(1387) Project
Output [3]: [product#54227, plant#54228, orderDateTime#54229]
Input [4]: [product#54227, plant#54228, orderDateTime#54229, quantityDenominator#54268]
(1388) Sort
Input [3]: [product#54227, plant#54228, orderDateTime#54229]
Arguments: [product#54227 ASC NULLS FIRST, plant#54228 ASC NULLS FIRST], false, 0
(1389) SortMergeJoin
Left keys [2]: [productUuid#54221, plantUuid#54219]
Right keys [2]: [product#54227, plant#54228]
Join type: Inner
Join condition: (calculationDateTime#54215 <= orderDateTime#54229)
(1390) Project
Output [5]: [plantUuid#54219 AS plant#54271, productUuid#54221 AS product#54272, storageLocId#54222, calculationDateTime#54215, quantity#54224]
Input [8]: [plantUuid#54219, productUuid#54221, calculationDateTime#54215, storageLocId#54222, quantity#54224, product#54227, plant#54228, orderDateTime#54229]
(1391) Exchange
Input [5]: [plant#54271, product#54272, storageLocId#54222, calculationDateTime#54215, quantity#54224]
Arguments: hashpartitioning(coalesce(plant#54271, ), isnull(plant#54271), coalesce(product#54272, ), isnull(product#54272), coalesce(storageLocId#54222, ), isnull(storageLocId#54222), coalesce(calculationDateTime#54215, 1970-01-01 00:00:00), isnull(calculationDateTime#54215), 10), ENSURE_REQUIREMENTS, [plan_id=227772]
(1392) Sort
Input [5]: [plant#54271, product#54272, storageLocId#54222, calculationDateTime#54215, quantity#54224]
Arguments: [coalesce(plant#54271, ) ASC NULLS FIRST, isnull(plant#54271) ASC NULLS FIRST, coalesce(product#54272, ) ASC NULLS FIRST, isnull(product#54272) ASC NULLS FIRST, coalesce(storageLocId#54222, ) ASC NULLS FIRST, isnull(storageLocId#54222) ASC NULLS FIRST, coalesce(calculationDateTime#54215, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#54215) ASC NULLS FIRST], false, 0
(1393) Scan parquet
Output [6]: [internalUUID#54274, product#54275, plant#54276, calculationDateTime#54277, stockQuantities#54278, systemId#54273]
Batched: 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#54274, product#54275, plant#54276, calculationDateTime#54277, stockQuantities#54278, systemId#54273]
Condition : (isnotnull(plant#54276.internalRefUUID) AND isnotnull(product#54275.internalRefUUID))
(1395) Project
Output [6]: [systemId#54273, internalUUID#54274, product#54275, plant#54276, calculationDateTime#54277, stockQuantities#54278]
Input [6]: [internalUUID#54274, product#54275, plant#54276, calculationDateTime#54277, stockQuantities#54278, systemId#54273]
(1396) Exchange
Input [6]: [systemId#54273, internalUUID#54274, product#54275, plant#54276, calculationDateTime#54277, stockQuantities#54278]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225559]
(1397) BroadcastExchange
Input [6]: [systemId#54273, internalUUID#54274, product#54275, plant#54276, calculationDateTime#54277, stockQuantities#54278]
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=227737]
(1398) Scan parquet
Output [2]: [marketUnit#54279, distributionCenters#54285]
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#54279, distributionCenters#54285]
Condition : (((marketUnit#54279 <=> DIP_1691) AND (size(distributionCenters#54285, true) > 0)) AND isnotnull(distributionCenters#54285))
(1400) Project
Output [1]: [distributionCenters#54285]
Input [2]: [marketUnit#54279, distributionCenters#54285]
(1401) Exchange
Input [1]: [distributionCenters#54285]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225563]
(1402) Generate
Input [1]: [distributionCenters#54285]
Arguments: explode(distributionCenters#54285), false, [distributionCenters#54301]
(1403) Filter
Input [1]: [distributionCenters#54301]
Condition : (((size(distributionCenters#54301.storageLocations, true) > 0) AND isnotnull(distributionCenters#54301.storageLocations)) AND isnotnull(distributionCenters#54301.internalRefUUID))
(1404) Project
Output [2]: [distributionCenters#54301.internalRefUUID AS _extract_internalRefUUID#58059, distributionCenters#54301.storageLocations AS _extract_storageLocations#58060]
Input [1]: [distributionCenters#54301]
(1405) Generate
Input [2]: [_extract_internalRefUUID#58059, _extract_storageLocations#58060]
Arguments: explode(_extract_storageLocations#58060), [_extract_internalRefUUID#58059], false, [storageLocations#54302]
(1406) Project
Output [3]: [_extract_internalRefUUID#58059 AS plantUuid#54304, storageLocations#54302.id AS storageLocId#54305, storageLocations#54302.internalRefUUID AS storageLocUuid#54306]
Input [2]: [_extract_internalRefUUID#58059, storageLocations#54302]
(1407) BroadcastExchange
Input [3]: [plantUuid#54304, storageLocId#54305, storageLocUuid#54306]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227733]
(1408) Scan parquet
Output [2]: [product#54307, plant#54308]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1409) Filter
Input [2]: [product#54307, plant#54308]
Condition : isnotnull(plant#54308)
(1410) Exchange
Input [2]: [product#54307, plant#54308]
Arguments: hashpartitioning(product#54307, plant#54308, 10), REPARTITION_BY_NUM, [plan_id=226760]
(1411) Scan parquet
Output [4]: [plant#54313, product#54314, productionAspect#54316, systemId#54311]
Batched: 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#54313.internalRefUUID AS _extract_internalRefUUID#58734, product#54314.internalRefUUID AS _extract_internalRefUUID#58731, productionAspect#54316.productMovementPlants.unitOfIssue.code AS _extract_code#58732, productionAspect#54316.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58733]
Input [4]: [plant#54313, product#54314, productionAspect#54316, systemId#54311]
(1413) Exchange
Input [4]: [_extract_internalRefUUID#58734, _extract_internalRefUUID#58731, _extract_code#58732, _extract_internalRefUUID#58733]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225575]
(1414) Project
Output [4]: [_extract_code#58732, _extract_internalRefUUID#58733, _extract_internalRefUUID#58731, _extract_internalRefUUID#58734]
Input [4]: [_extract_internalRefUUID#58734, _extract_internalRefUUID#58731, _extract_code#58732, _extract_internalRefUUID#58733]
(1415) BroadcastExchange
Input [4]: [_extract_code#58732, _extract_internalRefUUID#58733, _extract_internalRefUUID#58731, _extract_internalRefUUID#58734]
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=227713]
(1416) BroadcastHashJoin
Left keys [4]: [coalesce(product#54307, ), isnull(product#54307), coalesce(plant#54308, ), isnull(plant#54308)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58731, ), isnull(_extract_internalRefUUID#58731), coalesce(_extract_internalRefUUID#58734, ), isnull(_extract_internalRefUUID#58734)]
Join type: LeftOuter
Join condition: None
(1417) Project
Output [4]: [product#54307, plant#54308, _extract_code#58732, _extract_internalRefUUID#58733]
Input [6]: [product#54307, plant#54308, _extract_code#58732, _extract_internalRefUUID#58733, _extract_internalRefUUID#58731, _extract_internalRefUUID#58734]
(1418) Scan parquet
Output [2]: [internalUUID#54321, systemId#54320]
Batched: 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#54321]
Input [2]: [internalUUID#54321, systemId#54320]
(1420) Exchange
Input [1]: [internalUUID#54321]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225581]
(1421) BroadcastExchange
Input [1]: [internalUUID#54321]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227717]
(1422) BroadcastHashJoin
Left keys [2]: [coalesce(plant#54308, ), isnull(plant#54308)]
Right keys [2]: [coalesce(internalUUID#54321, ), isnull(internalUUID#54321)]
Join type: LeftOuter
Join condition: None
(1423) Project
Output [4]: [product#54307, plant#54308, _extract_code#58732, _extract_internalRefUUID#58733]
Input [5]: [product#54307, plant#54308, _extract_code#58732, _extract_internalRefUUID#58733, internalUUID#54321]
(1424) Scan parquet
Output [4]: [internalUUID#54335, baseUnitOfMeasure#54339, unitOfMeasureConversions#54341, systemId#54334]
Batched: 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#54335, baseUnitOfMeasure#54339, unitOfMeasureConversions#54341, systemId#54334]
Condition : isnotnull(internalUUID#54335)
(1426) Project
Output [3]: [internalUUID#54335, baseUnitOfMeasure#54339, unitOfMeasureConversions#54341]
Input [4]: [internalUUID#54335, baseUnitOfMeasure#54339, unitOfMeasureConversions#54341, systemId#54334]
(1427) Exchange
Input [3]: [internalUUID#54335, baseUnitOfMeasure#54339, unitOfMeasureConversions#54341]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225587]
(1428) BroadcastExchange
Input [3]: [internalUUID#54335, baseUnitOfMeasure#54339, unitOfMeasureConversions#54341]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227721]
(1429) BroadcastHashJoin
Left keys [1]: [product#54307]
Right keys [1]: [internalUUID#54335]
Join type: LeftOuter
Join condition: None
(1430) Project
Output [2]: [plant#54308, filter(unitOfMeasureConversions#54341, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58732) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58733)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#54339.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#54339.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#54346]
Input [7]: [product#54307, plant#54308, _extract_code#58732, _extract_internalRefUUID#58733, internalUUID#54335, baseUnitOfMeasure#54339, unitOfMeasureConversions#54341]
(1431) Generate
Input [2]: [plant#54308, filteredUnitOfMeasureConversions#54346]
Arguments: explode(filteredUnitOfMeasureConversions#54346.quantityNumerator), [plant#54308, filteredUnitOfMeasureConversions#54346], true, [quantityNumerator#54347]
(1432) Project
Output [2]: [plant#54308, filteredUnitOfMeasureConversions#54346.quantityDenominator AS _extract_quantityDenominator#58061]
Input [3]: [plant#54308, filteredUnitOfMeasureConversions#54346, quantityNumerator#54347]
(1433) Generate
Input [2]: [plant#54308, _extract_quantityDenominator#58061]
Arguments: explode(_extract_quantityDenominator#58061), [plant#54308], true, [quantityDenominator#54348]
(1434) Project
Output [1]: [plant#54308]
Input [2]: [plant#54308, quantityDenominator#54348]
(1435) HashAggregate
Input [1]: [plant#54308]
Keys [1]: [plant#54308]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#54308]
(1436) Exchange
Input [1]: [plant#54308]
Arguments: hashpartitioning(plant#54308, 10), ENSURE_REQUIREMENTS, [plan_id=227730]
(1437) HashAggregate
Input [1]: [plant#54308]
Keys [1]: [plant#54308]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#54308]
(1438) BroadcastHashJoin
Left keys [1]: [plantUuid#54304]
Right keys [1]: [plant#54308]
Join type: Inner
Join condition: None
(1439) Project
Output [3]: [plantUuid#54304, storageLocId#54305, storageLocUuid#54306]
Input [4]: [plantUuid#54304, storageLocId#54305, storageLocUuid#54306, plant#54308]
(1440) BroadcastHashJoin
Left keys [2]: [coalesce(plant#54276.internalRefUUID, ), isnull(plant#54276.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#54304, ), isnull(plantUuid#54304)]
Join type: Inner
Join condition: None
(1441) Generate
Input [9]: [systemId#54273, internalUUID#54274, product#54275, plant#54276, calculationDateTime#54277, stockQuantities#54278, plantUuid#54304, storageLocId#54305, storageLocUuid#54306]
Arguments: explode(filter(stockQuantities#54278, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#54306) AND (lambda x#50650.storageLocation.Id = storageLocId#54305)), lambda x#50650, false))), [systemId#54273, internalUUID#54274, product#54275, plant#54276, calculationDateTime#54277, plantUuid#54304], false, [stockQuantity#54351]
(1442) ObjectHashAggregate
Input [7]: [systemId#54273, internalUUID#54274, product#54275, plant#54276, calculationDateTime#54277, plantUuid#54304, stockQuantity#54351]
Keys [5]: [plantUuid#54304, internalUUID#54274, plant#54276, product#54275, systemId#54273]
Functions [2]: [partial_first(calculationDateTime#54277, false), partial_collect_list(stockQuantity#54351, 0, 0)]
Aggregate Attributes [3]: [first#59769, valueSet#59770, buf#59771]
Results [8]: [plantUuid#54304, internalUUID#54274, plant#54276, product#54275, systemId#54273, first#59772, valueSet#59773, buf#59774]
(1443) ObjectHashAggregate
Input [8]: [plantUuid#54304, internalUUID#54274, plant#54276, product#54275, systemId#54273, first#59772, valueSet#59773, buf#59774]
Keys [5]: [plantUuid#54304, internalUUID#54274, plant#54276, product#54275, systemId#54273]
Functions [2]: [first(calculationDateTime#54277, false), collect_list(stockQuantity#54351, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#54277)()#50665, collect_list(stockQuantity#54351, 0, 0)#50666]
Results [4]: [product#54275, plant#54276, first(calculationDateTime#54277)()#50665 AS calculationDateTime#54352, collect_list(stockQuantity#54351, 0, 0)#50666 AS stockQuantities#54353]
(1444) Filter
Input [4]: [product#54275, plant#54276, calculationDateTime#54352, stockQuantities#54353]
Condition : ((size(stockQuantities#54353, true) > 0) AND isnotnull(calculationDateTime#54352))
(1445) Generate
Input [4]: [product#54275, plant#54276, calculationDateTime#54352, stockQuantities#54353]
Arguments: explode(stockQuantities#54353), [product#54275, plant#54276, calculationDateTime#54352], false, [stockQuantity#54354]
(1446) Filter
Input [4]: [product#54275, plant#54276, calculationDateTime#54352, stockQuantity#54354]
Condition : (((isnotnull(stockQuantity#54354.specialStockIndicator.code) AND isnotnull(stockQuantity#54354.stockType.code)) AND (stockQuantity#54354.specialStockIndicator.code = )) AND (stockQuantity#54354.stockType.code = 01))
(1447) Project
Output [4]: [plant#54276.internalRefUUID AS plantUuid#54356, product#54275.internalRefUUID AS productUuid#54358, calculationDateTime#54352, stockQuantity#54354.storagelocation.id AS storageLocId#54359]
Input [4]: [product#54275, plant#54276, calculationDateTime#54352, stockQuantity#54354]
(1448) Exchange
Input [4]: [plantUuid#54356, productUuid#54358, calculationDateTime#54352, storageLocId#54359]
Arguments: hashpartitioning(productUuid#54358, plantUuid#54356, 10), ENSURE_REQUIREMENTS, [plan_id=227763]
(1449) Sort
Input [4]: [plantUuid#54356, productUuid#54358, calculationDateTime#54352, storageLocId#54359]
Arguments: [productUuid#54358 ASC NULLS FIRST, plantUuid#54356 ASC NULLS FIRST], false, 0
(1450) Scan parquet
Output [3]: [product#54364, plant#54365, orderDateTime#54366]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1451) Filter
Input [3]: [product#54364, plant#54365, orderDateTime#54366]
Condition : ((isnotnull(orderDateTime#54366) AND isnotnull(plant#54365)) AND isnotnull(product#54364))
(1452) Exchange
Input [3]: [product#54364, plant#54365, orderDateTime#54366]
Arguments: hashpartitioning(product#54364, plant#54365, 10), REPARTITION_BY_NUM, [plan_id=226783]
(1453) Scan parquet
Output [4]: [plant#54370, product#54371, productionAspect#54373, systemId#54368]
Batched: 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#54370.internalRefUUID AS _extract_internalRefUUID#58735, product#54371.internalRefUUID AS _extract_internalRefUUID#58738, productionAspect#54373.productMovementPlants.unitOfIssue.code AS _extract_code#58736, productionAspect#54373.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58737]
Input [4]: [plant#54370, product#54371, productionAspect#54373, systemId#54368]
(1455) Exchange
Input [4]: [_extract_internalRefUUID#58735, _extract_internalRefUUID#58738, _extract_code#58736, _extract_internalRefUUID#58737]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225612]
(1456) Project
Output [4]: [_extract_code#58736, _extract_internalRefUUID#58737, _extract_internalRefUUID#58738, _extract_internalRefUUID#58735]
Input [4]: [_extract_internalRefUUID#58735, _extract_internalRefUUID#58738, _extract_code#58736, _extract_internalRefUUID#58737]
(1457) BroadcastExchange
Input [4]: [_extract_code#58736, _extract_internalRefUUID#58737, _extract_internalRefUUID#58738, _extract_internalRefUUID#58735]
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=227746]
(1458) BroadcastHashJoin
Left keys [4]: [coalesce(product#54364, ), isnull(product#54364), coalesce(plant#54365, ), isnull(plant#54365)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58738, ), isnull(_extract_internalRefUUID#58738), coalesce(_extract_internalRefUUID#58735, ), isnull(_extract_internalRefUUID#58735)]
Join type: LeftOuter
Join condition: None
(1459) Project
Output [5]: [product#54364, plant#54365, orderDateTime#54366, _extract_code#58736, _extract_internalRefUUID#58737]
Input [7]: [product#54364, plant#54365, orderDateTime#54366, _extract_code#58736, _extract_internalRefUUID#58737, _extract_internalRefUUID#58738, _extract_internalRefUUID#58735]
(1460) Scan parquet
Output [2]: [internalUUID#54378, systemId#54377]
Batched: 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#54378]
Input [2]: [internalUUID#54378, systemId#54377]
(1462) Exchange
Input [1]: [internalUUID#54378]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225618]
(1463) BroadcastExchange
Input [1]: [internalUUID#54378]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227750]
(1464) BroadcastHashJoin
Left keys [2]: [coalesce(plant#54365, ), isnull(plant#54365)]
Right keys [2]: [coalesce(internalUUID#54378, ), isnull(internalUUID#54378)]
Join type: LeftOuter
Join condition: None
(1465) Project
Output [5]: [product#54364, plant#54365, orderDateTime#54366, _extract_code#58736, _extract_internalRefUUID#58737]
Input [6]: [product#54364, plant#54365, orderDateTime#54366, _extract_code#58736, _extract_internalRefUUID#58737, internalUUID#54378]
(1466) Scan parquet
Output [4]: [internalUUID#54392, baseUnitOfMeasure#54396, unitOfMeasureConversions#54398, systemId#54391]
Batched: 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#54392, baseUnitOfMeasure#54396, unitOfMeasureConversions#54398, systemId#54391]
Condition : isnotnull(internalUUID#54392)
(1468) Project
Output [3]: [internalUUID#54392, baseUnitOfMeasure#54396, unitOfMeasureConversions#54398]
Input [4]: [internalUUID#54392, baseUnitOfMeasure#54396, unitOfMeasureConversions#54398, systemId#54391]
(1469) Exchange
Input [3]: [internalUUID#54392, baseUnitOfMeasure#54396, unitOfMeasureConversions#54398]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225624]
(1470) BroadcastExchange
Input [3]: [internalUUID#54392, baseUnitOfMeasure#54396, unitOfMeasureConversions#54398]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227754]
(1471) BroadcastHashJoin
Left keys [1]: [product#54364]
Right keys [1]: [internalUUID#54392]
Join type: LeftOuter
Join condition: None
(1472) Project
Output [4]: [product#54364, plant#54365, orderDateTime#54366, filter(unitOfMeasureConversions#54398, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58736) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58737)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#54396.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#54396.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#54403]
Input [8]: [product#54364, plant#54365, orderDateTime#54366, _extract_code#58736, _extract_internalRefUUID#58737, internalUUID#54392, baseUnitOfMeasure#54396, unitOfMeasureConversions#54398]
(1473) Generate
Input [4]: [product#54364, plant#54365, orderDateTime#54366, filteredUnitOfMeasureConversions#54403]
Arguments: explode(filteredUnitOfMeasureConversions#54403.quantityNumerator), [product#54364, plant#54365, orderDateTime#54366, filteredUnitOfMeasureConversions#54403], true, [quantityNumerator#54404]
(1474) Project
Output [4]: [product#54364, plant#54365, orderDateTime#54366, filteredUnitOfMeasureConversions#54403.quantityDenominator AS _extract_quantityDenominator#58065]
Input [5]: [product#54364, plant#54365, orderDateTime#54366, filteredUnitOfMeasureConversions#54403, quantityNumerator#54404]
(1475) Generate
Input [4]: [product#54364, plant#54365, orderDateTime#54366, _extract_quantityDenominator#58065]
Arguments: explode(_extract_quantityDenominator#58065), [product#54364, plant#54365, orderDateTime#54366], true, [quantityDenominator#54405]
(1476) Project
Output [3]: [product#54364, plant#54365, orderDateTime#54366]
Input [4]: [product#54364, plant#54365, orderDateTime#54366, quantityDenominator#54405]
(1477) Sort
Input [3]: [product#54364, plant#54365, orderDateTime#54366]
Arguments: [product#54364 ASC NULLS FIRST, plant#54365 ASC NULLS FIRST], false, 0
(1478) SortMergeJoin
Left keys [2]: [productUuid#54358, plantUuid#54356]
Right keys [2]: [product#54364, plant#54365]
Join type: Inner
Join condition: (calculationDateTime#54352 <= orderDateTime#54366)
(1479) Project
Output [4]: [plantUuid#54356 AS plant#54408, productUuid#54358 AS product#54409, storageLocId#54359, calculationDateTime#54352]
Input [7]: [plantUuid#54356, productUuid#54358, calculationDateTime#54352, storageLocId#54359, product#54364, plant#54365, orderDateTime#54366]
(1480) HashAggregate
Input [4]: [plant#54408, product#54409, storageLocId#54359, calculationDateTime#54352]
Keys [3]: [plant#54408, product#54409, storageLocId#54359]
Functions [1]: [partial_max(calculationDateTime#54352)]
Aggregate Attributes [1]: [max#59767]
Results [4]: [plant#54408, product#54409, storageLocId#54359, max#59768]
(1481) HashAggregate
Input [4]: [plant#54408, product#54409, storageLocId#54359, max#59768]
Keys [3]: [plant#54408, product#54409, storageLocId#54359]
Functions [1]: [max(calculationDateTime#54352)]
Aggregate Attributes [1]: [max(calculationDateTime#54352)#50743]
Results [4]: [plant#54408, product#54409, storageLocId#54359, max(calculationDateTime#54352)#50743 AS max_calc_datetime#54410]
(1482) Exchange
Input [4]: [plant#54408, product#54409, storageLocId#54359, max_calc_datetime#54410]
Arguments: hashpartitioning(coalesce(plant#54408, ), isnull(plant#54408), coalesce(product#54409, ), isnull(product#54409), coalesce(storageLocId#54359, ), isnull(storageLocId#54359), coalesce(max_calc_datetime#54410, 1970-01-01 00:00:00), isnull(max_calc_datetime#54410), 10), ENSURE_REQUIREMENTS, [plan_id=227773]
(1483) Sort
Input [4]: [plant#54408, product#54409, storageLocId#54359, max_calc_datetime#54410]
Arguments: [coalesce(plant#54408, ) ASC NULLS FIRST, isnull(plant#54408) ASC NULLS FIRST, coalesce(product#54409, ) ASC NULLS FIRST, isnull(product#54409) ASC NULLS FIRST, coalesce(storageLocId#54359, ) ASC NULLS FIRST, isnull(storageLocId#54359) ASC NULLS FIRST, coalesce(max_calc_datetime#54410, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#54410) ASC NULLS FIRST], false, 0
(1484) SortMergeJoin
Left keys [8]: [coalesce(plant#54271, ), isnull(plant#54271), coalesce(product#54272, ), isnull(product#54272), coalesce(storageLocId#54222, ), isnull(storageLocId#54222), coalesce(calculationDateTime#54215, 1970-01-01 00:00:00), isnull(calculationDateTime#54215)]
Right keys [8]: [coalesce(plant#54408, ), isnull(plant#54408), coalesce(product#54409, ), isnull(product#54409), coalesce(storageLocId#54359, ), isnull(storageLocId#54359), coalesce(max_calc_datetime#54410, 1970-01-01 00:00:00), isnull(max_calc_datetime#54410)]
Join type: Inner
Join condition: None
(1485) Project
Output [4]: [plant#54271, product#54272, calculationDateTime#54215, quantity#54224]
Input [9]: [plant#54271, product#54272, storageLocId#54222, calculationDateTime#54215, quantity#54224, plant#54408, product#54409, storageLocId#54359, max_calc_datetime#54410]
(1486) HashAggregate
Input [4]: [plant#54271, product#54272, calculationDateTime#54215, quantity#54224]
Keys [2]: [product#54272, plant#54271]
Functions [2]: [partial_min(calculationDateTime#54215), partial_sum(quantity#54224)]
Aggregate Attributes [2]: [min#59757, sum#59758]
Results [4]: [product#54272, plant#54271, min#59759, sum#59760]
(1487) Exchange
Input [4]: [product#54272, plant#54271, min#59759, sum#59760]
Arguments: hashpartitioning(product#54272, plant#54271, 10), ENSURE_REQUIREMENTS, [plan_id=227780]
(1488) HashAggregate
Input [4]: [product#54272, plant#54271, min#59759, sum#59760]
Keys [2]: [product#54272, plant#54271]
Functions [2]: [min(calculationDateTime#54215), sum(quantity#54224)]
Aggregate Attributes [2]: [min(calculationDateTime#54215)#50899, sum(quantity#54224)#50898]
Results [4]: [product#54272, plant#54271, min(calculationDateTime#54215)#50899 AS minCalculationDateTime#54412, round(sum(quantity#54224)#50898, 0) AS roundedQuantitySum#54413]
(1489) Sort
Input [4]: [product#54272, plant#54271, minCalculationDateTime#54412, roundedQuantitySum#54413]
Arguments: [product#54272 ASC NULLS FIRST, plant#54271 ASC NULLS FIRST], false, 0
(1490) SortMergeJoin
Left keys [2]: [product#54092, plant#54093]
Right keys [2]: [product#54272, plant#54271]
Join type: LeftOuter
Join condition: None
(1491) Project
Output [8]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54135, CASE WHEN isnotnull(minCalculationDateTime#54412) THEN minCalculationDateTime#54412 ELSE orderDateTime#54094 END AS stockDatetime#54414, CASE WHEN isnotnull(roundedQuantitySum#54413) THEN array(roundedQuantitySum#54413) ELSE [0.0] END AS stockBatchQuantities#54415]
Input [10]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54135, product#54272, plant#54271, minCalculationDateTime#54412, roundedQuantitySum#54413]
(1492) Scan parquet
Output [9]: [product#54417, plant#54418, demandChannel#54419, demandStream#54420, considerVariance#54421, demandTimeBuckets#54422, demandPointInTimeStart#54423, demandPointInTimeEnd#54424, demandPointInTime#54425]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000006/0_1_10000000006]
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#54417, plant#54418, demandChannel#54419, demandStream#54420, considerVariance#54421, demandTimeBuckets#54422, demandPointInTimeStart#54423, demandPointInTimeEnd#54424, demandPointInTime#54425]
Condition : (isnotnull(product#54417) AND isnotnull(plant#54418))
(1494) BroadcastExchange
Input [9]: [product#54417, plant#54418, demandChannel#54419, demandStream#54420, considerVariance#54421, demandTimeBuckets#54422, demandPointInTimeStart#54423, demandPointInTimeEnd#54424, demandPointInTime#54425]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=227789]
(1495) BroadcastHashJoin
Left keys [2]: [product#54092, plant#54093]
Right keys [2]: [product#54417, plant#54418]
Join type: LeftOuter
Join condition: None
(1496) Project
Output [9]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54135, stockDatetime#54414, stockBatchQuantities#54415, CASE WHEN isnotnull(product#54417) THEN struct(demandChannel, demandChannel#54419, demandStream, demandStream#54420, considerVariance, considerVariance#54421, demandTimeBuckets, demandTimeBuckets#54422, demandPointInTimeStart, demandPointInTimeStart#54423, demandPointInTimeEnd, demandPointInTimeEnd#54424, demandPointInTime, demandPointInTime#54425) END AS rawDemands#54426]
Input [17]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54135, stockDatetime#54414, stockBatchQuantities#54415, product#54417, plant#54418, demandChannel#54419, demandStream#54420, considerVariance#54421, demandTimeBuckets#54422, demandPointInTimeStart#54423, demandPointInTimeEnd#54424, demandPointInTime#54425]
(1497) ObjectHashAggregate
Input [9]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54135, stockDatetime#54414, stockBatchQuantities#54415, rawDemands#54426]
Keys [9]: [product#54092, plant#54093, orderDateTime#54094, knownfloatingpointnormalized(if (isnull(productPlant#54104)) null else named_struct(systemId, productPlant#54104.systemId, internalUUID, productPlant#54104.internalUUID, plant, productPlant#54104.plant, product, productPlant#54104.product, blockedForReplenishmentStartingFrom, productPlant#54104.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#54104.productionAspect)) null else named_struct(productMovementPlants, productPlant#54104.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#54104.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#54104.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#54104.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#54104.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#54104.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#54104.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#54104.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#54104.salesPlant, listing, productPlant#54104.listing)) AS productPlant#54104, timezonecode#54118, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#54135)) AS outboundUnit#54135, stockDatetime#54414, knownfloatingpointnormalized(transform(stockBatchQuantities#54415, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#59754)), lambda arg#59754, false))) AS stockBatchQuantities#54415, [7226582400000000] AS [7226582400000000]#59753]
Functions [1]: [partial_collect_list(rawDemands#54426, 0, 0)]
Aggregate Attributes [1]: [buf#59755]
Results [10]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54135, stockDatetime#54414, stockBatchQuantities#54415, [7226582400000000]#59753, buf#59756]
(1498) ObjectHashAggregate
Input [10]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54135, stockDatetime#54414, stockBatchQuantities#54415, [7226582400000000]#59753, buf#59756]
Keys [9]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54135, stockDatetime#54414, stockBatchQuantities#54415, [7226582400000000]#59753]
Functions [1]: [collect_list(rawDemands#54426, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#54426, 0, 0)#50991]
Results [10]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54135, stockDatetime#54414, stockBatchQuantities#54415, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#54416, collect_list(rawDemands#54426, 0, 0)#50991 AS rawDemands#54427]
(1499) DeserializeToObject
Input [10]: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54135, stockDatetime#54414, stockBatchQuantities#54415, stockBatchShelfLifeEndDatetimes#54416, rawDemands#54427]
Arguments: createexternalrow(invoke(product#54092.toString()), invoke(plant#54093.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#54094)), if (isnull(productPlant#54104)) null else createexternalrow(invoke(productPlant#54104.systemId.toString()), invoke(productPlant#54104.internalUUID.toString()), if (isnull(productPlant#54104.plant)) null else createexternalrow(invoke(productPlant#54104.plant.internalRefUUID.toString()), invoke(productPlant#54104.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#54104.product)) null else createexternalrow(invoke(productPlant#54104.product.internalRefUUID.toString()), invoke(productPlant#54104.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#54104.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#54104.productionAspect)) null else createexternalrow(if (isnull(productPlant#54104.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#54104.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#54104.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#54104.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#54104.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#54104.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#54104.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#54104.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#54104.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#54104.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#54104.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#54104.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#54104.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#54104.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#54104.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#54104.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#54104.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#54104.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#54104.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#54104.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#54104.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#54104.salesPlant)) null else createexternalrow(if (isnull(productPlant#54104.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#54104.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#54104.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#54104.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#54118.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#54135)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#54414)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#54415, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#54416, 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#54427, 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#51012: org.apache.spark.sql.Row
(1500) MapElements
Input [1]: [obj#51012]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@22994051, obj#51017: org.apache.spark.sql.Row
(1501) SerializeFromObject
Input [1]: [obj#51017]
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#54428, 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#54429]
(1502) Exchange
Input [2]: [product#54428, plant#54429]
Arguments: hashpartitioning(coalesce(plant#54429, ), isnull(plant#54429), coalesce(product#54428, ), isnull(product#54428), 10), ENSURE_REQUIREMENTS, [plan_id=227800]
(1503) Sort
Input [2]: [product#54428, plant#54429]
Arguments: [coalesce(plant#54429, ) ASC NULLS FIRST, isnull(plant#54429) ASC NULLS FIRST, coalesce(product#54428, ) ASC NULLS FIRST, isnull(product#54428) ASC NULLS FIRST], false, 0
(1504) SortMergeJoin
Left keys [4]: [coalesce(plant#53768, ), isnull(plant#53768), coalesce(product#53767, ), isnull(product#53767)]
Right keys [4]: [coalesce(plant#54429, ), isnull(plant#54429), coalesce(product#54428, ), isnull(product#54428)]
Join type: LeftOuter
Join condition: None
(1505) Project
Output [3]: [product#53767, plant#53768, stockDatetime#54089]
Input [5]: [product#53767, plant#53768, stockDatetime#54089, product#54428, plant#54429]
(1506) Scan parquet
Output [6]: [internalUUID#54433, id#54434, supplier#54436, isMarkedForDeletion#54439, items#54440, systemId#54432]
Batched: 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#54433, id#54434, supplier#54436, isMarkedForDeletion#54439, items#54440, systemId#54432]
Condition : (((isnotnull(isMarkedForDeletion#54439) AND NOT isMarkedForDeletion#54439) AND (size(items#54440, true) > 0)) AND isnotnull(items#54440))
(1508) Project
Output [4]: [internalUUID#54433, id#54434, supplier#54436, items#54440]
Input [6]: [internalUUID#54433, id#54434, supplier#54436, isMarkedForDeletion#54439, items#54440, systemId#54432]
(1509) Exchange
Input [4]: [internalUUID#54433, id#54434, supplier#54436, items#54440]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225656]
(1510) Generate
Input [4]: [internalUUID#54433, id#54434, supplier#54436, items#54440]
Arguments: explode(items#54440), [internalUUID#54433, id#54434, supplier#54436], false, [item#54441]
(1511) Filter
Input [4]: [internalUUID#54433, id#54434, supplier#54436, item#54441]
Condition : ((((isnotnull(item#54441.deletionIndicator) AND isnotnull(item#54441.completeIndicator)) AND isnotnull(item#54441.returnIndicator)) AND ((NOT item#54441.deletionIndicator AND NOT item#54441.completeIndicator) AND NOT item#54441.returnIndicator)) AND isnotnull(item#54441.product.internalRefUUID))
(1512) Project
Output [9]: [id#54434, internalUUID#54433, supplier#54436.internalRefUUID AS supplierUuid#54442, item#54441.product.internalRefUUID AS product#54444, item#54441.quantityUnit.code AS quantityUom#54446, item#54441.quantityUnit.internalRefUUID AS quantityUomUuid#54447, item#54441.quantityNumerator AS quantityNumerator#54448, item#54441.quantityDenominator AS quantityDenominator#54449, item#54441.scheduleLines AS scheduleLines#54450]
Input [4]: [internalUUID#54433, id#54434, supplier#54436, item#54441]
(1513) BroadcastExchange
Input [9]: [id#54434, internalUUID#54433, supplierUuid#54442, product#54444, quantityUom#54446, quantityUomUuid#54447, quantityNumerator#54448, quantityDenominator#54449, scheduleLines#54450]
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=227806]
(1514) BroadcastHashJoin
Left keys [4]: [coalesce(product#53767, ), isnull(product#53767), coalesce(plant#53768, ), isnull(plant#53768)]
Right keys [4]: [coalesce(product#54444, ), isnull(product#54444), coalesce(supplierUuid#54442, ), isnull(supplierUuid#54442)]
Join type: Inner
Join condition: None
(1515) Project
Output [3]: [product#54444, plant#53768, filter(transform(filter(transform(scheduleLines#54450, lambdafunction(struct(openQty, (greatest((lambda x_26#53747.quantity - coalesce(lambda x_26#53747.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_26#53747.productAvailabilityDateTime, lambda x_26#53747.deliveryAt)), lambda x_26#53747, false)), lambdafunction((lambda x_27#53748.availabilityDatetime < stockDatetime#54089), lambda x_27#53748, false)), lambdafunction(struct(documentId, id#54434, documentUuid, internalUUID#54433, openQty, lambda x_28#53749.openQty, openQtyInBaseUnit, ((lambda x_28#53749.openQty * quantityNumerator#54448) / quantityDenominator#54449), qtyUom, quantityUom#54446, qtyUomUuid, quantityUomUuid#54447, availabilityDatetime, lambda x_28#53749.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_28#53749, false)), lambdafunction(NOT (lambda x_29#53750.openQty = 0.0), lambda x_29#53750, false)) AS openGoodsMovements#53746]
Input [12]: [product#53767, plant#53768, stockDatetime#54089, id#54434, internalUUID#54433, supplierUuid#54442, product#54444, quantityUom#54446, quantityUomUuid#54447, quantityNumerator#54448, quantityDenominator#54449, scheduleLines#54450]
(1516) ObjectHashAggregate
Input [3]: [product#54444, plant#53768, openGoodsMovements#53746]
Keys [2]: [product#54444, plant#53768]
Functions [1]: [partial_collect_list(openGoodsMovements#53746, 0, 0)]
Aggregate Attributes [1]: [buf#59735]
Results [3]: [product#54444, plant#53768, buf#59736]
(1517) Exchange
Input [3]: [product#54444, plant#53768, buf#59736]
Arguments: hashpartitioning(product#54444, plant#53768, 10), ENSURE_REQUIREMENTS, [plan_id=227811]
(1518) ObjectHashAggregate
Input [3]: [product#54444, plant#53768, buf#59736]
Keys [2]: [product#54444, plant#53768]
Functions [1]: [collect_list(openGoodsMovements#53746, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#53746, 0, 0)#53766]
Results [3]: [product#54444, plant#53768, flatten(collect_list(openGoodsMovements#53746, 0, 0)#53766) AS openGoodsMovements#53751]
(1519) Filter
Input [3]: [product#54444, plant#53768, openGoodsMovements#53751]
Condition : (size(openGoodsMovements#53751, false) > 0)
(1520) Union
(1521) ObjectHashAggregate
Input [3]: [product#51393, plant#51392, openGoodsMovements#51770]
Keys [2]: [product#51393, plant#51392]
Functions [1]: [partial_collect_list(openGoodsMovements#51770, 0, 0)]
Aggregate Attributes [1]: [buf#59733]
Results [3]: [product#51393, plant#51392, buf#59734]
(1522) Exchange
Input [3]: [product#51393, plant#51392, buf#59734]
Arguments: hashpartitioning(product#51393, plant#51392, 10), ENSURE_REQUIREMENTS, [plan_id=227817]
(1523) ObjectHashAggregate
Input [3]: [product#51393, plant#51392, buf#59734]
Keys [2]: [product#51393, plant#51392]
Functions [1]: [collect_list(openGoodsMovements#51770, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#51770, 0, 0)#54506]
Results [3]: [product#51393, plant#51392, flatten(collect_list(openGoodsMovements#51770, 0, 0)#54506) AS openGoodsMovements#54502]
(1524) Project
Output [5]: [product#51393, plant#51392, openGoodsMovements#54502.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#58159, openGoodsMovements#54502.availabilityDatetime AS _extract_availabilityDatetime#58160, openGoodsMovements#54502.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#58161]
Input [3]: [product#51393, plant#51392, openGoodsMovements#54502]
(1525) Sort
Input [5]: [product#51393, plant#51392, _extract_openQtyInBaseUnit#58159, _extract_availabilityDatetime#58160, _extract_shelfLifeEndDatetime#58161]
Arguments: [product#51393 ASC NULLS FIRST, plant#51392 ASC NULLS FIRST], false, 0
(1526) SortMergeJoin
Left keys [2]: [product#50545, plant#50546]
Right keys [2]: [product#51393, plant#51392]
Join type: LeftOuter
Join condition: None
(1527) Project
Output [10]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, dayBucketDemands#51024, pointInTimeDemands#51025, coalesce(_extract_openQtyInBaseUnit#58159, []) AS openGoodsMovementQuantities#55221, coalesce(_extract_availabilityDatetime#58160, []) AS openGoodsMovementAvailabilityDatetimes#55222, coalesce(_extract_shelfLifeEndDatetime#58161, []) AS openGoodsMovementShelfLifeEndDatetimes#55223]
Input [12]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, dayBucketDemands#51024, pointInTimeDemands#51025, product#51393, plant#51392, _extract_openQtyInBaseUnit#58159, _extract_availabilityDatetime#58160, _extract_shelfLifeEndDatetime#58161]
(1528) Scan parquet
Output [3]: [product#55523, plant#55524, orderDateTime#55525]
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/10000000006/shardId=0_1_10000000006]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1529) Exchange
Input [3]: [product#55523, plant#55524, orderDateTime#55525]
Arguments: hashpartitioning(product#55523, plant#55524, 10), REPARTITION_BY_NUM, [plan_id=225672]
(1530) Scan parquet
Output [8]: [internalUUID#55528, plant#55529, product#55530, blockedForReplenishmentStartingFrom#55531, productionAspect#55532, salesPlant#55533, listing#55534, systemId#55527]
Batched: 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#55527, internalUUID#55528, plant#55529, product#55530, blockedForReplenishmentStartingFrom#55531, productionAspect#55532, salesPlant#55533, listing#55534]
Input [8]: [internalUUID#55528, plant#55529, product#55530, blockedForReplenishmentStartingFrom#55531, productionAspect#55532, salesPlant#55533, listing#55534, systemId#55527]
(1532) Exchange
Input [8]: [systemId#55527, internalUUID#55528, plant#55529, product#55530, blockedForReplenishmentStartingFrom#55531, productionAspect#55532, salesPlant#55533, listing#55534]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225675]
(1533) Project
Output [1]: [struct(systemId, systemId#55527, internalUUID, internalUUID#55528, plant, plant#55529, product, product#55530, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#55531, productionAspect, productionAspect#55532, salesPlant, salesPlant#55533, listing, listing#55534) AS productPlant#55535]
Input [8]: [systemId#55527, internalUUID#55528, plant#55529, product#55530, blockedForReplenishmentStartingFrom#55531, productionAspect#55532, salesPlant#55533, listing#55534]
(1534) BroadcastExchange
Input [1]: [productPlant#55535]
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=227827]
(1535) BroadcastHashJoin
Left keys [4]: [coalesce(product#55523, ), isnull(product#55523), coalesce(plant#55524, ), isnull(plant#55524)]
Right keys [4]: [coalesce(productPlant#55535.product.internalRefUUID, ), isnull(productPlant#55535.product.internalRefUUID), coalesce(productPlant#55535.plant.internalRefUUID, ), isnull(productPlant#55535.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1536) Scan parquet
Output [3]: [internalUUID#55537, address#55543, systemId#55536]
Batched: 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#55537, address#55543.timeZone.code AS timezonecode#55548]
Input [3]: [internalUUID#55537, address#55543, systemId#55536]
(1538) Exchange
Input [2]: [internalUUID#55537, timezonecode#55548]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225680]
(1539) BroadcastExchange
Input [2]: [internalUUID#55537, timezonecode#55548]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227830]
(1540) BroadcastHashJoin
Left keys [2]: [coalesce(plant#55524, ), isnull(plant#55524)]
Right keys [2]: [coalesce(internalUUID#55537, ), isnull(internalUUID#55537)]
Join type: LeftOuter
Join condition: None
(1541) Project
Output [5]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, CASE WHEN isnotnull(timezonecode#55548) THEN timezonecode#55548 ELSE UTC END AS timezonecode#55549]
Input [6]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, internalUUID#55537, timezonecode#55548]
(1542) Scan parquet
Output [4]: [internalUUID#55551, baseUnitOfMeasure#55555, unitOfMeasureConversions#55557, systemId#55550]
Batched: 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#55551, baseUnitOfMeasure#55555, unitOfMeasureConversions#55557, systemId#55550]
Condition : isnotnull(internalUUID#55551)
(1544) Project
Output [3]: [internalUUID#55551, baseUnitOfMeasure#55555, unitOfMeasureConversions#55557]
Input [4]: [internalUUID#55551, baseUnitOfMeasure#55555, unitOfMeasureConversions#55557, systemId#55550]
(1545) Exchange
Input [3]: [internalUUID#55551, baseUnitOfMeasure#55555, unitOfMeasureConversions#55557]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225686]
(1546) BroadcastExchange
Input [3]: [internalUUID#55551, baseUnitOfMeasure#55555, unitOfMeasureConversions#55557]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227834]
(1547) BroadcastHashJoin
Left keys [1]: [product#55523]
Right keys [1]: [internalUUID#55551]
Join type: LeftOuter
Join condition: None
(1548) Project
Output [6]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, filter(unitOfMeasureConversions#55557, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#55535.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#55535.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#55555.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#55555.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#55562]
Input [8]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, internalUUID#55551, baseUnitOfMeasure#55555, unitOfMeasureConversions#55557]
(1549) Project
Output [7]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, filteredUnitOfMeasureConversions#55562.quantityDenominator AS _extract_quantityDenominator#58279, filteredUnitOfMeasureConversions#55562.quantityNumerator AS _extract_quantityNumerator#58280]
Input [6]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, filteredUnitOfMeasureConversions#55562]
(1550) Generate
Input [7]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, _extract_quantityDenominator#58279, _extract_quantityNumerator#58280]
Arguments: explode(_extract_quantityNumerator#58280), [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, _extract_quantityDenominator#58279], true, [quantityNumerator#55563]
(1551) Generate
Input [7]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, _extract_quantityDenominator#58279, quantityNumerator#55563]
Arguments: explode(_extract_quantityDenominator#58279), [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, quantityNumerator#55563], true, [quantityDenominator#55564]
(1552) Project
Output [6]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, (cast(quantityNumerator#55563 as double) / cast(quantityDenominator#55564 as double)) AS outboundUnit#55565]
Input [7]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, quantityNumerator#55563, quantityDenominator#55564]
(1553) Project
Output [6]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, CASE WHEN (isnull(outboundUnit#55565) OR (outboundUnit#55565 <= 0.0)) THEN 1.0 ELSE outboundUnit#55565 END AS outboundUnit#55566]
Input [6]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55565]
(1554) Sort
Input [6]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566]
Arguments: [product#55523 ASC NULLS FIRST, plant#55524 ASC NULLS FIRST], false, 0
(1555) Scan parquet
Output [6]: [internalUUID#55568, product#55569, plant#55570, calculationDateTime#55571, stockQuantities#55572, systemId#55567]
Batched: 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#55568, product#55569, plant#55570, calculationDateTime#55571, stockQuantities#55572, systemId#55567]
Condition : (isnotnull(plant#55570.internalRefUUID) AND isnotnull(product#55569.internalRefUUID))
(1557) Project
Output [6]: [systemId#55567, internalUUID#55568, product#55569, plant#55570, calculationDateTime#55571, stockQuantities#55572]
Input [6]: [internalUUID#55568, product#55569, plant#55570, calculationDateTime#55571, stockQuantities#55572, systemId#55567]
(1558) Exchange
Input [6]: [systemId#55567, internalUUID#55568, product#55569, plant#55570, calculationDateTime#55571, stockQuantities#55572]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225697]
(1559) BroadcastExchange
Input [6]: [systemId#55567, internalUUID#55568, product#55569, plant#55570, calculationDateTime#55571, stockQuantities#55572]
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=227866]
(1560) Scan parquet
Output [2]: [marketUnit#55573, distributionCenters#55579]
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#55573, distributionCenters#55579]
Condition : (((marketUnit#55573 <=> DIP_1691) AND (size(distributionCenters#55579, true) > 0)) AND isnotnull(distributionCenters#55579))
(1562) Project
Output [1]: [distributionCenters#55579]
Input [2]: [marketUnit#55573, distributionCenters#55579]
(1563) Exchange
Input [1]: [distributionCenters#55579]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225701]
(1564) Generate
Input [1]: [distributionCenters#55579]
Arguments: explode(distributionCenters#55579), false, [distributionCenters#55595]
(1565) Filter
Input [1]: [distributionCenters#55595]
Condition : (((size(distributionCenters#55595.storageLocations, true) > 0) AND isnotnull(distributionCenters#55595.storageLocations)) AND isnotnull(distributionCenters#55595.internalRefUUID))
(1566) Project
Output [2]: [distributionCenters#55595.internalRefUUID AS _extract_internalRefUUID#58071, distributionCenters#55595.storageLocations AS _extract_storageLocations#58072]
Input [1]: [distributionCenters#55595]
(1567) Generate
Input [2]: [_extract_internalRefUUID#58071, _extract_storageLocations#58072]
Arguments: explode(_extract_storageLocations#58072), [_extract_internalRefUUID#58071], false, [storageLocations#55596]
(1568) Project
Output [3]: [_extract_internalRefUUID#58071 AS plantUuid#55598, storageLocations#55596.id AS storageLocId#55599, storageLocations#55596.internalRefUUID AS storageLocUuid#55600]
Input [2]: [_extract_internalRefUUID#58071, storageLocations#55596]
(1569) BroadcastExchange
Input [3]: [plantUuid#55598, storageLocId#55599, storageLocUuid#55600]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227862]
(1570) Scan parquet
Output [2]: [product#55601, plant#55602]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1571) Filter
Input [2]: [product#55601, plant#55602]
Condition : isnotnull(plant#55602)
(1572) Exchange
Input [2]: [product#55601, plant#55602]
Arguments: hashpartitioning(product#55601, plant#55602, 10), REPARTITION_BY_NUM, [plan_id=226824]
(1573) Scan parquet
Output [4]: [plant#55607, product#55608, productionAspect#55610, systemId#55605]
Batched: 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#55607.internalRefUUID AS _extract_internalRefUUID#58742, product#55608.internalRefUUID AS _extract_internalRefUUID#58741, productionAspect#55610.productMovementPlants.unitOfIssue.code AS _extract_code#58739, productionAspect#55610.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58740]
Input [4]: [plant#55607, product#55608, productionAspect#55610, systemId#55605]
(1575) Exchange
Input [4]: [_extract_internalRefUUID#58742, _extract_internalRefUUID#58741, _extract_code#58739, _extract_internalRefUUID#58740]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225713]
(1576) Project
Output [4]: [_extract_code#58739, _extract_internalRefUUID#58740, _extract_internalRefUUID#58741, _extract_internalRefUUID#58742]
Input [4]: [_extract_internalRefUUID#58742, _extract_internalRefUUID#58741, _extract_code#58739, _extract_internalRefUUID#58740]
(1577) BroadcastExchange
Input [4]: [_extract_code#58739, _extract_internalRefUUID#58740, _extract_internalRefUUID#58741, _extract_internalRefUUID#58742]
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=227842]
(1578) BroadcastHashJoin
Left keys [4]: [coalesce(product#55601, ), isnull(product#55601), coalesce(plant#55602, ), isnull(plant#55602)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58741, ), isnull(_extract_internalRefUUID#58741), coalesce(_extract_internalRefUUID#58742, ), isnull(_extract_internalRefUUID#58742)]
Join type: LeftOuter
Join condition: None
(1579) Project
Output [4]: [product#55601, plant#55602, _extract_code#58739, _extract_internalRefUUID#58740]
Input [6]: [product#55601, plant#55602, _extract_code#58739, _extract_internalRefUUID#58740, _extract_internalRefUUID#58741, _extract_internalRefUUID#58742]
(1580) Scan parquet
Output [2]: [internalUUID#55615, systemId#55614]
Batched: 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#55615]
Input [2]: [internalUUID#55615, systemId#55614]
(1582) Exchange
Input [1]: [internalUUID#55615]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225719]
(1583) BroadcastExchange
Input [1]: [internalUUID#55615]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227846]
(1584) BroadcastHashJoin
Left keys [2]: [coalesce(plant#55602, ), isnull(plant#55602)]
Right keys [2]: [coalesce(internalUUID#55615, ), isnull(internalUUID#55615)]
Join type: LeftOuter
Join condition: None
(1585) Project
Output [4]: [product#55601, plant#55602, _extract_code#58739, _extract_internalRefUUID#58740]
Input [5]: [product#55601, plant#55602, _extract_code#58739, _extract_internalRefUUID#58740, internalUUID#55615]
(1586) Scan parquet
Output [4]: [internalUUID#55629, baseUnitOfMeasure#55633, unitOfMeasureConversions#55635, systemId#55628]
Batched: 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#55629, baseUnitOfMeasure#55633, unitOfMeasureConversions#55635, systemId#55628]
Condition : isnotnull(internalUUID#55629)
(1588) Project
Output [3]: [internalUUID#55629, baseUnitOfMeasure#55633, unitOfMeasureConversions#55635]
Input [4]: [internalUUID#55629, baseUnitOfMeasure#55633, unitOfMeasureConversions#55635, systemId#55628]
(1589) Exchange
Input [3]: [internalUUID#55629, baseUnitOfMeasure#55633, unitOfMeasureConversions#55635]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225725]
(1590) BroadcastExchange
Input [3]: [internalUUID#55629, baseUnitOfMeasure#55633, unitOfMeasureConversions#55635]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227850]
(1591) BroadcastHashJoin
Left keys [1]: [product#55601]
Right keys [1]: [internalUUID#55629]
Join type: LeftOuter
Join condition: None
(1592) Project
Output [2]: [plant#55602, filter(unitOfMeasureConversions#55635, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58739) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58740)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#55633.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#55633.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#55640]
Input [7]: [product#55601, plant#55602, _extract_code#58739, _extract_internalRefUUID#58740, internalUUID#55629, baseUnitOfMeasure#55633, unitOfMeasureConversions#55635]
(1593) Generate
Input [2]: [plant#55602, filteredUnitOfMeasureConversions#55640]
Arguments: explode(filteredUnitOfMeasureConversions#55640.quantityNumerator), [plant#55602, filteredUnitOfMeasureConversions#55640], true, [quantityNumerator#55641]
(1594) Project
Output [2]: [plant#55602, filteredUnitOfMeasureConversions#55640.quantityDenominator AS _extract_quantityDenominator#58073]
Input [3]: [plant#55602, filteredUnitOfMeasureConversions#55640, quantityNumerator#55641]
(1595) Generate
Input [2]: [plant#55602, _extract_quantityDenominator#58073]
Arguments: explode(_extract_quantityDenominator#58073), [plant#55602], true, [quantityDenominator#55642]
(1596) Project
Output [1]: [plant#55602]
Input [2]: [plant#55602, quantityDenominator#55642]
(1597) HashAggregate
Input [1]: [plant#55602]
Keys [1]: [plant#55602]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#55602]
(1598) Exchange
Input [1]: [plant#55602]
Arguments: hashpartitioning(plant#55602, 10), ENSURE_REQUIREMENTS, [plan_id=227859]
(1599) HashAggregate
Input [1]: [plant#55602]
Keys [1]: [plant#55602]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#55602]
(1600) BroadcastHashJoin
Left keys [1]: [plantUuid#55598]
Right keys [1]: [plant#55602]
Join type: Inner
Join condition: None
(1601) Project
Output [3]: [plantUuid#55598, storageLocId#55599, storageLocUuid#55600]
Input [4]: [plantUuid#55598, storageLocId#55599, storageLocUuid#55600, plant#55602]
(1602) BroadcastHashJoin
Left keys [2]: [coalesce(plant#55570.internalRefUUID, ), isnull(plant#55570.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#55598, ), isnull(plantUuid#55598)]
Join type: Inner
Join condition: None
(1603) Generate
Input [9]: [systemId#55567, internalUUID#55568, product#55569, plant#55570, calculationDateTime#55571, stockQuantities#55572, plantUuid#55598, storageLocId#55599, storageLocUuid#55600]
Arguments: explode(filter(stockQuantities#55572, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#55600) AND (lambda x#50650.storageLocation.Id = storageLocId#55599)), lambda x#50650, false))), [systemId#55567, internalUUID#55568, product#55569, plant#55570, calculationDateTime#55571, plantUuid#55598], false, [stockQuantity#55645]
(1604) ObjectHashAggregate
Input [7]: [systemId#55567, internalUUID#55568, product#55569, plant#55570, calculationDateTime#55571, plantUuid#55598, stockQuantity#55645]
Keys [5]: [plantUuid#55598, internalUUID#55568, plant#55570, product#55569, systemId#55567]
Functions [2]: [partial_first(calculationDateTime#55571, false), partial_collect_list(stockQuantity#55645, 0, 0)]
Aggregate Attributes [3]: [first#59779, valueSet#59780, buf#59781]
Results [8]: [plantUuid#55598, internalUUID#55568, plant#55570, product#55569, systemId#55567, first#59782, valueSet#59783, buf#59784]
(1605) ObjectHashAggregate
Input [8]: [plantUuid#55598, internalUUID#55568, plant#55570, product#55569, systemId#55567, first#59782, valueSet#59783, buf#59784]
Keys [5]: [plantUuid#55598, internalUUID#55568, plant#55570, product#55569, systemId#55567]
Functions [2]: [first(calculationDateTime#55571, false), collect_list(stockQuantity#55645, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#55571)()#50665, collect_list(stockQuantity#55645, 0, 0)#50666]
Results [4]: [product#55569, plant#55570, first(calculationDateTime#55571)()#50665 AS calculationDateTime#55646, collect_list(stockQuantity#55645, 0, 0)#50666 AS stockQuantities#55647]
(1606) Filter
Input [4]: [product#55569, plant#55570, calculationDateTime#55646, stockQuantities#55647]
Condition : ((size(stockQuantities#55647, true) > 0) AND isnotnull(calculationDateTime#55646))
(1607) Generate
Input [4]: [product#55569, plant#55570, calculationDateTime#55646, stockQuantities#55647]
Arguments: explode(stockQuantities#55647), [product#55569, plant#55570, calculationDateTime#55646], false, [stockQuantity#55648]
(1608) Filter
Input [4]: [product#55569, plant#55570, calculationDateTime#55646, stockQuantity#55648]
Condition : (((isnotnull(stockQuantity#55648.specialStockIndicator.code) AND isnotnull(stockQuantity#55648.stockType.code)) AND (stockQuantity#55648.specialStockIndicator.code = )) AND (stockQuantity#55648.stockType.code = 01))
(1609) Project
Output [5]: [plant#55570.internalRefUUID AS plantUuid#55650, product#55569.internalRefUUID AS productUuid#55652, calculationDateTime#55646, stockQuantity#55648.storagelocation.id AS storageLocId#55653, stockQuantity#55648.quantity.measure AS quantity#55655]
Input [4]: [product#55569, plant#55570, calculationDateTime#55646, stockQuantity#55648]
(1610) Exchange
Input [5]: [plantUuid#55650, productUuid#55652, calculationDateTime#55646, storageLocId#55653, quantity#55655]
Arguments: hashpartitioning(productUuid#55652, plantUuid#55650, 10), ENSURE_REQUIREMENTS, [plan_id=227892]
(1611) Sort
Input [5]: [plantUuid#55650, productUuid#55652, calculationDateTime#55646, storageLocId#55653, quantity#55655]
Arguments: [productUuid#55652 ASC NULLS FIRST, plantUuid#55650 ASC NULLS FIRST], false, 0
(1612) Scan parquet
Output [3]: [product#55658, plant#55659, orderDateTime#55660]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1613) Filter
Input [3]: [product#55658, plant#55659, orderDateTime#55660]
Condition : ((isnotnull(orderDateTime#55660) AND isnotnull(plant#55659)) AND isnotnull(product#55658))
(1614) Exchange
Input [3]: [product#55658, plant#55659, orderDateTime#55660]
Arguments: hashpartitioning(product#55658, plant#55659, 10), REPARTITION_BY_NUM, [plan_id=226847]
(1615) Scan parquet
Output [4]: [plant#55664, product#55665, productionAspect#55667, systemId#55662]
Batched: 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#55664.internalRefUUID AS _extract_internalRefUUID#58743, product#55665.internalRefUUID AS _extract_internalRefUUID#58744, productionAspect#55667.productMovementPlants.unitOfIssue.code AS _extract_code#58745, productionAspect#55667.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58746]
Input [4]: [plant#55664, product#55665, productionAspect#55667, systemId#55662]
(1617) Exchange
Input [4]: [_extract_internalRefUUID#58743, _extract_internalRefUUID#58744, _extract_code#58745, _extract_internalRefUUID#58746]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225750]
(1618) Project
Output [4]: [_extract_code#58745, _extract_internalRefUUID#58746, _extract_internalRefUUID#58744, _extract_internalRefUUID#58743]
Input [4]: [_extract_internalRefUUID#58743, _extract_internalRefUUID#58744, _extract_code#58745, _extract_internalRefUUID#58746]
(1619) BroadcastExchange
Input [4]: [_extract_code#58745, _extract_internalRefUUID#58746, _extract_internalRefUUID#58744, _extract_internalRefUUID#58743]
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=227875]
(1620) BroadcastHashJoin
Left keys [4]: [coalesce(product#55658, ), isnull(product#55658), coalesce(plant#55659, ), isnull(plant#55659)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58744, ), isnull(_extract_internalRefUUID#58744), coalesce(_extract_internalRefUUID#58743, ), isnull(_extract_internalRefUUID#58743)]
Join type: LeftOuter
Join condition: None
(1621) Project
Output [5]: [product#55658, plant#55659, orderDateTime#55660, _extract_code#58745, _extract_internalRefUUID#58746]
Input [7]: [product#55658, plant#55659, orderDateTime#55660, _extract_code#58745, _extract_internalRefUUID#58746, _extract_internalRefUUID#58744, _extract_internalRefUUID#58743]
(1622) Scan parquet
Output [2]: [internalUUID#55672, systemId#55671]
Batched: 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#55672]
Input [2]: [internalUUID#55672, systemId#55671]
(1624) Exchange
Input [1]: [internalUUID#55672]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225756]
(1625) BroadcastExchange
Input [1]: [internalUUID#55672]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227879]
(1626) BroadcastHashJoin
Left keys [2]: [coalesce(plant#55659, ), isnull(plant#55659)]
Right keys [2]: [coalesce(internalUUID#55672, ), isnull(internalUUID#55672)]
Join type: LeftOuter
Join condition: None
(1627) Project
Output [5]: [product#55658, plant#55659, orderDateTime#55660, _extract_code#58745, _extract_internalRefUUID#58746]
Input [6]: [product#55658, plant#55659, orderDateTime#55660, _extract_code#58745, _extract_internalRefUUID#58746, internalUUID#55672]
(1628) Scan parquet
Output [4]: [internalUUID#55686, baseUnitOfMeasure#55690, unitOfMeasureConversions#55692, systemId#55685]
Batched: 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#55686, baseUnitOfMeasure#55690, unitOfMeasureConversions#55692, systemId#55685]
Condition : isnotnull(internalUUID#55686)
(1630) Project
Output [3]: [internalUUID#55686, baseUnitOfMeasure#55690, unitOfMeasureConversions#55692]
Input [4]: [internalUUID#55686, baseUnitOfMeasure#55690, unitOfMeasureConversions#55692, systemId#55685]
(1631) Exchange
Input [3]: [internalUUID#55686, baseUnitOfMeasure#55690, unitOfMeasureConversions#55692]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225762]
(1632) BroadcastExchange
Input [3]: [internalUUID#55686, baseUnitOfMeasure#55690, unitOfMeasureConversions#55692]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227883]
(1633) BroadcastHashJoin
Left keys [1]: [product#55658]
Right keys [1]: [internalUUID#55686]
Join type: LeftOuter
Join condition: None
(1634) Project
Output [4]: [product#55658, plant#55659, orderDateTime#55660, filter(unitOfMeasureConversions#55692, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58745) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58746)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#55690.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#55690.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#55697]
Input [8]: [product#55658, plant#55659, orderDateTime#55660, _extract_code#58745, _extract_internalRefUUID#58746, internalUUID#55686, baseUnitOfMeasure#55690, unitOfMeasureConversions#55692]
(1635) Generate
Input [4]: [product#55658, plant#55659, orderDateTime#55660, filteredUnitOfMeasureConversions#55697]
Arguments: explode(filteredUnitOfMeasureConversions#55697.quantityNumerator), [product#55658, plant#55659, orderDateTime#55660, filteredUnitOfMeasureConversions#55697], true, [quantityNumerator#55698]
(1636) Project
Output [4]: [product#55658, plant#55659, orderDateTime#55660, filteredUnitOfMeasureConversions#55697.quantityDenominator AS _extract_quantityDenominator#58077]
Input [5]: [product#55658, plant#55659, orderDateTime#55660, filteredUnitOfMeasureConversions#55697, quantityNumerator#55698]
(1637) Generate
Input [4]: [product#55658, plant#55659, orderDateTime#55660, _extract_quantityDenominator#58077]
Arguments: explode(_extract_quantityDenominator#58077), [product#55658, plant#55659, orderDateTime#55660], true, [quantityDenominator#55699]
(1638) Project
Output [3]: [product#55658, plant#55659, orderDateTime#55660]
Input [4]: [product#55658, plant#55659, orderDateTime#55660, quantityDenominator#55699]
(1639) Sort
Input [3]: [product#55658, plant#55659, orderDateTime#55660]
Arguments: [product#55658 ASC NULLS FIRST, plant#55659 ASC NULLS FIRST], false, 0
(1640) SortMergeJoin
Left keys [2]: [productUuid#55652, plantUuid#55650]
Right keys [2]: [product#55658, plant#55659]
Join type: Inner
Join condition: (calculationDateTime#55646 <= orderDateTime#55660)
(1641) Project
Output [5]: [plantUuid#55650 AS plant#55702, productUuid#55652 AS product#55703, storageLocId#55653, calculationDateTime#55646, quantity#55655]
Input [8]: [plantUuid#55650, productUuid#55652, calculationDateTime#55646, storageLocId#55653, quantity#55655, product#55658, plant#55659, orderDateTime#55660]
(1642) Exchange
Input [5]: [plant#55702, product#55703, storageLocId#55653, calculationDateTime#55646, quantity#55655]
Arguments: hashpartitioning(coalesce(plant#55702, ), isnull(plant#55702), coalesce(product#55703, ), isnull(product#55703), coalesce(storageLocId#55653, ), isnull(storageLocId#55653), coalesce(calculationDateTime#55646, 1970-01-01 00:00:00), isnull(calculationDateTime#55646), 10), ENSURE_REQUIREMENTS, [plan_id=227956]
(1643) Sort
Input [5]: [plant#55702, product#55703, storageLocId#55653, calculationDateTime#55646, quantity#55655]
Arguments: [coalesce(plant#55702, ) ASC NULLS FIRST, isnull(plant#55702) ASC NULLS FIRST, coalesce(product#55703, ) ASC NULLS FIRST, isnull(product#55703) ASC NULLS FIRST, coalesce(storageLocId#55653, ) ASC NULLS FIRST, isnull(storageLocId#55653) ASC NULLS FIRST, coalesce(calculationDateTime#55646, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#55646) ASC NULLS FIRST], false, 0
(1644) Scan parquet
Output [6]: [internalUUID#55705, product#55706, plant#55707, calculationDateTime#55708, stockQuantities#55709, systemId#55704]
Batched: 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#55705, product#55706, plant#55707, calculationDateTime#55708, stockQuantities#55709, systemId#55704]
Condition : (isnotnull(plant#55707.internalRefUUID) AND isnotnull(product#55706.internalRefUUID))
(1646) Project
Output [6]: [systemId#55704, internalUUID#55705, product#55706, plant#55707, calculationDateTime#55708, stockQuantities#55709]
Input [6]: [internalUUID#55705, product#55706, plant#55707, calculationDateTime#55708, stockQuantities#55709, systemId#55704]
(1647) Exchange
Input [6]: [systemId#55704, internalUUID#55705, product#55706, plant#55707, calculationDateTime#55708, stockQuantities#55709]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225774]
(1648) BroadcastExchange
Input [6]: [systemId#55704, internalUUID#55705, product#55706, plant#55707, calculationDateTime#55708, stockQuantities#55709]
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=227921]
(1649) Scan parquet
Output [2]: [marketUnit#55710, distributionCenters#55716]
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#55710, distributionCenters#55716]
Condition : (((marketUnit#55710 <=> DIP_1691) AND (size(distributionCenters#55716, true) > 0)) AND isnotnull(distributionCenters#55716))
(1651) Project
Output [1]: [distributionCenters#55716]
Input [2]: [marketUnit#55710, distributionCenters#55716]
(1652) Exchange
Input [1]: [distributionCenters#55716]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225778]
(1653) Generate
Input [1]: [distributionCenters#55716]
Arguments: explode(distributionCenters#55716), false, [distributionCenters#55732]
(1654) Filter
Input [1]: [distributionCenters#55732]
Condition : (((size(distributionCenters#55732.storageLocations, true) > 0) AND isnotnull(distributionCenters#55732.storageLocations)) AND isnotnull(distributionCenters#55732.internalRefUUID))
(1655) Project
Output [2]: [distributionCenters#55732.internalRefUUID AS _extract_internalRefUUID#58081, distributionCenters#55732.storageLocations AS _extract_storageLocations#58082]
Input [1]: [distributionCenters#55732]
(1656) Generate
Input [2]: [_extract_internalRefUUID#58081, _extract_storageLocations#58082]
Arguments: explode(_extract_storageLocations#58082), [_extract_internalRefUUID#58081], false, [storageLocations#55733]
(1657) Project
Output [3]: [_extract_internalRefUUID#58081 AS plantUuid#55735, storageLocations#55733.id AS storageLocId#55736, storageLocations#55733.internalRefUUID AS storageLocUuid#55737]
Input [2]: [_extract_internalRefUUID#58081, storageLocations#55733]
(1658) BroadcastExchange
Input [3]: [plantUuid#55735, storageLocId#55736, storageLocUuid#55737]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227917]
(1659) Scan parquet
Output [2]: [product#55738, plant#55739]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1660) Filter
Input [2]: [product#55738, plant#55739]
Condition : isnotnull(plant#55739)
(1661) Exchange
Input [2]: [product#55738, plant#55739]
Arguments: hashpartitioning(product#55738, plant#55739, 10), REPARTITION_BY_NUM, [plan_id=226860]
(1662) Scan parquet
Output [4]: [plant#55744, product#55745, productionAspect#55747, systemId#55742]
Batched: 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#55744.internalRefUUID AS _extract_internalRefUUID#58747, product#55745.internalRefUUID AS _extract_internalRefUUID#58748, productionAspect#55747.productMovementPlants.unitOfIssue.code AS _extract_code#58749, productionAspect#55747.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58750]
Input [4]: [plant#55744, product#55745, productionAspect#55747, systemId#55742]
(1664) Exchange
Input [4]: [_extract_internalRefUUID#58747, _extract_internalRefUUID#58748, _extract_code#58749, _extract_internalRefUUID#58750]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225790]
(1665) Project
Output [4]: [_extract_code#58749, _extract_internalRefUUID#58750, _extract_internalRefUUID#58748, _extract_internalRefUUID#58747]
Input [4]: [_extract_internalRefUUID#58747, _extract_internalRefUUID#58748, _extract_code#58749, _extract_internalRefUUID#58750]
(1666) BroadcastExchange
Input [4]: [_extract_code#58749, _extract_internalRefUUID#58750, _extract_internalRefUUID#58748, _extract_internalRefUUID#58747]
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=227897]
(1667) BroadcastHashJoin
Left keys [4]: [coalesce(product#55738, ), isnull(product#55738), coalesce(plant#55739, ), isnull(plant#55739)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58748, ), isnull(_extract_internalRefUUID#58748), coalesce(_extract_internalRefUUID#58747, ), isnull(_extract_internalRefUUID#58747)]
Join type: LeftOuter
Join condition: None
(1668) Project
Output [4]: [product#55738, plant#55739, _extract_code#58749, _extract_internalRefUUID#58750]
Input [6]: [product#55738, plant#55739, _extract_code#58749, _extract_internalRefUUID#58750, _extract_internalRefUUID#58748, _extract_internalRefUUID#58747]
(1669) Scan parquet
Output [2]: [internalUUID#55752, systemId#55751]
Batched: 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#55752]
Input [2]: [internalUUID#55752, systemId#55751]
(1671) Exchange
Input [1]: [internalUUID#55752]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225796]
(1672) BroadcastExchange
Input [1]: [internalUUID#55752]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227901]
(1673) BroadcastHashJoin
Left keys [2]: [coalesce(plant#55739, ), isnull(plant#55739)]
Right keys [2]: [coalesce(internalUUID#55752, ), isnull(internalUUID#55752)]
Join type: LeftOuter
Join condition: None
(1674) Project
Output [4]: [product#55738, plant#55739, _extract_code#58749, _extract_internalRefUUID#58750]
Input [5]: [product#55738, plant#55739, _extract_code#58749, _extract_internalRefUUID#58750, internalUUID#55752]
(1675) Scan parquet
Output [4]: [internalUUID#55766, baseUnitOfMeasure#55770, unitOfMeasureConversions#55772, systemId#55765]
Batched: 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#55766, baseUnitOfMeasure#55770, unitOfMeasureConversions#55772, systemId#55765]
Condition : isnotnull(internalUUID#55766)
(1677) Project
Output [3]: [internalUUID#55766, baseUnitOfMeasure#55770, unitOfMeasureConversions#55772]
Input [4]: [internalUUID#55766, baseUnitOfMeasure#55770, unitOfMeasureConversions#55772, systemId#55765]
(1678) Exchange
Input [3]: [internalUUID#55766, baseUnitOfMeasure#55770, unitOfMeasureConversions#55772]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225802]
(1679) BroadcastExchange
Input [3]: [internalUUID#55766, baseUnitOfMeasure#55770, unitOfMeasureConversions#55772]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227905]
(1680) BroadcastHashJoin
Left keys [1]: [product#55738]
Right keys [1]: [internalUUID#55766]
Join type: LeftOuter
Join condition: None
(1681) Project
Output [2]: [plant#55739, filter(unitOfMeasureConversions#55772, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58749) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58750)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#55770.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#55770.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#55777]
Input [7]: [product#55738, plant#55739, _extract_code#58749, _extract_internalRefUUID#58750, internalUUID#55766, baseUnitOfMeasure#55770, unitOfMeasureConversions#55772]
(1682) Generate
Input [2]: [plant#55739, filteredUnitOfMeasureConversions#55777]
Arguments: explode(filteredUnitOfMeasureConversions#55777.quantityNumerator), [plant#55739, filteredUnitOfMeasureConversions#55777], true, [quantityNumerator#55778]
(1683) Project
Output [2]: [plant#55739, filteredUnitOfMeasureConversions#55777.quantityDenominator AS _extract_quantityDenominator#58083]
Input [3]: [plant#55739, filteredUnitOfMeasureConversions#55777, quantityNumerator#55778]
(1684) Generate
Input [2]: [plant#55739, _extract_quantityDenominator#58083]
Arguments: explode(_extract_quantityDenominator#58083), [plant#55739], true, [quantityDenominator#55779]
(1685) Project
Output [1]: [plant#55739]
Input [2]: [plant#55739, quantityDenominator#55779]
(1686) HashAggregate
Input [1]: [plant#55739]
Keys [1]: [plant#55739]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#55739]
(1687) Exchange
Input [1]: [plant#55739]
Arguments: hashpartitioning(plant#55739, 10), ENSURE_REQUIREMENTS, [plan_id=227914]
(1688) HashAggregate
Input [1]: [plant#55739]
Keys [1]: [plant#55739]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#55739]
(1689) BroadcastHashJoin
Left keys [1]: [plantUuid#55735]
Right keys [1]: [plant#55739]
Join type: Inner
Join condition: None
(1690) Project
Output [3]: [plantUuid#55735, storageLocId#55736, storageLocUuid#55737]
Input [4]: [plantUuid#55735, storageLocId#55736, storageLocUuid#55737, plant#55739]
(1691) BroadcastHashJoin
Left keys [2]: [coalesce(plant#55707.internalRefUUID, ), isnull(plant#55707.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#55735, ), isnull(plantUuid#55735)]
Join type: Inner
Join condition: None
(1692) Generate
Input [9]: [systemId#55704, internalUUID#55705, product#55706, plant#55707, calculationDateTime#55708, stockQuantities#55709, plantUuid#55735, storageLocId#55736, storageLocUuid#55737]
Arguments: explode(filter(stockQuantities#55709, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#55737) AND (lambda x#50650.storageLocation.Id = storageLocId#55736)), lambda x#50650, false))), [systemId#55704, internalUUID#55705, product#55706, plant#55707, calculationDateTime#55708, plantUuid#55735], false, [stockQuantity#55782]
(1693) ObjectHashAggregate
Input [7]: [systemId#55704, internalUUID#55705, product#55706, plant#55707, calculationDateTime#55708, plantUuid#55735, stockQuantity#55782]
Keys [5]: [plantUuid#55735, internalUUID#55705, plant#55707, product#55706, systemId#55704]
Functions [2]: [partial_first(calculationDateTime#55708, false), partial_collect_list(stockQuantity#55782, 0, 0)]
Aggregate Attributes [3]: [first#59787, valueSet#59788, buf#59789]
Results [8]: [plantUuid#55735, internalUUID#55705, plant#55707, product#55706, systemId#55704, first#59790, valueSet#59791, buf#59792]
(1694) ObjectHashAggregate
Input [8]: [plantUuid#55735, internalUUID#55705, plant#55707, product#55706, systemId#55704, first#59790, valueSet#59791, buf#59792]
Keys [5]: [plantUuid#55735, internalUUID#55705, plant#55707, product#55706, systemId#55704]
Functions [2]: [first(calculationDateTime#55708, false), collect_list(stockQuantity#55782, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#55708)()#50665, collect_list(stockQuantity#55782, 0, 0)#50666]
Results [4]: [product#55706, plant#55707, first(calculationDateTime#55708)()#50665 AS calculationDateTime#55783, collect_list(stockQuantity#55782, 0, 0)#50666 AS stockQuantities#55784]
(1695) Filter
Input [4]: [product#55706, plant#55707, calculationDateTime#55783, stockQuantities#55784]
Condition : ((size(stockQuantities#55784, true) > 0) AND isnotnull(calculationDateTime#55783))
(1696) Generate
Input [4]: [product#55706, plant#55707, calculationDateTime#55783, stockQuantities#55784]
Arguments: explode(stockQuantities#55784), [product#55706, plant#55707, calculationDateTime#55783], false, [stockQuantity#55785]
(1697) Filter
Input [4]: [product#55706, plant#55707, calculationDateTime#55783, stockQuantity#55785]
Condition : (((isnotnull(stockQuantity#55785.specialStockIndicator.code) AND isnotnull(stockQuantity#55785.stockType.code)) AND (stockQuantity#55785.specialStockIndicator.code = )) AND (stockQuantity#55785.stockType.code = 01))
(1698) Project
Output [4]: [plant#55707.internalRefUUID AS plantUuid#55787, product#55706.internalRefUUID AS productUuid#55789, calculationDateTime#55783, stockQuantity#55785.storagelocation.id AS storageLocId#55790]
Input [4]: [product#55706, plant#55707, calculationDateTime#55783, stockQuantity#55785]
(1699) Exchange
Input [4]: [plantUuid#55787, productUuid#55789, calculationDateTime#55783, storageLocId#55790]
Arguments: hashpartitioning(productUuid#55789, plantUuid#55787, 10), ENSURE_REQUIREMENTS, [plan_id=227947]
(1700) Sort
Input [4]: [plantUuid#55787, productUuid#55789, calculationDateTime#55783, storageLocId#55790]
Arguments: [productUuid#55789 ASC NULLS FIRST, plantUuid#55787 ASC NULLS FIRST], false, 0
(1701) Scan parquet
Output [3]: [product#55795, plant#55796, orderDateTime#55797]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1702) Filter
Input [3]: [product#55795, plant#55796, orderDateTime#55797]
Condition : ((isnotnull(orderDateTime#55797) AND isnotnull(plant#55796)) AND isnotnull(product#55795))
(1703) Exchange
Input [3]: [product#55795, plant#55796, orderDateTime#55797]
Arguments: hashpartitioning(product#55795, plant#55796, 10), REPARTITION_BY_NUM, [plan_id=226883]
(1704) Scan parquet
Output [4]: [plant#55801, product#55802, productionAspect#55804, systemId#55799]
Batched: 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#55801.internalRefUUID AS _extract_internalRefUUID#58754, product#55802.internalRefUUID AS _extract_internalRefUUID#58753, productionAspect#55804.productMovementPlants.unitOfIssue.code AS _extract_code#58751, productionAspect#55804.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58752]
Input [4]: [plant#55801, product#55802, productionAspect#55804, systemId#55799]
(1706) Exchange
Input [4]: [_extract_internalRefUUID#58754, _extract_internalRefUUID#58753, _extract_code#58751, _extract_internalRefUUID#58752]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225827]
(1707) Project
Output [4]: [_extract_code#58751, _extract_internalRefUUID#58752, _extract_internalRefUUID#58753, _extract_internalRefUUID#58754]
Input [4]: [_extract_internalRefUUID#58754, _extract_internalRefUUID#58753, _extract_code#58751, _extract_internalRefUUID#58752]
(1708) BroadcastExchange
Input [4]: [_extract_code#58751, _extract_internalRefUUID#58752, _extract_internalRefUUID#58753, _extract_internalRefUUID#58754]
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=227930]
(1709) BroadcastHashJoin
Left keys [4]: [coalesce(product#55795, ), isnull(product#55795), coalesce(plant#55796, ), isnull(plant#55796)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58753, ), isnull(_extract_internalRefUUID#58753), coalesce(_extract_internalRefUUID#58754, ), isnull(_extract_internalRefUUID#58754)]
Join type: LeftOuter
Join condition: None
(1710) Project
Output [5]: [product#55795, plant#55796, orderDateTime#55797, _extract_code#58751, _extract_internalRefUUID#58752]
Input [7]: [product#55795, plant#55796, orderDateTime#55797, _extract_code#58751, _extract_internalRefUUID#58752, _extract_internalRefUUID#58753, _extract_internalRefUUID#58754]
(1711) Scan parquet
Output [2]: [internalUUID#55809, systemId#55808]
Batched: 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#55809]
Input [2]: [internalUUID#55809, systemId#55808]
(1713) Exchange
Input [1]: [internalUUID#55809]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225833]
(1714) BroadcastExchange
Input [1]: [internalUUID#55809]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227934]
(1715) BroadcastHashJoin
Left keys [2]: [coalesce(plant#55796, ), isnull(plant#55796)]
Right keys [2]: [coalesce(internalUUID#55809, ), isnull(internalUUID#55809)]
Join type: LeftOuter
Join condition: None
(1716) Project
Output [5]: [product#55795, plant#55796, orderDateTime#55797, _extract_code#58751, _extract_internalRefUUID#58752]
Input [6]: [product#55795, plant#55796, orderDateTime#55797, _extract_code#58751, _extract_internalRefUUID#58752, internalUUID#55809]
(1717) Scan parquet
Output [4]: [internalUUID#55823, baseUnitOfMeasure#55827, unitOfMeasureConversions#55829, systemId#55822]
Batched: 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#55823, baseUnitOfMeasure#55827, unitOfMeasureConversions#55829, systemId#55822]
Condition : isnotnull(internalUUID#55823)
(1719) Project
Output [3]: [internalUUID#55823, baseUnitOfMeasure#55827, unitOfMeasureConversions#55829]
Input [4]: [internalUUID#55823, baseUnitOfMeasure#55827, unitOfMeasureConversions#55829, systemId#55822]
(1720) Exchange
Input [3]: [internalUUID#55823, baseUnitOfMeasure#55827, unitOfMeasureConversions#55829]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225839]
(1721) BroadcastExchange
Input [3]: [internalUUID#55823, baseUnitOfMeasure#55827, unitOfMeasureConversions#55829]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227938]
(1722) BroadcastHashJoin
Left keys [1]: [product#55795]
Right keys [1]: [internalUUID#55823]
Join type: LeftOuter
Join condition: None
(1723) Project
Output [4]: [product#55795, plant#55796, orderDateTime#55797, filter(unitOfMeasureConversions#55829, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58751) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58752)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#55827.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#55827.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#55834]
Input [8]: [product#55795, plant#55796, orderDateTime#55797, _extract_code#58751, _extract_internalRefUUID#58752, internalUUID#55823, baseUnitOfMeasure#55827, unitOfMeasureConversions#55829]
(1724) Generate
Input [4]: [product#55795, plant#55796, orderDateTime#55797, filteredUnitOfMeasureConversions#55834]
Arguments: explode(filteredUnitOfMeasureConversions#55834.quantityNumerator), [product#55795, plant#55796, orderDateTime#55797, filteredUnitOfMeasureConversions#55834], true, [quantityNumerator#55835]
(1725) Project
Output [4]: [product#55795, plant#55796, orderDateTime#55797, filteredUnitOfMeasureConversions#55834.quantityDenominator AS _extract_quantityDenominator#58087]
Input [5]: [product#55795, plant#55796, orderDateTime#55797, filteredUnitOfMeasureConversions#55834, quantityNumerator#55835]
(1726) Generate
Input [4]: [product#55795, plant#55796, orderDateTime#55797, _extract_quantityDenominator#58087]
Arguments: explode(_extract_quantityDenominator#58087), [product#55795, plant#55796, orderDateTime#55797], true, [quantityDenominator#55836]
(1727) Project
Output [3]: [product#55795, plant#55796, orderDateTime#55797]
Input [4]: [product#55795, plant#55796, orderDateTime#55797, quantityDenominator#55836]
(1728) Sort
Input [3]: [product#55795, plant#55796, orderDateTime#55797]
Arguments: [product#55795 ASC NULLS FIRST, plant#55796 ASC NULLS FIRST], false, 0
(1729) SortMergeJoin
Left keys [2]: [productUuid#55789, plantUuid#55787]
Right keys [2]: [product#55795, plant#55796]
Join type: Inner
Join condition: (calculationDateTime#55783 <= orderDateTime#55797)
(1730) Project
Output [4]: [plantUuid#55787 AS plant#55839, productUuid#55789 AS product#55840, storageLocId#55790, calculationDateTime#55783]
Input [7]: [plantUuid#55787, productUuid#55789, calculationDateTime#55783, storageLocId#55790, product#55795, plant#55796, orderDateTime#55797]
(1731) HashAggregate
Input [4]: [plant#55839, product#55840, storageLocId#55790, calculationDateTime#55783]
Keys [3]: [plant#55839, product#55840, storageLocId#55790]
Functions [1]: [partial_max(calculationDateTime#55783)]
Aggregate Attributes [1]: [max#59785]
Results [4]: [plant#55839, product#55840, storageLocId#55790, max#59786]
(1732) HashAggregate
Input [4]: [plant#55839, product#55840, storageLocId#55790, max#59786]
Keys [3]: [plant#55839, product#55840, storageLocId#55790]
Functions [1]: [max(calculationDateTime#55783)]
Aggregate Attributes [1]: [max(calculationDateTime#55783)#50743]
Results [4]: [plant#55839, product#55840, storageLocId#55790, max(calculationDateTime#55783)#50743 AS max_calc_datetime#55841]
(1733) Exchange
Input [4]: [plant#55839, product#55840, storageLocId#55790, max_calc_datetime#55841]
Arguments: hashpartitioning(coalesce(plant#55839, ), isnull(plant#55839), coalesce(product#55840, ), isnull(product#55840), coalesce(storageLocId#55790, ), isnull(storageLocId#55790), coalesce(max_calc_datetime#55841, 1970-01-01 00:00:00), isnull(max_calc_datetime#55841), 10), ENSURE_REQUIREMENTS, [plan_id=227957]
(1734) Sort
Input [4]: [plant#55839, product#55840, storageLocId#55790, max_calc_datetime#55841]
Arguments: [coalesce(plant#55839, ) ASC NULLS FIRST, isnull(plant#55839) ASC NULLS FIRST, coalesce(product#55840, ) ASC NULLS FIRST, isnull(product#55840) ASC NULLS FIRST, coalesce(storageLocId#55790, ) ASC NULLS FIRST, isnull(storageLocId#55790) ASC NULLS FIRST, coalesce(max_calc_datetime#55841, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#55841) ASC NULLS FIRST], false, 0
(1735) SortMergeJoin
Left keys [8]: [coalesce(plant#55702, ), isnull(plant#55702), coalesce(product#55703, ), isnull(product#55703), coalesce(storageLocId#55653, ), isnull(storageLocId#55653), coalesce(calculationDateTime#55646, 1970-01-01 00:00:00), isnull(calculationDateTime#55646)]
Right keys [8]: [coalesce(plant#55839, ), isnull(plant#55839), coalesce(product#55840, ), isnull(product#55840), coalesce(storageLocId#55790, ), isnull(storageLocId#55790), coalesce(max_calc_datetime#55841, 1970-01-01 00:00:00), isnull(max_calc_datetime#55841)]
Join type: Inner
Join condition: None
(1736) Project
Output [4]: [plant#55702, product#55703, calculationDateTime#55646, quantity#55655]
Input [9]: [plant#55702, product#55703, storageLocId#55653, calculationDateTime#55646, quantity#55655, plant#55839, product#55840, storageLocId#55790, max_calc_datetime#55841]
(1737) HashAggregate
Input [4]: [plant#55702, product#55703, calculationDateTime#55646, quantity#55655]
Keys [2]: [product#55703, plant#55702]
Functions [2]: [partial_min(calculationDateTime#55646), partial_sum(quantity#55655)]
Aggregate Attributes [2]: [min#59775, sum#59776]
Results [4]: [product#55703, plant#55702, min#59777, sum#59778]
(1738) Exchange
Input [4]: [product#55703, plant#55702, min#59777, sum#59778]
Arguments: hashpartitioning(product#55703, plant#55702, 10), ENSURE_REQUIREMENTS, [plan_id=227964]
(1739) HashAggregate
Input [4]: [product#55703, plant#55702, min#59777, sum#59778]
Keys [2]: [product#55703, plant#55702]
Functions [2]: [min(calculationDateTime#55646), sum(quantity#55655)]
Aggregate Attributes [2]: [min(calculationDateTime#55646)#50899, sum(quantity#55655)#50898]
Results [4]: [product#55703, plant#55702, min(calculationDateTime#55646)#50899 AS minCalculationDateTime#55843, round(sum(quantity#55655)#50898, 0) AS roundedQuantitySum#55844]
(1740) Sort
Input [4]: [product#55703, plant#55702, minCalculationDateTime#55843, roundedQuantitySum#55844]
Arguments: [product#55703 ASC NULLS FIRST, plant#55702 ASC NULLS FIRST], false, 0
(1741) SortMergeJoin
Left keys [2]: [product#55523, plant#55524]
Right keys [2]: [product#55703, plant#55702]
Join type: LeftOuter
Join condition: None
(1742) Project
Output [8]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, CASE WHEN isnotnull(minCalculationDateTime#55843) THEN minCalculationDateTime#55843 ELSE orderDateTime#55525 END AS stockDatetime#55845, CASE WHEN isnotnull(roundedQuantitySum#55844) THEN array(roundedQuantitySum#55844) ELSE [0.0] END AS stockBatchQuantities#55846]
Input [10]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, product#55703, plant#55702, minCalculationDateTime#55843, roundedQuantitySum#55844]
(1743) Exchange
Input [8]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846]
Arguments: hashpartitioning(coalesce(plant#55524, ), isnull(plant#55524), coalesce(product#55523, ), isnull(product#55523), 10), ENSURE_REQUIREMENTS, [plan_id=228128]
(1744) Sort
Input [8]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846]
Arguments: [coalesce(plant#55524, ) ASC NULLS FIRST, isnull(plant#55524) ASC NULLS FIRST, coalesce(product#55523, ) ASC NULLS FIRST, isnull(product#55523) ASC NULLS FIRST], false, 0
(1745) Scan parquet
Output [3]: [product#55848, plant#55849, orderDateTime#55850]
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/10000000006/shardId=0_1_10000000006]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1746) Exchange
Input [3]: [product#55848, plant#55849, orderDateTime#55850]
Arguments: hashpartitioning(product#55848, plant#55849, 10), REPARTITION_BY_NUM, [plan_id=225857]
(1747) Scan parquet
Output [8]: [internalUUID#55853, plant#55854, product#55855, blockedForReplenishmentStartingFrom#55856, productionAspect#55857, salesPlant#55858, listing#55859, systemId#55852]
Batched: 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#55852, internalUUID#55853, plant#55854, product#55855, blockedForReplenishmentStartingFrom#55856, productionAspect#55857, salesPlant#55858, listing#55859]
Input [8]: [internalUUID#55853, plant#55854, product#55855, blockedForReplenishmentStartingFrom#55856, productionAspect#55857, salesPlant#55858, listing#55859, systemId#55852]
(1749) Exchange
Input [8]: [systemId#55852, internalUUID#55853, plant#55854, product#55855, blockedForReplenishmentStartingFrom#55856, productionAspect#55857, salesPlant#55858, listing#55859]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225860]
(1750) Project
Output [1]: [struct(systemId, systemId#55852, internalUUID, internalUUID#55853, plant, plant#55854, product, product#55855, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#55856, productionAspect, productionAspect#55857, salesPlant, salesPlant#55858, listing, listing#55859) AS productPlant#55860]
Input [8]: [systemId#55852, internalUUID#55853, plant#55854, product#55855, blockedForReplenishmentStartingFrom#55856, productionAspect#55857, salesPlant#55858, listing#55859]
(1751) BroadcastExchange
Input [1]: [productPlant#55860]
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=227972]
(1752) BroadcastHashJoin
Left keys [4]: [coalesce(product#55848, ), isnull(product#55848), coalesce(plant#55849, ), isnull(plant#55849)]
Right keys [4]: [coalesce(productPlant#55860.product.internalRefUUID, ), isnull(productPlant#55860.product.internalRefUUID), coalesce(productPlant#55860.plant.internalRefUUID, ), isnull(productPlant#55860.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1753) Scan parquet
Output [3]: [internalUUID#55862, address#55868, systemId#55861]
Batched: 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#55862, address#55868.timeZone.code AS timezonecode#55873]
Input [3]: [internalUUID#55862, address#55868, systemId#55861]
(1755) Exchange
Input [2]: [internalUUID#55862, timezonecode#55873]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225865]
(1756) BroadcastExchange
Input [2]: [internalUUID#55862, timezonecode#55873]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227975]
(1757) BroadcastHashJoin
Left keys [2]: [coalesce(plant#55849, ), isnull(plant#55849)]
Right keys [2]: [coalesce(internalUUID#55862, ), isnull(internalUUID#55862)]
Join type: LeftOuter
Join condition: None
(1758) Project
Output [5]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, CASE WHEN isnotnull(timezonecode#55873) THEN timezonecode#55873 ELSE UTC END AS timezonecode#55874]
Input [6]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, internalUUID#55862, timezonecode#55873]
(1759) Scan parquet
Output [4]: [internalUUID#55876, baseUnitOfMeasure#55880, unitOfMeasureConversions#55882, systemId#55875]
Batched: 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#55876, baseUnitOfMeasure#55880, unitOfMeasureConversions#55882, systemId#55875]
Condition : isnotnull(internalUUID#55876)
(1761) Project
Output [3]: [internalUUID#55876, baseUnitOfMeasure#55880, unitOfMeasureConversions#55882]
Input [4]: [internalUUID#55876, baseUnitOfMeasure#55880, unitOfMeasureConversions#55882, systemId#55875]
(1762) Exchange
Input [3]: [internalUUID#55876, baseUnitOfMeasure#55880, unitOfMeasureConversions#55882]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225871]
(1763) BroadcastExchange
Input [3]: [internalUUID#55876, baseUnitOfMeasure#55880, unitOfMeasureConversions#55882]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227979]
(1764) BroadcastHashJoin
Left keys [1]: [product#55848]
Right keys [1]: [internalUUID#55876]
Join type: LeftOuter
Join condition: None
(1765) Project
Output [6]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, filter(unitOfMeasureConversions#55882, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#55860.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#55860.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#55880.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#55880.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#55887]
Input [8]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, internalUUID#55876, baseUnitOfMeasure#55880, unitOfMeasureConversions#55882]
(1766) Project
Output [7]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, filteredUnitOfMeasureConversions#55887.quantityDenominator AS _extract_quantityDenominator#58305, filteredUnitOfMeasureConversions#55887.quantityNumerator AS _extract_quantityNumerator#58306]
Input [6]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, filteredUnitOfMeasureConversions#55887]
(1767) Generate
Input [7]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, _extract_quantityDenominator#58305, _extract_quantityNumerator#58306]
Arguments: explode(_extract_quantityNumerator#58306), [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, _extract_quantityDenominator#58305], true, [quantityNumerator#55888]
(1768) Generate
Input [7]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, _extract_quantityDenominator#58305, quantityNumerator#55888]
Arguments: explode(_extract_quantityDenominator#58305), [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, quantityNumerator#55888], true, [quantityDenominator#55889]
(1769) Project
Output [6]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, (cast(quantityNumerator#55888 as double) / cast(quantityDenominator#55889 as double)) AS outboundUnit#55890]
Input [7]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, quantityNumerator#55888, quantityDenominator#55889]
(1770) Project
Output [6]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, CASE WHEN (isnull(outboundUnit#55890) OR (outboundUnit#55890 <= 0.0)) THEN 1.0 ELSE outboundUnit#55890 END AS outboundUnit#55891]
Input [6]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55890]
(1771) Sort
Input [6]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55891]
Arguments: [product#55848 ASC NULLS FIRST, plant#55849 ASC NULLS FIRST], false, 0
(1772) Scan parquet
Output [6]: [internalUUID#55893, product#55894, plant#55895, calculationDateTime#55896, stockQuantities#55897, systemId#55892]
Batched: 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#55893, product#55894, plant#55895, calculationDateTime#55896, stockQuantities#55897, systemId#55892]
Condition : (isnotnull(plant#55895.internalRefUUID) AND isnotnull(product#55894.internalRefUUID))
(1774) Project
Output [6]: [systemId#55892, internalUUID#55893, product#55894, plant#55895, calculationDateTime#55896, stockQuantities#55897]
Input [6]: [internalUUID#55893, product#55894, plant#55895, calculationDateTime#55896, stockQuantities#55897, systemId#55892]
(1775) Exchange
Input [6]: [systemId#55892, internalUUID#55893, product#55894, plant#55895, calculationDateTime#55896, stockQuantities#55897]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225882]
(1776) BroadcastExchange
Input [6]: [systemId#55892, internalUUID#55893, product#55894, plant#55895, calculationDateTime#55896, stockQuantities#55897]
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=228011]
(1777) Scan parquet
Output [2]: [marketUnit#55898, distributionCenters#55904]
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#55898, distributionCenters#55904]
Condition : (((marketUnit#55898 <=> DIP_1691) AND (size(distributionCenters#55904, true) > 0)) AND isnotnull(distributionCenters#55904))
(1779) Project
Output [1]: [distributionCenters#55904]
Input [2]: [marketUnit#55898, distributionCenters#55904]
(1780) Exchange
Input [1]: [distributionCenters#55904]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225886]
(1781) Generate
Input [1]: [distributionCenters#55904]
Arguments: explode(distributionCenters#55904), false, [distributionCenters#55920]
(1782) Filter
Input [1]: [distributionCenters#55920]
Condition : (((size(distributionCenters#55920.storageLocations, true) > 0) AND isnotnull(distributionCenters#55920.storageLocations)) AND isnotnull(distributionCenters#55920.internalRefUUID))
(1783) Project
Output [2]: [distributionCenters#55920.internalRefUUID AS _extract_internalRefUUID#58093, distributionCenters#55920.storageLocations AS _extract_storageLocations#58094]
Input [1]: [distributionCenters#55920]
(1784) Generate
Input [2]: [_extract_internalRefUUID#58093, _extract_storageLocations#58094]
Arguments: explode(_extract_storageLocations#58094), [_extract_internalRefUUID#58093], false, [storageLocations#55921]
(1785) Project
Output [3]: [_extract_internalRefUUID#58093 AS plantUuid#55923, storageLocations#55921.id AS storageLocId#55924, storageLocations#55921.internalRefUUID AS storageLocUuid#55925]
Input [2]: [_extract_internalRefUUID#58093, storageLocations#55921]
(1786) BroadcastExchange
Input [3]: [plantUuid#55923, storageLocId#55924, storageLocUuid#55925]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=228007]
(1787) Scan parquet
Output [2]: [product#55926, plant#55927]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1788) Filter
Input [2]: [product#55926, plant#55927]
Condition : isnotnull(plant#55927)
(1789) Exchange
Input [2]: [product#55926, plant#55927]
Arguments: hashpartitioning(product#55926, plant#55927, 10), REPARTITION_BY_NUM, [plan_id=226904]
(1790) Scan parquet
Output [4]: [plant#55932, product#55933, productionAspect#55935, systemId#55930]
Batched: 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#55932.internalRefUUID AS _extract_internalRefUUID#58758, product#55933.internalRefUUID AS _extract_internalRefUUID#58755, productionAspect#55935.productMovementPlants.unitOfIssue.code AS _extract_code#58756, productionAspect#55935.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58757]
Input [4]: [plant#55932, product#55933, productionAspect#55935, systemId#55930]
(1792) Exchange
Input [4]: [_extract_internalRefUUID#58758, _extract_internalRefUUID#58755, _extract_code#58756, _extract_internalRefUUID#58757]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225898]
(1793) Project
Output [4]: [_extract_code#58756, _extract_internalRefUUID#58757, _extract_internalRefUUID#58755, _extract_internalRefUUID#58758]
Input [4]: [_extract_internalRefUUID#58758, _extract_internalRefUUID#58755, _extract_code#58756, _extract_internalRefUUID#58757]
(1794) BroadcastExchange
Input [4]: [_extract_code#58756, _extract_internalRefUUID#58757, _extract_internalRefUUID#58755, _extract_internalRefUUID#58758]
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=227987]
(1795) BroadcastHashJoin
Left keys [4]: [coalesce(product#55926, ), isnull(product#55926), coalesce(plant#55927, ), isnull(plant#55927)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58755, ), isnull(_extract_internalRefUUID#58755), coalesce(_extract_internalRefUUID#58758, ), isnull(_extract_internalRefUUID#58758)]
Join type: LeftOuter
Join condition: None
(1796) Project
Output [4]: [product#55926, plant#55927, _extract_code#58756, _extract_internalRefUUID#58757]
Input [6]: [product#55926, plant#55927, _extract_code#58756, _extract_internalRefUUID#58757, _extract_internalRefUUID#58755, _extract_internalRefUUID#58758]
(1797) Scan parquet
Output [2]: [internalUUID#55940, systemId#55939]
Batched: 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#55940]
Input [2]: [internalUUID#55940, systemId#55939]
(1799) Exchange
Input [1]: [internalUUID#55940]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225904]
(1800) BroadcastExchange
Input [1]: [internalUUID#55940]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=227991]
(1801) BroadcastHashJoin
Left keys [2]: [coalesce(plant#55927, ), isnull(plant#55927)]
Right keys [2]: [coalesce(internalUUID#55940, ), isnull(internalUUID#55940)]
Join type: LeftOuter
Join condition: None
(1802) Project
Output [4]: [product#55926, plant#55927, _extract_code#58756, _extract_internalRefUUID#58757]
Input [5]: [product#55926, plant#55927, _extract_code#58756, _extract_internalRefUUID#58757, internalUUID#55940]
(1803) Scan parquet
Output [4]: [internalUUID#55954, baseUnitOfMeasure#55958, unitOfMeasureConversions#55960, systemId#55953]
Batched: 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#55954, baseUnitOfMeasure#55958, unitOfMeasureConversions#55960, systemId#55953]
Condition : isnotnull(internalUUID#55954)
(1805) Project
Output [3]: [internalUUID#55954, baseUnitOfMeasure#55958, unitOfMeasureConversions#55960]
Input [4]: [internalUUID#55954, baseUnitOfMeasure#55958, unitOfMeasureConversions#55960, systemId#55953]
(1806) Exchange
Input [3]: [internalUUID#55954, baseUnitOfMeasure#55958, unitOfMeasureConversions#55960]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225910]
(1807) BroadcastExchange
Input [3]: [internalUUID#55954, baseUnitOfMeasure#55958, unitOfMeasureConversions#55960]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=227995]
(1808) BroadcastHashJoin
Left keys [1]: [product#55926]
Right keys [1]: [internalUUID#55954]
Join type: LeftOuter
Join condition: None
(1809) Project
Output [2]: [plant#55927, filter(unitOfMeasureConversions#55960, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58756) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58757)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#55958.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#55958.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#55965]
Input [7]: [product#55926, plant#55927, _extract_code#58756, _extract_internalRefUUID#58757, internalUUID#55954, baseUnitOfMeasure#55958, unitOfMeasureConversions#55960]
(1810) Generate
Input [2]: [plant#55927, filteredUnitOfMeasureConversions#55965]
Arguments: explode(filteredUnitOfMeasureConversions#55965.quantityNumerator), [plant#55927, filteredUnitOfMeasureConversions#55965], true, [quantityNumerator#55966]
(1811) Project
Output [2]: [plant#55927, filteredUnitOfMeasureConversions#55965.quantityDenominator AS _extract_quantityDenominator#58095]
Input [3]: [plant#55927, filteredUnitOfMeasureConversions#55965, quantityNumerator#55966]
(1812) Generate
Input [2]: [plant#55927, _extract_quantityDenominator#58095]
Arguments: explode(_extract_quantityDenominator#58095), [plant#55927], true, [quantityDenominator#55967]
(1813) Project
Output [1]: [plant#55927]
Input [2]: [plant#55927, quantityDenominator#55967]
(1814) HashAggregate
Input [1]: [plant#55927]
Keys [1]: [plant#55927]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#55927]
(1815) Exchange
Input [1]: [plant#55927]
Arguments: hashpartitioning(plant#55927, 10), ENSURE_REQUIREMENTS, [plan_id=228004]
(1816) HashAggregate
Input [1]: [plant#55927]
Keys [1]: [plant#55927]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#55927]
(1817) BroadcastHashJoin
Left keys [1]: [plantUuid#55923]
Right keys [1]: [plant#55927]
Join type: Inner
Join condition: None
(1818) Project
Output [3]: [plantUuid#55923, storageLocId#55924, storageLocUuid#55925]
Input [4]: [plantUuid#55923, storageLocId#55924, storageLocUuid#55925, plant#55927]
(1819) BroadcastHashJoin
Left keys [2]: [coalesce(plant#55895.internalRefUUID, ), isnull(plant#55895.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#55923, ), isnull(plantUuid#55923)]
Join type: Inner
Join condition: None
(1820) Generate
Input [9]: [systemId#55892, internalUUID#55893, product#55894, plant#55895, calculationDateTime#55896, stockQuantities#55897, plantUuid#55923, storageLocId#55924, storageLocUuid#55925]
Arguments: explode(filter(stockQuantities#55897, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#55925) AND (lambda x#50650.storageLocation.Id = storageLocId#55924)), lambda x#50650, false))), [systemId#55892, internalUUID#55893, product#55894, plant#55895, calculationDateTime#55896, plantUuid#55923], false, [stockQuantity#55970]
(1821) ObjectHashAggregate
Input [7]: [systemId#55892, internalUUID#55893, product#55894, plant#55895, calculationDateTime#55896, plantUuid#55923, stockQuantity#55970]
Keys [5]: [plantUuid#55923, internalUUID#55893, plant#55895, product#55894, systemId#55892]
Functions [2]: [partial_first(calculationDateTime#55896, false), partial_collect_list(stockQuantity#55970, 0, 0)]
Aggregate Attributes [3]: [first#59801, valueSet#59802, buf#59803]
Results [8]: [plantUuid#55923, internalUUID#55893, plant#55895, product#55894, systemId#55892, first#59804, valueSet#59805, buf#59806]
(1822) ObjectHashAggregate
Input [8]: [plantUuid#55923, internalUUID#55893, plant#55895, product#55894, systemId#55892, first#59804, valueSet#59805, buf#59806]
Keys [5]: [plantUuid#55923, internalUUID#55893, plant#55895, product#55894, systemId#55892]
Functions [2]: [first(calculationDateTime#55896, false), collect_list(stockQuantity#55970, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#55896)()#50665, collect_list(stockQuantity#55970, 0, 0)#50666]
Results [4]: [product#55894, plant#55895, first(calculationDateTime#55896)()#50665 AS calculationDateTime#55971, collect_list(stockQuantity#55970, 0, 0)#50666 AS stockQuantities#55972]
(1823) Filter
Input [4]: [product#55894, plant#55895, calculationDateTime#55971, stockQuantities#55972]
Condition : ((size(stockQuantities#55972, true) > 0) AND isnotnull(calculationDateTime#55971))
(1824) Generate
Input [4]: [product#55894, plant#55895, calculationDateTime#55971, stockQuantities#55972]
Arguments: explode(stockQuantities#55972), [product#55894, plant#55895, calculationDateTime#55971], false, [stockQuantity#55973]
(1825) Filter
Input [4]: [product#55894, plant#55895, calculationDateTime#55971, stockQuantity#55973]
Condition : (((isnotnull(stockQuantity#55973.specialStockIndicator.code) AND isnotnull(stockQuantity#55973.stockType.code)) AND (stockQuantity#55973.specialStockIndicator.code = )) AND (stockQuantity#55973.stockType.code = 01))
(1826) Project
Output [5]: [plant#55895.internalRefUUID AS plantUuid#55975, product#55894.internalRefUUID AS productUuid#55977, calculationDateTime#55971, stockQuantity#55973.storagelocation.id AS storageLocId#55978, stockQuantity#55973.quantity.measure AS quantity#55980]
Input [4]: [product#55894, plant#55895, calculationDateTime#55971, stockQuantity#55973]
(1827) Exchange
Input [5]: [plantUuid#55975, productUuid#55977, calculationDateTime#55971, storageLocId#55978, quantity#55980]
Arguments: hashpartitioning(productUuid#55977, plantUuid#55975, 10), ENSURE_REQUIREMENTS, [plan_id=228037]
(1828) Sort
Input [5]: [plantUuid#55975, productUuid#55977, calculationDateTime#55971, storageLocId#55978, quantity#55980]
Arguments: [productUuid#55977 ASC NULLS FIRST, plantUuid#55975 ASC NULLS FIRST], false, 0
(1829) Scan parquet
Output [3]: [product#55983, plant#55984, orderDateTime#55985]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1830) Filter
Input [3]: [product#55983, plant#55984, orderDateTime#55985]
Condition : ((isnotnull(orderDateTime#55985) AND isnotnull(plant#55984)) AND isnotnull(product#55983))
(1831) Exchange
Input [3]: [product#55983, plant#55984, orderDateTime#55985]
Arguments: hashpartitioning(product#55983, plant#55984, 10), REPARTITION_BY_NUM, [plan_id=226927]
(1832) Scan parquet
Output [4]: [plant#55989, product#55990, productionAspect#55992, systemId#55987]
Batched: 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#55989.internalRefUUID AS _extract_internalRefUUID#58760, product#55990.internalRefUUID AS _extract_internalRefUUID#58759, productionAspect#55992.productMovementPlants.unitOfIssue.code AS _extract_code#58761, productionAspect#55992.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58762]
Input [4]: [plant#55989, product#55990, productionAspect#55992, systemId#55987]
(1834) Exchange
Input [4]: [_extract_internalRefUUID#58760, _extract_internalRefUUID#58759, _extract_code#58761, _extract_internalRefUUID#58762]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225935]
(1835) Project
Output [4]: [_extract_code#58761, _extract_internalRefUUID#58762, _extract_internalRefUUID#58759, _extract_internalRefUUID#58760]
Input [4]: [_extract_internalRefUUID#58760, _extract_internalRefUUID#58759, _extract_code#58761, _extract_internalRefUUID#58762]
(1836) BroadcastExchange
Input [4]: [_extract_code#58761, _extract_internalRefUUID#58762, _extract_internalRefUUID#58759, _extract_internalRefUUID#58760]
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=228020]
(1837) BroadcastHashJoin
Left keys [4]: [coalesce(product#55983, ), isnull(product#55983), coalesce(plant#55984, ), isnull(plant#55984)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58759, ), isnull(_extract_internalRefUUID#58759), coalesce(_extract_internalRefUUID#58760, ), isnull(_extract_internalRefUUID#58760)]
Join type: LeftOuter
Join condition: None
(1838) Project
Output [5]: [product#55983, plant#55984, orderDateTime#55985, _extract_code#58761, _extract_internalRefUUID#58762]
Input [7]: [product#55983, plant#55984, orderDateTime#55985, _extract_code#58761, _extract_internalRefUUID#58762, _extract_internalRefUUID#58759, _extract_internalRefUUID#58760]
(1839) Scan parquet
Output [2]: [internalUUID#55997, systemId#55996]
Batched: 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#55997]
Input [2]: [internalUUID#55997, systemId#55996]
(1841) Exchange
Input [1]: [internalUUID#55997]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225941]
(1842) BroadcastExchange
Input [1]: [internalUUID#55997]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=228024]
(1843) BroadcastHashJoin
Left keys [2]: [coalesce(plant#55984, ), isnull(plant#55984)]
Right keys [2]: [coalesce(internalUUID#55997, ), isnull(internalUUID#55997)]
Join type: LeftOuter
Join condition: None
(1844) Project
Output [5]: [product#55983, plant#55984, orderDateTime#55985, _extract_code#58761, _extract_internalRefUUID#58762]
Input [6]: [product#55983, plant#55984, orderDateTime#55985, _extract_code#58761, _extract_internalRefUUID#58762, internalUUID#55997]
(1845) Scan parquet
Output [4]: [internalUUID#56011, baseUnitOfMeasure#56015, unitOfMeasureConversions#56017, systemId#56010]
Batched: 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#56011, baseUnitOfMeasure#56015, unitOfMeasureConversions#56017, systemId#56010]
Condition : isnotnull(internalUUID#56011)
(1847) Project
Output [3]: [internalUUID#56011, baseUnitOfMeasure#56015, unitOfMeasureConversions#56017]
Input [4]: [internalUUID#56011, baseUnitOfMeasure#56015, unitOfMeasureConversions#56017, systemId#56010]
(1848) Exchange
Input [3]: [internalUUID#56011, baseUnitOfMeasure#56015, unitOfMeasureConversions#56017]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225947]
(1849) BroadcastExchange
Input [3]: [internalUUID#56011, baseUnitOfMeasure#56015, unitOfMeasureConversions#56017]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=228028]
(1850) BroadcastHashJoin
Left keys [1]: [product#55983]
Right keys [1]: [internalUUID#56011]
Join type: LeftOuter
Join condition: None
(1851) Project
Output [4]: [product#55983, plant#55984, orderDateTime#55985, filter(unitOfMeasureConversions#56017, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58761) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58762)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#56015.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#56015.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#56022]
Input [8]: [product#55983, plant#55984, orderDateTime#55985, _extract_code#58761, _extract_internalRefUUID#58762, internalUUID#56011, baseUnitOfMeasure#56015, unitOfMeasureConversions#56017]
(1852) Generate
Input [4]: [product#55983, plant#55984, orderDateTime#55985, filteredUnitOfMeasureConversions#56022]
Arguments: explode(filteredUnitOfMeasureConversions#56022.quantityNumerator), [product#55983, plant#55984, orderDateTime#55985, filteredUnitOfMeasureConversions#56022], true, [quantityNumerator#56023]
(1853) Project
Output [4]: [product#55983, plant#55984, orderDateTime#55985, filteredUnitOfMeasureConversions#56022.quantityDenominator AS _extract_quantityDenominator#58099]
Input [5]: [product#55983, plant#55984, orderDateTime#55985, filteredUnitOfMeasureConversions#56022, quantityNumerator#56023]
(1854) Generate
Input [4]: [product#55983, plant#55984, orderDateTime#55985, _extract_quantityDenominator#58099]
Arguments: explode(_extract_quantityDenominator#58099), [product#55983, plant#55984, orderDateTime#55985], true, [quantityDenominator#56024]
(1855) Project
Output [3]: [product#55983, plant#55984, orderDateTime#55985]
Input [4]: [product#55983, plant#55984, orderDateTime#55985, quantityDenominator#56024]
(1856) Sort
Input [3]: [product#55983, plant#55984, orderDateTime#55985]
Arguments: [product#55983 ASC NULLS FIRST, plant#55984 ASC NULLS FIRST], false, 0
(1857) SortMergeJoin
Left keys [2]: [productUuid#55977, plantUuid#55975]
Right keys [2]: [product#55983, plant#55984]
Join type: Inner
Join condition: (calculationDateTime#55971 <= orderDateTime#55985)
(1858) Project
Output [5]: [plantUuid#55975 AS plant#56027, productUuid#55977 AS product#56028, storageLocId#55978, calculationDateTime#55971, quantity#55980]
Input [8]: [plantUuid#55975, productUuid#55977, calculationDateTime#55971, storageLocId#55978, quantity#55980, product#55983, plant#55984, orderDateTime#55985]
(1859) Exchange
Input [5]: [plant#56027, product#56028, storageLocId#55978, calculationDateTime#55971, quantity#55980]
Arguments: hashpartitioning(coalesce(plant#56027, ), isnull(plant#56027), coalesce(product#56028, ), isnull(product#56028), coalesce(storageLocId#55978, ), isnull(storageLocId#55978), coalesce(calculationDateTime#55971, 1970-01-01 00:00:00), isnull(calculationDateTime#55971), 10), ENSURE_REQUIREMENTS, [plan_id=228101]
(1860) Sort
Input [5]: [plant#56027, product#56028, storageLocId#55978, calculationDateTime#55971, quantity#55980]
Arguments: [coalesce(plant#56027, ) ASC NULLS FIRST, isnull(plant#56027) ASC NULLS FIRST, coalesce(product#56028, ) ASC NULLS FIRST, isnull(product#56028) ASC NULLS FIRST, coalesce(storageLocId#55978, ) ASC NULLS FIRST, isnull(storageLocId#55978) ASC NULLS FIRST, coalesce(calculationDateTime#55971, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#55971) ASC NULLS FIRST], false, 0
(1861) Scan parquet
Output [6]: [internalUUID#56030, product#56031, plant#56032, calculationDateTime#56033, stockQuantities#56034, systemId#56029]
Batched: 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#56030, product#56031, plant#56032, calculationDateTime#56033, stockQuantities#56034, systemId#56029]
Condition : (isnotnull(plant#56032.internalRefUUID) AND isnotnull(product#56031.internalRefUUID))
(1863) Project
Output [6]: [systemId#56029, internalUUID#56030, product#56031, plant#56032, calculationDateTime#56033, stockQuantities#56034]
Input [6]: [internalUUID#56030, product#56031, plant#56032, calculationDateTime#56033, stockQuantities#56034, systemId#56029]
(1864) Exchange
Input [6]: [systemId#56029, internalUUID#56030, product#56031, plant#56032, calculationDateTime#56033, stockQuantities#56034]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225959]
(1865) BroadcastExchange
Input [6]: [systemId#56029, internalUUID#56030, product#56031, plant#56032, calculationDateTime#56033, stockQuantities#56034]
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=228066]
(1866) Scan parquet
Output [2]: [marketUnit#56035, distributionCenters#56041]
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#56035, distributionCenters#56041]
Condition : (((marketUnit#56035 <=> DIP_1691) AND (size(distributionCenters#56041, true) > 0)) AND isnotnull(distributionCenters#56041))
(1868) Project
Output [1]: [distributionCenters#56041]
Input [2]: [marketUnit#56035, distributionCenters#56041]
(1869) Exchange
Input [1]: [distributionCenters#56041]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225963]
(1870) Generate
Input [1]: [distributionCenters#56041]
Arguments: explode(distributionCenters#56041), false, [distributionCenters#56057]
(1871) Filter
Input [1]: [distributionCenters#56057]
Condition : (((size(distributionCenters#56057.storageLocations, true) > 0) AND isnotnull(distributionCenters#56057.storageLocations)) AND isnotnull(distributionCenters#56057.internalRefUUID))
(1872) Project
Output [2]: [distributionCenters#56057.internalRefUUID AS _extract_internalRefUUID#58103, distributionCenters#56057.storageLocations AS _extract_storageLocations#58104]
Input [1]: [distributionCenters#56057]
(1873) Generate
Input [2]: [_extract_internalRefUUID#58103, _extract_storageLocations#58104]
Arguments: explode(_extract_storageLocations#58104), [_extract_internalRefUUID#58103], false, [storageLocations#56058]
(1874) Project
Output [3]: [_extract_internalRefUUID#58103 AS plantUuid#56060, storageLocations#56058.id AS storageLocId#56061, storageLocations#56058.internalRefUUID AS storageLocUuid#56062]
Input [2]: [_extract_internalRefUUID#58103, storageLocations#56058]
(1875) BroadcastExchange
Input [3]: [plantUuid#56060, storageLocId#56061, storageLocUuid#56062]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=228062]
(1876) Scan parquet
Output [2]: [product#56063, plant#56064]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1877) Filter
Input [2]: [product#56063, plant#56064]
Condition : isnotnull(plant#56064)
(1878) Exchange
Input [2]: [product#56063, plant#56064]
Arguments: hashpartitioning(product#56063, plant#56064, 10), REPARTITION_BY_NUM, [plan_id=226940]
(1879) Scan parquet
Output [4]: [plant#56069, product#56070, productionAspect#56072, systemId#56067]
Batched: 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#56069.internalRefUUID AS _extract_internalRefUUID#58763, product#56070.internalRefUUID AS _extract_internalRefUUID#58764, productionAspect#56072.productMovementPlants.unitOfIssue.code AS _extract_code#58765, productionAspect#56072.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58766]
Input [4]: [plant#56069, product#56070, productionAspect#56072, systemId#56067]
(1881) Exchange
Input [4]: [_extract_internalRefUUID#58763, _extract_internalRefUUID#58764, _extract_code#58765, _extract_internalRefUUID#58766]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225975]
(1882) Project
Output [4]: [_extract_code#58765, _extract_internalRefUUID#58766, _extract_internalRefUUID#58764, _extract_internalRefUUID#58763]
Input [4]: [_extract_internalRefUUID#58763, _extract_internalRefUUID#58764, _extract_code#58765, _extract_internalRefUUID#58766]
(1883) BroadcastExchange
Input [4]: [_extract_code#58765, _extract_internalRefUUID#58766, _extract_internalRefUUID#58764, _extract_internalRefUUID#58763]
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=228042]
(1884) BroadcastHashJoin
Left keys [4]: [coalesce(product#56063, ), isnull(product#56063), coalesce(plant#56064, ), isnull(plant#56064)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58764, ), isnull(_extract_internalRefUUID#58764), coalesce(_extract_internalRefUUID#58763, ), isnull(_extract_internalRefUUID#58763)]
Join type: LeftOuter
Join condition: None
(1885) Project
Output [4]: [product#56063, plant#56064, _extract_code#58765, _extract_internalRefUUID#58766]
Input [6]: [product#56063, plant#56064, _extract_code#58765, _extract_internalRefUUID#58766, _extract_internalRefUUID#58764, _extract_internalRefUUID#58763]
(1886) Scan parquet
Output [2]: [internalUUID#56077, systemId#56076]
Batched: 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#56077]
Input [2]: [internalUUID#56077, systemId#56076]
(1888) Exchange
Input [1]: [internalUUID#56077]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225981]
(1889) BroadcastExchange
Input [1]: [internalUUID#56077]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=228046]
(1890) BroadcastHashJoin
Left keys [2]: [coalesce(plant#56064, ), isnull(plant#56064)]
Right keys [2]: [coalesce(internalUUID#56077, ), isnull(internalUUID#56077)]
Join type: LeftOuter
Join condition: None
(1891) Project
Output [4]: [product#56063, plant#56064, _extract_code#58765, _extract_internalRefUUID#58766]
Input [5]: [product#56063, plant#56064, _extract_code#58765, _extract_internalRefUUID#58766, internalUUID#56077]
(1892) Scan parquet
Output [4]: [internalUUID#56091, baseUnitOfMeasure#56095, unitOfMeasureConversions#56097, systemId#56090]
Batched: 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#56091, baseUnitOfMeasure#56095, unitOfMeasureConversions#56097, systemId#56090]
Condition : isnotnull(internalUUID#56091)
(1894) Project
Output [3]: [internalUUID#56091, baseUnitOfMeasure#56095, unitOfMeasureConversions#56097]
Input [4]: [internalUUID#56091, baseUnitOfMeasure#56095, unitOfMeasureConversions#56097, systemId#56090]
(1895) Exchange
Input [3]: [internalUUID#56091, baseUnitOfMeasure#56095, unitOfMeasureConversions#56097]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=225987]
(1896) BroadcastExchange
Input [3]: [internalUUID#56091, baseUnitOfMeasure#56095, unitOfMeasureConversions#56097]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=228050]
(1897) BroadcastHashJoin
Left keys [1]: [product#56063]
Right keys [1]: [internalUUID#56091]
Join type: LeftOuter
Join condition: None
(1898) Project
Output [2]: [plant#56064, filter(unitOfMeasureConversions#56097, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58765) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58766)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#56095.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#56095.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#56102]
Input [7]: [product#56063, plant#56064, _extract_code#58765, _extract_internalRefUUID#58766, internalUUID#56091, baseUnitOfMeasure#56095, unitOfMeasureConversions#56097]
(1899) Generate
Input [2]: [plant#56064, filteredUnitOfMeasureConversions#56102]
Arguments: explode(filteredUnitOfMeasureConversions#56102.quantityNumerator), [plant#56064, filteredUnitOfMeasureConversions#56102], true, [quantityNumerator#56103]
(1900) Project
Output [2]: [plant#56064, filteredUnitOfMeasureConversions#56102.quantityDenominator AS _extract_quantityDenominator#58105]
Input [3]: [plant#56064, filteredUnitOfMeasureConversions#56102, quantityNumerator#56103]
(1901) Generate
Input [2]: [plant#56064, _extract_quantityDenominator#58105]
Arguments: explode(_extract_quantityDenominator#58105), [plant#56064], true, [quantityDenominator#56104]
(1902) Project
Output [1]: [plant#56064]
Input [2]: [plant#56064, quantityDenominator#56104]
(1903) HashAggregate
Input [1]: [plant#56064]
Keys [1]: [plant#56064]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#56064]
(1904) Exchange
Input [1]: [plant#56064]
Arguments: hashpartitioning(plant#56064, 10), ENSURE_REQUIREMENTS, [plan_id=228059]
(1905) HashAggregate
Input [1]: [plant#56064]
Keys [1]: [plant#56064]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#56064]
(1906) BroadcastHashJoin
Left keys [1]: [plantUuid#56060]
Right keys [1]: [plant#56064]
Join type: Inner
Join condition: None
(1907) Project
Output [3]: [plantUuid#56060, storageLocId#56061, storageLocUuid#56062]
Input [4]: [plantUuid#56060, storageLocId#56061, storageLocUuid#56062, plant#56064]
(1908) BroadcastHashJoin
Left keys [2]: [coalesce(plant#56032.internalRefUUID, ), isnull(plant#56032.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#56060, ), isnull(plantUuid#56060)]
Join type: Inner
Join condition: None
(1909) Generate
Input [9]: [systemId#56029, internalUUID#56030, product#56031, plant#56032, calculationDateTime#56033, stockQuantities#56034, plantUuid#56060, storageLocId#56061, storageLocUuid#56062]
Arguments: explode(filter(stockQuantities#56034, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#56062) AND (lambda x#50650.storageLocation.Id = storageLocId#56061)), lambda x#50650, false))), [systemId#56029, internalUUID#56030, product#56031, plant#56032, calculationDateTime#56033, plantUuid#56060], false, [stockQuantity#56107]
(1910) ObjectHashAggregate
Input [7]: [systemId#56029, internalUUID#56030, product#56031, plant#56032, calculationDateTime#56033, plantUuid#56060, stockQuantity#56107]
Keys [5]: [plantUuid#56060, internalUUID#56030, plant#56032, product#56031, systemId#56029]
Functions [2]: [partial_first(calculationDateTime#56033, false), partial_collect_list(stockQuantity#56107, 0, 0)]
Aggregate Attributes [3]: [first#59809, valueSet#59810, buf#59811]
Results [8]: [plantUuid#56060, internalUUID#56030, plant#56032, product#56031, systemId#56029, first#59812, valueSet#59813, buf#59814]
(1911) ObjectHashAggregate
Input [8]: [plantUuid#56060, internalUUID#56030, plant#56032, product#56031, systemId#56029, first#59812, valueSet#59813, buf#59814]
Keys [5]: [plantUuid#56060, internalUUID#56030, plant#56032, product#56031, systemId#56029]
Functions [2]: [first(calculationDateTime#56033, false), collect_list(stockQuantity#56107, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#56033)()#50665, collect_list(stockQuantity#56107, 0, 0)#50666]
Results [4]: [product#56031, plant#56032, first(calculationDateTime#56033)()#50665 AS calculationDateTime#56108, collect_list(stockQuantity#56107, 0, 0)#50666 AS stockQuantities#56109]
(1912) Filter
Input [4]: [product#56031, plant#56032, calculationDateTime#56108, stockQuantities#56109]
Condition : ((size(stockQuantities#56109, true) > 0) AND isnotnull(calculationDateTime#56108))
(1913) Generate
Input [4]: [product#56031, plant#56032, calculationDateTime#56108, stockQuantities#56109]
Arguments: explode(stockQuantities#56109), [product#56031, plant#56032, calculationDateTime#56108], false, [stockQuantity#56110]
(1914) Filter
Input [4]: [product#56031, plant#56032, calculationDateTime#56108, stockQuantity#56110]
Condition : (((isnotnull(stockQuantity#56110.specialStockIndicator.code) AND isnotnull(stockQuantity#56110.stockType.code)) AND (stockQuantity#56110.specialStockIndicator.code = )) AND (stockQuantity#56110.stockType.code = 01))
(1915) Project
Output [4]: [plant#56032.internalRefUUID AS plantUuid#56112, product#56031.internalRefUUID AS productUuid#56114, calculationDateTime#56108, stockQuantity#56110.storagelocation.id AS storageLocId#56115]
Input [4]: [product#56031, plant#56032, calculationDateTime#56108, stockQuantity#56110]
(1916) Exchange
Input [4]: [plantUuid#56112, productUuid#56114, calculationDateTime#56108, storageLocId#56115]
Arguments: hashpartitioning(productUuid#56114, plantUuid#56112, 10), ENSURE_REQUIREMENTS, [plan_id=228092]
(1917) Sort
Input [4]: [plantUuid#56112, productUuid#56114, calculationDateTime#56108, storageLocId#56115]
Arguments: [productUuid#56114 ASC NULLS FIRST, plantUuid#56112 ASC NULLS FIRST], false, 0
(1918) Scan parquet
Output [3]: [product#56120, plant#56121, orderDateTime#56122]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1919) Filter
Input [3]: [product#56120, plant#56121, orderDateTime#56122]
Condition : ((isnotnull(orderDateTime#56122) AND isnotnull(plant#56121)) AND isnotnull(product#56120))
(1920) Exchange
Input [3]: [product#56120, plant#56121, orderDateTime#56122]
Arguments: hashpartitioning(product#56120, plant#56121, 10), REPARTITION_BY_NUM, [plan_id=226963]
(1921) Scan parquet
Output [4]: [plant#56126, product#56127, productionAspect#56129, systemId#56124]
Batched: 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#56126.internalRefUUID AS _extract_internalRefUUID#58770, product#56127.internalRefUUID AS _extract_internalRefUUID#58769, productionAspect#56129.productMovementPlants.unitOfIssue.code AS _extract_code#58767, productionAspect#56129.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58768]
Input [4]: [plant#56126, product#56127, productionAspect#56129, systemId#56124]
(1923) Exchange
Input [4]: [_extract_internalRefUUID#58770, _extract_internalRefUUID#58769, _extract_code#58767, _extract_internalRefUUID#58768]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226012]
(1924) Project
Output [4]: [_extract_code#58767, _extract_internalRefUUID#58768, _extract_internalRefUUID#58769, _extract_internalRefUUID#58770]
Input [4]: [_extract_internalRefUUID#58770, _extract_internalRefUUID#58769, _extract_code#58767, _extract_internalRefUUID#58768]
(1925) BroadcastExchange
Input [4]: [_extract_code#58767, _extract_internalRefUUID#58768, _extract_internalRefUUID#58769, _extract_internalRefUUID#58770]
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=228075]
(1926) BroadcastHashJoin
Left keys [4]: [coalesce(product#56120, ), isnull(product#56120), coalesce(plant#56121, ), isnull(plant#56121)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58769, ), isnull(_extract_internalRefUUID#58769), coalesce(_extract_internalRefUUID#58770, ), isnull(_extract_internalRefUUID#58770)]
Join type: LeftOuter
Join condition: None
(1927) Project
Output [5]: [product#56120, plant#56121, orderDateTime#56122, _extract_code#58767, _extract_internalRefUUID#58768]
Input [7]: [product#56120, plant#56121, orderDateTime#56122, _extract_code#58767, _extract_internalRefUUID#58768, _extract_internalRefUUID#58769, _extract_internalRefUUID#58770]
(1928) Scan parquet
Output [2]: [internalUUID#56134, systemId#56133]
Batched: 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#56134]
Input [2]: [internalUUID#56134, systemId#56133]
(1930) Exchange
Input [1]: [internalUUID#56134]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226018]
(1931) BroadcastExchange
Input [1]: [internalUUID#56134]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=228079]
(1932) BroadcastHashJoin
Left keys [2]: [coalesce(plant#56121, ), isnull(plant#56121)]
Right keys [2]: [coalesce(internalUUID#56134, ), isnull(internalUUID#56134)]
Join type: LeftOuter
Join condition: None
(1933) Project
Output [5]: [product#56120, plant#56121, orderDateTime#56122, _extract_code#58767, _extract_internalRefUUID#58768]
Input [6]: [product#56120, plant#56121, orderDateTime#56122, _extract_code#58767, _extract_internalRefUUID#58768, internalUUID#56134]
(1934) Scan parquet
Output [4]: [internalUUID#56148, baseUnitOfMeasure#56152, unitOfMeasureConversions#56154, systemId#56147]
Batched: 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#56148, baseUnitOfMeasure#56152, unitOfMeasureConversions#56154, systemId#56147]
Condition : isnotnull(internalUUID#56148)
(1936) Project
Output [3]: [internalUUID#56148, baseUnitOfMeasure#56152, unitOfMeasureConversions#56154]
Input [4]: [internalUUID#56148, baseUnitOfMeasure#56152, unitOfMeasureConversions#56154, systemId#56147]
(1937) Exchange
Input [3]: [internalUUID#56148, baseUnitOfMeasure#56152, unitOfMeasureConversions#56154]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226024]
(1938) BroadcastExchange
Input [3]: [internalUUID#56148, baseUnitOfMeasure#56152, unitOfMeasureConversions#56154]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=228083]
(1939) BroadcastHashJoin
Left keys [1]: [product#56120]
Right keys [1]: [internalUUID#56148]
Join type: LeftOuter
Join condition: None
(1940) Project
Output [4]: [product#56120, plant#56121, orderDateTime#56122, filter(unitOfMeasureConversions#56154, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58767) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58768)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#56152.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#56152.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#56159]
Input [8]: [product#56120, plant#56121, orderDateTime#56122, _extract_code#58767, _extract_internalRefUUID#58768, internalUUID#56148, baseUnitOfMeasure#56152, unitOfMeasureConversions#56154]
(1941) Generate
Input [4]: [product#56120, plant#56121, orderDateTime#56122, filteredUnitOfMeasureConversions#56159]
Arguments: explode(filteredUnitOfMeasureConversions#56159.quantityNumerator), [product#56120, plant#56121, orderDateTime#56122, filteredUnitOfMeasureConversions#56159], true, [quantityNumerator#56160]
(1942) Project
Output [4]: [product#56120, plant#56121, orderDateTime#56122, filteredUnitOfMeasureConversions#56159.quantityDenominator AS _extract_quantityDenominator#58109]
Input [5]: [product#56120, plant#56121, orderDateTime#56122, filteredUnitOfMeasureConversions#56159, quantityNumerator#56160]
(1943) Generate
Input [4]: [product#56120, plant#56121, orderDateTime#56122, _extract_quantityDenominator#58109]
Arguments: explode(_extract_quantityDenominator#58109), [product#56120, plant#56121, orderDateTime#56122], true, [quantityDenominator#56161]
(1944) Project
Output [3]: [product#56120, plant#56121, orderDateTime#56122]
Input [4]: [product#56120, plant#56121, orderDateTime#56122, quantityDenominator#56161]
(1945) Sort
Input [3]: [product#56120, plant#56121, orderDateTime#56122]
Arguments: [product#56120 ASC NULLS FIRST, plant#56121 ASC NULLS FIRST], false, 0
(1946) SortMergeJoin
Left keys [2]: [productUuid#56114, plantUuid#56112]
Right keys [2]: [product#56120, plant#56121]
Join type: Inner
Join condition: (calculationDateTime#56108 <= orderDateTime#56122)
(1947) Project
Output [4]: [plantUuid#56112 AS plant#56164, productUuid#56114 AS product#56165, storageLocId#56115, calculationDateTime#56108]
Input [7]: [plantUuid#56112, productUuid#56114, calculationDateTime#56108, storageLocId#56115, product#56120, plant#56121, orderDateTime#56122]
(1948) HashAggregate
Input [4]: [plant#56164, product#56165, storageLocId#56115, calculationDateTime#56108]
Keys [3]: [plant#56164, product#56165, storageLocId#56115]
Functions [1]: [partial_max(calculationDateTime#56108)]
Aggregate Attributes [1]: [max#59807]
Results [4]: [plant#56164, product#56165, storageLocId#56115, max#59808]
(1949) HashAggregate
Input [4]: [plant#56164, product#56165, storageLocId#56115, max#59808]
Keys [3]: [plant#56164, product#56165, storageLocId#56115]
Functions [1]: [max(calculationDateTime#56108)]
Aggregate Attributes [1]: [max(calculationDateTime#56108)#50743]
Results [4]: [plant#56164, product#56165, storageLocId#56115, max(calculationDateTime#56108)#50743 AS max_calc_datetime#56166]
(1950) Exchange
Input [4]: [plant#56164, product#56165, storageLocId#56115, max_calc_datetime#56166]
Arguments: hashpartitioning(coalesce(plant#56164, ), isnull(plant#56164), coalesce(product#56165, ), isnull(product#56165), coalesce(storageLocId#56115, ), isnull(storageLocId#56115), coalesce(max_calc_datetime#56166, 1970-01-01 00:00:00), isnull(max_calc_datetime#56166), 10), ENSURE_REQUIREMENTS, [plan_id=228102]
(1951) Sort
Input [4]: [plant#56164, product#56165, storageLocId#56115, max_calc_datetime#56166]
Arguments: [coalesce(plant#56164, ) ASC NULLS FIRST, isnull(plant#56164) ASC NULLS FIRST, coalesce(product#56165, ) ASC NULLS FIRST, isnull(product#56165) ASC NULLS FIRST, coalesce(storageLocId#56115, ) ASC NULLS FIRST, isnull(storageLocId#56115) ASC NULLS FIRST, coalesce(max_calc_datetime#56166, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#56166) ASC NULLS FIRST], false, 0
(1952) SortMergeJoin
Left keys [8]: [coalesce(plant#56027, ), isnull(plant#56027), coalesce(product#56028, ), isnull(product#56028), coalesce(storageLocId#55978, ), isnull(storageLocId#55978), coalesce(calculationDateTime#55971, 1970-01-01 00:00:00), isnull(calculationDateTime#55971)]
Right keys [8]: [coalesce(plant#56164, ), isnull(plant#56164), coalesce(product#56165, ), isnull(product#56165), coalesce(storageLocId#56115, ), isnull(storageLocId#56115), coalesce(max_calc_datetime#56166, 1970-01-01 00:00:00), isnull(max_calc_datetime#56166)]
Join type: Inner
Join condition: None
(1953) Project
Output [4]: [plant#56027, product#56028, calculationDateTime#55971, quantity#55980]
Input [9]: [plant#56027, product#56028, storageLocId#55978, calculationDateTime#55971, quantity#55980, plant#56164, product#56165, storageLocId#56115, max_calc_datetime#56166]
(1954) HashAggregate
Input [4]: [plant#56027, product#56028, calculationDateTime#55971, quantity#55980]
Keys [2]: [product#56028, plant#56027]
Functions [2]: [partial_min(calculationDateTime#55971), partial_sum(quantity#55980)]
Aggregate Attributes [2]: [min#59797, sum#59798]
Results [4]: [product#56028, plant#56027, min#59799, sum#59800]
(1955) Exchange
Input [4]: [product#56028, plant#56027, min#59799, sum#59800]
Arguments: hashpartitioning(product#56028, plant#56027, 10), ENSURE_REQUIREMENTS, [plan_id=228109]
(1956) HashAggregate
Input [4]: [product#56028, plant#56027, min#59799, sum#59800]
Keys [2]: [product#56028, plant#56027]
Functions [2]: [min(calculationDateTime#55971), sum(quantity#55980)]
Aggregate Attributes [2]: [min(calculationDateTime#55971)#50899, sum(quantity#55980)#50898]
Results [4]: [product#56028, plant#56027, min(calculationDateTime#55971)#50899 AS minCalculationDateTime#56168, round(sum(quantity#55980)#50898, 0) AS roundedQuantitySum#56169]
(1957) Sort
Input [4]: [product#56028, plant#56027, minCalculationDateTime#56168, roundedQuantitySum#56169]
Arguments: [product#56028 ASC NULLS FIRST, plant#56027 ASC NULLS FIRST], false, 0
(1958) SortMergeJoin
Left keys [2]: [product#55848, plant#55849]
Right keys [2]: [product#56028, plant#56027]
Join type: LeftOuter
Join condition: None
(1959) Project
Output [8]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55891, CASE WHEN isnotnull(minCalculationDateTime#56168) THEN minCalculationDateTime#56168 ELSE orderDateTime#55850 END AS stockDatetime#56170, CASE WHEN isnotnull(roundedQuantitySum#56169) THEN array(roundedQuantitySum#56169) ELSE [0.0] END AS stockBatchQuantities#56171]
Input [10]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55891, product#56028, plant#56027, minCalculationDateTime#56168, roundedQuantitySum#56169]
(1960) Scan parquet
Output [9]: [product#56173, plant#56174, demandChannel#56175, demandStream#56176, considerVariance#56177, demandTimeBuckets#56178, demandPointInTimeStart#56179, demandPointInTimeEnd#56180, demandPointInTime#56181]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000006/0_1_10000000006]
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#56173, plant#56174, demandChannel#56175, demandStream#56176, considerVariance#56177, demandTimeBuckets#56178, demandPointInTimeStart#56179, demandPointInTimeEnd#56180, demandPointInTime#56181]
Condition : (isnotnull(product#56173) AND isnotnull(plant#56174))
(1962) BroadcastExchange
Input [9]: [product#56173, plant#56174, demandChannel#56175, demandStream#56176, considerVariance#56177, demandTimeBuckets#56178, demandPointInTimeStart#56179, demandPointInTimeEnd#56180, demandPointInTime#56181]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=228118]
(1963) BroadcastHashJoin
Left keys [2]: [product#55848, plant#55849]
Right keys [2]: [product#56173, plant#56174]
Join type: LeftOuter
Join condition: None
(1964) Project
Output [9]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55891, stockDatetime#56170, stockBatchQuantities#56171, CASE WHEN isnotnull(product#56173) THEN struct(demandChannel, demandChannel#56175, demandStream, demandStream#56176, considerVariance, considerVariance#56177, demandTimeBuckets, demandTimeBuckets#56178, demandPointInTimeStart, demandPointInTimeStart#56179, demandPointInTimeEnd, demandPointInTimeEnd#56180, demandPointInTime, demandPointInTime#56181) END AS rawDemands#56182]
Input [17]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55891, stockDatetime#56170, stockBatchQuantities#56171, product#56173, plant#56174, demandChannel#56175, demandStream#56176, considerVariance#56177, demandTimeBuckets#56178, demandPointInTimeStart#56179, demandPointInTimeEnd#56180, demandPointInTime#56181]
(1965) ObjectHashAggregate
Input [9]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55891, stockDatetime#56170, stockBatchQuantities#56171, rawDemands#56182]
Keys [9]: [product#55848, plant#55849, orderDateTime#55850, knownfloatingpointnormalized(if (isnull(productPlant#55860)) null else named_struct(systemId, productPlant#55860.systemId, internalUUID, productPlant#55860.internalUUID, plant, productPlant#55860.plant, product, productPlant#55860.product, blockedForReplenishmentStartingFrom, productPlant#55860.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#55860.productionAspect)) null else named_struct(productMovementPlants, productPlant#55860.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#55860.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#55860.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#55860.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#55860.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#55860.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#55860.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#55860.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#55860.salesPlant, listing, productPlant#55860.listing)) AS productPlant#55860, timezonecode#55874, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#55891)) AS outboundUnit#55891, stockDatetime#56170, knownfloatingpointnormalized(transform(stockBatchQuantities#56171, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#59794)), lambda arg#59794, false))) AS stockBatchQuantities#56171, [7226582400000000] AS [7226582400000000]#59793]
Functions [1]: [partial_collect_list(rawDemands#56182, 0, 0)]
Aggregate Attributes [1]: [buf#59795]
Results [10]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55891, stockDatetime#56170, stockBatchQuantities#56171, [7226582400000000]#59793, buf#59796]
(1966) ObjectHashAggregate
Input [10]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55891, stockDatetime#56170, stockBatchQuantities#56171, [7226582400000000]#59793, buf#59796]
Keys [9]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55891, stockDatetime#56170, stockBatchQuantities#56171, [7226582400000000]#59793]
Functions [1]: [collect_list(rawDemands#56182, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#56182, 0, 0)#50991]
Results [10]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55891, stockDatetime#56170, stockBatchQuantities#56171, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#56172, collect_list(rawDemands#56182, 0, 0)#50991 AS rawDemands#56183]
(1967) DeserializeToObject
Input [10]: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55891, stockDatetime#56170, stockBatchQuantities#56171, stockBatchShelfLifeEndDatetimes#56172, rawDemands#56183]
Arguments: createexternalrow(invoke(product#55848.toString()), invoke(plant#55849.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#55850)), if (isnull(productPlant#55860)) null else createexternalrow(invoke(productPlant#55860.systemId.toString()), invoke(productPlant#55860.internalUUID.toString()), if (isnull(productPlant#55860.plant)) null else createexternalrow(invoke(productPlant#55860.plant.internalRefUUID.toString()), invoke(productPlant#55860.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#55860.product)) null else createexternalrow(invoke(productPlant#55860.product.internalRefUUID.toString()), invoke(productPlant#55860.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#55860.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#55860.productionAspect)) null else createexternalrow(if (isnull(productPlant#55860.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#55860.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#55860.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#55860.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#55860.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#55860.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#55860.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#55860.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#55860.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#55860.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#55860.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#55860.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#55860.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#55860.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#55860.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#55860.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#55860.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#55860.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#55860.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#55860.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#55860.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#55860.salesPlant)) null else createexternalrow(if (isnull(productPlant#55860.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#55860.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#55860.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#55860.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#55874.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#55891)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#56170)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#56171, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#56172, 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#56183, 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#51012: org.apache.spark.sql.Row
(1968) MapElements
Input [1]: [obj#51012]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@22994051, obj#51017: org.apache.spark.sql.Row
(1969) SerializeFromObject
Input [1]: [obj#51017]
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#56184, 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#56185, 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#56186, 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#56187]
(1970) Exchange
Input [4]: [product#56184, plant#56185, dayBucketDemands#56186, pointInTimeDemands#56187]
Arguments: hashpartitioning(coalesce(plant#56185, ), isnull(plant#56185), coalesce(product#56184, ), isnull(product#56184), 10), ENSURE_REQUIREMENTS, [plan_id=228129]
(1971) Sort
Input [4]: [product#56184, plant#56185, dayBucketDemands#56186, pointInTimeDemands#56187]
Arguments: [coalesce(plant#56185, ) ASC NULLS FIRST, isnull(plant#56185) ASC NULLS FIRST, coalesce(product#56184, ) ASC NULLS FIRST, isnull(product#56184) ASC NULLS FIRST], false, 0
(1972) SortMergeJoin
Left keys [4]: [coalesce(plant#55524, ), isnull(plant#55524), coalesce(product#55523, ), isnull(product#55523)]
Right keys [4]: [coalesce(plant#56185, ), isnull(plant#56185), coalesce(product#56184, ), isnull(product#56184)]
Join type: LeftOuter
Join condition: None
(1973) Project
Output [10]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, dayBucketDemands#56186, pointInTimeDemands#56187]
Input [12]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, product#56184, plant#56185, dayBucketDemands#56186, pointInTimeDemands#56187]
(1974) Exchange
Input [10]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, dayBucketDemands#56186, pointInTimeDemands#56187]
Arguments: hashpartitioning(product#55523, plant#55524, 10), ENSURE_REQUIREMENTS, [plan_id=228458]
(1975) Sort
Input [10]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, dayBucketDemands#56186, pointInTimeDemands#56187]
Arguments: [product#55523 ASC NULLS FIRST, plant#55524 ASC NULLS FIRST], false, 0
(1976) InMemoryTableScan
Output [3]: [product#56938, plant#56937, openGoodsMovements#56949]
Arguments: [product#56938, plant#56937, openGoodsMovements#56949], [isnotnull(product#56938), isnotnull(plant#56937)]
(1977) InMemoryRelation
Arguments: [product#56938, plant#56937, openGoodsMovements#56949], StorageLevel(disk, memory, 2 replicas)
(1978) Filter
Input [3]: [product#56938, plant#56937, openGoodsMovements#56949]
Condition : (isnotnull(product#56938) AND isnotnull(plant#56937))
(1979) Scan parquet
Output [3]: [product#56950, plant#56951, orderDateTime#56952]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1980) Filter
Input [3]: [product#56950, plant#56951, orderDateTime#56952]
Condition : isnotnull(plant#56951)
(1981) Exchange
Input [3]: [product#56950, plant#56951, orderDateTime#56952]
Arguments: hashpartitioning(product#56950, plant#56951, 10), REPARTITION_BY_NUM, [plan_id=226993]
(1982) Scan parquet
Output [4]: [plant#56956, product#56957, productionAspect#56959, systemId#56954]
Batched: 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#56956.internalRefUUID AS _extract_internalRefUUID#58771, product#56957.internalRefUUID AS _extract_internalRefUUID#58772, productionAspect#56959.productMovementPlants.unitOfIssue.code AS _extract_code#58773, productionAspect#56959.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58774]
Input [4]: [plant#56956, product#56957, productionAspect#56959, systemId#56954]
(1984) Exchange
Input [4]: [_extract_internalRefUUID#58771, _extract_internalRefUUID#58772, _extract_code#58773, _extract_internalRefUUID#58774]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226061]
(1985) Project
Output [4]: [_extract_code#58773, _extract_internalRefUUID#58774, _extract_internalRefUUID#58772, _extract_internalRefUUID#58771]
Input [4]: [_extract_internalRefUUID#58771, _extract_internalRefUUID#58772, _extract_code#58773, _extract_internalRefUUID#58774]
(1986) BroadcastExchange
Input [4]: [_extract_code#58773, _extract_internalRefUUID#58774, _extract_internalRefUUID#58772, _extract_internalRefUUID#58771]
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=228134]
(1987) BroadcastHashJoin
Left keys [4]: [coalesce(product#56950, ), isnull(product#56950), coalesce(plant#56951, ), isnull(plant#56951)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58772, ), isnull(_extract_internalRefUUID#58772), coalesce(_extract_internalRefUUID#58771, ), isnull(_extract_internalRefUUID#58771)]
Join type: LeftOuter
Join condition: None
(1988) Project
Output [5]: [product#56950, plant#56951, orderDateTime#56952, _extract_code#58773, _extract_internalRefUUID#58774]
Input [7]: [product#56950, plant#56951, orderDateTime#56952, _extract_code#58773, _extract_internalRefUUID#58774, _extract_internalRefUUID#58772, _extract_internalRefUUID#58771]
(1989) Scan parquet
Output [2]: [internalUUID#56964, systemId#56963]
Batched: 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#56964]
Input [2]: [internalUUID#56964, systemId#56963]
(1991) Exchange
Input [1]: [internalUUID#56964]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226067]
(1992) BroadcastExchange
Input [1]: [internalUUID#56964]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=228138]
(1993) BroadcastHashJoin
Left keys [2]: [coalesce(plant#56951, ), isnull(plant#56951)]
Right keys [2]: [coalesce(internalUUID#56964, ), isnull(internalUUID#56964)]
Join type: LeftOuter
Join condition: None
(1994) Project
Output [5]: [product#56950, plant#56951, orderDateTime#56952, _extract_code#58773, _extract_internalRefUUID#58774]
Input [6]: [product#56950, plant#56951, orderDateTime#56952, _extract_code#58773, _extract_internalRefUUID#58774, internalUUID#56964]
(1995) Scan parquet
Output [4]: [internalUUID#56978, baseUnitOfMeasure#56982, unitOfMeasureConversions#56984, systemId#56977]
Batched: 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#56978, baseUnitOfMeasure#56982, unitOfMeasureConversions#56984, systemId#56977]
Condition : isnotnull(internalUUID#56978)
(1997) Project
Output [3]: [internalUUID#56978, baseUnitOfMeasure#56982, unitOfMeasureConversions#56984]
Input [4]: [internalUUID#56978, baseUnitOfMeasure#56982, unitOfMeasureConversions#56984, systemId#56977]
(1998) Exchange
Input [3]: [internalUUID#56978, baseUnitOfMeasure#56982, unitOfMeasureConversions#56984]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226073]
(1999) BroadcastExchange
Input [3]: [internalUUID#56978, baseUnitOfMeasure#56982, unitOfMeasureConversions#56984]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=228142]
(2000) BroadcastHashJoin
Left keys [1]: [product#56950]
Right keys [1]: [internalUUID#56978]
Join type: LeftOuter
Join condition: None
(2001) Project
Output [4]: [product#56950, plant#56951, orderDateTime#56952, filter(unitOfMeasureConversions#56984, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58773) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58774)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#56982.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#56982.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#56989]
Input [8]: [product#56950, plant#56951, orderDateTime#56952, _extract_code#58773, _extract_internalRefUUID#58774, internalUUID#56978, baseUnitOfMeasure#56982, unitOfMeasureConversions#56984]
(2002) Generate
Input [4]: [product#56950, plant#56951, orderDateTime#56952, filteredUnitOfMeasureConversions#56989]
Arguments: explode(filteredUnitOfMeasureConversions#56989.quantityNumerator), [product#56950, plant#56951, orderDateTime#56952, filteredUnitOfMeasureConversions#56989], true, [quantityNumerator#56990]
(2003) Project
Output [4]: [product#56950, plant#56951, orderDateTime#56952, filteredUnitOfMeasureConversions#56989.quantityDenominator AS _extract_quantityDenominator#58113]
Input [5]: [product#56950, plant#56951, orderDateTime#56952, filteredUnitOfMeasureConversions#56989, quantityNumerator#56990]
(2004) Generate
Input [4]: [product#56950, plant#56951, orderDateTime#56952, _extract_quantityDenominator#58113]
Arguments: explode(_extract_quantityDenominator#58113), [product#56950, plant#56951, orderDateTime#56952], true, [quantityDenominator#56991]
(2005) Project
Output [3]: [product#56950, plant#56951, orderDateTime#56952]
Input [4]: [product#56950, plant#56951, orderDateTime#56952, quantityDenominator#56991]
(2006) Sort
Input [3]: [product#56950, plant#56951, orderDateTime#56952]
Arguments: [product#56950 ASC NULLS FIRST, plant#56951 ASC NULLS FIRST], false, 0
(2007) Scan parquet
Output [6]: [internalUUID#56995, product#56996, plant#56997, calculationDateTime#56998, stockQuantities#56999, systemId#56994]
Batched: 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#56995, product#56996, plant#56997, calculationDateTime#56998, stockQuantities#56999, systemId#56994]
Condition : (isnotnull(plant#56997.internalRefUUID) AND isnotnull(product#56996.internalRefUUID))
(2009) Project
Output [6]: [systemId#56994, internalUUID#56995, product#56996, plant#56997, calculationDateTime#56998, stockQuantities#56999]
Input [6]: [internalUUID#56995, product#56996, plant#56997, calculationDateTime#56998, stockQuantities#56999, systemId#56994]
(2010) Exchange
Input [6]: [systemId#56994, internalUUID#56995, product#56996, plant#56997, calculationDateTime#56998, stockQuantities#56999]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226083]
(2011) BroadcastExchange
Input [6]: [systemId#56994, internalUUID#56995, product#56996, plant#56997, calculationDateTime#56998, stockQuantities#56999]
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=228173]
(2012) Scan parquet
Output [2]: [marketUnit#57000, distributionCenters#57006]
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#57000, distributionCenters#57006]
Condition : (((marketUnit#57000 <=> DIP_1691) AND (size(distributionCenters#57006, true) > 0)) AND isnotnull(distributionCenters#57006))
(2014) Project
Output [1]: [distributionCenters#57006]
Input [2]: [marketUnit#57000, distributionCenters#57006]
(2015) Exchange
Input [1]: [distributionCenters#57006]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226087]
(2016) Generate
Input [1]: [distributionCenters#57006]
Arguments: explode(distributionCenters#57006), false, [distributionCenters#57022]
(2017) Filter
Input [1]: [distributionCenters#57022]
Condition : (((size(distributionCenters#57022.storageLocations, true) > 0) AND isnotnull(distributionCenters#57022.storageLocations)) AND isnotnull(distributionCenters#57022.internalRefUUID))
(2018) Project
Output [2]: [distributionCenters#57022.internalRefUUID AS _extract_internalRefUUID#58117, distributionCenters#57022.storageLocations AS _extract_storageLocations#58118]
Input [1]: [distributionCenters#57022]
(2019) Generate
Input [2]: [_extract_internalRefUUID#58117, _extract_storageLocations#58118]
Arguments: explode(_extract_storageLocations#58118), [_extract_internalRefUUID#58117], false, [storageLocations#57023]
(2020) Project
Output [3]: [_extract_internalRefUUID#58117 AS plantUuid#57025, storageLocations#57023.id AS storageLocId#57026, storageLocations#57023.internalRefUUID AS storageLocUuid#57027]
Input [2]: [_extract_internalRefUUID#58117, storageLocations#57023]
(2021) BroadcastExchange
Input [3]: [plantUuid#57025, storageLocId#57026, storageLocUuid#57027]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=228169]
(2022) Scan parquet
Output [2]: [product#57028, plant#57029]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(2023) Filter
Input [2]: [product#57028, plant#57029]
Condition : isnotnull(plant#57029)
(2024) Exchange
Input [2]: [product#57028, plant#57029]
Arguments: hashpartitioning(product#57028, plant#57029, 10), REPARTITION_BY_NUM, [plan_id=227004]
(2025) Scan parquet
Output [4]: [plant#57034, product#57035, productionAspect#57037, systemId#57032]
Batched: 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#57034.internalRefUUID AS _extract_internalRefUUID#58778, product#57035.internalRefUUID AS _extract_internalRefUUID#58777, productionAspect#57037.productMovementPlants.unitOfIssue.code AS _extract_code#58775, productionAspect#57037.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58776]
Input [4]: [plant#57034, product#57035, productionAspect#57037, systemId#57032]
(2027) Exchange
Input [4]: [_extract_internalRefUUID#58778, _extract_internalRefUUID#58777, _extract_code#58775, _extract_internalRefUUID#58776]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226099]
(2028) Project
Output [4]: [_extract_code#58775, _extract_internalRefUUID#58776, _extract_internalRefUUID#58777, _extract_internalRefUUID#58778]
Input [4]: [_extract_internalRefUUID#58778, _extract_internalRefUUID#58777, _extract_code#58775, _extract_internalRefUUID#58776]
(2029) BroadcastExchange
Input [4]: [_extract_code#58775, _extract_internalRefUUID#58776, _extract_internalRefUUID#58777, _extract_internalRefUUID#58778]
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=228149]
(2030) BroadcastHashJoin
Left keys [4]: [coalesce(product#57028, ), isnull(product#57028), coalesce(plant#57029, ), isnull(plant#57029)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58777, ), isnull(_extract_internalRefUUID#58777), coalesce(_extract_internalRefUUID#58778, ), isnull(_extract_internalRefUUID#58778)]
Join type: LeftOuter
Join condition: None
(2031) Project
Output [4]: [product#57028, plant#57029, _extract_code#58775, _extract_internalRefUUID#58776]
Input [6]: [product#57028, plant#57029, _extract_code#58775, _extract_internalRefUUID#58776, _extract_internalRefUUID#58777, _extract_internalRefUUID#58778]
(2032) Scan parquet
Output [2]: [internalUUID#57042, systemId#57041]
Batched: 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#57042]
Input [2]: [internalUUID#57042, systemId#57041]
(2034) Exchange
Input [1]: [internalUUID#57042]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226105]
(2035) BroadcastExchange
Input [1]: [internalUUID#57042]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=228153]
(2036) BroadcastHashJoin
Left keys [2]: [coalesce(plant#57029, ), isnull(plant#57029)]
Right keys [2]: [coalesce(internalUUID#57042, ), isnull(internalUUID#57042)]
Join type: LeftOuter
Join condition: None
(2037) Project
Output [4]: [product#57028, plant#57029, _extract_code#58775, _extract_internalRefUUID#58776]
Input [5]: [product#57028, plant#57029, _extract_code#58775, _extract_internalRefUUID#58776, internalUUID#57042]
(2038) Scan parquet
Output [4]: [internalUUID#57056, baseUnitOfMeasure#57060, unitOfMeasureConversions#57062, systemId#57055]
Batched: 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#57056, baseUnitOfMeasure#57060, unitOfMeasureConversions#57062, systemId#57055]
Condition : isnotnull(internalUUID#57056)
(2040) Project
Output [3]: [internalUUID#57056, baseUnitOfMeasure#57060, unitOfMeasureConversions#57062]
Input [4]: [internalUUID#57056, baseUnitOfMeasure#57060, unitOfMeasureConversions#57062, systemId#57055]
(2041) Exchange
Input [3]: [internalUUID#57056, baseUnitOfMeasure#57060, unitOfMeasureConversions#57062]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226111]
(2042) BroadcastExchange
Input [3]: [internalUUID#57056, baseUnitOfMeasure#57060, unitOfMeasureConversions#57062]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=228157]
(2043) BroadcastHashJoin
Left keys [1]: [product#57028]
Right keys [1]: [internalUUID#57056]
Join type: LeftOuter
Join condition: None
(2044) Project
Output [2]: [plant#57029, filter(unitOfMeasureConversions#57062, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58775) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58776)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#57060.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#57060.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#57067]
Input [7]: [product#57028, plant#57029, _extract_code#58775, _extract_internalRefUUID#58776, internalUUID#57056, baseUnitOfMeasure#57060, unitOfMeasureConversions#57062]
(2045) Generate
Input [2]: [plant#57029, filteredUnitOfMeasureConversions#57067]
Arguments: explode(filteredUnitOfMeasureConversions#57067.quantityNumerator), [plant#57029, filteredUnitOfMeasureConversions#57067], true, [quantityNumerator#57068]
(2046) Project
Output [2]: [plant#57029, filteredUnitOfMeasureConversions#57067.quantityDenominator AS _extract_quantityDenominator#58119]
Input [3]: [plant#57029, filteredUnitOfMeasureConversions#57067, quantityNumerator#57068]
(2047) Generate
Input [2]: [plant#57029, _extract_quantityDenominator#58119]
Arguments: explode(_extract_quantityDenominator#58119), [plant#57029], true, [quantityDenominator#57069]
(2048) Project
Output [1]: [plant#57029]
Input [2]: [plant#57029, quantityDenominator#57069]
(2049) HashAggregate
Input [1]: [plant#57029]
Keys [1]: [plant#57029]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#57029]
(2050) Exchange
Input [1]: [plant#57029]
Arguments: hashpartitioning(plant#57029, 10), ENSURE_REQUIREMENTS, [plan_id=228166]
(2051) HashAggregate
Input [1]: [plant#57029]
Keys [1]: [plant#57029]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#57029]
(2052) BroadcastHashJoin
Left keys [1]: [plantUuid#57025]
Right keys [1]: [plant#57029]
Join type: Inner
Join condition: None
(2053) Project
Output [3]: [plantUuid#57025, storageLocId#57026, storageLocUuid#57027]
Input [4]: [plantUuid#57025, storageLocId#57026, storageLocUuid#57027, plant#57029]
(2054) BroadcastHashJoin
Left keys [2]: [coalesce(plant#56997.internalRefUUID, ), isnull(plant#56997.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#57025, ), isnull(plantUuid#57025)]
Join type: Inner
Join condition: None
(2055) Generate
Input [9]: [systemId#56994, internalUUID#56995, product#56996, plant#56997, calculationDateTime#56998, stockQuantities#56999, plantUuid#57025, storageLocId#57026, storageLocUuid#57027]
Arguments: explode(filter(stockQuantities#56999, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#57027) AND (lambda x#50650.storageLocation.Id = storageLocId#57026)), lambda x#50650, false))), [systemId#56994, internalUUID#56995, product#56996, plant#56997, calculationDateTime#56998, plantUuid#57025], false, [stockQuantity#57072]
(2056) ObjectHashAggregate
Input [7]: [systemId#56994, internalUUID#56995, product#56996, plant#56997, calculationDateTime#56998, plantUuid#57025, stockQuantity#57072]
Keys [5]: [plantUuid#57025, internalUUID#56995, plant#56997, product#56996, systemId#56994]
Functions [2]: [partial_first(calculationDateTime#56998, false), partial_collect_list(stockQuantity#57072, 0, 0)]
Aggregate Attributes [3]: [first#59821, valueSet#59822, buf#59823]
Results [8]: [plantUuid#57025, internalUUID#56995, plant#56997, product#56996, systemId#56994, first#59824, valueSet#59825, buf#59826]
(2057) ObjectHashAggregate
Input [8]: [plantUuid#57025, internalUUID#56995, plant#56997, product#56996, systemId#56994, first#59824, valueSet#59825, buf#59826]
Keys [5]: [plantUuid#57025, internalUUID#56995, plant#56997, product#56996, systemId#56994]
Functions [2]: [first(calculationDateTime#56998, false), collect_list(stockQuantity#57072, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#56998)()#50665, collect_list(stockQuantity#57072, 0, 0)#50666]
Results [4]: [product#56996, plant#56997, first(calculationDateTime#56998)()#50665 AS calculationDateTime#57073, collect_list(stockQuantity#57072, 0, 0)#50666 AS stockQuantities#57074]
(2058) Filter
Input [4]: [product#56996, plant#56997, calculationDateTime#57073, stockQuantities#57074]
Condition : ((size(stockQuantities#57074, true) > 0) AND isnotnull(calculationDateTime#57073))
(2059) Generate
Input [4]: [product#56996, plant#56997, calculationDateTime#57073, stockQuantities#57074]
Arguments: explode(stockQuantities#57074), [product#56996, plant#56997, calculationDateTime#57073], false, [stockQuantity#57075]
(2060) Filter
Input [4]: [product#56996, plant#56997, calculationDateTime#57073, stockQuantity#57075]
Condition : (((isnotnull(stockQuantity#57075.specialStockIndicator.code) AND isnotnull(stockQuantity#57075.stockType.code)) AND (stockQuantity#57075.specialStockIndicator.code = )) AND (stockQuantity#57075.stockType.code = 01))
(2061) Project
Output [4]: [plant#56997.internalRefUUID AS plantUuid#57077, product#56996.internalRefUUID AS productUuid#57079, calculationDateTime#57073, stockQuantity#57075.storagelocation.id AS storageLocId#57080]
Input [4]: [product#56996, plant#56997, calculationDateTime#57073, stockQuantity#57075]
(2062) Exchange
Input [4]: [plantUuid#57077, productUuid#57079, calculationDateTime#57073, storageLocId#57080]
Arguments: hashpartitioning(productUuid#57079, plantUuid#57077, 10), ENSURE_REQUIREMENTS, [plan_id=228199]
(2063) Sort
Input [4]: [plantUuid#57077, productUuid#57079, calculationDateTime#57073, storageLocId#57080]
Arguments: [productUuid#57079 ASC NULLS FIRST, plantUuid#57077 ASC NULLS FIRST], false, 0
(2064) Scan parquet
Output [3]: [product#57085, plant#57086, orderDateTime#57087]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2065) Filter
Input [3]: [product#57085, plant#57086, orderDateTime#57087]
Condition : ((isnotnull(orderDateTime#57087) AND isnotnull(plant#57086)) AND isnotnull(product#57085))
(2066) Exchange
Input [3]: [product#57085, plant#57086, orderDateTime#57087]
Arguments: hashpartitioning(product#57085, plant#57086, 10), REPARTITION_BY_NUM, [plan_id=227027]
(2067) Scan parquet
Output [4]: [plant#57091, product#57092, productionAspect#57094, systemId#57089]
Batched: 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#57091.internalRefUUID AS _extract_internalRefUUID#58781, product#57092.internalRefUUID AS _extract_internalRefUUID#58782, productionAspect#57094.productMovementPlants.unitOfIssue.code AS _extract_code#58779, productionAspect#57094.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58780]
Input [4]: [plant#57091, product#57092, productionAspect#57094, systemId#57089]
(2069) Exchange
Input [4]: [_extract_internalRefUUID#58781, _extract_internalRefUUID#58782, _extract_code#58779, _extract_internalRefUUID#58780]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226136]
(2070) Project
Output [4]: [_extract_code#58779, _extract_internalRefUUID#58780, _extract_internalRefUUID#58782, _extract_internalRefUUID#58781]
Input [4]: [_extract_internalRefUUID#58781, _extract_internalRefUUID#58782, _extract_code#58779, _extract_internalRefUUID#58780]
(2071) BroadcastExchange
Input [4]: [_extract_code#58779, _extract_internalRefUUID#58780, _extract_internalRefUUID#58782, _extract_internalRefUUID#58781]
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=228182]
(2072) BroadcastHashJoin
Left keys [4]: [coalesce(product#57085, ), isnull(product#57085), coalesce(plant#57086, ), isnull(plant#57086)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58782, ), isnull(_extract_internalRefUUID#58782), coalesce(_extract_internalRefUUID#58781, ), isnull(_extract_internalRefUUID#58781)]
Join type: LeftOuter
Join condition: None
(2073) Project
Output [5]: [product#57085, plant#57086, orderDateTime#57087, _extract_code#58779, _extract_internalRefUUID#58780]
Input [7]: [product#57085, plant#57086, orderDateTime#57087, _extract_code#58779, _extract_internalRefUUID#58780, _extract_internalRefUUID#58782, _extract_internalRefUUID#58781]
(2074) Scan parquet
Output [2]: [internalUUID#57099, systemId#57098]
Batched: 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#57099]
Input [2]: [internalUUID#57099, systemId#57098]
(2076) Exchange
Input [1]: [internalUUID#57099]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226142]
(2077) BroadcastExchange
Input [1]: [internalUUID#57099]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=228186]
(2078) BroadcastHashJoin
Left keys [2]: [coalesce(plant#57086, ), isnull(plant#57086)]
Right keys [2]: [coalesce(internalUUID#57099, ), isnull(internalUUID#57099)]
Join type: LeftOuter
Join condition: None
(2079) Project
Output [5]: [product#57085, plant#57086, orderDateTime#57087, _extract_code#58779, _extract_internalRefUUID#58780]
Input [6]: [product#57085, plant#57086, orderDateTime#57087, _extract_code#58779, _extract_internalRefUUID#58780, internalUUID#57099]
(2080) Scan parquet
Output [4]: [internalUUID#57113, baseUnitOfMeasure#57117, unitOfMeasureConversions#57119, systemId#57112]
Batched: 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#57113, baseUnitOfMeasure#57117, unitOfMeasureConversions#57119, systemId#57112]
Condition : isnotnull(internalUUID#57113)
(2082) Project
Output [3]: [internalUUID#57113, baseUnitOfMeasure#57117, unitOfMeasureConversions#57119]
Input [4]: [internalUUID#57113, baseUnitOfMeasure#57117, unitOfMeasureConversions#57119, systemId#57112]
(2083) Exchange
Input [3]: [internalUUID#57113, baseUnitOfMeasure#57117, unitOfMeasureConversions#57119]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226148]
(2084) BroadcastExchange
Input [3]: [internalUUID#57113, baseUnitOfMeasure#57117, unitOfMeasureConversions#57119]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=228190]
(2085) BroadcastHashJoin
Left keys [1]: [product#57085]
Right keys [1]: [internalUUID#57113]
Join type: LeftOuter
Join condition: None
(2086) Project
Output [4]: [product#57085, plant#57086, orderDateTime#57087, filter(unitOfMeasureConversions#57119, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58779) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58780)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#57117.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#57117.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#57124]
Input [8]: [product#57085, plant#57086, orderDateTime#57087, _extract_code#58779, _extract_internalRefUUID#58780, internalUUID#57113, baseUnitOfMeasure#57117, unitOfMeasureConversions#57119]
(2087) Generate
Input [4]: [product#57085, plant#57086, orderDateTime#57087, filteredUnitOfMeasureConversions#57124]
Arguments: explode(filteredUnitOfMeasureConversions#57124.quantityNumerator), [product#57085, plant#57086, orderDateTime#57087, filteredUnitOfMeasureConversions#57124], true, [quantityNumerator#57125]
(2088) Project
Output [4]: [product#57085, plant#57086, orderDateTime#57087, filteredUnitOfMeasureConversions#57124.quantityDenominator AS _extract_quantityDenominator#58123]
Input [5]: [product#57085, plant#57086, orderDateTime#57087, filteredUnitOfMeasureConversions#57124, quantityNumerator#57125]
(2089) Generate
Input [4]: [product#57085, plant#57086, orderDateTime#57087, _extract_quantityDenominator#58123]
Arguments: explode(_extract_quantityDenominator#58123), [product#57085, plant#57086, orderDateTime#57087], true, [quantityDenominator#57126]
(2090) Project
Output [3]: [product#57085, plant#57086, orderDateTime#57087]
Input [4]: [product#57085, plant#57086, orderDateTime#57087, quantityDenominator#57126]
(2091) Sort
Input [3]: [product#57085, plant#57086, orderDateTime#57087]
Arguments: [product#57085 ASC NULLS FIRST, plant#57086 ASC NULLS FIRST], false, 0
(2092) SortMergeJoin
Left keys [2]: [productUuid#57079, plantUuid#57077]
Right keys [2]: [product#57085, plant#57086]
Join type: Inner
Join condition: (calculationDateTime#57073 <= orderDateTime#57087)
(2093) Project
Output [4]: [plantUuid#57077 AS plant#57129, productUuid#57079 AS product#57130, storageLocId#57080, calculationDateTime#57073]
Input [7]: [plantUuid#57077, productUuid#57079, calculationDateTime#57073, storageLocId#57080, product#57085, plant#57086, orderDateTime#57087]
(2094) Exchange
Input [4]: [plant#57129, product#57130, storageLocId#57080, calculationDateTime#57073]
Arguments: hashpartitioning(coalesce(plant#57129, ), isnull(plant#57129), coalesce(product#57130, ), isnull(product#57130), coalesce(storageLocId#57080, ), isnull(storageLocId#57080), coalesce(calculationDateTime#57073, 1970-01-01 00:00:00), isnull(calculationDateTime#57073), 10), ENSURE_REQUIREMENTS, [plan_id=228263]
(2095) Sort
Input [4]: [plant#57129, product#57130, storageLocId#57080, calculationDateTime#57073]
Arguments: [coalesce(plant#57129, ) ASC NULLS FIRST, isnull(plant#57129) ASC NULLS FIRST, coalesce(product#57130, ) ASC NULLS FIRST, isnull(product#57130) ASC NULLS FIRST, coalesce(storageLocId#57080, ) ASC NULLS FIRST, isnull(storageLocId#57080) ASC NULLS FIRST, coalesce(calculationDateTime#57073, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#57073) ASC NULLS FIRST], false, 0
(2096) Scan parquet
Output [6]: [internalUUID#57132, product#57133, plant#57134, calculationDateTime#57135, stockQuantities#57136, systemId#57131]
Batched: 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#57132, product#57133, plant#57134, calculationDateTime#57135, stockQuantities#57136, systemId#57131]
Condition : (isnotnull(plant#57134.internalRefUUID) AND isnotnull(product#57133.internalRefUUID))
(2098) Project
Output [6]: [systemId#57131, internalUUID#57132, product#57133, plant#57134, calculationDateTime#57135, stockQuantities#57136]
Input [6]: [internalUUID#57132, product#57133, plant#57134, calculationDateTime#57135, stockQuantities#57136, systemId#57131]
(2099) Exchange
Input [6]: [systemId#57131, internalUUID#57132, product#57133, plant#57134, calculationDateTime#57135, stockQuantities#57136]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226160]
(2100) BroadcastExchange
Input [6]: [systemId#57131, internalUUID#57132, product#57133, plant#57134, calculationDateTime#57135, stockQuantities#57136]
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=228228]
(2101) Scan parquet
Output [2]: [marketUnit#57137, distributionCenters#57143]
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#57137, distributionCenters#57143]
Condition : (((marketUnit#57137 <=> DIP_1691) AND (size(distributionCenters#57143, true) > 0)) AND isnotnull(distributionCenters#57143))
(2103) Project
Output [1]: [distributionCenters#57143]
Input [2]: [marketUnit#57137, distributionCenters#57143]
(2104) Exchange
Input [1]: [distributionCenters#57143]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226164]
(2105) Generate
Input [1]: [distributionCenters#57143]
Arguments: explode(distributionCenters#57143), false, [distributionCenters#57159]
(2106) Filter
Input [1]: [distributionCenters#57159]
Condition : (((size(distributionCenters#57159.storageLocations, true) > 0) AND isnotnull(distributionCenters#57159.storageLocations)) AND isnotnull(distributionCenters#57159.internalRefUUID))
(2107) Project
Output [2]: [distributionCenters#57159.internalRefUUID AS _extract_internalRefUUID#58127, distributionCenters#57159.storageLocations AS _extract_storageLocations#58128]
Input [1]: [distributionCenters#57159]
(2108) Generate
Input [2]: [_extract_internalRefUUID#58127, _extract_storageLocations#58128]
Arguments: explode(_extract_storageLocations#58128), [_extract_internalRefUUID#58127], false, [storageLocations#57160]
(2109) Project
Output [3]: [_extract_internalRefUUID#58127 AS plantUuid#57162, storageLocations#57160.id AS storageLocId#57163, storageLocations#57160.internalRefUUID AS storageLocUuid#57164]
Input [2]: [_extract_internalRefUUID#58127, storageLocations#57160]
(2110) BroadcastExchange
Input [3]: [plantUuid#57162, storageLocId#57163, storageLocUuid#57164]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=228224]
(2111) Scan parquet
Output [2]: [product#57165, plant#57166]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(2112) Filter
Input [2]: [product#57165, plant#57166]
Condition : isnotnull(plant#57166)
(2113) Exchange
Input [2]: [product#57165, plant#57166]
Arguments: hashpartitioning(product#57165, plant#57166, 10), REPARTITION_BY_NUM, [plan_id=227040]
(2114) Scan parquet
Output [4]: [plant#57171, product#57172, productionAspect#57174, systemId#57169]
Batched: 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#57171.internalRefUUID AS _extract_internalRefUUID#58786, product#57172.internalRefUUID AS _extract_internalRefUUID#58783, productionAspect#57174.productMovementPlants.unitOfIssue.code AS _extract_code#58784, productionAspect#57174.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58785]
Input [4]: [plant#57171, product#57172, productionAspect#57174, systemId#57169]
(2116) Exchange
Input [4]: [_extract_internalRefUUID#58786, _extract_internalRefUUID#58783, _extract_code#58784, _extract_internalRefUUID#58785]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226176]
(2117) Project
Output [4]: [_extract_code#58784, _extract_internalRefUUID#58785, _extract_internalRefUUID#58783, _extract_internalRefUUID#58786]
Input [4]: [_extract_internalRefUUID#58786, _extract_internalRefUUID#58783, _extract_code#58784, _extract_internalRefUUID#58785]
(2118) BroadcastExchange
Input [4]: [_extract_code#58784, _extract_internalRefUUID#58785, _extract_internalRefUUID#58783, _extract_internalRefUUID#58786]
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=228204]
(2119) BroadcastHashJoin
Left keys [4]: [coalesce(product#57165, ), isnull(product#57165), coalesce(plant#57166, ), isnull(plant#57166)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58783, ), isnull(_extract_internalRefUUID#58783), coalesce(_extract_internalRefUUID#58786, ), isnull(_extract_internalRefUUID#58786)]
Join type: LeftOuter
Join condition: None
(2120) Project
Output [4]: [product#57165, plant#57166, _extract_code#58784, _extract_internalRefUUID#58785]
Input [6]: [product#57165, plant#57166, _extract_code#58784, _extract_internalRefUUID#58785, _extract_internalRefUUID#58783, _extract_internalRefUUID#58786]
(2121) Scan parquet
Output [2]: [internalUUID#57179, systemId#57178]
Batched: 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#57179]
Input [2]: [internalUUID#57179, systemId#57178]
(2123) Exchange
Input [1]: [internalUUID#57179]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226182]
(2124) BroadcastExchange
Input [1]: [internalUUID#57179]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=228208]
(2125) BroadcastHashJoin
Left keys [2]: [coalesce(plant#57166, ), isnull(plant#57166)]
Right keys [2]: [coalesce(internalUUID#57179, ), isnull(internalUUID#57179)]
Join type: LeftOuter
Join condition: None
(2126) Project
Output [4]: [product#57165, plant#57166, _extract_code#58784, _extract_internalRefUUID#58785]
Input [5]: [product#57165, plant#57166, _extract_code#58784, _extract_internalRefUUID#58785, internalUUID#57179]
(2127) Scan parquet
Output [4]: [internalUUID#57193, baseUnitOfMeasure#57197, unitOfMeasureConversions#57199, systemId#57192]
Batched: 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#57193, baseUnitOfMeasure#57197, unitOfMeasureConversions#57199, systemId#57192]
Condition : isnotnull(internalUUID#57193)
(2129) Project
Output [3]: [internalUUID#57193, baseUnitOfMeasure#57197, unitOfMeasureConversions#57199]
Input [4]: [internalUUID#57193, baseUnitOfMeasure#57197, unitOfMeasureConversions#57199, systemId#57192]
(2130) Exchange
Input [3]: [internalUUID#57193, baseUnitOfMeasure#57197, unitOfMeasureConversions#57199]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226188]
(2131) BroadcastExchange
Input [3]: [internalUUID#57193, baseUnitOfMeasure#57197, unitOfMeasureConversions#57199]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=228212]
(2132) BroadcastHashJoin
Left keys [1]: [product#57165]
Right keys [1]: [internalUUID#57193]
Join type: LeftOuter
Join condition: None
(2133) Project
Output [2]: [plant#57166, filter(unitOfMeasureConversions#57199, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58784) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58785)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#57197.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#57197.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#57204]
Input [7]: [product#57165, plant#57166, _extract_code#58784, _extract_internalRefUUID#58785, internalUUID#57193, baseUnitOfMeasure#57197, unitOfMeasureConversions#57199]
(2134) Generate
Input [2]: [plant#57166, filteredUnitOfMeasureConversions#57204]
Arguments: explode(filteredUnitOfMeasureConversions#57204.quantityNumerator), [plant#57166, filteredUnitOfMeasureConversions#57204], true, [quantityNumerator#57205]
(2135) Project
Output [2]: [plant#57166, filteredUnitOfMeasureConversions#57204.quantityDenominator AS _extract_quantityDenominator#58129]
Input [3]: [plant#57166, filteredUnitOfMeasureConversions#57204, quantityNumerator#57205]
(2136) Generate
Input [2]: [plant#57166, _extract_quantityDenominator#58129]
Arguments: explode(_extract_quantityDenominator#58129), [plant#57166], true, [quantityDenominator#57206]
(2137) Project
Output [1]: [plant#57166]
Input [2]: [plant#57166, quantityDenominator#57206]
(2138) HashAggregate
Input [1]: [plant#57166]
Keys [1]: [plant#57166]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#57166]
(2139) Exchange
Input [1]: [plant#57166]
Arguments: hashpartitioning(plant#57166, 10), ENSURE_REQUIREMENTS, [plan_id=228221]
(2140) HashAggregate
Input [1]: [plant#57166]
Keys [1]: [plant#57166]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#57166]
(2141) BroadcastHashJoin
Left keys [1]: [plantUuid#57162]
Right keys [1]: [plant#57166]
Join type: Inner
Join condition: None
(2142) Project
Output [3]: [plantUuid#57162, storageLocId#57163, storageLocUuid#57164]
Input [4]: [plantUuid#57162, storageLocId#57163, storageLocUuid#57164, plant#57166]
(2143) BroadcastHashJoin
Left keys [2]: [coalesce(plant#57134.internalRefUUID, ), isnull(plant#57134.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#57162, ), isnull(plantUuid#57162)]
Join type: Inner
Join condition: None
(2144) Generate
Input [9]: [systemId#57131, internalUUID#57132, product#57133, plant#57134, calculationDateTime#57135, stockQuantities#57136, plantUuid#57162, storageLocId#57163, storageLocUuid#57164]
Arguments: explode(filter(stockQuantities#57136, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#57164) AND (lambda x#50650.storageLocation.Id = storageLocId#57163)), lambda x#50650, false))), [systemId#57131, internalUUID#57132, product#57133, plant#57134, calculationDateTime#57135, plantUuid#57162], false, [stockQuantity#57209]
(2145) ObjectHashAggregate
Input [7]: [systemId#57131, internalUUID#57132, product#57133, plant#57134, calculationDateTime#57135, plantUuid#57162, stockQuantity#57209]
Keys [5]: [plantUuid#57162, internalUUID#57132, plant#57134, product#57133, systemId#57131]
Functions [2]: [partial_first(calculationDateTime#57135, false), partial_collect_list(stockQuantity#57209, 0, 0)]
Aggregate Attributes [3]: [first#59829, valueSet#59830, buf#59831]
Results [8]: [plantUuid#57162, internalUUID#57132, plant#57134, product#57133, systemId#57131, first#59832, valueSet#59833, buf#59834]
(2146) ObjectHashAggregate
Input [8]: [plantUuid#57162, internalUUID#57132, plant#57134, product#57133, systemId#57131, first#59832, valueSet#59833, buf#59834]
Keys [5]: [plantUuid#57162, internalUUID#57132, plant#57134, product#57133, systemId#57131]
Functions [2]: [first(calculationDateTime#57135, false), collect_list(stockQuantity#57209, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#57135)()#50665, collect_list(stockQuantity#57209, 0, 0)#50666]
Results [4]: [product#57133, plant#57134, first(calculationDateTime#57135)()#50665 AS calculationDateTime#57210, collect_list(stockQuantity#57209, 0, 0)#50666 AS stockQuantities#57211]
(2147) Filter
Input [4]: [product#57133, plant#57134, calculationDateTime#57210, stockQuantities#57211]
Condition : ((size(stockQuantities#57211, true) > 0) AND isnotnull(calculationDateTime#57210))
(2148) Generate
Input [4]: [product#57133, plant#57134, calculationDateTime#57210, stockQuantities#57211]
Arguments: explode(stockQuantities#57211), [product#57133, plant#57134, calculationDateTime#57210], false, [stockQuantity#57212]
(2149) Filter
Input [4]: [product#57133, plant#57134, calculationDateTime#57210, stockQuantity#57212]
Condition : (((isnotnull(stockQuantity#57212.specialStockIndicator.code) AND isnotnull(stockQuantity#57212.stockType.code)) AND (stockQuantity#57212.specialStockIndicator.code = )) AND (stockQuantity#57212.stockType.code = 01))
(2150) Project
Output [4]: [plant#57134.internalRefUUID AS plantUuid#57214, product#57133.internalRefUUID AS productUuid#57216, calculationDateTime#57210, stockQuantity#57212.storagelocation.id AS storageLocId#57217]
Input [4]: [product#57133, plant#57134, calculationDateTime#57210, stockQuantity#57212]
(2151) Exchange
Input [4]: [plantUuid#57214, productUuid#57216, calculationDateTime#57210, storageLocId#57217]
Arguments: hashpartitioning(productUuid#57216, plantUuid#57214, 10), ENSURE_REQUIREMENTS, [plan_id=228254]
(2152) Sort
Input [4]: [plantUuid#57214, productUuid#57216, calculationDateTime#57210, storageLocId#57217]
Arguments: [productUuid#57216 ASC NULLS FIRST, plantUuid#57214 ASC NULLS FIRST], false, 0
(2153) Scan parquet
Output [3]: [product#57222, plant#57223, orderDateTime#57224]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2154) Filter
Input [3]: [product#57222, plant#57223, orderDateTime#57224]
Condition : ((isnotnull(orderDateTime#57224) AND isnotnull(plant#57223)) AND isnotnull(product#57222))
(2155) Exchange
Input [3]: [product#57222, plant#57223, orderDateTime#57224]
Arguments: hashpartitioning(product#57222, plant#57223, 10), REPARTITION_BY_NUM, [plan_id=227063]
(2156) Scan parquet
Output [4]: [plant#57228, product#57229, productionAspect#57231, systemId#57226]
Batched: 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#57228.internalRefUUID AS _extract_internalRefUUID#58787, product#57229.internalRefUUID AS _extract_internalRefUUID#58790, productionAspect#57231.productMovementPlants.unitOfIssue.code AS _extract_code#58788, productionAspect#57231.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58789]
Input [4]: [plant#57228, product#57229, productionAspect#57231, systemId#57226]
(2158) Exchange
Input [4]: [_extract_internalRefUUID#58787, _extract_internalRefUUID#58790, _extract_code#58788, _extract_internalRefUUID#58789]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226213]
(2159) Project
Output [4]: [_extract_code#58788, _extract_internalRefUUID#58789, _extract_internalRefUUID#58790, _extract_internalRefUUID#58787]
Input [4]: [_extract_internalRefUUID#58787, _extract_internalRefUUID#58790, _extract_code#58788, _extract_internalRefUUID#58789]
(2160) BroadcastExchange
Input [4]: [_extract_code#58788, _extract_internalRefUUID#58789, _extract_internalRefUUID#58790, _extract_internalRefUUID#58787]
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=228237]
(2161) BroadcastHashJoin
Left keys [4]: [coalesce(product#57222, ), isnull(product#57222), coalesce(plant#57223, ), isnull(plant#57223)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58790, ), isnull(_extract_internalRefUUID#58790), coalesce(_extract_internalRefUUID#58787, ), isnull(_extract_internalRefUUID#58787)]
Join type: LeftOuter
Join condition: None
(2162) Project
Output [5]: [product#57222, plant#57223, orderDateTime#57224, _extract_code#58788, _extract_internalRefUUID#58789]
Input [7]: [product#57222, plant#57223, orderDateTime#57224, _extract_code#58788, _extract_internalRefUUID#58789, _extract_internalRefUUID#58790, _extract_internalRefUUID#58787]
(2163) Scan parquet
Output [2]: [internalUUID#57236, systemId#57235]
Batched: 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#57236]
Input [2]: [internalUUID#57236, systemId#57235]
(2165) Exchange
Input [1]: [internalUUID#57236]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226219]
(2166) BroadcastExchange
Input [1]: [internalUUID#57236]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=228241]
(2167) BroadcastHashJoin
Left keys [2]: [coalesce(plant#57223, ), isnull(plant#57223)]
Right keys [2]: [coalesce(internalUUID#57236, ), isnull(internalUUID#57236)]
Join type: LeftOuter
Join condition: None
(2168) Project
Output [5]: [product#57222, plant#57223, orderDateTime#57224, _extract_code#58788, _extract_internalRefUUID#58789]
Input [6]: [product#57222, plant#57223, orderDateTime#57224, _extract_code#58788, _extract_internalRefUUID#58789, internalUUID#57236]
(2169) Scan parquet
Output [4]: [internalUUID#57250, baseUnitOfMeasure#57254, unitOfMeasureConversions#57256, systemId#57249]
Batched: 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#57250, baseUnitOfMeasure#57254, unitOfMeasureConversions#57256, systemId#57249]
Condition : isnotnull(internalUUID#57250)
(2171) Project
Output [3]: [internalUUID#57250, baseUnitOfMeasure#57254, unitOfMeasureConversions#57256]
Input [4]: [internalUUID#57250, baseUnitOfMeasure#57254, unitOfMeasureConversions#57256, systemId#57249]
(2172) Exchange
Input [3]: [internalUUID#57250, baseUnitOfMeasure#57254, unitOfMeasureConversions#57256]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226225]
(2173) BroadcastExchange
Input [3]: [internalUUID#57250, baseUnitOfMeasure#57254, unitOfMeasureConversions#57256]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=228245]
(2174) BroadcastHashJoin
Left keys [1]: [product#57222]
Right keys [1]: [internalUUID#57250]
Join type: LeftOuter
Join condition: None
(2175) Project
Output [4]: [product#57222, plant#57223, orderDateTime#57224, filter(unitOfMeasureConversions#57256, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58788) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58789)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#57254.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#57254.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#57261]
Input [8]: [product#57222, plant#57223, orderDateTime#57224, _extract_code#58788, _extract_internalRefUUID#58789, internalUUID#57250, baseUnitOfMeasure#57254, unitOfMeasureConversions#57256]
(2176) Generate
Input [4]: [product#57222, plant#57223, orderDateTime#57224, filteredUnitOfMeasureConversions#57261]
Arguments: explode(filteredUnitOfMeasureConversions#57261.quantityNumerator), [product#57222, plant#57223, orderDateTime#57224, filteredUnitOfMeasureConversions#57261], true, [quantityNumerator#57262]
(2177) Project
Output [4]: [product#57222, plant#57223, orderDateTime#57224, filteredUnitOfMeasureConversions#57261.quantityDenominator AS _extract_quantityDenominator#58133]
Input [5]: [product#57222, plant#57223, orderDateTime#57224, filteredUnitOfMeasureConversions#57261, quantityNumerator#57262]
(2178) Generate
Input [4]: [product#57222, plant#57223, orderDateTime#57224, _extract_quantityDenominator#58133]
Arguments: explode(_extract_quantityDenominator#58133), [product#57222, plant#57223, orderDateTime#57224], true, [quantityDenominator#57263]
(2179) Project
Output [3]: [product#57222, plant#57223, orderDateTime#57224]
Input [4]: [product#57222, plant#57223, orderDateTime#57224, quantityDenominator#57263]
(2180) Sort
Input [3]: [product#57222, plant#57223, orderDateTime#57224]
Arguments: [product#57222 ASC NULLS FIRST, plant#57223 ASC NULLS FIRST], false, 0
(2181) SortMergeJoin
Left keys [2]: [productUuid#57216, plantUuid#57214]
Right keys [2]: [product#57222, plant#57223]
Join type: Inner
Join condition: (calculationDateTime#57210 <= orderDateTime#57224)
(2182) Project
Output [4]: [plantUuid#57214 AS plant#57266, productUuid#57216 AS product#57267, storageLocId#57217, calculationDateTime#57210]
Input [7]: [plantUuid#57214, productUuid#57216, calculationDateTime#57210, storageLocId#57217, product#57222, plant#57223, orderDateTime#57224]
(2183) HashAggregate
Input [4]: [plant#57266, product#57267, storageLocId#57217, calculationDateTime#57210]
Keys [3]: [plant#57266, product#57267, storageLocId#57217]
Functions [1]: [partial_max(calculationDateTime#57210)]
Aggregate Attributes [1]: [max#59827]
Results [4]: [plant#57266, product#57267, storageLocId#57217, max#59828]
(2184) HashAggregate
Input [4]: [plant#57266, product#57267, storageLocId#57217, max#59828]
Keys [3]: [plant#57266, product#57267, storageLocId#57217]
Functions [1]: [max(calculationDateTime#57210)]
Aggregate Attributes [1]: [max(calculationDateTime#57210)#50743]
Results [4]: [plant#57266, product#57267, storageLocId#57217, max(calculationDateTime#57210)#50743 AS max_calc_datetime#57268]
(2185) Exchange
Input [4]: [plant#57266, product#57267, storageLocId#57217, max_calc_datetime#57268]
Arguments: hashpartitioning(coalesce(plant#57266, ), isnull(plant#57266), coalesce(product#57267, ), isnull(product#57267), coalesce(storageLocId#57217, ), isnull(storageLocId#57217), coalesce(max_calc_datetime#57268, 1970-01-01 00:00:00), isnull(max_calc_datetime#57268), 10), ENSURE_REQUIREMENTS, [plan_id=228264]
(2186) Sort
Input [4]: [plant#57266, product#57267, storageLocId#57217, max_calc_datetime#57268]
Arguments: [coalesce(plant#57266, ) ASC NULLS FIRST, isnull(plant#57266) ASC NULLS FIRST, coalesce(product#57267, ) ASC NULLS FIRST, isnull(product#57267) ASC NULLS FIRST, coalesce(storageLocId#57217, ) ASC NULLS FIRST, isnull(storageLocId#57217) ASC NULLS FIRST, coalesce(max_calc_datetime#57268, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#57268) ASC NULLS FIRST], false, 0
(2187) SortMergeJoin
Left keys [8]: [coalesce(plant#57129, ), isnull(plant#57129), coalesce(product#57130, ), isnull(product#57130), coalesce(storageLocId#57080, ), isnull(storageLocId#57080), coalesce(calculationDateTime#57073, 1970-01-01 00:00:00), isnull(calculationDateTime#57073)]
Right keys [8]: [coalesce(plant#57266, ), isnull(plant#57266), coalesce(product#57267, ), isnull(product#57267), coalesce(storageLocId#57217, ), isnull(storageLocId#57217), coalesce(max_calc_datetime#57268, 1970-01-01 00:00:00), isnull(max_calc_datetime#57268)]
Join type: Inner
Join condition: None
(2188) Project
Output [3]: [plant#57129, product#57130, calculationDateTime#57073]
Input [8]: [plant#57129, product#57130, storageLocId#57080, calculationDateTime#57073, plant#57266, product#57267, storageLocId#57217, max_calc_datetime#57268]
(2189) HashAggregate
Input [3]: [plant#57129, product#57130, calculationDateTime#57073]
Keys [2]: [product#57130, plant#57129]
Functions [1]: [partial_min(calculationDateTime#57073)]
Aggregate Attributes [1]: [min#59819]
Results [3]: [product#57130, plant#57129, min#59820]
(2190) Exchange
Input [3]: [product#57130, plant#57129, min#59820]
Arguments: hashpartitioning(product#57130, plant#57129, 10), ENSURE_REQUIREMENTS, [plan_id=228271]
(2191) HashAggregate
Input [3]: [product#57130, plant#57129, min#59820]
Keys [2]: [product#57130, plant#57129]
Functions [1]: [min(calculationDateTime#57073)]
Aggregate Attributes [1]: [min(calculationDateTime#57073)#50899]
Results [3]: [product#57130, plant#57129, min(calculationDateTime#57073)#50899 AS minCalculationDateTime#57270]
(2192) Sort
Input [3]: [product#57130, plant#57129, minCalculationDateTime#57270]
Arguments: [product#57130 ASC NULLS FIRST, plant#57129 ASC NULLS FIRST], false, 0
(2193) SortMergeJoin
Left keys [2]: [product#56950, plant#56951]
Right keys [2]: [product#57130, plant#57129]
Join type: LeftOuter
Join condition: None
(2194) Project
Output [3]: [product#56950, plant#56951, CASE WHEN isnotnull(minCalculationDateTime#57270) THEN minCalculationDateTime#57270 ELSE orderDateTime#56952 END AS stockDatetime#57272]
Input [6]: [product#56950, plant#56951, orderDateTime#56952, product#57130, plant#57129, minCalculationDateTime#57270]
(2195) Exchange
Input [3]: [product#56950, plant#56951, stockDatetime#57272]
Arguments: hashpartitioning(coalesce(plant#56951, ), isnull(plant#56951), coalesce(product#56950, ), isnull(product#56950), 10), ENSURE_REQUIREMENTS, [plan_id=228435]
(2196) Sort
Input [3]: [product#56950, plant#56951, stockDatetime#57272]
Arguments: [coalesce(plant#56951, ) ASC NULLS FIRST, isnull(plant#56951) ASC NULLS FIRST, coalesce(product#56950, ) ASC NULLS FIRST, isnull(product#56950) ASC NULLS FIRST], false, 0
(2197) Scan parquet
Output [3]: [product#57275, plant#57276, orderDateTime#57277]
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/10000000006/shardId=0_1_10000000006]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2198) Exchange
Input [3]: [product#57275, plant#57276, orderDateTime#57277]
Arguments: hashpartitioning(product#57275, plant#57276, 10), REPARTITION_BY_NUM, [plan_id=226243]
(2199) Scan parquet
Output [8]: [internalUUID#57280, plant#57281, product#57282, blockedForReplenishmentStartingFrom#57283, productionAspect#57284, salesPlant#57285, listing#57286, systemId#57279]
Batched: 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#57279, internalUUID#57280, plant#57281, product#57282, blockedForReplenishmentStartingFrom#57283, productionAspect#57284, salesPlant#57285, listing#57286]
Input [8]: [internalUUID#57280, plant#57281, product#57282, blockedForReplenishmentStartingFrom#57283, productionAspect#57284, salesPlant#57285, listing#57286, systemId#57279]
(2201) Exchange
Input [8]: [systemId#57279, internalUUID#57280, plant#57281, product#57282, blockedForReplenishmentStartingFrom#57283, productionAspect#57284, salesPlant#57285, listing#57286]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226246]
(2202) Project
Output [1]: [struct(systemId, systemId#57279, internalUUID, internalUUID#57280, plant, plant#57281, product, product#57282, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#57283, productionAspect, productionAspect#57284, salesPlant, salesPlant#57285, listing, listing#57286) AS productPlant#57287]
Input [8]: [systemId#57279, internalUUID#57280, plant#57281, product#57282, blockedForReplenishmentStartingFrom#57283, productionAspect#57284, salesPlant#57285, listing#57286]
(2203) BroadcastExchange
Input [1]: [productPlant#57287]
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=228279]
(2204) BroadcastHashJoin
Left keys [4]: [coalesce(product#57275, ), isnull(product#57275), coalesce(plant#57276, ), isnull(plant#57276)]
Right keys [4]: [coalesce(productPlant#57287.product.internalRefUUID, ), isnull(productPlant#57287.product.internalRefUUID), coalesce(productPlant#57287.plant.internalRefUUID, ), isnull(productPlant#57287.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(2205) Scan parquet
Output [3]: [internalUUID#57289, address#57295, systemId#57288]
Batched: 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#57289, address#57295.timeZone.code AS timezonecode#57300]
Input [3]: [internalUUID#57289, address#57295, systemId#57288]
(2207) Exchange
Input [2]: [internalUUID#57289, timezonecode#57300]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226251]
(2208) BroadcastExchange
Input [2]: [internalUUID#57289, timezonecode#57300]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=228282]
(2209) BroadcastHashJoin
Left keys [2]: [coalesce(plant#57276, ), isnull(plant#57276)]
Right keys [2]: [coalesce(internalUUID#57289, ), isnull(internalUUID#57289)]
Join type: LeftOuter
Join condition: None
(2210) Project
Output [5]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, CASE WHEN isnotnull(timezonecode#57300) THEN timezonecode#57300 ELSE UTC END AS timezonecode#57301]
Input [6]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, internalUUID#57289, timezonecode#57300]
(2211) Scan parquet
Output [4]: [internalUUID#57303, baseUnitOfMeasure#57307, unitOfMeasureConversions#57309, systemId#57302]
Batched: 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#57303, baseUnitOfMeasure#57307, unitOfMeasureConversions#57309, systemId#57302]
Condition : isnotnull(internalUUID#57303)
(2213) Project
Output [3]: [internalUUID#57303, baseUnitOfMeasure#57307, unitOfMeasureConversions#57309]
Input [4]: [internalUUID#57303, baseUnitOfMeasure#57307, unitOfMeasureConversions#57309, systemId#57302]
(2214) Exchange
Input [3]: [internalUUID#57303, baseUnitOfMeasure#57307, unitOfMeasureConversions#57309]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226257]
(2215) BroadcastExchange
Input [3]: [internalUUID#57303, baseUnitOfMeasure#57307, unitOfMeasureConversions#57309]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=228286]
(2216) BroadcastHashJoin
Left keys [1]: [product#57275]
Right keys [1]: [internalUUID#57303]
Join type: LeftOuter
Join condition: None
(2217) Project
Output [6]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, filter(unitOfMeasureConversions#57309, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#57287.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#57287.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#57307.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#57307.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#57314]
Input [8]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, internalUUID#57303, baseUnitOfMeasure#57307, unitOfMeasureConversions#57309]
(2218) Project
Output [7]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, filteredUnitOfMeasureConversions#57314.quantityDenominator AS _extract_quantityDenominator#58361, filteredUnitOfMeasureConversions#57314.quantityNumerator AS _extract_quantityNumerator#58362]
Input [6]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, filteredUnitOfMeasureConversions#57314]
(2219) Generate
Input [7]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, _extract_quantityDenominator#58361, _extract_quantityNumerator#58362]
Arguments: explode(_extract_quantityNumerator#58362), [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, _extract_quantityDenominator#58361], true, [quantityNumerator#57315]
(2220) Generate
Input [7]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, _extract_quantityDenominator#58361, quantityNumerator#57315]
Arguments: explode(_extract_quantityDenominator#58361), [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, quantityNumerator#57315], true, [quantityDenominator#57316]
(2221) Project
Output [6]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, (cast(quantityNumerator#57315 as double) / cast(quantityDenominator#57316 as double)) AS outboundUnit#57317]
Input [7]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, quantityNumerator#57315, quantityDenominator#57316]
(2222) Project
Output [6]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, CASE WHEN (isnull(outboundUnit#57317) OR (outboundUnit#57317 <= 0.0)) THEN 1.0 ELSE outboundUnit#57317 END AS outboundUnit#57318]
Input [6]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57317]
(2223) Sort
Input [6]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57318]
Arguments: [product#57275 ASC NULLS FIRST, plant#57276 ASC NULLS FIRST], false, 0
(2224) Scan parquet
Output [6]: [internalUUID#57320, product#57321, plant#57322, calculationDateTime#57323, stockQuantities#57324, systemId#57319]
Batched: 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#57320, product#57321, plant#57322, calculationDateTime#57323, stockQuantities#57324, systemId#57319]
Condition : (isnotnull(plant#57322.internalRefUUID) AND isnotnull(product#57321.internalRefUUID))
(2226) Project
Output [6]: [systemId#57319, internalUUID#57320, product#57321, plant#57322, calculationDateTime#57323, stockQuantities#57324]
Input [6]: [internalUUID#57320, product#57321, plant#57322, calculationDateTime#57323, stockQuantities#57324, systemId#57319]
(2227) Exchange
Input [6]: [systemId#57319, internalUUID#57320, product#57321, plant#57322, calculationDateTime#57323, stockQuantities#57324]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226268]
(2228) BroadcastExchange
Input [6]: [systemId#57319, internalUUID#57320, product#57321, plant#57322, calculationDateTime#57323, stockQuantities#57324]
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=228318]
(2229) Scan parquet
Output [2]: [marketUnit#57325, distributionCenters#57331]
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#57325, distributionCenters#57331]
Condition : (((marketUnit#57325 <=> DIP_1691) AND (size(distributionCenters#57331, true) > 0)) AND isnotnull(distributionCenters#57331))
(2231) Project
Output [1]: [distributionCenters#57331]
Input [2]: [marketUnit#57325, distributionCenters#57331]
(2232) Exchange
Input [1]: [distributionCenters#57331]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226272]
(2233) Generate
Input [1]: [distributionCenters#57331]
Arguments: explode(distributionCenters#57331), false, [distributionCenters#57347]
(2234) Filter
Input [1]: [distributionCenters#57347]
Condition : (((size(distributionCenters#57347.storageLocations, true) > 0) AND isnotnull(distributionCenters#57347.storageLocations)) AND isnotnull(distributionCenters#57347.internalRefUUID))
(2235) Project
Output [2]: [distributionCenters#57347.internalRefUUID AS _extract_internalRefUUID#58139, distributionCenters#57347.storageLocations AS _extract_storageLocations#58140]
Input [1]: [distributionCenters#57347]
(2236) Generate
Input [2]: [_extract_internalRefUUID#58139, _extract_storageLocations#58140]
Arguments: explode(_extract_storageLocations#58140), [_extract_internalRefUUID#58139], false, [storageLocations#57348]
(2237) Project
Output [3]: [_extract_internalRefUUID#58139 AS plantUuid#57350, storageLocations#57348.id AS storageLocId#57351, storageLocations#57348.internalRefUUID AS storageLocUuid#57352]
Input [2]: [_extract_internalRefUUID#58139, storageLocations#57348]
(2238) BroadcastExchange
Input [3]: [plantUuid#57350, storageLocId#57351, storageLocUuid#57352]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=228314]
(2239) Scan parquet
Output [2]: [product#57353, plant#57354]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(2240) Filter
Input [2]: [product#57353, plant#57354]
Condition : isnotnull(plant#57354)
(2241) Exchange
Input [2]: [product#57353, plant#57354]
Arguments: hashpartitioning(product#57353, plant#57354, 10), REPARTITION_BY_NUM, [plan_id=227084]
(2242) Scan parquet
Output [4]: [plant#57359, product#57360, productionAspect#57362, systemId#57357]
Batched: 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#57359.internalRefUUID AS _extract_internalRefUUID#58791, product#57360.internalRefUUID AS _extract_internalRefUUID#58794, productionAspect#57362.productMovementPlants.unitOfIssue.code AS _extract_code#58792, productionAspect#57362.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58793]
Input [4]: [plant#57359, product#57360, productionAspect#57362, systemId#57357]
(2244) Exchange
Input [4]: [_extract_internalRefUUID#58791, _extract_internalRefUUID#58794, _extract_code#58792, _extract_internalRefUUID#58793]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226284]
(2245) Project
Output [4]: [_extract_code#58792, _extract_internalRefUUID#58793, _extract_internalRefUUID#58794, _extract_internalRefUUID#58791]
Input [4]: [_extract_internalRefUUID#58791, _extract_internalRefUUID#58794, _extract_code#58792, _extract_internalRefUUID#58793]
(2246) BroadcastExchange
Input [4]: [_extract_code#58792, _extract_internalRefUUID#58793, _extract_internalRefUUID#58794, _extract_internalRefUUID#58791]
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=228294]
(2247) BroadcastHashJoin
Left keys [4]: [coalesce(product#57353, ), isnull(product#57353), coalesce(plant#57354, ), isnull(plant#57354)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58794, ), isnull(_extract_internalRefUUID#58794), coalesce(_extract_internalRefUUID#58791, ), isnull(_extract_internalRefUUID#58791)]
Join type: LeftOuter
Join condition: None
(2248) Project
Output [4]: [product#57353, plant#57354, _extract_code#58792, _extract_internalRefUUID#58793]
Input [6]: [product#57353, plant#57354, _extract_code#58792, _extract_internalRefUUID#58793, _extract_internalRefUUID#58794, _extract_internalRefUUID#58791]
(2249) Scan parquet
Output [2]: [internalUUID#57367, systemId#57366]
Batched: 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#57367]
Input [2]: [internalUUID#57367, systemId#57366]
(2251) Exchange
Input [1]: [internalUUID#57367]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226290]
(2252) BroadcastExchange
Input [1]: [internalUUID#57367]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=228298]
(2253) BroadcastHashJoin
Left keys [2]: [coalesce(plant#57354, ), isnull(plant#57354)]
Right keys [2]: [coalesce(internalUUID#57367, ), isnull(internalUUID#57367)]
Join type: LeftOuter
Join condition: None
(2254) Project
Output [4]: [product#57353, plant#57354, _extract_code#58792, _extract_internalRefUUID#58793]
Input [5]: [product#57353, plant#57354, _extract_code#58792, _extract_internalRefUUID#58793, internalUUID#57367]
(2255) Scan parquet
Output [4]: [internalUUID#57381, baseUnitOfMeasure#57385, unitOfMeasureConversions#57387, systemId#57380]
Batched: 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#57381, baseUnitOfMeasure#57385, unitOfMeasureConversions#57387, systemId#57380]
Condition : isnotnull(internalUUID#57381)
(2257) Project
Output [3]: [internalUUID#57381, baseUnitOfMeasure#57385, unitOfMeasureConversions#57387]
Input [4]: [internalUUID#57381, baseUnitOfMeasure#57385, unitOfMeasureConversions#57387, systemId#57380]
(2258) Exchange
Input [3]: [internalUUID#57381, baseUnitOfMeasure#57385, unitOfMeasureConversions#57387]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226296]
(2259) BroadcastExchange
Input [3]: [internalUUID#57381, baseUnitOfMeasure#57385, unitOfMeasureConversions#57387]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=228302]
(2260) BroadcastHashJoin
Left keys [1]: [product#57353]
Right keys [1]: [internalUUID#57381]
Join type: LeftOuter
Join condition: None
(2261) Project
Output [2]: [plant#57354, filter(unitOfMeasureConversions#57387, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58792) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58793)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#57385.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#57385.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#57392]
Input [7]: [product#57353, plant#57354, _extract_code#58792, _extract_internalRefUUID#58793, internalUUID#57381, baseUnitOfMeasure#57385, unitOfMeasureConversions#57387]
(2262) Generate
Input [2]: [plant#57354, filteredUnitOfMeasureConversions#57392]
Arguments: explode(filteredUnitOfMeasureConversions#57392.quantityNumerator), [plant#57354, filteredUnitOfMeasureConversions#57392], true, [quantityNumerator#57393]
(2263) Project
Output [2]: [plant#57354, filteredUnitOfMeasureConversions#57392.quantityDenominator AS _extract_quantityDenominator#58141]
Input [3]: [plant#57354, filteredUnitOfMeasureConversions#57392, quantityNumerator#57393]
(2264) Generate
Input [2]: [plant#57354, _extract_quantityDenominator#58141]
Arguments: explode(_extract_quantityDenominator#58141), [plant#57354], true, [quantityDenominator#57394]
(2265) Project
Output [1]: [plant#57354]
Input [2]: [plant#57354, quantityDenominator#57394]
(2266) HashAggregate
Input [1]: [plant#57354]
Keys [1]: [plant#57354]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#57354]
(2267) Exchange
Input [1]: [plant#57354]
Arguments: hashpartitioning(plant#57354, 10), ENSURE_REQUIREMENTS, [plan_id=228311]
(2268) HashAggregate
Input [1]: [plant#57354]
Keys [1]: [plant#57354]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#57354]
(2269) BroadcastHashJoin
Left keys [1]: [plantUuid#57350]
Right keys [1]: [plant#57354]
Join type: Inner
Join condition: None
(2270) Project
Output [3]: [plantUuid#57350, storageLocId#57351, storageLocUuid#57352]
Input [4]: [plantUuid#57350, storageLocId#57351, storageLocUuid#57352, plant#57354]
(2271) BroadcastHashJoin
Left keys [2]: [coalesce(plant#57322.internalRefUUID, ), isnull(plant#57322.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#57350, ), isnull(plantUuid#57350)]
Join type: Inner
Join condition: None
(2272) Generate
Input [9]: [systemId#57319, internalUUID#57320, product#57321, plant#57322, calculationDateTime#57323, stockQuantities#57324, plantUuid#57350, storageLocId#57351, storageLocUuid#57352]
Arguments: explode(filter(stockQuantities#57324, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#57352) AND (lambda x#50650.storageLocation.Id = storageLocId#57351)), lambda x#50650, false))), [systemId#57319, internalUUID#57320, product#57321, plant#57322, calculationDateTime#57323, plantUuid#57350], false, [stockQuantity#57397]
(2273) ObjectHashAggregate
Input [7]: [systemId#57319, internalUUID#57320, product#57321, plant#57322, calculationDateTime#57323, plantUuid#57350, stockQuantity#57397]
Keys [5]: [plantUuid#57350, internalUUID#57320, plant#57322, product#57321, systemId#57319]
Functions [2]: [partial_first(calculationDateTime#57323, false), partial_collect_list(stockQuantity#57397, 0, 0)]
Aggregate Attributes [3]: [first#59843, valueSet#59844, buf#59845]
Results [8]: [plantUuid#57350, internalUUID#57320, plant#57322, product#57321, systemId#57319, first#59846, valueSet#59847, buf#59848]
(2274) ObjectHashAggregate
Input [8]: [plantUuid#57350, internalUUID#57320, plant#57322, product#57321, systemId#57319, first#59846, valueSet#59847, buf#59848]
Keys [5]: [plantUuid#57350, internalUUID#57320, plant#57322, product#57321, systemId#57319]
Functions [2]: [first(calculationDateTime#57323, false), collect_list(stockQuantity#57397, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#57323)()#50665, collect_list(stockQuantity#57397, 0, 0)#50666]
Results [4]: [product#57321, plant#57322, first(calculationDateTime#57323)()#50665 AS calculationDateTime#57398, collect_list(stockQuantity#57397, 0, 0)#50666 AS stockQuantities#57399]
(2275) Filter
Input [4]: [product#57321, plant#57322, calculationDateTime#57398, stockQuantities#57399]
Condition : ((size(stockQuantities#57399, true) > 0) AND isnotnull(calculationDateTime#57398))
(2276) Generate
Input [4]: [product#57321, plant#57322, calculationDateTime#57398, stockQuantities#57399]
Arguments: explode(stockQuantities#57399), [product#57321, plant#57322, calculationDateTime#57398], false, [stockQuantity#57400]
(2277) Filter
Input [4]: [product#57321, plant#57322, calculationDateTime#57398, stockQuantity#57400]
Condition : (((isnotnull(stockQuantity#57400.specialStockIndicator.code) AND isnotnull(stockQuantity#57400.stockType.code)) AND (stockQuantity#57400.specialStockIndicator.code = )) AND (stockQuantity#57400.stockType.code = 01))
(2278) Project
Output [5]: [plant#57322.internalRefUUID AS plantUuid#57402, product#57321.internalRefUUID AS productUuid#57404, calculationDateTime#57398, stockQuantity#57400.storagelocation.id AS storageLocId#57405, stockQuantity#57400.quantity.measure AS quantity#57407]
Input [4]: [product#57321, plant#57322, calculationDateTime#57398, stockQuantity#57400]
(2279) Exchange
Input [5]: [plantUuid#57402, productUuid#57404, calculationDateTime#57398, storageLocId#57405, quantity#57407]
Arguments: hashpartitioning(productUuid#57404, plantUuid#57402, 10), ENSURE_REQUIREMENTS, [plan_id=228344]
(2280) Sort
Input [5]: [plantUuid#57402, productUuid#57404, calculationDateTime#57398, storageLocId#57405, quantity#57407]
Arguments: [productUuid#57404 ASC NULLS FIRST, plantUuid#57402 ASC NULLS FIRST], false, 0
(2281) Scan parquet
Output [3]: [product#57410, plant#57411, orderDateTime#57412]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2282) Filter
Input [3]: [product#57410, plant#57411, orderDateTime#57412]
Condition : ((isnotnull(orderDateTime#57412) AND isnotnull(plant#57411)) AND isnotnull(product#57410))
(2283) Exchange
Input [3]: [product#57410, plant#57411, orderDateTime#57412]
Arguments: hashpartitioning(product#57410, plant#57411, 10), REPARTITION_BY_NUM, [plan_id=227107]
(2284) Scan parquet
Output [4]: [plant#57416, product#57417, productionAspect#57419, systemId#57414]
Batched: 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#57416.internalRefUUID AS _extract_internalRefUUID#58798, product#57417.internalRefUUID AS _extract_internalRefUUID#58795, productionAspect#57419.productMovementPlants.unitOfIssue.code AS _extract_code#58796, productionAspect#57419.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58797]
Input [4]: [plant#57416, product#57417, productionAspect#57419, systemId#57414]
(2286) Exchange
Input [4]: [_extract_internalRefUUID#58798, _extract_internalRefUUID#58795, _extract_code#58796, _extract_internalRefUUID#58797]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226321]
(2287) Project
Output [4]: [_extract_code#58796, _extract_internalRefUUID#58797, _extract_internalRefUUID#58795, _extract_internalRefUUID#58798]
Input [4]: [_extract_internalRefUUID#58798, _extract_internalRefUUID#58795, _extract_code#58796, _extract_internalRefUUID#58797]
(2288) BroadcastExchange
Input [4]: [_extract_code#58796, _extract_internalRefUUID#58797, _extract_internalRefUUID#58795, _extract_internalRefUUID#58798]
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=228327]
(2289) BroadcastHashJoin
Left keys [4]: [coalesce(product#57410, ), isnull(product#57410), coalesce(plant#57411, ), isnull(plant#57411)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58795, ), isnull(_extract_internalRefUUID#58795), coalesce(_extract_internalRefUUID#58798, ), isnull(_extract_internalRefUUID#58798)]
Join type: LeftOuter
Join condition: None
(2290) Project
Output [5]: [product#57410, plant#57411, orderDateTime#57412, _extract_code#58796, _extract_internalRefUUID#58797]
Input [7]: [product#57410, plant#57411, orderDateTime#57412, _extract_code#58796, _extract_internalRefUUID#58797, _extract_internalRefUUID#58795, _extract_internalRefUUID#58798]
(2291) Scan parquet
Output [2]: [internalUUID#57424, systemId#57423]
Batched: 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#57424]
Input [2]: [internalUUID#57424, systemId#57423]
(2293) Exchange
Input [1]: [internalUUID#57424]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226327]
(2294) BroadcastExchange
Input [1]: [internalUUID#57424]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=228331]
(2295) BroadcastHashJoin
Left keys [2]: [coalesce(plant#57411, ), isnull(plant#57411)]
Right keys [2]: [coalesce(internalUUID#57424, ), isnull(internalUUID#57424)]
Join type: LeftOuter
Join condition: None
(2296) Project
Output [5]: [product#57410, plant#57411, orderDateTime#57412, _extract_code#58796, _extract_internalRefUUID#58797]
Input [6]: [product#57410, plant#57411, orderDateTime#57412, _extract_code#58796, _extract_internalRefUUID#58797, internalUUID#57424]
(2297) Scan parquet
Output [4]: [internalUUID#57438, baseUnitOfMeasure#57442, unitOfMeasureConversions#57444, systemId#57437]
Batched: 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#57438, baseUnitOfMeasure#57442, unitOfMeasureConversions#57444, systemId#57437]
Condition : isnotnull(internalUUID#57438)
(2299) Project
Output [3]: [internalUUID#57438, baseUnitOfMeasure#57442, unitOfMeasureConversions#57444]
Input [4]: [internalUUID#57438, baseUnitOfMeasure#57442, unitOfMeasureConversions#57444, systemId#57437]
(2300) Exchange
Input [3]: [internalUUID#57438, baseUnitOfMeasure#57442, unitOfMeasureConversions#57444]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226333]
(2301) BroadcastExchange
Input [3]: [internalUUID#57438, baseUnitOfMeasure#57442, unitOfMeasureConversions#57444]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=228335]
(2302) BroadcastHashJoin
Left keys [1]: [product#57410]
Right keys [1]: [internalUUID#57438]
Join type: LeftOuter
Join condition: None
(2303) Project
Output [4]: [product#57410, plant#57411, orderDateTime#57412, filter(unitOfMeasureConversions#57444, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58796) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58797)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#57442.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#57442.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#57449]
Input [8]: [product#57410, plant#57411, orderDateTime#57412, _extract_code#58796, _extract_internalRefUUID#58797, internalUUID#57438, baseUnitOfMeasure#57442, unitOfMeasureConversions#57444]
(2304) Generate
Input [4]: [product#57410, plant#57411, orderDateTime#57412, filteredUnitOfMeasureConversions#57449]
Arguments: explode(filteredUnitOfMeasureConversions#57449.quantityNumerator), [product#57410, plant#57411, orderDateTime#57412, filteredUnitOfMeasureConversions#57449], true, [quantityNumerator#57450]
(2305) Project
Output [4]: [product#57410, plant#57411, orderDateTime#57412, filteredUnitOfMeasureConversions#57449.quantityDenominator AS _extract_quantityDenominator#58145]
Input [5]: [product#57410, plant#57411, orderDateTime#57412, filteredUnitOfMeasureConversions#57449, quantityNumerator#57450]
(2306) Generate
Input [4]: [product#57410, plant#57411, orderDateTime#57412, _extract_quantityDenominator#58145]
Arguments: explode(_extract_quantityDenominator#58145), [product#57410, plant#57411, orderDateTime#57412], true, [quantityDenominator#57451]
(2307) Project
Output [3]: [product#57410, plant#57411, orderDateTime#57412]
Input [4]: [product#57410, plant#57411, orderDateTime#57412, quantityDenominator#57451]
(2308) Sort
Input [3]: [product#57410, plant#57411, orderDateTime#57412]
Arguments: [product#57410 ASC NULLS FIRST, plant#57411 ASC NULLS FIRST], false, 0
(2309) SortMergeJoin
Left keys [2]: [productUuid#57404, plantUuid#57402]
Right keys [2]: [product#57410, plant#57411]
Join type: Inner
Join condition: (calculationDateTime#57398 <= orderDateTime#57412)
(2310) Project
Output [5]: [plantUuid#57402 AS plant#57454, productUuid#57404 AS product#57455, storageLocId#57405, calculationDateTime#57398, quantity#57407]
Input [8]: [plantUuid#57402, productUuid#57404, calculationDateTime#57398, storageLocId#57405, quantity#57407, product#57410, plant#57411, orderDateTime#57412]
(2311) Exchange
Input [5]: [plant#57454, product#57455, storageLocId#57405, calculationDateTime#57398, quantity#57407]
Arguments: hashpartitioning(coalesce(plant#57454, ), isnull(plant#57454), coalesce(product#57455, ), isnull(product#57455), coalesce(storageLocId#57405, ), isnull(storageLocId#57405), coalesce(calculationDateTime#57398, 1970-01-01 00:00:00), isnull(calculationDateTime#57398), 10), ENSURE_REQUIREMENTS, [plan_id=228408]
(2312) Sort
Input [5]: [plant#57454, product#57455, storageLocId#57405, calculationDateTime#57398, quantity#57407]
Arguments: [coalesce(plant#57454, ) ASC NULLS FIRST, isnull(plant#57454) ASC NULLS FIRST, coalesce(product#57455, ) ASC NULLS FIRST, isnull(product#57455) ASC NULLS FIRST, coalesce(storageLocId#57405, ) ASC NULLS FIRST, isnull(storageLocId#57405) ASC NULLS FIRST, coalesce(calculationDateTime#57398, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#57398) ASC NULLS FIRST], false, 0
(2313) Scan parquet
Output [6]: [internalUUID#57457, product#57458, plant#57459, calculationDateTime#57460, stockQuantities#57461, systemId#57456]
Batched: 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#57457, product#57458, plant#57459, calculationDateTime#57460, stockQuantities#57461, systemId#57456]
Condition : (isnotnull(plant#57459.internalRefUUID) AND isnotnull(product#57458.internalRefUUID))
(2315) Project
Output [6]: [systemId#57456, internalUUID#57457, product#57458, plant#57459, calculationDateTime#57460, stockQuantities#57461]
Input [6]: [internalUUID#57457, product#57458, plant#57459, calculationDateTime#57460, stockQuantities#57461, systemId#57456]
(2316) Exchange
Input [6]: [systemId#57456, internalUUID#57457, product#57458, plant#57459, calculationDateTime#57460, stockQuantities#57461]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226345]
(2317) BroadcastExchange
Input [6]: [systemId#57456, internalUUID#57457, product#57458, plant#57459, calculationDateTime#57460, stockQuantities#57461]
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=228373]
(2318) Scan parquet
Output [2]: [marketUnit#57462, distributionCenters#57468]
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#57462, distributionCenters#57468]
Condition : (((marketUnit#57462 <=> DIP_1691) AND (size(distributionCenters#57468, true) > 0)) AND isnotnull(distributionCenters#57468))
(2320) Project
Output [1]: [distributionCenters#57468]
Input [2]: [marketUnit#57462, distributionCenters#57468]
(2321) Exchange
Input [1]: [distributionCenters#57468]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226349]
(2322) Generate
Input [1]: [distributionCenters#57468]
Arguments: explode(distributionCenters#57468), false, [distributionCenters#57484]
(2323) Filter
Input [1]: [distributionCenters#57484]
Condition : (((size(distributionCenters#57484.storageLocations, true) > 0) AND isnotnull(distributionCenters#57484.storageLocations)) AND isnotnull(distributionCenters#57484.internalRefUUID))
(2324) Project
Output [2]: [distributionCenters#57484.internalRefUUID AS _extract_internalRefUUID#58149, distributionCenters#57484.storageLocations AS _extract_storageLocations#58150]
Input [1]: [distributionCenters#57484]
(2325) Generate
Input [2]: [_extract_internalRefUUID#58149, _extract_storageLocations#58150]
Arguments: explode(_extract_storageLocations#58150), [_extract_internalRefUUID#58149], false, [storageLocations#57485]
(2326) Project
Output [3]: [_extract_internalRefUUID#58149 AS plantUuid#57487, storageLocations#57485.id AS storageLocId#57488, storageLocations#57485.internalRefUUID AS storageLocUuid#57489]
Input [2]: [_extract_internalRefUUID#58149, storageLocations#57485]
(2327) BroadcastExchange
Input [3]: [plantUuid#57487, storageLocId#57488, storageLocUuid#57489]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=228369]
(2328) Scan parquet
Output [2]: [product#57490, plant#57491]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(2329) Filter
Input [2]: [product#57490, plant#57491]
Condition : isnotnull(plant#57491)
(2330) Exchange
Input [2]: [product#57490, plant#57491]
Arguments: hashpartitioning(product#57490, plant#57491, 10), REPARTITION_BY_NUM, [plan_id=227120]
(2331) Scan parquet
Output [4]: [plant#57496, product#57497, productionAspect#57499, systemId#57494]
Batched: 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#57496.internalRefUUID AS _extract_internalRefUUID#58802, product#57497.internalRefUUID AS _extract_internalRefUUID#58799, productionAspect#57499.productMovementPlants.unitOfIssue.code AS _extract_code#58800, productionAspect#57499.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58801]
Input [4]: [plant#57496, product#57497, productionAspect#57499, systemId#57494]
(2333) Exchange
Input [4]: [_extract_internalRefUUID#58802, _extract_internalRefUUID#58799, _extract_code#58800, _extract_internalRefUUID#58801]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226361]
(2334) Project
Output [4]: [_extract_code#58800, _extract_internalRefUUID#58801, _extract_internalRefUUID#58799, _extract_internalRefUUID#58802]
Input [4]: [_extract_internalRefUUID#58802, _extract_internalRefUUID#58799, _extract_code#58800, _extract_internalRefUUID#58801]
(2335) BroadcastExchange
Input [4]: [_extract_code#58800, _extract_internalRefUUID#58801, _extract_internalRefUUID#58799, _extract_internalRefUUID#58802]
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=228349]
(2336) BroadcastHashJoin
Left keys [4]: [coalesce(product#57490, ), isnull(product#57490), coalesce(plant#57491, ), isnull(plant#57491)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58799, ), isnull(_extract_internalRefUUID#58799), coalesce(_extract_internalRefUUID#58802, ), isnull(_extract_internalRefUUID#58802)]
Join type: LeftOuter
Join condition: None
(2337) Project
Output [4]: [product#57490, plant#57491, _extract_code#58800, _extract_internalRefUUID#58801]
Input [6]: [product#57490, plant#57491, _extract_code#58800, _extract_internalRefUUID#58801, _extract_internalRefUUID#58799, _extract_internalRefUUID#58802]
(2338) Scan parquet
Output [2]: [internalUUID#57504, systemId#57503]
Batched: 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#57504]
Input [2]: [internalUUID#57504, systemId#57503]
(2340) Exchange
Input [1]: [internalUUID#57504]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226367]
(2341) BroadcastExchange
Input [1]: [internalUUID#57504]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=228353]
(2342) BroadcastHashJoin
Left keys [2]: [coalesce(plant#57491, ), isnull(plant#57491)]
Right keys [2]: [coalesce(internalUUID#57504, ), isnull(internalUUID#57504)]
Join type: LeftOuter
Join condition: None
(2343) Project
Output [4]: [product#57490, plant#57491, _extract_code#58800, _extract_internalRefUUID#58801]
Input [5]: [product#57490, plant#57491, _extract_code#58800, _extract_internalRefUUID#58801, internalUUID#57504]
(2344) Scan parquet
Output [4]: [internalUUID#57518, baseUnitOfMeasure#57522, unitOfMeasureConversions#57524, systemId#57517]
Batched: 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#57518, baseUnitOfMeasure#57522, unitOfMeasureConversions#57524, systemId#57517]
Condition : isnotnull(internalUUID#57518)
(2346) Project
Output [3]: [internalUUID#57518, baseUnitOfMeasure#57522, unitOfMeasureConversions#57524]
Input [4]: [internalUUID#57518, baseUnitOfMeasure#57522, unitOfMeasureConversions#57524, systemId#57517]
(2347) Exchange
Input [3]: [internalUUID#57518, baseUnitOfMeasure#57522, unitOfMeasureConversions#57524]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226373]
(2348) BroadcastExchange
Input [3]: [internalUUID#57518, baseUnitOfMeasure#57522, unitOfMeasureConversions#57524]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=228357]
(2349) BroadcastHashJoin
Left keys [1]: [product#57490]
Right keys [1]: [internalUUID#57518]
Join type: LeftOuter
Join condition: None
(2350) Project
Output [2]: [plant#57491, filter(unitOfMeasureConversions#57524, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58800) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58801)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#57522.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#57522.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#57529]
Input [7]: [product#57490, plant#57491, _extract_code#58800, _extract_internalRefUUID#58801, internalUUID#57518, baseUnitOfMeasure#57522, unitOfMeasureConversions#57524]
(2351) Generate
Input [2]: [plant#57491, filteredUnitOfMeasureConversions#57529]
Arguments: explode(filteredUnitOfMeasureConversions#57529.quantityNumerator), [plant#57491, filteredUnitOfMeasureConversions#57529], true, [quantityNumerator#57530]
(2352) Project
Output [2]: [plant#57491, filteredUnitOfMeasureConversions#57529.quantityDenominator AS _extract_quantityDenominator#58151]
Input [3]: [plant#57491, filteredUnitOfMeasureConversions#57529, quantityNumerator#57530]
(2353) Generate
Input [2]: [plant#57491, _extract_quantityDenominator#58151]
Arguments: explode(_extract_quantityDenominator#58151), [plant#57491], true, [quantityDenominator#57531]
(2354) Project
Output [1]: [plant#57491]
Input [2]: [plant#57491, quantityDenominator#57531]
(2355) HashAggregate
Input [1]: [plant#57491]
Keys [1]: [plant#57491]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#57491]
(2356) Exchange
Input [1]: [plant#57491]
Arguments: hashpartitioning(plant#57491, 10), ENSURE_REQUIREMENTS, [plan_id=228366]
(2357) HashAggregate
Input [1]: [plant#57491]
Keys [1]: [plant#57491]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#57491]
(2358) BroadcastHashJoin
Left keys [1]: [plantUuid#57487]
Right keys [1]: [plant#57491]
Join type: Inner
Join condition: None
(2359) Project
Output [3]: [plantUuid#57487, storageLocId#57488, storageLocUuid#57489]
Input [4]: [plantUuid#57487, storageLocId#57488, storageLocUuid#57489, plant#57491]
(2360) BroadcastHashJoin
Left keys [2]: [coalesce(plant#57459.internalRefUUID, ), isnull(plant#57459.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#57487, ), isnull(plantUuid#57487)]
Join type: Inner
Join condition: None
(2361) Generate
Input [9]: [systemId#57456, internalUUID#57457, product#57458, plant#57459, calculationDateTime#57460, stockQuantities#57461, plantUuid#57487, storageLocId#57488, storageLocUuid#57489]
Arguments: explode(filter(stockQuantities#57461, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#57489) AND (lambda x#50650.storageLocation.Id = storageLocId#57488)), lambda x#50650, false))), [systemId#57456, internalUUID#57457, product#57458, plant#57459, calculationDateTime#57460, plantUuid#57487], false, [stockQuantity#57534]
(2362) ObjectHashAggregate
Input [7]: [systemId#57456, internalUUID#57457, product#57458, plant#57459, calculationDateTime#57460, plantUuid#57487, stockQuantity#57534]
Keys [5]: [plantUuid#57487, internalUUID#57457, plant#57459, product#57458, systemId#57456]
Functions [2]: [partial_first(calculationDateTime#57460, false), partial_collect_list(stockQuantity#57534, 0, 0)]
Aggregate Attributes [3]: [first#59851, valueSet#59852, buf#59853]
Results [8]: [plantUuid#57487, internalUUID#57457, plant#57459, product#57458, systemId#57456, first#59854, valueSet#59855, buf#59856]
(2363) ObjectHashAggregate
Input [8]: [plantUuid#57487, internalUUID#57457, plant#57459, product#57458, systemId#57456, first#59854, valueSet#59855, buf#59856]
Keys [5]: [plantUuid#57487, internalUUID#57457, plant#57459, product#57458, systemId#57456]
Functions [2]: [first(calculationDateTime#57460, false), collect_list(stockQuantity#57534, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#57460)()#50665, collect_list(stockQuantity#57534, 0, 0)#50666]
Results [4]: [product#57458, plant#57459, first(calculationDateTime#57460)()#50665 AS calculationDateTime#57535, collect_list(stockQuantity#57534, 0, 0)#50666 AS stockQuantities#57536]
(2364) Filter
Input [4]: [product#57458, plant#57459, calculationDateTime#57535, stockQuantities#57536]
Condition : ((size(stockQuantities#57536, true) > 0) AND isnotnull(calculationDateTime#57535))
(2365) Generate
Input [4]: [product#57458, plant#57459, calculationDateTime#57535, stockQuantities#57536]
Arguments: explode(stockQuantities#57536), [product#57458, plant#57459, calculationDateTime#57535], false, [stockQuantity#57537]
(2366) Filter
Input [4]: [product#57458, plant#57459, calculationDateTime#57535, stockQuantity#57537]
Condition : (((isnotnull(stockQuantity#57537.specialStockIndicator.code) AND isnotnull(stockQuantity#57537.stockType.code)) AND (stockQuantity#57537.specialStockIndicator.code = )) AND (stockQuantity#57537.stockType.code = 01))
(2367) Project
Output [4]: [plant#57459.internalRefUUID AS plantUuid#57539, product#57458.internalRefUUID AS productUuid#57541, calculationDateTime#57535, stockQuantity#57537.storagelocation.id AS storageLocId#57542]
Input [4]: [product#57458, plant#57459, calculationDateTime#57535, stockQuantity#57537]
(2368) Exchange
Input [4]: [plantUuid#57539, productUuid#57541, calculationDateTime#57535, storageLocId#57542]
Arguments: hashpartitioning(productUuid#57541, plantUuid#57539, 10), ENSURE_REQUIREMENTS, [plan_id=228399]
(2369) Sort
Input [4]: [plantUuid#57539, productUuid#57541, calculationDateTime#57535, storageLocId#57542]
Arguments: [productUuid#57541 ASC NULLS FIRST, plantUuid#57539 ASC NULLS FIRST], false, 0
(2370) Scan parquet
Output [3]: [product#57547, plant#57548, orderDateTime#57549]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2371) Filter
Input [3]: [product#57547, plant#57548, orderDateTime#57549]
Condition : ((isnotnull(orderDateTime#57549) AND isnotnull(plant#57548)) AND isnotnull(product#57547))
(2372) Exchange
Input [3]: [product#57547, plant#57548, orderDateTime#57549]
Arguments: hashpartitioning(product#57547, plant#57548, 10), REPARTITION_BY_NUM, [plan_id=227143]
(2373) Scan parquet
Output [4]: [plant#57553, product#57554, productionAspect#57556, systemId#57551]
Batched: 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#57553.internalRefUUID AS _extract_internalRefUUID#58803, product#57554.internalRefUUID AS _extract_internalRefUUID#58806, productionAspect#57556.productMovementPlants.unitOfIssue.code AS _extract_code#58804, productionAspect#57556.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#58805]
Input [4]: [plant#57553, product#57554, productionAspect#57556, systemId#57551]
(2375) Exchange
Input [4]: [_extract_internalRefUUID#58803, _extract_internalRefUUID#58806, _extract_code#58804, _extract_internalRefUUID#58805]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226398]
(2376) Project
Output [4]: [_extract_code#58804, _extract_internalRefUUID#58805, _extract_internalRefUUID#58806, _extract_internalRefUUID#58803]
Input [4]: [_extract_internalRefUUID#58803, _extract_internalRefUUID#58806, _extract_code#58804, _extract_internalRefUUID#58805]
(2377) BroadcastExchange
Input [4]: [_extract_code#58804, _extract_internalRefUUID#58805, _extract_internalRefUUID#58806, _extract_internalRefUUID#58803]
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=228382]
(2378) BroadcastHashJoin
Left keys [4]: [coalesce(product#57547, ), isnull(product#57547), coalesce(plant#57548, ), isnull(plant#57548)]
Right keys [4]: [coalesce(_extract_internalRefUUID#58806, ), isnull(_extract_internalRefUUID#58806), coalesce(_extract_internalRefUUID#58803, ), isnull(_extract_internalRefUUID#58803)]
Join type: LeftOuter
Join condition: None
(2379) Project
Output [5]: [product#57547, plant#57548, orderDateTime#57549, _extract_code#58804, _extract_internalRefUUID#58805]
Input [7]: [product#57547, plant#57548, orderDateTime#57549, _extract_code#58804, _extract_internalRefUUID#58805, _extract_internalRefUUID#58806, _extract_internalRefUUID#58803]
(2380) Scan parquet
Output [2]: [internalUUID#57561, systemId#57560]
Batched: 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#57561]
Input [2]: [internalUUID#57561, systemId#57560]
(2382) Exchange
Input [1]: [internalUUID#57561]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226404]
(2383) BroadcastExchange
Input [1]: [internalUUID#57561]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=228386]
(2384) BroadcastHashJoin
Left keys [2]: [coalesce(plant#57548, ), isnull(plant#57548)]
Right keys [2]: [coalesce(internalUUID#57561, ), isnull(internalUUID#57561)]
Join type: LeftOuter
Join condition: None
(2385) Project
Output [5]: [product#57547, plant#57548, orderDateTime#57549, _extract_code#58804, _extract_internalRefUUID#58805]
Input [6]: [product#57547, plant#57548, orderDateTime#57549, _extract_code#58804, _extract_internalRefUUID#58805, internalUUID#57561]
(2386) Scan parquet
Output [4]: [internalUUID#57575, baseUnitOfMeasure#57579, unitOfMeasureConversions#57581, systemId#57574]
Batched: 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#57575, baseUnitOfMeasure#57579, unitOfMeasureConversions#57581, systemId#57574]
Condition : isnotnull(internalUUID#57575)
(2388) Project
Output [3]: [internalUUID#57575, baseUnitOfMeasure#57579, unitOfMeasureConversions#57581]
Input [4]: [internalUUID#57575, baseUnitOfMeasure#57579, unitOfMeasureConversions#57581, systemId#57574]
(2389) Exchange
Input [3]: [internalUUID#57575, baseUnitOfMeasure#57579, unitOfMeasureConversions#57581]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226410]
(2390) BroadcastExchange
Input [3]: [internalUUID#57575, baseUnitOfMeasure#57579, unitOfMeasureConversions#57581]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=228390]
(2391) BroadcastHashJoin
Left keys [1]: [product#57547]
Right keys [1]: [internalUUID#57575]
Join type: LeftOuter
Join condition: None
(2392) Project
Output [4]: [product#57547, plant#57548, orderDateTime#57549, filter(unitOfMeasureConversions#57581, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#58804) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#58805)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#57579.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#57579.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#57586]
Input [8]: [product#57547, plant#57548, orderDateTime#57549, _extract_code#58804, _extract_internalRefUUID#58805, internalUUID#57575, baseUnitOfMeasure#57579, unitOfMeasureConversions#57581]
(2393) Generate
Input [4]: [product#57547, plant#57548, orderDateTime#57549, filteredUnitOfMeasureConversions#57586]
Arguments: explode(filteredUnitOfMeasureConversions#57586.quantityNumerator), [product#57547, plant#57548, orderDateTime#57549, filteredUnitOfMeasureConversions#57586], true, [quantityNumerator#57587]
(2394) Project
Output [4]: [product#57547, plant#57548, orderDateTime#57549, filteredUnitOfMeasureConversions#57586.quantityDenominator AS _extract_quantityDenominator#58155]
Input [5]: [product#57547, plant#57548, orderDateTime#57549, filteredUnitOfMeasureConversions#57586, quantityNumerator#57587]
(2395) Generate
Input [4]: [product#57547, plant#57548, orderDateTime#57549, _extract_quantityDenominator#58155]
Arguments: explode(_extract_quantityDenominator#58155), [product#57547, plant#57548, orderDateTime#57549], true, [quantityDenominator#57588]
(2396) Project
Output [3]: [product#57547, plant#57548, orderDateTime#57549]
Input [4]: [product#57547, plant#57548, orderDateTime#57549, quantityDenominator#57588]
(2397) Sort
Input [3]: [product#57547, plant#57548, orderDateTime#57549]
Arguments: [product#57547 ASC NULLS FIRST, plant#57548 ASC NULLS FIRST], false, 0
(2398) SortMergeJoin
Left keys [2]: [productUuid#57541, plantUuid#57539]
Right keys [2]: [product#57547, plant#57548]
Join type: Inner
Join condition: (calculationDateTime#57535 <= orderDateTime#57549)
(2399) Project
Output [4]: [plantUuid#57539 AS plant#57591, productUuid#57541 AS product#57592, storageLocId#57542, calculationDateTime#57535]
Input [7]: [plantUuid#57539, productUuid#57541, calculationDateTime#57535, storageLocId#57542, product#57547, plant#57548, orderDateTime#57549]
(2400) HashAggregate
Input [4]: [plant#57591, product#57592, storageLocId#57542, calculationDateTime#57535]
Keys [3]: [plant#57591, product#57592, storageLocId#57542]
Functions [1]: [partial_max(calculationDateTime#57535)]
Aggregate Attributes [1]: [max#59849]
Results [4]: [plant#57591, product#57592, storageLocId#57542, max#59850]
(2401) HashAggregate
Input [4]: [plant#57591, product#57592, storageLocId#57542, max#59850]
Keys [3]: [plant#57591, product#57592, storageLocId#57542]
Functions [1]: [max(calculationDateTime#57535)]
Aggregate Attributes [1]: [max(calculationDateTime#57535)#50743]
Results [4]: [plant#57591, product#57592, storageLocId#57542, max(calculationDateTime#57535)#50743 AS max_calc_datetime#57593]
(2402) Exchange
Input [4]: [plant#57591, product#57592, storageLocId#57542, max_calc_datetime#57593]
Arguments: hashpartitioning(coalesce(plant#57591, ), isnull(plant#57591), coalesce(product#57592, ), isnull(product#57592), coalesce(storageLocId#57542, ), isnull(storageLocId#57542), coalesce(max_calc_datetime#57593, 1970-01-01 00:00:00), isnull(max_calc_datetime#57593), 10), ENSURE_REQUIREMENTS, [plan_id=228409]
(2403) Sort
Input [4]: [plant#57591, product#57592, storageLocId#57542, max_calc_datetime#57593]
Arguments: [coalesce(plant#57591, ) ASC NULLS FIRST, isnull(plant#57591) ASC NULLS FIRST, coalesce(product#57592, ) ASC NULLS FIRST, isnull(product#57592) ASC NULLS FIRST, coalesce(storageLocId#57542, ) ASC NULLS FIRST, isnull(storageLocId#57542) ASC NULLS FIRST, coalesce(max_calc_datetime#57593, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#57593) ASC NULLS FIRST], false, 0
(2404) SortMergeJoin
Left keys [8]: [coalesce(plant#57454, ), isnull(plant#57454), coalesce(product#57455, ), isnull(product#57455), coalesce(storageLocId#57405, ), isnull(storageLocId#57405), coalesce(calculationDateTime#57398, 1970-01-01 00:00:00), isnull(calculationDateTime#57398)]
Right keys [8]: [coalesce(plant#57591, ), isnull(plant#57591), coalesce(product#57592, ), isnull(product#57592), coalesce(storageLocId#57542, ), isnull(storageLocId#57542), coalesce(max_calc_datetime#57593, 1970-01-01 00:00:00), isnull(max_calc_datetime#57593)]
Join type: Inner
Join condition: None
(2405) Project
Output [4]: [plant#57454, product#57455, calculationDateTime#57398, quantity#57407]
Input [9]: [plant#57454, product#57455, storageLocId#57405, calculationDateTime#57398, quantity#57407, plant#57591, product#57592, storageLocId#57542, max_calc_datetime#57593]
(2406) HashAggregate
Input [4]: [plant#57454, product#57455, calculationDateTime#57398, quantity#57407]
Keys [2]: [product#57455, plant#57454]
Functions [2]: [partial_min(calculationDateTime#57398), partial_sum(quantity#57407)]
Aggregate Attributes [2]: [min#59839, sum#59840]
Results [4]: [product#57455, plant#57454, min#59841, sum#59842]
(2407) Exchange
Input [4]: [product#57455, plant#57454, min#59841, sum#59842]
Arguments: hashpartitioning(product#57455, plant#57454, 10), ENSURE_REQUIREMENTS, [plan_id=228416]
(2408) HashAggregate
Input [4]: [product#57455, plant#57454, min#59841, sum#59842]
Keys [2]: [product#57455, plant#57454]
Functions [2]: [min(calculationDateTime#57398), sum(quantity#57407)]
Aggregate Attributes [2]: [min(calculationDateTime#57398)#50899, sum(quantity#57407)#50898]
Results [4]: [product#57455, plant#57454, min(calculationDateTime#57398)#50899 AS minCalculationDateTime#57595, round(sum(quantity#57407)#50898, 0) AS roundedQuantitySum#57596]
(2409) Sort
Input [4]: [product#57455, plant#57454, minCalculationDateTime#57595, roundedQuantitySum#57596]
Arguments: [product#57455 ASC NULLS FIRST, plant#57454 ASC NULLS FIRST], false, 0
(2410) SortMergeJoin
Left keys [2]: [product#57275, plant#57276]
Right keys [2]: [product#57455, plant#57454]
Join type: LeftOuter
Join condition: None
(2411) Project
Output [8]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57318, CASE WHEN isnotnull(minCalculationDateTime#57595) THEN minCalculationDateTime#57595 ELSE orderDateTime#57277 END AS stockDatetime#57597, CASE WHEN isnotnull(roundedQuantitySum#57596) THEN array(roundedQuantitySum#57596) ELSE [0.0] END AS stockBatchQuantities#57598]
Input [10]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57318, product#57455, plant#57454, minCalculationDateTime#57595, roundedQuantitySum#57596]
(2412) Scan parquet
Output [9]: [product#57600, plant#57601, demandChannel#57602, demandStream#57603, considerVariance#57604, demandTimeBuckets#57605, demandPointInTimeStart#57606, demandPointInTimeEnd#57607, demandPointInTime#57608]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000006/0_1_10000000006]
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#57600, plant#57601, demandChannel#57602, demandStream#57603, considerVariance#57604, demandTimeBuckets#57605, demandPointInTimeStart#57606, demandPointInTimeEnd#57607, demandPointInTime#57608]
Condition : (isnotnull(product#57600) AND isnotnull(plant#57601))
(2414) BroadcastExchange
Input [9]: [product#57600, plant#57601, demandChannel#57602, demandStream#57603, considerVariance#57604, demandTimeBuckets#57605, demandPointInTimeStart#57606, demandPointInTimeEnd#57607, demandPointInTime#57608]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=228425]
(2415) BroadcastHashJoin
Left keys [2]: [product#57275, plant#57276]
Right keys [2]: [product#57600, plant#57601]
Join type: LeftOuter
Join condition: None
(2416) Project
Output [9]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57318, stockDatetime#57597, stockBatchQuantities#57598, CASE WHEN isnotnull(product#57600) THEN struct(demandChannel, demandChannel#57602, demandStream, demandStream#57603, considerVariance, considerVariance#57604, demandTimeBuckets, demandTimeBuckets#57605, demandPointInTimeStart, demandPointInTimeStart#57606, demandPointInTimeEnd, demandPointInTimeEnd#57607, demandPointInTime, demandPointInTime#57608) END AS rawDemands#57609]
Input [17]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57318, stockDatetime#57597, stockBatchQuantities#57598, product#57600, plant#57601, demandChannel#57602, demandStream#57603, considerVariance#57604, demandTimeBuckets#57605, demandPointInTimeStart#57606, demandPointInTimeEnd#57607, demandPointInTime#57608]
(2417) ObjectHashAggregate
Input [9]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57318, stockDatetime#57597, stockBatchQuantities#57598, rawDemands#57609]
Keys [9]: [product#57275, plant#57276, orderDateTime#57277, knownfloatingpointnormalized(if (isnull(productPlant#57287)) null else named_struct(systemId, productPlant#57287.systemId, internalUUID, productPlant#57287.internalUUID, plant, productPlant#57287.plant, product, productPlant#57287.product, blockedForReplenishmentStartingFrom, productPlant#57287.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#57287.productionAspect)) null else named_struct(productMovementPlants, productPlant#57287.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#57287.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#57287.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#57287.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#57287.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#57287.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#57287.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#57287.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#57287.salesPlant, listing, productPlant#57287.listing)) AS productPlant#57287, timezonecode#57301, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#57318)) AS outboundUnit#57318, stockDatetime#57597, knownfloatingpointnormalized(transform(stockBatchQuantities#57598, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#59836)), lambda arg#59836, false))) AS stockBatchQuantities#57598, [7226582400000000] AS [7226582400000000]#59835]
Functions [1]: [partial_collect_list(rawDemands#57609, 0, 0)]
Aggregate Attributes [1]: [buf#59837]
Results [10]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57318, stockDatetime#57597, stockBatchQuantities#57598, [7226582400000000]#59835, buf#59838]
(2418) ObjectHashAggregate
Input [10]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57318, stockDatetime#57597, stockBatchQuantities#57598, [7226582400000000]#59835, buf#59838]
Keys [9]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57318, stockDatetime#57597, stockBatchQuantities#57598, [7226582400000000]#59835]
Functions [1]: [collect_list(rawDemands#57609, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#57609, 0, 0)#50991]
Results [10]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57318, stockDatetime#57597, stockBatchQuantities#57598, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#57599, collect_list(rawDemands#57609, 0, 0)#50991 AS rawDemands#57610]
(2419) DeserializeToObject
Input [10]: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57318, stockDatetime#57597, stockBatchQuantities#57598, stockBatchShelfLifeEndDatetimes#57599, rawDemands#57610]
Arguments: createexternalrow(invoke(product#57275.toString()), invoke(plant#57276.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#57277)), if (isnull(productPlant#57287)) null else createexternalrow(invoke(productPlant#57287.systemId.toString()), invoke(productPlant#57287.internalUUID.toString()), if (isnull(productPlant#57287.plant)) null else createexternalrow(invoke(productPlant#57287.plant.internalRefUUID.toString()), invoke(productPlant#57287.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#57287.product)) null else createexternalrow(invoke(productPlant#57287.product.internalRefUUID.toString()), invoke(productPlant#57287.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#57287.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#57287.productionAspect)) null else createexternalrow(if (isnull(productPlant#57287.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#57287.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#57287.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#57287.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#57287.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#57287.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#57287.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#57287.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#57287.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#57287.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#57287.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#57287.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#57287.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#57287.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#57287.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#57287.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#57287.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#57287.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#57287.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#57287.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#57287.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#57287.salesPlant)) null else createexternalrow(if (isnull(productPlant#57287.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#57287.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#57287.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#57287.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#57301.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#57318)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#57597)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#57598, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#57599, 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#57610, 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#51012: org.apache.spark.sql.Row
(2420) MapElements
Input [1]: [obj#51012]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@22994051, obj#51017: org.apache.spark.sql.Row
(2421) SerializeFromObject
Input [1]: [obj#51017]
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#57611, 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#57612]
(2422) Exchange
Input [2]: [product#57611, plant#57612]
Arguments: hashpartitioning(coalesce(plant#57612, ), isnull(plant#57612), coalesce(product#57611, ), isnull(product#57611), 10), ENSURE_REQUIREMENTS, [plan_id=228436]
(2423) Sort
Input [2]: [product#57611, plant#57612]
Arguments: [coalesce(plant#57612, ) ASC NULLS FIRST, isnull(plant#57612) ASC NULLS FIRST, coalesce(product#57611, ) ASC NULLS FIRST, isnull(product#57611) ASC NULLS FIRST], false, 0
(2424) SortMergeJoin
Left keys [4]: [coalesce(plant#56951, ), isnull(plant#56951), coalesce(product#56950, ), isnull(product#56950)]
Right keys [4]: [coalesce(plant#57612, ), isnull(plant#57612), coalesce(product#57611, ), isnull(product#57611)]
Join type: LeftOuter
Join condition: None
(2425) Project
Output [3]: [product#56950, plant#56951, stockDatetime#57272]
Input [5]: [product#56950, plant#56951, stockDatetime#57272, product#57611, plant#57612]
(2426) Scan parquet
Output [6]: [internalUUID#57616, id#57617, supplier#57619, isMarkedForDeletion#57622, items#57623, systemId#57615]
Batched: 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#57616, id#57617, supplier#57619, isMarkedForDeletion#57622, items#57623, systemId#57615]
Condition : (((isnotnull(isMarkedForDeletion#57622) AND NOT isMarkedForDeletion#57622) AND (size(items#57623, true) > 0)) AND isnotnull(items#57623))
(2428) Project
Output [4]: [internalUUID#57616, id#57617, supplier#57619, items#57623]
Input [6]: [internalUUID#57616, id#57617, supplier#57619, isMarkedForDeletion#57622, items#57623, systemId#57615]
(2429) Exchange
Input [4]: [internalUUID#57616, id#57617, supplier#57619, items#57623]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=226442]
(2430) Generate
Input [4]: [internalUUID#57616, id#57617, supplier#57619, items#57623]
Arguments: explode(items#57623), [internalUUID#57616, id#57617, supplier#57619], false, [item#57624]
(2431) Filter
Input [4]: [internalUUID#57616, id#57617, supplier#57619, item#57624]
Condition : ((((isnotnull(item#57624.deletionIndicator) AND isnotnull(item#57624.completeIndicator)) AND isnotnull(item#57624.returnIndicator)) AND ((NOT item#57624.deletionIndicator AND NOT item#57624.completeIndicator) AND NOT item#57624.returnIndicator)) AND isnotnull(item#57624.product.internalRefUUID))
(2432) Project
Output [9]: [id#57617, internalUUID#57616, supplier#57619.internalRefUUID AS supplierUuid#57625, item#57624.product.internalRefUUID AS product#57627, item#57624.quantityUnit.code AS quantityUom#57629, item#57624.quantityUnit.internalRefUUID AS quantityUomUuid#57630, item#57624.quantityNumerator AS quantityNumerator#57631, item#57624.quantityDenominator AS quantityDenominator#57632, item#57624.scheduleLines AS scheduleLines#57633]
Input [4]: [internalUUID#57616, id#57617, supplier#57619, item#57624]
(2433) BroadcastExchange
Input [9]: [id#57617, internalUUID#57616, supplierUuid#57625, product#57627, quantityUom#57629, quantityUomUuid#57630, quantityNumerator#57631, quantityDenominator#57632, scheduleLines#57633]
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=228442]
(2434) BroadcastHashJoin
Left keys [4]: [coalesce(product#56950, ), isnull(product#56950), coalesce(plant#56951, ), isnull(plant#56951)]
Right keys [4]: [coalesce(product#57627, ), isnull(product#57627), coalesce(supplierUuid#57625, ), isnull(supplierUuid#57625)]
Join type: Inner
Join condition: None
(2435) Project
Output [3]: [product#57627, plant#56951, filter(transform(filter(transform(scheduleLines#57633, lambdafunction(struct(openQty, (greatest((lambda x_26#53747.quantity - coalesce(lambda x_26#53747.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_26#53747.productAvailabilityDateTime, lambda x_26#53747.deliveryAt)), lambda x_26#53747, false)), lambdafunction((lambda x_27#53748.availabilityDatetime < stockDatetime#57272), lambda x_27#53748, false)), lambdafunction(struct(documentId, id#57617, documentUuid, internalUUID#57616, openQty, lambda x_28#53749.openQty, openQtyInBaseUnit, ((lambda x_28#53749.openQty * quantityNumerator#57631) / quantityDenominator#57632), qtyUom, quantityUom#57629, qtyUomUuid, quantityUomUuid#57630, availabilityDatetime, lambda x_28#53749.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_28#53749, false)), lambdafunction(NOT (lambda x_29#53750.openQty = 0.0), lambda x_29#53750, false)) AS openGoodsMovements#57635]
Input [12]: [product#56950, plant#56951, stockDatetime#57272, id#57617, internalUUID#57616, supplierUuid#57625, product#57627, quantityUom#57629, quantityUomUuid#57630, quantityNumerator#57631, quantityDenominator#57632, scheduleLines#57633]
(2436) ObjectHashAggregate
Input [3]: [product#57627, plant#56951, openGoodsMovements#57635]
Keys [2]: [product#57627, plant#56951]
Functions [1]: [partial_collect_list(openGoodsMovements#57635, 0, 0)]
Aggregate Attributes [1]: [buf#59817]
Results [3]: [product#57627, plant#56951, buf#59818]
(2437) Exchange
Input [3]: [product#57627, plant#56951, buf#59818]
Arguments: hashpartitioning(product#57627, plant#56951, 10), ENSURE_REQUIREMENTS, [plan_id=228447]
(2438) ObjectHashAggregate
Input [3]: [product#57627, plant#56951, buf#59818]
Keys [2]: [product#57627, plant#56951]
Functions [1]: [collect_list(openGoodsMovements#57635, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#57635, 0, 0)#53766]
Results [3]: [product#57627, plant#56951, flatten(collect_list(openGoodsMovements#57635, 0, 0)#53766) AS openGoodsMovements#57636]
(2439) Filter
Input [3]: [product#57627, plant#56951, openGoodsMovements#57636]
Condition : (size(openGoodsMovements#57636, false) > 0)
(2440) Union
(2441) ObjectHashAggregate
Input [3]: [product#56938, plant#56937, openGoodsMovements#56949]
Keys [2]: [product#56938, plant#56937]
Functions [1]: [partial_collect_list(openGoodsMovements#56949, 0, 0)]
Aggregate Attributes [1]: [buf#59815]
Results [3]: [product#56938, plant#56937, buf#59816]
(2442) Exchange
Input [3]: [product#56938, plant#56937, buf#59816]
Arguments: hashpartitioning(product#56938, plant#56937, 10), ENSURE_REQUIREMENTS, [plan_id=228453]
(2443) ObjectHashAggregate
Input [3]: [product#56938, plant#56937, buf#59816]
Keys [2]: [product#56938, plant#56937]
Functions [1]: [collect_list(openGoodsMovements#56949, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#56949, 0, 0)#54506]
Results [3]: [product#56938, plant#56937, flatten(collect_list(openGoodsMovements#56949, 0, 0)#54506) AS openGoodsMovements#57637]
(2444) Project
Output [5]: [product#56938, plant#56937, openGoodsMovements#57637.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#58276, openGoodsMovements#57637.availabilityDatetime AS _extract_availabilityDatetime#58277, openGoodsMovements#57637.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#58278]
Input [3]: [product#56938, plant#56937, openGoodsMovements#57637]
(2445) Sort
Input [5]: [product#56938, plant#56937, _extract_openQtyInBaseUnit#58276, _extract_availabilityDatetime#58277, _extract_shelfLifeEndDatetime#58278]
Arguments: [product#56938 ASC NULLS FIRST, plant#56937 ASC NULLS FIRST], false, 0
(2446) SortMergeJoin
Left keys [2]: [product#55523, plant#55524]
Right keys [2]: [product#56938, plant#56937]
Join type: LeftOuter
Join condition: None
(2447) Project
Output [16]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#55847, dayBucketDemands#56186, pointInTimeDemands#56187, coalesce(_extract_openQtyInBaseUnit#58276, []) AS openGoodsMovementQuantities#57638, coalesce(_extract_availabilityDatetime#58277, []) AS openGoodsMovementAvailabilityDatetimes#57639, coalesce(_extract_shelfLifeEndDatetime#58278, []) AS openGoodsMovementShelfLifeEndDatetimes#57640, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#57641, array_sort(filter(CASE WHEN isnotnull(productPlant#55535.listing) THEN productPlant#55535.listing ELSE [] END, lambdafunction(lambda listing#55467.isListed, lambda listing#55467, false)), lambdafunction(if ((isnull(lambda left#55469) AND isnull(lambda right#55470))) 0 else if (isnull(lambda left#55469)) 1 else if (isnull(lambda right#55470)) -1 else if ((lambda left#55469 < lambda right#55470)) -1 else if ((lambda left#55469 > lambda right#55470)) 1 else 0, lambda left#55469, lambda right#55470, false), false) AS listing#55468]
Input [15]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, dayBucketDemands#56186, pointInTimeDemands#56187, product#56938, plant#56937, _extract_openQtyInBaseUnit#58276, _extract_availabilityDatetime#58277, _extract_shelfLifeEndDatetime#58278]
(2448) DeserializeToObject
Input [16]: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, stockBatchShelfLifeEndDatetimes#55847, dayBucketDemands#56186, pointInTimeDemands#56187, openGoodsMovementQuantities#57638, openGoodsMovementAvailabilityDatetimes#57639, openGoodsMovementShelfLifeEndDatetimes#57640, configuration#57641, listing#55468]
Arguments: createexternalrow(invoke(product#55523.toString()), invoke(plant#55524.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#55525)), if (isnull(productPlant#55535)) null else createexternalrow(invoke(productPlant#55535.systemId.toString()), invoke(productPlant#55535.internalUUID.toString()), if (isnull(productPlant#55535.plant)) null else createexternalrow(invoke(productPlant#55535.plant.internalRefUUID.toString()), invoke(productPlant#55535.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#55535.product)) null else createexternalrow(invoke(productPlant#55535.product.internalRefUUID.toString()), invoke(productPlant#55535.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#55535.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#55535.productionAspect)) null else createexternalrow(if (isnull(productPlant#55535.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#55535.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#55535.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#55535.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#55535.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#55535.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#55535.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#55535.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#55535.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#55535.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#55535.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#55535.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#55535.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#55535.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#55535.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#55535.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#55535.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#55535.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#55535.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#55535.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#55535.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#55535.salesPlant)) null else createexternalrow(if (isnull(productPlant#55535.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#55535.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#55535.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#55535.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#55549.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#55566)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#55845)), mapobjects(lambdavariable(MapObject, DoubleType, true, -22), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -22))), stockBatchQuantities#55846, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -23), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -23))), stockBatchShelfLifeEndDatetimes#55847, 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#56186, 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#56187, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -34), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -34))), openGoodsMovementQuantities#57638, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, -35), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, true, -35))), openGoodsMovementAvailabilityDatetimes#57639, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -36), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -36))), openGoodsMovementShelfLifeEndDatetimes#57640, 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#57641, 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#55468, 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#55503: org.apache.spark.sql.Row
(2449) MapElements
Input [1]: [obj#55503]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.ListingSnapshotEnhancementImpl$$Lambda/0x0000000801f6de40@134cd86f, obj#55510: org.apache.spark.sql.Row
(2450) SerializeFromObject
Input [1]: [obj#55510]
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#55517, 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#55518, 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#55519, 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#55520, 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#55521, 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#55522]
(2451) Filter
Input [6]: [product#55517, plant#55518, timeDependentSettingsName#55519, timeDependentSettingsStartDatetime#55520, timeDependentSettingsEndDatetime#55521, timeDependentSettingsValue#55522]
Condition : (isnotnull(product#55517) AND isnotnull(plant#55518))
(2452) Exchange
Input [6]: [product#55517, plant#55518, timeDependentSettingsName#55519, timeDependentSettingsStartDatetime#55520, timeDependentSettingsEndDatetime#55521, timeDependentSettingsValue#55522]
Arguments: hashpartitioning(product#55517, plant#55518, 10), ENSURE_REQUIREMENTS, [plan_id=228469]
(2453) Sort
Input [6]: [product#55517, plant#55518, timeDependentSettingsName#55519, timeDependentSettingsStartDatetime#55520, timeDependentSettingsEndDatetime#55521, timeDependentSettingsValue#55522]
Arguments: [product#55517 ASC NULLS FIRST, plant#55518 ASC NULLS FIRST], false, 0
(2454) SortMergeJoin
Left keys [2]: [product#50545, plant#50546]
Right keys [2]: [product#55517, plant#55518]
Join type: LeftOuter
Join condition: None
(2455) Project
Output [16]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#50951, dayBucketDemands#51024, pointInTimeDemands#51025, openGoodsMovementQuantities#55221, openGoodsMovementAvailabilityDatetimes#55222, openGoodsMovementShelfLifeEndDatetimes#55223, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#55324, CASE WHEN isnotnull(timeDependentSettingsName#55519) THEN timeDependentSettingsName#55519 ELSE [] END AS timeDependentSettingsName#57796, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#55520) THEN timeDependentSettingsStartDatetime#55520 ELSE [] END AS timeDependentSettingsStartDatetime#57797, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#55521) THEN timeDependentSettingsEndDatetime#55521 ELSE [] END AS timeDependentSettingsEndDatetime#57798, CASE WHEN isnotnull(timeDependentSettingsValue#55522) THEN timeDependentSettingsValue#55522 ELSE [] END AS timeDependentSettingsValue#57799]
Input [16]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, dayBucketDemands#51024, pointInTimeDemands#51025, openGoodsMovementQuantities#55221, openGoodsMovementAvailabilityDatetimes#55222, openGoodsMovementShelfLifeEndDatetimes#55223, product#55517, plant#55518, timeDependentSettingsName#55519, timeDependentSettingsStartDatetime#55520, timeDependentSettingsEndDatetime#55521, timeDependentSettingsValue#55522]
(2456) AdaptiveSparkPlan
Output [16]: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, stockBatchShelfLifeEndDatetimes#50951, dayBucketDemands#51024, pointInTimeDemands#51025, openGoodsMovementQuantities#55221, openGoodsMovementAvailabilityDatetimes#55222, openGoodsMovementShelfLifeEndDatetimes#55223, configuration#55324, timeDependentSettingsName#57796, timeDependentSettingsStartDatetime#57797, timeDependentSettingsEndDatetime#57798, timeDependentSettingsValue#57799]
Arguments: isFinalPlan=false