== Physical Plan ==
AdaptiveSparkPlan (2000)
+- == Current Plan ==
ResultQueryStage (1092)
+- * Project (1091)
+- * BroadcastHashJoin LeftOuter BuildRight (1090)
:- AQEShuffleRead (244)
: +- ShuffleQueryStage (243), Statistics(sizeInBytes=326.9 KiB, rowCount=980)
: +- Exchange (242)
: +- * Project (241)
: +- * BroadcastHashJoin LeftOuter BuildRight (240)
: :- AQEShuffleRead (195)
: : +- ShuffleQueryStage (194), Statistics(sizeInBytes=137.8 KiB, rowCount=980)
: : +- Exchange (193)
: : +- * Project (192)
: : +- * BroadcastHashJoin LeftOuter BuildRight (191)
: : :- * Project (37)
: : : +- * Project (36)
: : : +- * Generate (35)
: : : +- * Generate (34)
: : : +- * Project (33)
: : : +- Project (32)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (31)
: : : :- * Project (22)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (21)
: : : : :- * BroadcastHashJoin LeftOuter BuildRight (13)
: : : : : :- ShuffleQueryStage (4), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : +- Exchange (3)
: : : : : : +- * ColumnarToRow (2)
: : : : : : +- Scan parquet (1)
: : : : : +- BroadcastQueryStage (12), Statistics(sizeInBytes=4.1 MiB, rowCount=2.75E+3)
: : : : : +- BroadcastExchange (11)
: : : : : +- * Project (10)
: : : : : +- ShuffleQueryStage (9), Statistics(sizeInBytes=2.0 MiB, rowCount=2.75E+3)
: : : : : +- Exchange (8)
: : : : : +- * Project (7)
: : : : : +- * ColumnarToRow (6)
: : : : : +- Scan parquet (5)
: : : : +- BroadcastQueryStage (20), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : +- BroadcastExchange (19)
: : : : +- ShuffleQueryStage (18), Statistics(sizeInBytes=2.9 KiB, rowCount=62)
: : : : +- Exchange (17)
: : : : +- * Project (16)
: : : : +- * ColumnarToRow (15)
: : : : +- Scan parquet (14)
: : : +- BroadcastQueryStage (30), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : +- BroadcastExchange (29)
: : : +- ShuffleQueryStage (28), Statistics(sizeInBytes=92.7 KiB, rowCount=159)
: : : +- Exchange (27)
: : : +- * Project (26)
: : : +- * Filter (25)
: : : +- * ColumnarToRow (24)
: : : +- Scan parquet (23)
: : +- BroadcastQueryStage (190), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : +- BroadcastExchange (189)
: : +- * HashAggregate (188)
: : +- AQEShuffleRead (187)
: : +- ShuffleQueryStage (186), Statistics(sizeInBytes=30.0 KiB, rowCount=295)
: : +- Exchange (185)
: : +- * HashAggregate (184)
: : +- * Project (183)
: : +- * BroadcastHashJoin Inner BuildLeft (182)
: : :- BroadcastQueryStage (133), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (132)
: : : +- AQEShuffleRead (131)
: : : +- ShuffleQueryStage (130), Statistics(sizeInBytes=34.6 KiB, rowCount=295)
: : : +- Exchange (129)
: : : +- * Project (128)
: : : +- * BroadcastHashJoin Inner BuildLeft (127)
: : : :- BroadcastQueryStage (105), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : +- BroadcastExchange (104)
: : : : +- AQEShuffleRead (103)
: : : : +- ShuffleQueryStage (102), Statistics(sizeInBytes=46.2 KiB, rowCount=394)
: : : : +- Exchange (101)
: : : : +- * Project (100)
: : : : +- * Filter (99)
: : : : +- * Generate (98)
: : : : +- * Filter (97)
: : : : +- ObjectHashAggregate (96)
: : : : +- ObjectHashAggregate (95)
: : : : +- Generate (94)
: : : : +- * BroadcastHashJoin Inner BuildLeft (93)
: : : : :- BroadcastQueryStage (45), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : +- BroadcastExchange (44)
: : : : : +- ShuffleQueryStage (43), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : : +- Exchange (42)
: : : : : +- * Project (41)
: : : : : +- * Filter (40)
: : : : : +- * ColumnarToRow (39)
: : : : : +- Scan parquet (38)
: : : : +- * Project (92)
: : : : +- * BroadcastHashJoin Inner BuildLeft (91)
: : : : :- BroadcastQueryStage (58), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : +- BroadcastExchange (57)
: : : : : +- * Project (56)
: : : : : +- * Generate (55)
: : : : : +- * Project (54)
: : : : : +- * Filter (53)
: : : : : +- * Generate (52)
: : : : : +- ShuffleQueryStage (51), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : : : : +- Exchange (50)
: : : : : +- * Project (49)
: : : : : +- * Filter (48)
: : : : : +- * ColumnarToRow (47)
: : : : : +- Scan parquet (46)
: : : : +- * HashAggregate (90)
: : : : +- AQEShuffleRead (89)
: : : : +- ShuffleQueryStage (88), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: : : : +- Exchange (87)
: : : : +- * HashAggregate (86)
: : : : +- * Project (85)
: : : : +- * Generate (84)
: : : : +- * Project (83)
: : : : +- * Generate (82)
: : : : +- Project (81)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (80)
: : : : :- * Project (77)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (76)
: : : : : :- * Project (73)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (72)
: : : : : : :- ShuffleQueryStage (63), Statistics(sizeInBytes=84.2 KiB, rowCount=980)
: : : : : : : +- Exchange (62)
: : : : : : : +- * Filter (61)
: : : : : : : +- * ColumnarToRow (60)
: : : : : : : +- Scan parquet (59)
: : : : : : +- BroadcastQueryStage (71), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (70)
: : : : : : +- * Project (69)
: : : : : : +- ShuffleQueryStage (68), Statistics(sizeInBytes=339.5 KiB, rowCount=2.75E+3)
: : : : : : +- Exchange (67)
: : : : : : +- * Project (66)
: : : : : : +- * ColumnarToRow (65)
: : : : : : +- Scan parquet (64)
: : : : : +- BroadcastQueryStage (75), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (74)
: : : : +- BroadcastQueryStage (79), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (78)
: : : +- * Project (126)
: : : +- * Generate (125)
: : : +- * Project (124)
: : : +- * Generate (123)
: : : +- Project (122)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (121)
: : : :- * Project (118)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (117)
: : : : :- * Project (114)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (113)
: : : : : :- ShuffleQueryStage (110), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : +- Exchange (109)
: : : : : : +- * Filter (108)
: : : : : : +- * ColumnarToRow (107)
: : : : : : +- Scan parquet (106)
: : : : : +- BroadcastQueryStage (112), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : +- ReusedExchange (111)
: : : : +- BroadcastQueryStage (116), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : +- ReusedExchange (115)
: : : +- BroadcastQueryStage (120), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : +- ReusedExchange (119)
: : +- AQEShuffleRead (181)
: : +- ShuffleQueryStage (180), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : +- Exchange (179)
: : +- * HashAggregate (178)
: : +- * HashAggregate (177)
: : +- * Project (176)
: : +- * BroadcastHashJoin Inner BuildLeft (175)
: : :- BroadcastQueryStage (156), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : +- BroadcastExchange (155)
: : : +- AQEShuffleRead (154)
: : : +- ShuffleQueryStage (153), Statistics(sizeInBytes=43.1 KiB, rowCount=394)
: : : +- Exchange (152)
: : : +- * Project (151)
: : : +- * Filter (150)
: : : +- * Generate (149)
: : : +- * Filter (148)
: : : +- ObjectHashAggregate (147)
: : : +- ObjectHashAggregate (146)
: : : +- Generate (145)
: : : +- * BroadcastHashJoin Inner BuildLeft (144)
: : : :- BroadcastQueryStage (135), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : +- ReusedExchange (134)
: : : +- * Project (143)
: : : +- * BroadcastHashJoin Inner BuildLeft (142)
: : : :- BroadcastQueryStage (137), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : +- ReusedExchange (136)
: : : +- * HashAggregate (141)
: : : +- AQEShuffleRead (140)
: : : +- ShuffleQueryStage (139), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: : : +- ReusedExchange (138)
: : +- * Project (174)
: : +- * Generate (173)
: : +- * Project (172)
: : +- * Generate (171)
: : +- Project (170)
: : +- * BroadcastHashJoin LeftOuter BuildRight (169)
: : :- * Project (166)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (165)
: : : :- * Project (162)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (161)
: : : : :- ShuffleQueryStage (158), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : +- ReusedExchange (157)
: : : : +- BroadcastQueryStage (160), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : +- ReusedExchange (159)
: : : +- BroadcastQueryStage (164), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : +- ReusedExchange (163)
: : +- BroadcastQueryStage (168), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : +- ReusedExchange (167)
: +- BroadcastQueryStage (239), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: +- BroadcastExchange (238)
: +- AQEShuffleRead (237)
: +- ShuffleQueryStage (236), Statistics(sizeInBytes=273.3 KiB, rowCount=980)
: +- Exchange (235)
: +- * SerializeFromObject (234)
: +- * MapElements (233)
: +- * DeserializeToObject (232)
: +- ObjectHashAggregate (231)
: +- ObjectHashAggregate (230)
: +- * Project (229)
: +- * BroadcastHashJoin LeftOuter BuildRight (228)
: :- * Project (222)
: : +- * BroadcastHashJoin LeftOuter BuildRight (221)
: : :- * Project (218)
: : : +- * Project (217)
: : : +- * Generate (216)
: : : +- * Generate (215)
: : : +- * Project (214)
: : : +- Project (213)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (212)
: : : :- * Project (209)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (208)
: : : : :- * BroadcastHashJoin LeftOuter BuildRight (200)
: : : : : :- ShuffleQueryStage (197), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : +- ReusedExchange (196)
: : : : : +- BroadcastQueryStage (199), Statistics(sizeInBytes=4.1 MiB, rowCount=2.75E+3)
: : : : : +- ReusedExchange (198)
: : : : +- BroadcastQueryStage (207), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : +- BroadcastExchange (206)
: : : : +- ShuffleQueryStage (205), Statistics(sizeInBytes=4.4 KiB, rowCount=62)
: : : : +- Exchange (204)
: : : : +- * Project (203)
: : : : +- * ColumnarToRow (202)
: : : : +- Scan parquet (201)
: : : +- BroadcastQueryStage (211), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : +- ReusedExchange (210)
: : +- BroadcastQueryStage (220), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : +- ReusedExchange (219)
: +- BroadcastQueryStage (227), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: +- BroadcastExchange (226)
: +- * Filter (225)
: +- * ColumnarToRow (224)
: +- Scan parquet (223)
+- BroadcastQueryStage (1089), Statistics(sizeInBytes=2.0 MiB, rowCount=41)
+- BroadcastExchange (1088)
+- * Project (1087)
+- ObjectHashAggregate (1086)
+- ObjectHashAggregate (1085)
+- * Filter (1084)
+- TableCacheQueryStage (1083), Statistics(sizeInBytes=10.6 KiB, rowCount=41)
+- InMemoryTableScan (245)
+- InMemoryRelation (246)
+- AdaptiveSparkPlan (1082)
+- == Final Plan ==
ResultQueryStage (1072)
+- * Filter (1071)
+- ObjectHashAggregate (1070)
+- ShuffleQueryStage (1069), Statistics(sizeInBytes=13.0 KiB, rowCount=41)
+- Exchange (1068)
+- ObjectHashAggregate (1067)
+- Project (1066)
+- Window (1065)
+- * Sort (1064)
+- AQEShuffleRead (1063)
+- ShuffleQueryStage (1062), Statistics(sizeInBytes=17.7 KiB, rowCount=41)
+- Exchange (1061)
+- * Project (1060)
+- TableCacheQueryStage (1059), Statistics(sizeInBytes=21.9 KiB, rowCount=41)
+- InMemoryTableScan (247)
+- InMemoryRelation (248)
+- AdaptiveSparkPlan (1058)
+- == Final Plan ==
ResultQueryStage (565)
+- Project (564)
+- * BroadcastHashJoin Inner BuildRight (563)
:- * Project (551)
: +- * BroadcastHashJoin Inner BuildLeft (550)
: :- BroadcastQueryStage (534), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (533)
: : +- AQEShuffleRead (532)
: : +- ShuffleQueryStage (531), Statistics(sizeInBytes=114.8 KiB, rowCount=980)
: : +- Exchange (530)
: : +- * Project (529)
: : +- * BroadcastHashJoin LeftOuter BuildRight (528)
: : :- AQEShuffleRead (422)
: : : +- ShuffleQueryStage (421), Statistics(sizeInBytes=114.8 KiB, rowCount=980)
: : : +- Exchange (420)
: : : +- * Project (419)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (418)
: : : :- * Project (286)
: : : : +- * Generate (285)
: : : : +- * Project (284)
: : : : +- * Generate (283)
: : : : +- Project (282)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (281)
: : : : :- * Project (272)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (271)
: : : : : :- * Project (263)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (262)
: : : : : : :- ShuffleQueryStage (253), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (252)
: : : : : : : +- * Filter (251)
: : : : : : : +- * ColumnarToRow (250)
: : : : : : : +- Scan parquet (249)
: : : : : : +- BroadcastQueryStage (261), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (260)
: : : : : : +- * Project (259)
: : : : : : +- ShuffleQueryStage (258), Statistics(sizeInBytes=339.5 KiB, rowCount=2.75E+3)
: : : : : : +- Exchange (257)
: : : : : : +- * Project (256)
: : : : : : +- * ColumnarToRow (255)
: : : : : : +- Scan parquet (254)
: : : : : +- BroadcastQueryStage (270), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- BroadcastExchange (269)
: : : : : +- ShuffleQueryStage (268), Statistics(sizeInBytes=4.4 KiB, rowCount=62)
: : : : : +- Exchange (267)
: : : : : +- * Project (266)
: : : : : +- * ColumnarToRow (265)
: : : : : +- Scan parquet (264)
: : : : +- BroadcastQueryStage (280), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- BroadcastExchange (279)
: : : : +- ShuffleQueryStage (278), Statistics(sizeInBytes=92.7 KiB, rowCount=159)
: : : : +- Exchange (277)
: : : : +- * Project (276)
: : : : +- * Filter (275)
: : : : +- * ColumnarToRow (274)
: : : : +- Scan parquet (273)
: : : +- BroadcastQueryStage (417), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (416)
: : : +- * HashAggregate (415)
: : : +- AQEShuffleRead (414)
: : : +- ShuffleQueryStage (413), Statistics(sizeInBytes=27.7 KiB, rowCount=295)
: : : +- Exchange (412)
: : : +- * HashAggregate (411)
: : : +- * Project (410)
: : : +- * BroadcastHashJoin Inner BuildLeft (409)
: : : :- BroadcastQueryStage (381), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : : +- BroadcastExchange (380)
: : : : +- AQEShuffleRead (379)
: : : : +- ShuffleQueryStage (378), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : : +- Exchange (377)
: : : : +- * Project (376)
: : : : +- * BroadcastHashJoin Inner BuildLeft (375)
: : : : :- BroadcastQueryStage (353), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : : +- BroadcastExchange (352)
: : : : : +- AQEShuffleRead (351)
: : : : : +- ShuffleQueryStage (350), Statistics(sizeInBytes=43.1 KiB, rowCount=394)
: : : : : +- Exchange (349)
: : : : : +- * Project (348)
: : : : : +- * Filter (347)
: : : : : +- * Generate (346)
: : : : : +- * Filter (345)
: : : : : +- ObjectHashAggregate (344)
: : : : : +- ObjectHashAggregate (343)
: : : : : +- Generate (342)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (341)
: : : : : :- BroadcastQueryStage (294), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- BroadcastExchange (293)
: : : : : : +- ShuffleQueryStage (292), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : : : +- Exchange (291)
: : : : : : +- * Project (290)
: : : : : : +- * Filter (289)
: : : : : : +- * ColumnarToRow (288)
: : : : : : +- Scan parquet (287)
: : : : : +- * Project (340)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (339)
: : : : : :- BroadcastQueryStage (307), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- BroadcastExchange (306)
: : : : : : +- * Project (305)
: : : : : : +- * Generate (304)
: : : : : : +- * Project (303)
: : : : : : +- * Filter (302)
: : : : : : +- * Generate (301)
: : : : : : +- ShuffleQueryStage (300), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : : : : : +- Exchange (299)
: : : : : : +- * Project (298)
: : : : : : +- * Filter (297)
: : : : : : +- * ColumnarToRow (296)
: : : : : : +- Scan parquet (295)
: : : : : +- * HashAggregate (338)
: : : : : +- AQEShuffleRead (337)
: : : : : +- ShuffleQueryStage (336), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: : : : : +- Exchange (335)
: : : : : +- * HashAggregate (334)
: : : : : +- * Project (333)
: : : : : +- * Generate (332)
: : : : : +- * Project (331)
: : : : : +- * Generate (330)
: : : : : +- Project (329)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (328)
: : : : : :- * Project (325)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (324)
: : : : : : :- * Project (316)
: : : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (315)
: : : : : : : :- ShuffleQueryStage (312), Statistics(sizeInBytes=84.2 KiB, rowCount=980)
: : : : : : : : +- Exchange (311)
: : : : : : : : +- * Filter (310)
: : : : : : : : +- * ColumnarToRow (309)
: : : : : : : : +- Scan parquet (308)
: : : : : : : +- BroadcastQueryStage (314), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : : +- ReusedExchange (313)
: : : : : : +- BroadcastQueryStage (323), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : : +- BroadcastExchange (322)
: : : : : : +- ShuffleQueryStage (321), Statistics(sizeInBytes=2.9 KiB, rowCount=62)
: : : : : : +- Exchange (320)
: : : : : : +- * Project (319)
: : : : : : +- * ColumnarToRow (318)
: : : : : : +- Scan parquet (317)
: : : : : +- BroadcastQueryStage (327), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : : +- ReusedExchange (326)
: : : : +- * Project (374)
: : : : +- * Generate (373)
: : : : +- * Project (372)
: : : : +- * Generate (371)
: : : : +- Project (370)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (369)
: : : : :- * Project (366)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (365)
: : : : : :- * Project (362)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (361)
: : : : : : :- ShuffleQueryStage (358), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (357)
: : : : : : : +- * Filter (356)
: : : : : : : +- * ColumnarToRow (355)
: : : : : : : +- Scan parquet (354)
: : : : : : +- BroadcastQueryStage (360), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- ReusedExchange (359)
: : : : : +- BroadcastQueryStage (364), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (363)
: : : : +- BroadcastQueryStage (368), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (367)
: : : +- AQEShuffleRead (408)
: : : +- ShuffleQueryStage (407), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : +- Exchange (406)
: : : +- * HashAggregate (405)
: : : +- * HashAggregate (404)
: : : +- * Project (403)
: : : +- * BroadcastHashJoin Inner BuildLeft (402)
: : : :- BroadcastQueryStage (383), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : +- ReusedExchange (382)
: : : +- * Project (401)
: : : +- * Generate (400)
: : : +- * Project (399)
: : : +- * Generate (398)
: : : +- Project (397)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (396)
: : : :- * Project (393)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (392)
: : : : :- * Project (389)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (388)
: : : : : :- ShuffleQueryStage (385), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : +- ReusedExchange (384)
: : : : : +- BroadcastQueryStage (387), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : +- ReusedExchange (386)
: : : : +- BroadcastQueryStage (391), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : +- ReusedExchange (390)
: : : +- BroadcastQueryStage (395), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : +- ReusedExchange (394)
: : +- BroadcastQueryStage (527), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (526)
: : +- AQEShuffleRead (525)
: : +- ShuffleQueryStage (524), Statistics(sizeInBytes=84.2 KiB, rowCount=980)
: : +- Exchange (523)
: : +- * SerializeFromObject (522)
: : +- * MapElements (521)
: : +- * DeserializeToObject (520)
: : +- ObjectHashAggregate (519)
: : +- ObjectHashAggregate (518)
: : +- * Project (517)
: : +- * BroadcastHashJoin LeftOuter BuildRight (516)
: : :- * Project (510)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (509)
: : : :- * Project (448)
: : : : +- * Project (447)
: : : : +- * Generate (446)
: : : : +- * Generate (445)
: : : : +- * Project (444)
: : : : +- Project (443)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (442)
: : : : :- * Project (439)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (438)
: : : : : :- * BroadcastHashJoin LeftOuter BuildRight (435)
: : : : : : :- ShuffleQueryStage (426), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (425)
: : : : : : : +- * ColumnarToRow (424)
: : : : : : : +- Scan parquet (423)
: : : : : : +- BroadcastQueryStage (434), Statistics(sizeInBytes=4.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (433)
: : : : : : +- * Project (432)
: : : : : : +- ShuffleQueryStage (431), Statistics(sizeInBytes=2.0 MiB, rowCount=2.75E+3)
: : : : : : +- Exchange (430)
: : : : : : +- * Project (429)
: : : : : : +- * ColumnarToRow (428)
: : : : : : +- Scan parquet (427)
: : : : : +- BroadcastQueryStage (437), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (436)
: : : : +- BroadcastQueryStage (441), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (440)
: : : +- BroadcastQueryStage (508), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (507)
: : : +- * HashAggregate (506)
: : : +- AQEShuffleRead (505)
: : : +- ShuffleQueryStage (504), Statistics(sizeInBytes=30.0 KiB, rowCount=295)
: : : +- Exchange (503)
: : : +- * HashAggregate (502)
: : : +- * Project (501)
: : : +- * BroadcastHashJoin Inner BuildRight (500)
: : : :- AQEShuffleRead (494)
: : : : +- ShuffleQueryStage (493), Statistics(sizeInBytes=34.6 KiB, rowCount=295)
: : : : +- Exchange (492)
: : : : +- * Project (491)
: : : : +- * BroadcastHashJoin Inner BuildLeft (490)
: : : : :- BroadcastQueryStage (471), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : : +- BroadcastExchange (470)
: : : : : +- AQEShuffleRead (469)
: : : : : +- ShuffleQueryStage (468), Statistics(sizeInBytes=46.2 KiB, rowCount=394)
: : : : : +- Exchange (467)
: : : : : +- * Project (466)
: : : : : +- * Filter (465)
: : : : : +- * Generate (464)
: : : : : +- * Filter (463)
: : : : : +- ObjectHashAggregate (462)
: : : : : +- ObjectHashAggregate (461)
: : : : : +- Generate (460)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (459)
: : : : : :- BroadcastQueryStage (450), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- ReusedExchange (449)
: : : : : +- * Project (458)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (457)
: : : : : :- BroadcastQueryStage (452), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- ReusedExchange (451)
: : : : : +- * HashAggregate (456)
: : : : : +- AQEShuffleRead (455)
: : : : : +- ShuffleQueryStage (454), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: : : : : +- ReusedExchange (453)
: : : : +- * Project (489)
: : : : +- * Generate (488)
: : : : +- * Project (487)
: : : : +- * Generate (486)
: : : : +- Project (485)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (484)
: : : : :- * Project (481)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (480)
: : : : : :- * Project (477)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (476)
: : : : : : :- ShuffleQueryStage (473), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- ReusedExchange (472)
: : : : : : +- BroadcastQueryStage (475), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- ReusedExchange (474)
: : : : : +- BroadcastQueryStage (479), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (478)
: : : : +- BroadcastQueryStage (483), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (482)
: : : +- BroadcastQueryStage (499), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (498)
: : : +- AQEShuffleRead (497)
: : : +- ShuffleQueryStage (496), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : +- ReusedExchange (495)
: : +- BroadcastQueryStage (515), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (514)
: : +- * Filter (513)
: : +- * ColumnarToRow (512)
: : +- Scan parquet (511)
: +- * Project (549)
: +- * BroadcastHashJoin Inner BuildLeft (548)
: :- BroadcastQueryStage (544), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : +- BroadcastExchange (543)
: : +- * Project (542)
: : +- * Filter (541)
: : +- * Generate (540)
: : +- * Project (539)
: : +- * Filter (538)
: : +- * Generate (537)
: : +- ShuffleQueryStage (536), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : +- ReusedExchange (535)
: +- * HashAggregate (547)
: +- ShuffleQueryStage (546), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: +- ReusedExchange (545)
+- BroadcastQueryStage (562), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
+- BroadcastExchange (561)
+- * Project (560)
+- * Filter (559)
+- * Generate (558)
+- ShuffleQueryStage (557), Statistics(sizeInBytes=29.9 KiB, rowCount=9)
+- Exchange (556)
+- * Project (555)
+- * Filter (554)
+- * ColumnarToRow (553)
+- Scan parquet (552)
+- == Initial Plan ==
Project (1057)
+- BroadcastHashJoin Inner BuildRight (1056)
:- Project (1048)
: +- SortMergeJoin Inner (1047)
: :- Sort (1002)
: : +- Exchange (1001)
: : +- Project (1000)
: : +- SortMergeJoin LeftOuter (999)
: : :- Sort (774)
: : : +- Exchange (773)
: : : +- Project (772)
: : : +- SortMergeJoin LeftOuter (771)
: : : :- Sort (589)
: : : : +- Project (588)
: : : : +- Generate (587)
: : : : +- Project (586)
: : : : +- Generate (585)
: : : : +- Project (584)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (583)
: : : : :- Project (578)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (577)
: : : : : :- Project (573)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (572)
: : : : : : :- Exchange (567)
: : : : : : : +- Filter (566)
: : : : : : : +- Scan parquet (249)
: : : : : : +- BroadcastExchange (571)
: : : : : : +- Project (570)
: : : : : : +- Exchange (569)
: : : : : : +- Project (568)
: : : : : : +- Scan parquet (254)
: : : : : +- BroadcastExchange (576)
: : : : : +- Exchange (575)
: : : : : +- Project (574)
: : : : : +- Scan parquet (264)
: : : : +- BroadcastExchange (582)
: : : : +- Exchange (581)
: : : : +- Project (580)
: : : : +- Filter (579)
: : : : +- Scan parquet (273)
: : : +- Sort (770)
: : : +- HashAggregate (769)
: : : +- Exchange (768)
: : : +- HashAggregate (767)
: : : +- Project (766)
: : : +- SortMergeJoin Inner (765)
: : : :- Sort (673)
: : : : +- Exchange (672)
: : : : +- Project (671)
: : : : +- SortMergeJoin Inner (670)
: : : : :- Sort (642)
: : : : : +- Exchange (641)
: : : : : +- Project (640)
: : : : : +- Filter (639)
: : : : : +- Generate (638)
: : : : : +- Filter (637)
: : : : : +- ObjectHashAggregate (636)
: : : : : +- ObjectHashAggregate (635)
: : : : : +- Generate (634)
: : : : : +- BroadcastHashJoin Inner BuildLeft (633)
: : : : : :- BroadcastExchange (593)
: : : : : : +- Exchange (592)
: : : : : : +- Project (591)
: : : : : : +- Filter (590)
: : : : : : +- Scan parquet (287)
: : : : : +- Project (632)
: : : : : +- BroadcastHashJoin Inner BuildLeft (631)
: : : : : :- BroadcastExchange (602)
: : : : : : +- Project (601)
: : : : : : +- Generate (600)
: : : : : : +- Project (599)
: : : : : : +- Filter (598)
: : : : : : +- Generate (597)
: : : : : : +- Exchange (596)
: : : : : : +- Project (595)
: : : : : : +- Filter (594)
: : : : : : +- Scan parquet (295)
: : : : : +- HashAggregate (630)
: : : : : +- Exchange (629)
: : : : : +- HashAggregate (628)
: : : : : +- Project (627)
: : : : : +- Generate (626)
: : : : : +- Project (625)
: : : : : +- Generate (624)
: : : : : +- Project (623)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (622)
: : : : : :- Project (616)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (615)
: : : : : : :- Project (611)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (610)
: : : : : : : :- Exchange (604)
: : : : : : : : +- Filter (603)
: : : : : : : : +- Scan parquet (308)
: : : : : : : +- BroadcastExchange (609)
: : : : : : : +- Project (608)
: : : : : : : +- Exchange (607)
: : : : : : : +- Project (606)
: : : : : : : +- Scan parquet (605)
: : : : : : +- BroadcastExchange (614)
: : : : : : +- Exchange (613)
: : : : : : +- Project (612)
: : : : : : +- Scan parquet (317)
: : : : : +- BroadcastExchange (621)
: : : : : +- Exchange (620)
: : : : : +- Project (619)
: : : : : +- Filter (618)
: : : : : +- Scan parquet (617)
: : : : +- Sort (669)
: : : : +- Project (668)
: : : : +- Generate (667)
: : : : +- Project (666)
: : : : +- Generate (665)
: : : : +- Project (664)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (663)
: : : : :- Project (657)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (656)
: : : : : :- Project (651)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (650)
: : : : : : :- Exchange (644)
: : : : : : : +- Filter (643)
: : : : : : : +- Scan parquet (354)
: : : : : : +- BroadcastExchange (649)
: : : : : : +- Project (648)
: : : : : : +- Exchange (647)
: : : : : : +- Project (646)
: : : : : : +- Scan parquet (645)
: : : : : +- BroadcastExchange (655)
: : : : : +- Exchange (654)
: : : : : +- Project (653)
: : : : : +- Scan parquet (652)
: : : : +- BroadcastExchange (662)
: : : : +- Exchange (661)
: : : : +- Project (660)
: : : : +- Filter (659)
: : : : +- Scan parquet (658)
: : : +- Sort (764)
: : : +- Exchange (763)
: : : +- HashAggregate (762)
: : : +- HashAggregate (761)
: : : +- Project (760)
: : : +- SortMergeJoin Inner (759)
: : : :- Sort (730)
: : : : +- Exchange (729)
: : : : +- Project (728)
: : : : +- Filter (727)
: : : : +- Generate (726)
: : : : +- Filter (725)
: : : : +- ObjectHashAggregate (724)
: : : : +- ObjectHashAggregate (723)
: : : : +- Generate (722)
: : : : +- BroadcastHashJoin Inner BuildLeft (721)
: : : : :- BroadcastExchange (678)
: : : : : +- Exchange (677)
: : : : : +- Project (676)
: : : : : +- Filter (675)
: : : : : +- Scan parquet (674)
: : : : +- Project (720)
: : : : +- BroadcastHashJoin Inner BuildLeft (719)
: : : : :- BroadcastExchange (688)
: : : : : +- Project (687)
: : : : : +- Generate (686)
: : : : : +- Project (685)
: : : : : +- Filter (684)
: : : : : +- Generate (683)
: : : : : +- Exchange (682)
: : : : : +- Project (681)
: : : : : +- Filter (680)
: : : : : +- Scan parquet (679)
: : : : +- HashAggregate (718)
: : : : +- Exchange (717)
: : : : +- HashAggregate (716)
: : : : +- Project (715)
: : : : +- Generate (714)
: : : : +- Project (713)
: : : : +- Generate (712)
: : : : +- Project (711)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (710)
: : : : :- Project (704)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (703)
: : : : : :- Project (698)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (697)
: : : : : : :- Exchange (691)
: : : : : : : +- Filter (690)
: : : : : : : +- Scan parquet (689)
: : : : : : +- BroadcastExchange (696)
: : : : : : +- Project (695)
: : : : : : +- Exchange (694)
: : : : : : +- Project (693)
: : : : : : +- Scan parquet (692)
: : : : : +- BroadcastExchange (702)
: : : : : +- Exchange (701)
: : : : : +- Project (700)
: : : : : +- Scan parquet (699)
: : : : +- BroadcastExchange (709)
: : : : +- Exchange (708)
: : : : +- Project (707)
: : : : +- Filter (706)
: : : : +- Scan parquet (705)
: : : +- Sort (758)
: : : +- Project (757)
: : : +- Generate (756)
: : : +- Project (755)
: : : +- Generate (754)
: : : +- Project (753)
: : : +- BroadcastHashJoin LeftOuter BuildRight (752)
: : : :- Project (746)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (745)
: : : : :- Project (740)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (739)
: : : : : :- Exchange (733)
: : : : : : +- Filter (732)
: : : : : : +- Scan parquet (731)
: : : : : +- BroadcastExchange (738)
: : : : : +- Project (737)
: : : : : +- Exchange (736)
: : : : : +- Project (735)
: : : : : +- Scan parquet (734)
: : : : +- BroadcastExchange (744)
: : : : +- Exchange (743)
: : : : +- Project (742)
: : : : +- Scan parquet (741)
: : : +- BroadcastExchange (751)
: : : +- Exchange (750)
: : : +- Project (749)
: : : +- Filter (748)
: : : +- Scan parquet (747)
: : +- Sort (998)
: : +- Exchange (997)
: : +- SerializeFromObject (996)
: : +- MapElements (995)
: : +- DeserializeToObject (994)
: : +- ObjectHashAggregate (993)
: : +- ObjectHashAggregate (992)
: : +- Project (991)
: : +- BroadcastHashJoin LeftOuter BuildRight (990)
: : :- Project (987)
: : : +- SortMergeJoin LeftOuter (986)
: : : :- Sort (799)
: : : : +- Project (798)
: : : : +- Project (797)
: : : : +- Generate (796)
: : : : +- Generate (795)
: : : : +- Project (794)
: : : : +- Project (793)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (792)
: : : : :- Project (786)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (785)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (780)
: : : : : : :- Exchange (775)
: : : : : : : +- Scan parquet (423)
: : : : : : +- BroadcastExchange (779)
: : : : : : +- Project (778)
: : : : : : +- Exchange (777)
: : : : : : +- Project (776)
: : : : : : +- Scan parquet (427)
: : : : : +- BroadcastExchange (784)
: : : : : +- Exchange (783)
: : : : : +- Project (782)
: : : : : +- Scan parquet (781)
: : : : +- BroadcastExchange (791)
: : : : +- Exchange (790)
: : : : +- Project (789)
: : : : +- Filter (788)
: : : : +- Scan parquet (787)
: : : +- Sort (985)
: : : +- HashAggregate (984)
: : : +- Exchange (983)
: : : +- HashAggregate (982)
: : : +- Project (981)
: : : +- SortMergeJoin Inner (980)
: : : :- Sort (888)
: : : : +- Exchange (887)
: : : : +- Project (886)
: : : : +- SortMergeJoin Inner (885)
: : : : :- Sort (856)
: : : : : +- Exchange (855)
: : : : : +- Project (854)
: : : : : +- Filter (853)
: : : : : +- Generate (852)
: : : : : +- Filter (851)
: : : : : +- ObjectHashAggregate (850)
: : : : : +- ObjectHashAggregate (849)
: : : : : +- Generate (848)
: : : : : +- BroadcastHashJoin Inner BuildLeft (847)
: : : : : :- BroadcastExchange (804)
: : : : : : +- Exchange (803)
: : : : : : +- Project (802)
: : : : : : +- Filter (801)
: : : : : : +- Scan parquet (800)
: : : : : +- Project (846)
: : : : : +- BroadcastHashJoin Inner BuildLeft (845)
: : : : : :- BroadcastExchange (814)
: : : : : : +- Project (813)
: : : : : : +- Generate (812)
: : : : : : +- Project (811)
: : : : : : +- Filter (810)
: : : : : : +- Generate (809)
: : : : : : +- Exchange (808)
: : : : : : +- Project (807)
: : : : : : +- Filter (806)
: : : : : : +- Scan parquet (805)
: : : : : +- HashAggregate (844)
: : : : : +- Exchange (843)
: : : : : +- HashAggregate (842)
: : : : : +- Project (841)
: : : : : +- Generate (840)
: : : : : +- Project (839)
: : : : : +- Generate (838)
: : : : : +- Project (837)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (836)
: : : : : :- Project (830)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (829)
: : : : : : :- Project (824)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (823)
: : : : : : : :- Exchange (817)
: : : : : : : : +- Filter (816)
: : : : : : : : +- Scan parquet (815)
: : : : : : : +- BroadcastExchange (822)
: : : : : : : +- Project (821)
: : : : : : : +- Exchange (820)
: : : : : : : +- Project (819)
: : : : : : : +- Scan parquet (818)
: : : : : : +- BroadcastExchange (828)
: : : : : : +- Exchange (827)
: : : : : : +- Project (826)
: : : : : : +- Scan parquet (825)
: : : : : +- BroadcastExchange (835)
: : : : : +- Exchange (834)
: : : : : +- Project (833)
: : : : : +- Filter (832)
: : : : : +- Scan parquet (831)
: : : : +- Sort (884)
: : : : +- Project (883)
: : : : +- Generate (882)
: : : : +- Project (881)
: : : : +- Generate (880)
: : : : +- Project (879)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (878)
: : : : :- Project (872)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (871)
: : : : : :- Project (866)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (865)
: : : : : : :- Exchange (859)
: : : : : : : +- Filter (858)
: : : : : : : +- Scan parquet (857)
: : : : : : +- BroadcastExchange (864)
: : : : : : +- Project (863)
: : : : : : +- Exchange (862)
: : : : : : +- Project (861)
: : : : : : +- Scan parquet (860)
: : : : : +- BroadcastExchange (870)
: : : : : +- Exchange (869)
: : : : : +- Project (868)
: : : : : +- Scan parquet (867)
: : : : +- BroadcastExchange (877)
: : : : +- Exchange (876)
: : : : +- Project (875)
: : : : +- Filter (874)
: : : : +- Scan parquet (873)
: : : +- Sort (979)
: : : +- Exchange (978)
: : : +- HashAggregate (977)
: : : +- HashAggregate (976)
: : : +- Project (975)
: : : +- SortMergeJoin Inner (974)
: : : :- Sort (945)
: : : : +- Exchange (944)
: : : : +- Project (943)
: : : : +- Filter (942)
: : : : +- Generate (941)
: : : : +- Filter (940)
: : : : +- ObjectHashAggregate (939)
: : : : +- ObjectHashAggregate (938)
: : : : +- Generate (937)
: : : : +- BroadcastHashJoin Inner BuildLeft (936)
: : : : :- BroadcastExchange (893)
: : : : : +- Exchange (892)
: : : : : +- Project (891)
: : : : : +- Filter (890)
: : : : : +- Scan parquet (889)
: : : : +- Project (935)
: : : : +- BroadcastHashJoin Inner BuildLeft (934)
: : : : :- BroadcastExchange (903)
: : : : : +- Project (902)
: : : : : +- Generate (901)
: : : : : +- Project (900)
: : : : : +- Filter (899)
: : : : : +- Generate (898)
: : : : : +- Exchange (897)
: : : : : +- Project (896)
: : : : : +- Filter (895)
: : : : : +- Scan parquet (894)
: : : : +- HashAggregate (933)
: : : : +- Exchange (932)
: : : : +- HashAggregate (931)
: : : : +- Project (930)
: : : : +- Generate (929)
: : : : +- Project (928)
: : : : +- Generate (927)
: : : : +- Project (926)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (925)
: : : : :- Project (919)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (918)
: : : : : :- Project (913)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (912)
: : : : : : :- Exchange (906)
: : : : : : : +- Filter (905)
: : : : : : : +- Scan parquet (904)
: : : : : : +- BroadcastExchange (911)
: : : : : : +- Project (910)
: : : : : : +- Exchange (909)
: : : : : : +- Project (908)
: : : : : : +- Scan parquet (907)
: : : : : +- BroadcastExchange (917)
: : : : : +- Exchange (916)
: : : : : +- Project (915)
: : : : : +- Scan parquet (914)
: : : : +- BroadcastExchange (924)
: : : : +- Exchange (923)
: : : : +- Project (922)
: : : : +- Filter (921)
: : : : +- Scan parquet (920)
: : : +- Sort (973)
: : : +- Project (972)
: : : +- Generate (971)
: : : +- Project (970)
: : : +- Generate (969)
: : : +- Project (968)
: : : +- BroadcastHashJoin LeftOuter BuildRight (967)
: : : :- Project (961)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (960)
: : : : :- Project (955)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (954)
: : : : : :- Exchange (948)
: : : : : : +- Filter (947)
: : : : : : +- Scan parquet (946)
: : : : : +- BroadcastExchange (953)
: : : : : +- Project (952)
: : : : : +- Exchange (951)
: : : : : +- Project (950)
: : : : : +- Scan parquet (949)
: : : : +- BroadcastExchange (959)
: : : : +- Exchange (958)
: : : : +- Project (957)
: : : : +- Scan parquet (956)
: : : +- BroadcastExchange (966)
: : : +- Exchange (965)
: : : +- Project (964)
: : : +- Filter (963)
: : : +- Scan parquet (962)
: : +- BroadcastExchange (989)
: : +- Filter (988)
: : +- Scan parquet (511)
: +- Sort (1046)
: +- Project (1045)
: +- BroadcastHashJoin Inner BuildLeft (1044)
: :- BroadcastExchange (1013)
: : +- Project (1012)
: : +- Filter (1011)
: : +- Generate (1010)
: : +- Project (1009)
: : +- Filter (1008)
: : +- Generate (1007)
: : +- Exchange (1006)
: : +- Project (1005)
: : +- Filter (1004)
: : +- Scan parquet (1003)
: +- HashAggregate (1043)
: +- Exchange (1042)
: +- HashAggregate (1041)
: +- Project (1040)
: +- Generate (1039)
: +- Project (1038)
: +- Generate (1037)
: +- Project (1036)
: +- BroadcastHashJoin LeftOuter BuildRight (1035)
: :- Project (1029)
: : +- BroadcastHashJoin LeftOuter BuildRight (1028)
: : :- Project (1023)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1022)
: : : :- Exchange (1016)
: : : : +- Filter (1015)
: : : : +- Scan parquet (1014)
: : : +- BroadcastExchange (1021)
: : : +- Project (1020)
: : : +- Exchange (1019)
: : : +- Project (1018)
: : : +- Scan parquet (1017)
: : +- BroadcastExchange (1027)
: : +- Exchange (1026)
: : +- Project (1025)
: : +- Scan parquet (1024)
: +- BroadcastExchange (1034)
: +- Exchange (1033)
: +- Project (1032)
: +- Filter (1031)
: +- Scan parquet (1030)
+- BroadcastExchange (1055)
+- Project (1054)
+- Filter (1053)
+- Generate (1052)
+- Exchange (1051)
+- Project (1050)
+- Filter (1049)
+- Scan parquet (552)
+- == Initial Plan ==
Filter (1081)
+- ObjectHashAggregate (1080)
+- Exchange (1079)
+- ObjectHashAggregate (1078)
+- Project (1077)
+- Window (1076)
+- Sort (1075)
+- Exchange (1074)
+- Project (1073)
+- InMemoryTableScan (247)
+- InMemoryRelation (248)
+- AdaptiveSparkPlan (1058)
+- == Final Plan ==
ResultQueryStage (565)
+- Project (564)
+- * BroadcastHashJoin Inner BuildRight (563)
:- * Project (551)
: +- * BroadcastHashJoin Inner BuildLeft (550)
: :- BroadcastQueryStage (534), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (533)
: : +- AQEShuffleRead (532)
: : +- ShuffleQueryStage (531), Statistics(sizeInBytes=114.8 KiB, rowCount=980)
: : +- Exchange (530)
: : +- * Project (529)
: : +- * BroadcastHashJoin LeftOuter BuildRight (528)
: : :- AQEShuffleRead (422)
: : : +- ShuffleQueryStage (421), Statistics(sizeInBytes=114.8 KiB, rowCount=980)
: : : +- Exchange (420)
: : : +- * Project (419)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (418)
: : : :- * Project (286)
: : : : +- * Generate (285)
: : : : +- * Project (284)
: : : : +- * Generate (283)
: : : : +- Project (282)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (281)
: : : : :- * Project (272)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (271)
: : : : : :- * Project (263)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (262)
: : : : : : :- ShuffleQueryStage (253), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (252)
: : : : : : : +- * Filter (251)
: : : : : : : +- * ColumnarToRow (250)
: : : : : : : +- Scan parquet (249)
: : : : : : +- BroadcastQueryStage (261), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (260)
: : : : : : +- * Project (259)
: : : : : : +- ShuffleQueryStage (258), Statistics(sizeInBytes=339.5 KiB, rowCount=2.75E+3)
: : : : : : +- Exchange (257)
: : : : : : +- * Project (256)
: : : : : : +- * ColumnarToRow (255)
: : : : : : +- Scan parquet (254)
: : : : : +- BroadcastQueryStage (270), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- BroadcastExchange (269)
: : : : : +- ShuffleQueryStage (268), Statistics(sizeInBytes=4.4 KiB, rowCount=62)
: : : : : +- Exchange (267)
: : : : : +- * Project (266)
: : : : : +- * ColumnarToRow (265)
: : : : : +- Scan parquet (264)
: : : : +- BroadcastQueryStage (280), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- BroadcastExchange (279)
: : : : +- ShuffleQueryStage (278), Statistics(sizeInBytes=92.7 KiB, rowCount=159)
: : : : +- Exchange (277)
: : : : +- * Project (276)
: : : : +- * Filter (275)
: : : : +- * ColumnarToRow (274)
: : : : +- Scan parquet (273)
: : : +- BroadcastQueryStage (417), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (416)
: : : +- * HashAggregate (415)
: : : +- AQEShuffleRead (414)
: : : +- ShuffleQueryStage (413), Statistics(sizeInBytes=27.7 KiB, rowCount=295)
: : : +- Exchange (412)
: : : +- * HashAggregate (411)
: : : +- * Project (410)
: : : +- * BroadcastHashJoin Inner BuildLeft (409)
: : : :- BroadcastQueryStage (381), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : : +- BroadcastExchange (380)
: : : : +- AQEShuffleRead (379)
: : : : +- ShuffleQueryStage (378), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : : +- Exchange (377)
: : : : +- * Project (376)
: : : : +- * BroadcastHashJoin Inner BuildLeft (375)
: : : : :- BroadcastQueryStage (353), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : : +- BroadcastExchange (352)
: : : : : +- AQEShuffleRead (351)
: : : : : +- ShuffleQueryStage (350), Statistics(sizeInBytes=43.1 KiB, rowCount=394)
: : : : : +- Exchange (349)
: : : : : +- * Project (348)
: : : : : +- * Filter (347)
: : : : : +- * Generate (346)
: : : : : +- * Filter (345)
: : : : : +- ObjectHashAggregate (344)
: : : : : +- ObjectHashAggregate (343)
: : : : : +- Generate (342)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (341)
: : : : : :- BroadcastQueryStage (294), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- BroadcastExchange (293)
: : : : : : +- ShuffleQueryStage (292), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : : : +- Exchange (291)
: : : : : : +- * Project (290)
: : : : : : +- * Filter (289)
: : : : : : +- * ColumnarToRow (288)
: : : : : : +- Scan parquet (287)
: : : : : +- * Project (340)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (339)
: : : : : :- BroadcastQueryStage (307), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- BroadcastExchange (306)
: : : : : : +- * Project (305)
: : : : : : +- * Generate (304)
: : : : : : +- * Project (303)
: : : : : : +- * Filter (302)
: : : : : : +- * Generate (301)
: : : : : : +- ShuffleQueryStage (300), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : : : : : +- Exchange (299)
: : : : : : +- * Project (298)
: : : : : : +- * Filter (297)
: : : : : : +- * ColumnarToRow (296)
: : : : : : +- Scan parquet (295)
: : : : : +- * HashAggregate (338)
: : : : : +- AQEShuffleRead (337)
: : : : : +- ShuffleQueryStage (336), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: : : : : +- Exchange (335)
: : : : : +- * HashAggregate (334)
: : : : : +- * Project (333)
: : : : : +- * Generate (332)
: : : : : +- * Project (331)
: : : : : +- * Generate (330)
: : : : : +- Project (329)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (328)
: : : : : :- * Project (325)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (324)
: : : : : : :- * Project (316)
: : : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (315)
: : : : : : : :- ShuffleQueryStage (312), Statistics(sizeInBytes=84.2 KiB, rowCount=980)
: : : : : : : : +- Exchange (311)
: : : : : : : : +- * Filter (310)
: : : : : : : : +- * ColumnarToRow (309)
: : : : : : : : +- Scan parquet (308)
: : : : : : : +- BroadcastQueryStage (314), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : : +- ReusedExchange (313)
: : : : : : +- BroadcastQueryStage (323), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : : +- BroadcastExchange (322)
: : : : : : +- ShuffleQueryStage (321), Statistics(sizeInBytes=2.9 KiB, rowCount=62)
: : : : : : +- Exchange (320)
: : : : : : +- * Project (319)
: : : : : : +- * ColumnarToRow (318)
: : : : : : +- Scan parquet (317)
: : : : : +- BroadcastQueryStage (327), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : : +- ReusedExchange (326)
: : : : +- * Project (374)
: : : : +- * Generate (373)
: : : : +- * Project (372)
: : : : +- * Generate (371)
: : : : +- Project (370)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (369)
: : : : :- * Project (366)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (365)
: : : : : :- * Project (362)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (361)
: : : : : : :- ShuffleQueryStage (358), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (357)
: : : : : : : +- * Filter (356)
: : : : : : : +- * ColumnarToRow (355)
: : : : : : : +- Scan parquet (354)
: : : : : : +- BroadcastQueryStage (360), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- ReusedExchange (359)
: : : : : +- BroadcastQueryStage (364), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (363)
: : : : +- BroadcastQueryStage (368), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (367)
: : : +- AQEShuffleRead (408)
: : : +- ShuffleQueryStage (407), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : +- Exchange (406)
: : : +- * HashAggregate (405)
: : : +- * HashAggregate (404)
: : : +- * Project (403)
: : : +- * BroadcastHashJoin Inner BuildLeft (402)
: : : :- BroadcastQueryStage (383), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : +- ReusedExchange (382)
: : : +- * Project (401)
: : : +- * Generate (400)
: : : +- * Project (399)
: : : +- * Generate (398)
: : : +- Project (397)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (396)
: : : :- * Project (393)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (392)
: : : : :- * Project (389)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (388)
: : : : : :- ShuffleQueryStage (385), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : +- ReusedExchange (384)
: : : : : +- BroadcastQueryStage (387), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : +- ReusedExchange (386)
: : : : +- BroadcastQueryStage (391), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : +- ReusedExchange (390)
: : : +- BroadcastQueryStage (395), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : +- ReusedExchange (394)
: : +- BroadcastQueryStage (527), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (526)
: : +- AQEShuffleRead (525)
: : +- ShuffleQueryStage (524), Statistics(sizeInBytes=84.2 KiB, rowCount=980)
: : +- Exchange (523)
: : +- * SerializeFromObject (522)
: : +- * MapElements (521)
: : +- * DeserializeToObject (520)
: : +- ObjectHashAggregate (519)
: : +- ObjectHashAggregate (518)
: : +- * Project (517)
: : +- * BroadcastHashJoin LeftOuter BuildRight (516)
: : :- * Project (510)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (509)
: : : :- * Project (448)
: : : : +- * Project (447)
: : : : +- * Generate (446)
: : : : +- * Generate (445)
: : : : +- * Project (444)
: : : : +- Project (443)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (442)
: : : : :- * Project (439)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (438)
: : : : : :- * BroadcastHashJoin LeftOuter BuildRight (435)
: : : : : : :- ShuffleQueryStage (426), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (425)
: : : : : : : +- * ColumnarToRow (424)
: : : : : : : +- Scan parquet (423)
: : : : : : +- BroadcastQueryStage (434), Statistics(sizeInBytes=4.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (433)
: : : : : : +- * Project (432)
: : : : : : +- ShuffleQueryStage (431), Statistics(sizeInBytes=2.0 MiB, rowCount=2.75E+3)
: : : : : : +- Exchange (430)
: : : : : : +- * Project (429)
: : : : : : +- * ColumnarToRow (428)
: : : : : : +- Scan parquet (427)
: : : : : +- BroadcastQueryStage (437), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (436)
: : : : +- BroadcastQueryStage (441), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (440)
: : : +- BroadcastQueryStage (508), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (507)
: : : +- * HashAggregate (506)
: : : +- AQEShuffleRead (505)
: : : +- ShuffleQueryStage (504), Statistics(sizeInBytes=30.0 KiB, rowCount=295)
: : : +- Exchange (503)
: : : +- * HashAggregate (502)
: : : +- * Project (501)
: : : +- * BroadcastHashJoin Inner BuildRight (500)
: : : :- AQEShuffleRead (494)
: : : : +- ShuffleQueryStage (493), Statistics(sizeInBytes=34.6 KiB, rowCount=295)
: : : : +- Exchange (492)
: : : : +- * Project (491)
: : : : +- * BroadcastHashJoin Inner BuildLeft (490)
: : : : :- BroadcastQueryStage (471), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : : +- BroadcastExchange (470)
: : : : : +- AQEShuffleRead (469)
: : : : : +- ShuffleQueryStage (468), Statistics(sizeInBytes=46.2 KiB, rowCount=394)
: : : : : +- Exchange (467)
: : : : : +- * Project (466)
: : : : : +- * Filter (465)
: : : : : +- * Generate (464)
: : : : : +- * Filter (463)
: : : : : +- ObjectHashAggregate (462)
: : : : : +- ObjectHashAggregate (461)
: : : : : +- Generate (460)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (459)
: : : : : :- BroadcastQueryStage (450), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- ReusedExchange (449)
: : : : : +- * Project (458)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (457)
: : : : : :- BroadcastQueryStage (452), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- ReusedExchange (451)
: : : : : +- * HashAggregate (456)
: : : : : +- AQEShuffleRead (455)
: : : : : +- ShuffleQueryStage (454), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: : : : : +- ReusedExchange (453)
: : : : +- * Project (489)
: : : : +- * Generate (488)
: : : : +- * Project (487)
: : : : +- * Generate (486)
: : : : +- Project (485)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (484)
: : : : :- * Project (481)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (480)
: : : : : :- * Project (477)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (476)
: : : : : : :- ShuffleQueryStage (473), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- ReusedExchange (472)
: : : : : : +- BroadcastQueryStage (475), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- ReusedExchange (474)
: : : : : +- BroadcastQueryStage (479), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (478)
: : : : +- BroadcastQueryStage (483), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (482)
: : : +- BroadcastQueryStage (499), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (498)
: : : +- AQEShuffleRead (497)
: : : +- ShuffleQueryStage (496), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : +- ReusedExchange (495)
: : +- BroadcastQueryStage (515), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (514)
: : +- * Filter (513)
: : +- * ColumnarToRow (512)
: : +- Scan parquet (511)
: +- * Project (549)
: +- * BroadcastHashJoin Inner BuildLeft (548)
: :- BroadcastQueryStage (544), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : +- BroadcastExchange (543)
: : +- * Project (542)
: : +- * Filter (541)
: : +- * Generate (540)
: : +- * Project (539)
: : +- * Filter (538)
: : +- * Generate (537)
: : +- ShuffleQueryStage (536), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : +- ReusedExchange (535)
: +- * HashAggregate (547)
: +- ShuffleQueryStage (546), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: +- ReusedExchange (545)
+- BroadcastQueryStage (562), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
+- BroadcastExchange (561)
+- * Project (560)
+- * Filter (559)
+- * Generate (558)
+- ShuffleQueryStage (557), Statistics(sizeInBytes=29.9 KiB, rowCount=9)
+- Exchange (556)
+- * Project (555)
+- * Filter (554)
+- * ColumnarToRow (553)
+- Scan parquet (552)
+- == Initial Plan ==
Project (1057)
+- BroadcastHashJoin Inner BuildRight (1056)
:- Project (1048)
: +- SortMergeJoin Inner (1047)
: :- Sort (1002)
: : +- Exchange (1001)
: : +- Project (1000)
: : +- SortMergeJoin LeftOuter (999)
: : :- Sort (774)
: : : +- Exchange (773)
: : : +- Project (772)
: : : +- SortMergeJoin LeftOuter (771)
: : : :- Sort (589)
: : : : +- Project (588)
: : : : +- Generate (587)
: : : : +- Project (586)
: : : : +- Generate (585)
: : : : +- Project (584)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (583)
: : : : :- Project (578)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (577)
: : : : : :- Project (573)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (572)
: : : : : : :- Exchange (567)
: : : : : : : +- Filter (566)
: : : : : : : +- Scan parquet (249)
: : : : : : +- BroadcastExchange (571)
: : : : : : +- Project (570)
: : : : : : +- Exchange (569)
: : : : : : +- Project (568)
: : : : : : +- Scan parquet (254)
: : : : : +- BroadcastExchange (576)
: : : : : +- Exchange (575)
: : : : : +- Project (574)
: : : : : +- Scan parquet (264)
: : : : +- BroadcastExchange (582)
: : : : +- Exchange (581)
: : : : +- Project (580)
: : : : +- Filter (579)
: : : : +- Scan parquet (273)
: : : +- Sort (770)
: : : +- HashAggregate (769)
: : : +- Exchange (768)
: : : +- HashAggregate (767)
: : : +- Project (766)
: : : +- SortMergeJoin Inner (765)
: : : :- Sort (673)
: : : : +- Exchange (672)
: : : : +- Project (671)
: : : : +- SortMergeJoin Inner (670)
: : : : :- Sort (642)
: : : : : +- Exchange (641)
: : : : : +- Project (640)
: : : : : +- Filter (639)
: : : : : +- Generate (638)
: : : : : +- Filter (637)
: : : : : +- ObjectHashAggregate (636)
: : : : : +- ObjectHashAggregate (635)
: : : : : +- Generate (634)
: : : : : +- BroadcastHashJoin Inner BuildLeft (633)
: : : : : :- BroadcastExchange (593)
: : : : : : +- Exchange (592)
: : : : : : +- Project (591)
: : : : : : +- Filter (590)
: : : : : : +- Scan parquet (287)
: : : : : +- Project (632)
: : : : : +- BroadcastHashJoin Inner BuildLeft (631)
: : : : : :- BroadcastExchange (602)
: : : : : : +- Project (601)
: : : : : : +- Generate (600)
: : : : : : +- Project (599)
: : : : : : +- Filter (598)
: : : : : : +- Generate (597)
: : : : : : +- Exchange (596)
: : : : : : +- Project (595)
: : : : : : +- Filter (594)
: : : : : : +- Scan parquet (295)
: : : : : +- HashAggregate (630)
: : : : : +- Exchange (629)
: : : : : +- HashAggregate (628)
: : : : : +- Project (627)
: : : : : +- Generate (626)
: : : : : +- Project (625)
: : : : : +- Generate (624)
: : : : : +- Project (623)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (622)
: : : : : :- Project (616)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (615)
: : : : : : :- Project (611)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (610)
: : : : : : : :- Exchange (604)
: : : : : : : : +- Filter (603)
: : : : : : : : +- Scan parquet (308)
: : : : : : : +- BroadcastExchange (609)
: : : : : : : +- Project (608)
: : : : : : : +- Exchange (607)
: : : : : : : +- Project (606)
: : : : : : : +- Scan parquet (605)
: : : : : : +- BroadcastExchange (614)
: : : : : : +- Exchange (613)
: : : : : : +- Project (612)
: : : : : : +- Scan parquet (317)
: : : : : +- BroadcastExchange (621)
: : : : : +- Exchange (620)
: : : : : +- Project (619)
: : : : : +- Filter (618)
: : : : : +- Scan parquet (617)
: : : : +- Sort (669)
: : : : +- Project (668)
: : : : +- Generate (667)
: : : : +- Project (666)
: : : : +- Generate (665)
: : : : +- Project (664)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (663)
: : : : :- Project (657)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (656)
: : : : : :- Project (651)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (650)
: : : : : : :- Exchange (644)
: : : : : : : +- Filter (643)
: : : : : : : +- Scan parquet (354)
: : : : : : +- BroadcastExchange (649)
: : : : : : +- Project (648)
: : : : : : +- Exchange (647)
: : : : : : +- Project (646)
: : : : : : +- Scan parquet (645)
: : : : : +- BroadcastExchange (655)
: : : : : +- Exchange (654)
: : : : : +- Project (653)
: : : : : +- Scan parquet (652)
: : : : +- BroadcastExchange (662)
: : : : +- Exchange (661)
: : : : +- Project (660)
: : : : +- Filter (659)
: : : : +- Scan parquet (658)
: : : +- Sort (764)
: : : +- Exchange (763)
: : : +- HashAggregate (762)
: : : +- HashAggregate (761)
: : : +- Project (760)
: : : +- SortMergeJoin Inner (759)
: : : :- Sort (730)
: : : : +- Exchange (729)
: : : : +- Project (728)
: : : : +- Filter (727)
: : : : +- Generate (726)
: : : : +- Filter (725)
: : : : +- ObjectHashAggregate (724)
: : : : +- ObjectHashAggregate (723)
: : : : +- Generate (722)
: : : : +- BroadcastHashJoin Inner BuildLeft (721)
: : : : :- BroadcastExchange (678)
: : : : : +- Exchange (677)
: : : : : +- Project (676)
: : : : : +- Filter (675)
: : : : : +- Scan parquet (674)
: : : : +- Project (720)
: : : : +- BroadcastHashJoin Inner BuildLeft (719)
: : : : :- BroadcastExchange (688)
: : : : : +- Project (687)
: : : : : +- Generate (686)
: : : : : +- Project (685)
: : : : : +- Filter (684)
: : : : : +- Generate (683)
: : : : : +- Exchange (682)
: : : : : +- Project (681)
: : : : : +- Filter (680)
: : : : : +- Scan parquet (679)
: : : : +- HashAggregate (718)
: : : : +- Exchange (717)
: : : : +- HashAggregate (716)
: : : : +- Project (715)
: : : : +- Generate (714)
: : : : +- Project (713)
: : : : +- Generate (712)
: : : : +- Project (711)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (710)
: : : : :- Project (704)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (703)
: : : : : :- Project (698)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (697)
: : : : : : :- Exchange (691)
: : : : : : : +- Filter (690)
: : : : : : : +- Scan parquet (689)
: : : : : : +- BroadcastExchange (696)
: : : : : : +- Project (695)
: : : : : : +- Exchange (694)
: : : : : : +- Project (693)
: : : : : : +- Scan parquet (692)
: : : : : +- BroadcastExchange (702)
: : : : : +- Exchange (701)
: : : : : +- Project (700)
: : : : : +- Scan parquet (699)
: : : : +- BroadcastExchange (709)
: : : : +- Exchange (708)
: : : : +- Project (707)
: : : : +- Filter (706)
: : : : +- Scan parquet (705)
: : : +- Sort (758)
: : : +- Project (757)
: : : +- Generate (756)
: : : +- Project (755)
: : : +- Generate (754)
: : : +- Project (753)
: : : +- BroadcastHashJoin LeftOuter BuildRight (752)
: : : :- Project (746)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (745)
: : : : :- Project (740)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (739)
: : : : : :- Exchange (733)
: : : : : : +- Filter (732)
: : : : : : +- Scan parquet (731)
: : : : : +- BroadcastExchange (738)
: : : : : +- Project (737)
: : : : : +- Exchange (736)
: : : : : +- Project (735)
: : : : : +- Scan parquet (734)
: : : : +- BroadcastExchange (744)
: : : : +- Exchange (743)
: : : : +- Project (742)
: : : : +- Scan parquet (741)
: : : +- BroadcastExchange (751)
: : : +- Exchange (750)
: : : +- Project (749)
: : : +- Filter (748)
: : : +- Scan parquet (747)
: : +- Sort (998)
: : +- Exchange (997)
: : +- SerializeFromObject (996)
: : +- MapElements (995)
: : +- DeserializeToObject (994)
: : +- ObjectHashAggregate (993)
: : +- ObjectHashAggregate (992)
: : +- Project (991)
: : +- BroadcastHashJoin LeftOuter BuildRight (990)
: : :- Project (987)
: : : +- SortMergeJoin LeftOuter (986)
: : : :- Sort (799)
: : : : +- Project (798)
: : : : +- Project (797)
: : : : +- Generate (796)
: : : : +- Generate (795)
: : : : +- Project (794)
: : : : +- Project (793)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (792)
: : : : :- Project (786)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (785)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (780)
: : : : : : :- Exchange (775)
: : : : : : : +- Scan parquet (423)
: : : : : : +- BroadcastExchange (779)
: : : : : : +- Project (778)
: : : : : : +- Exchange (777)
: : : : : : +- Project (776)
: : : : : : +- Scan parquet (427)
: : : : : +- BroadcastExchange (784)
: : : : : +- Exchange (783)
: : : : : +- Project (782)
: : : : : +- Scan parquet (781)
: : : : +- BroadcastExchange (791)
: : : : +- Exchange (790)
: : : : +- Project (789)
: : : : +- Filter (788)
: : : : +- Scan parquet (787)
: : : +- Sort (985)
: : : +- HashAggregate (984)
: : : +- Exchange (983)
: : : +- HashAggregate (982)
: : : +- Project (981)
: : : +- SortMergeJoin Inner (980)
: : : :- Sort (888)
: : : : +- Exchange (887)
: : : : +- Project (886)
: : : : +- SortMergeJoin Inner (885)
: : : : :- Sort (856)
: : : : : +- Exchange (855)
: : : : : +- Project (854)
: : : : : +- Filter (853)
: : : : : +- Generate (852)
: : : : : +- Filter (851)
: : : : : +- ObjectHashAggregate (850)
: : : : : +- ObjectHashAggregate (849)
: : : : : +- Generate (848)
: : : : : +- BroadcastHashJoin Inner BuildLeft (847)
: : : : : :- BroadcastExchange (804)
: : : : : : +- Exchange (803)
: : : : : : +- Project (802)
: : : : : : +- Filter (801)
: : : : : : +- Scan parquet (800)
: : : : : +- Project (846)
: : : : : +- BroadcastHashJoin Inner BuildLeft (845)
: : : : : :- BroadcastExchange (814)
: : : : : : +- Project (813)
: : : : : : +- Generate (812)
: : : : : : +- Project (811)
: : : : : : +- Filter (810)
: : : : : : +- Generate (809)
: : : : : : +- Exchange (808)
: : : : : : +- Project (807)
: : : : : : +- Filter (806)
: : : : : : +- Scan parquet (805)
: : : : : +- HashAggregate (844)
: : : : : +- Exchange (843)
: : : : : +- HashAggregate (842)
: : : : : +- Project (841)
: : : : : +- Generate (840)
: : : : : +- Project (839)
: : : : : +- Generate (838)
: : : : : +- Project (837)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (836)
: : : : : :- Project (830)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (829)
: : : : : : :- Project (824)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (823)
: : : : : : : :- Exchange (817)
: : : : : : : : +- Filter (816)
: : : : : : : : +- Scan parquet (815)
: : : : : : : +- BroadcastExchange (822)
: : : : : : : +- Project (821)
: : : : : : : +- Exchange (820)
: : : : : : : +- Project (819)
: : : : : : : +- Scan parquet (818)
: : : : : : +- BroadcastExchange (828)
: : : : : : +- Exchange (827)
: : : : : : +- Project (826)
: : : : : : +- Scan parquet (825)
: : : : : +- BroadcastExchange (835)
: : : : : +- Exchange (834)
: : : : : +- Project (833)
: : : : : +- Filter (832)
: : : : : +- Scan parquet (831)
: : : : +- Sort (884)
: : : : +- Project (883)
: : : : +- Generate (882)
: : : : +- Project (881)
: : : : +- Generate (880)
: : : : +- Project (879)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (878)
: : : : :- Project (872)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (871)
: : : : : :- Project (866)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (865)
: : : : : : :- Exchange (859)
: : : : : : : +- Filter (858)
: : : : : : : +- Scan parquet (857)
: : : : : : +- BroadcastExchange (864)
: : : : : : +- Project (863)
: : : : : : +- Exchange (862)
: : : : : : +- Project (861)
: : : : : : +- Scan parquet (860)
: : : : : +- BroadcastExchange (870)
: : : : : +- Exchange (869)
: : : : : +- Project (868)
: : : : : +- Scan parquet (867)
: : : : +- BroadcastExchange (877)
: : : : +- Exchange (876)
: : : : +- Project (875)
: : : : +- Filter (874)
: : : : +- Scan parquet (873)
: : : +- Sort (979)
: : : +- Exchange (978)
: : : +- HashAggregate (977)
: : : +- HashAggregate (976)
: : : +- Project (975)
: : : +- SortMergeJoin Inner (974)
: : : :- Sort (945)
: : : : +- Exchange (944)
: : : : +- Project (943)
: : : : +- Filter (942)
: : : : +- Generate (941)
: : : : +- Filter (940)
: : : : +- ObjectHashAggregate (939)
: : : : +- ObjectHashAggregate (938)
: : : : +- Generate (937)
: : : : +- BroadcastHashJoin Inner BuildLeft (936)
: : : : :- BroadcastExchange (893)
: : : : : +- Exchange (892)
: : : : : +- Project (891)
: : : : : +- Filter (890)
: : : : : +- Scan parquet (889)
: : : : +- Project (935)
: : : : +- BroadcastHashJoin Inner BuildLeft (934)
: : : : :- BroadcastExchange (903)
: : : : : +- Project (902)
: : : : : +- Generate (901)
: : : : : +- Project (900)
: : : : : +- Filter (899)
: : : : : +- Generate (898)
: : : : : +- Exchange (897)
: : : : : +- Project (896)
: : : : : +- Filter (895)
: : : : : +- Scan parquet (894)
: : : : +- HashAggregate (933)
: : : : +- Exchange (932)
: : : : +- HashAggregate (931)
: : : : +- Project (930)
: : : : +- Generate (929)
: : : : +- Project (928)
: : : : +- Generate (927)
: : : : +- Project (926)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (925)
: : : : :- Project (919)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (918)
: : : : : :- Project (913)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (912)
: : : : : : :- Exchange (906)
: : : : : : : +- Filter (905)
: : : : : : : +- Scan parquet (904)
: : : : : : +- BroadcastExchange (911)
: : : : : : +- Project (910)
: : : : : : +- Exchange (909)
: : : : : : +- Project (908)
: : : : : : +- Scan parquet (907)
: : : : : +- BroadcastExchange (917)
: : : : : +- Exchange (916)
: : : : : +- Project (915)
: : : : : +- Scan parquet (914)
: : : : +- BroadcastExchange (924)
: : : : +- Exchange (923)
: : : : +- Project (922)
: : : : +- Filter (921)
: : : : +- Scan parquet (920)
: : : +- Sort (973)
: : : +- Project (972)
: : : +- Generate (971)
: : : +- Project (970)
: : : +- Generate (969)
: : : +- Project (968)
: : : +- BroadcastHashJoin LeftOuter BuildRight (967)
: : : :- Project (961)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (960)
: : : : :- Project (955)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (954)
: : : : : :- Exchange (948)
: : : : : : +- Filter (947)
: : : : : : +- Scan parquet (946)
: : : : : +- BroadcastExchange (953)
: : : : : +- Project (952)
: : : : : +- Exchange (951)
: : : : : +- Project (950)
: : : : : +- Scan parquet (949)
: : : : +- BroadcastExchange (959)
: : : : +- Exchange (958)
: : : : +- Project (957)
: : : : +- Scan parquet (956)
: : : +- BroadcastExchange (966)
: : : +- Exchange (965)
: : : +- Project (964)
: : : +- Filter (963)
: : : +- Scan parquet (962)
: : +- BroadcastExchange (989)
: : +- Filter (988)
: : +- Scan parquet (511)
: +- Sort (1046)
: +- Project (1045)
: +- BroadcastHashJoin Inner BuildLeft (1044)
: :- BroadcastExchange (1013)
: : +- Project (1012)
: : +- Filter (1011)
: : +- Generate (1010)
: : +- Project (1009)
: : +- Filter (1008)
: : +- Generate (1007)
: : +- Exchange (1006)
: : +- Project (1005)
: : +- Filter (1004)
: : +- Scan parquet (1003)
: +- HashAggregate (1043)
: +- Exchange (1042)
: +- HashAggregate (1041)
: +- Project (1040)
: +- Generate (1039)
: +- Project (1038)
: +- Generate (1037)
: +- Project (1036)
: +- BroadcastHashJoin LeftOuter BuildRight (1035)
: :- Project (1029)
: : +- BroadcastHashJoin LeftOuter BuildRight (1028)
: : :- Project (1023)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1022)
: : : :- Exchange (1016)
: : : : +- Filter (1015)
: : : : +- Scan parquet (1014)
: : : +- BroadcastExchange (1021)
: : : +- Project (1020)
: : : +- Exchange (1019)
: : : +- Project (1018)
: : : +- Scan parquet (1017)
: : +- BroadcastExchange (1027)
: : +- Exchange (1026)
: : +- Project (1025)
: : +- Scan parquet (1024)
: +- BroadcastExchange (1034)
: +- Exchange (1033)
: +- Project (1032)
: +- Filter (1031)
: +- Scan parquet (1030)
+- BroadcastExchange (1055)
+- Project (1054)
+- Filter (1053)
+- Generate (1052)
+- Exchange (1051)
+- Project (1050)
+- Filter (1049)
+- Scan parquet (552)
+- == Initial Plan ==
Project (1999)
+- SortMergeJoin LeftOuter (1998)
:- Sort (1529)
: +- Exchange (1528)
: +- Project (1527)
: +- SortMergeJoin LeftOuter (1526)
: :- Sort (1300)
: : +- Exchange (1299)
: : +- Project (1298)
: : +- SortMergeJoin LeftOuter (1297)
: : :- Sort (1115)
: : : +- Project (1114)
: : : +- Project (1113)
: : : +- Generate (1112)
: : : +- Generate (1111)
: : : +- Project (1110)
: : : +- Project (1109)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1108)
: : : :- Project (1103)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1102)
: : : : :- BroadcastHashJoin LeftOuter BuildRight (1098)
: : : : : :- Exchange (1093)
: : : : : : +- Scan parquet (1)
: : : : : +- BroadcastExchange (1097)
: : : : : +- Project (1096)
: : : : : +- Exchange (1095)
: : : : : +- Project (1094)
: : : : : +- Scan parquet (5)
: : : : +- BroadcastExchange (1101)
: : : : +- Exchange (1100)
: : : : +- Project (1099)
: : : : +- Scan parquet (14)
: : : +- BroadcastExchange (1107)
: : : +- Exchange (1106)
: : : +- Project (1105)
: : : +- Filter (1104)
: : : +- Scan parquet (23)
: : +- Sort (1296)
: : +- HashAggregate (1295)
: : +- Exchange (1294)
: : +- HashAggregate (1293)
: : +- Project (1292)
: : +- SortMergeJoin Inner (1291)
: : :- Sort (1199)
: : : +- Exchange (1198)
: : : +- Project (1197)
: : : +- SortMergeJoin Inner (1196)
: : : :- Sort (1168)
: : : : +- Exchange (1167)
: : : : +- Project (1166)
: : : : +- Filter (1165)
: : : : +- Generate (1164)
: : : : +- Filter (1163)
: : : : +- ObjectHashAggregate (1162)
: : : : +- ObjectHashAggregate (1161)
: : : : +- Generate (1160)
: : : : +- BroadcastHashJoin Inner BuildLeft (1159)
: : : : :- BroadcastExchange (1119)
: : : : : +- Exchange (1118)
: : : : : +- Project (1117)
: : : : : +- Filter (1116)
: : : : : +- Scan parquet (38)
: : : : +- Project (1158)
: : : : +- BroadcastHashJoin Inner BuildLeft (1157)
: : : : :- BroadcastExchange (1128)
: : : : : +- Project (1127)
: : : : : +- Generate (1126)
: : : : : +- Project (1125)
: : : : : +- Filter (1124)
: : : : : +- Generate (1123)
: : : : : +- Exchange (1122)
: : : : : +- Project (1121)
: : : : : +- Filter (1120)
: : : : : +- Scan parquet (46)
: : : : +- HashAggregate (1156)
: : : : +- Exchange (1155)
: : : : +- HashAggregate (1154)
: : : : +- Project (1153)
: : : : +- Generate (1152)
: : : : +- Project (1151)
: : : : +- Generate (1150)
: : : : +- Project (1149)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1148)
: : : : :- Project (1142)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1141)
: : : : : :- Project (1136)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1135)
: : : : : : :- Exchange (1130)
: : : : : : : +- Filter (1129)
: : : : : : : +- Scan parquet (59)
: : : : : : +- BroadcastExchange (1134)
: : : : : : +- Project (1133)
: : : : : : +- Exchange (1132)
: : : : : : +- Project (1131)
: : : : : : +- Scan parquet (64)
: : : : : +- BroadcastExchange (1140)
: : : : : +- Exchange (1139)
: : : : : +- Project (1138)
: : : : : +- Scan parquet (1137)
: : : : +- BroadcastExchange (1147)
: : : : +- Exchange (1146)
: : : : +- Project (1145)
: : : : +- Filter (1144)
: : : : +- Scan parquet (1143)
: : : +- Sort (1195)
: : : +- Project (1194)
: : : +- Generate (1193)
: : : +- Project (1192)
: : : +- Generate (1191)
: : : +- Project (1190)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1189)
: : : :- Project (1183)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1182)
: : : : :- Project (1177)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1176)
: : : : : :- Exchange (1170)
: : : : : : +- Filter (1169)
: : : : : : +- Scan parquet (106)
: : : : : +- BroadcastExchange (1175)
: : : : : +- Project (1174)
: : : : : +- Exchange (1173)
: : : : : +- Project (1172)
: : : : : +- Scan parquet (1171)
: : : : +- BroadcastExchange (1181)
: : : : +- Exchange (1180)
: : : : +- Project (1179)
: : : : +- Scan parquet (1178)
: : : +- BroadcastExchange (1188)
: : : +- Exchange (1187)
: : : +- Project (1186)
: : : +- Filter (1185)
: : : +- Scan parquet (1184)
: : +- Sort (1290)
: : +- Exchange (1289)
: : +- HashAggregate (1288)
: : +- HashAggregate (1287)
: : +- Project (1286)
: : +- SortMergeJoin Inner (1285)
: : :- Sort (1256)
: : : +- Exchange (1255)
: : : +- Project (1254)
: : : +- Filter (1253)
: : : +- Generate (1252)
: : : +- Filter (1251)
: : : +- ObjectHashAggregate (1250)
: : : +- ObjectHashAggregate (1249)
: : : +- Generate (1248)
: : : +- BroadcastHashJoin Inner BuildLeft (1247)
: : : :- BroadcastExchange (1204)
: : : : +- Exchange (1203)
: : : : +- Project (1202)
: : : : +- Filter (1201)
: : : : +- Scan parquet (1200)
: : : +- Project (1246)
: : : +- BroadcastHashJoin Inner BuildLeft (1245)
: : : :- BroadcastExchange (1214)
: : : : +- Project (1213)
: : : : +- Generate (1212)
: : : : +- Project (1211)
: : : : +- Filter (1210)
: : : : +- Generate (1209)
: : : : +- Exchange (1208)
: : : : +- Project (1207)
: : : : +- Filter (1206)
: : : : +- Scan parquet (1205)
: : : +- HashAggregate (1244)
: : : +- Exchange (1243)
: : : +- HashAggregate (1242)
: : : +- Project (1241)
: : : +- Generate (1240)
: : : +- Project (1239)
: : : +- Generate (1238)
: : : +- Project (1237)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1236)
: : : :- Project (1230)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1229)
: : : : :- Project (1224)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1223)
: : : : : :- Exchange (1217)
: : : : : : +- Filter (1216)
: : : : : : +- Scan parquet (1215)
: : : : : +- BroadcastExchange (1222)
: : : : : +- Project (1221)
: : : : : +- Exchange (1220)
: : : : : +- Project (1219)
: : : : : +- Scan parquet (1218)
: : : : +- BroadcastExchange (1228)
: : : : +- Exchange (1227)
: : : : +- Project (1226)
: : : : +- Scan parquet (1225)
: : : +- BroadcastExchange (1235)
: : : +- Exchange (1234)
: : : +- Project (1233)
: : : +- Filter (1232)
: : : +- Scan parquet (1231)
: : +- Sort (1284)
: : +- Project (1283)
: : +- Generate (1282)
: : +- Project (1281)
: : +- Generate (1280)
: : +- Project (1279)
: : +- BroadcastHashJoin LeftOuter BuildRight (1278)
: : :- Project (1272)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1271)
: : : :- Project (1266)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1265)
: : : : :- Exchange (1259)
: : : : : +- Filter (1258)
: : : : : +- Scan parquet (1257)
: : : : +- BroadcastExchange (1264)
: : : : +- Project (1263)
: : : : +- Exchange (1262)
: : : : +- Project (1261)
: : : : +- Scan parquet (1260)
: : : +- BroadcastExchange (1270)
: : : +- Exchange (1269)
: : : +- Project (1268)
: : : +- Scan parquet (1267)
: : +- BroadcastExchange (1277)
: : +- Exchange (1276)
: : +- Project (1275)
: : +- Filter (1274)
: : +- Scan parquet (1273)
: +- Sort (1525)
: +- Exchange (1524)
: +- SerializeFromObject (1523)
: +- MapElements (1522)
: +- DeserializeToObject (1521)
: +- ObjectHashAggregate (1520)
: +- ObjectHashAggregate (1519)
: +- Project (1518)
: +- BroadcastHashJoin LeftOuter BuildRight (1517)
: :- Project (1514)
: : +- SortMergeJoin LeftOuter (1513)
: : :- Sort (1326)
: : : +- Project (1325)
: : : +- Project (1324)
: : : +- Generate (1323)
: : : +- Generate (1322)
: : : +- Project (1321)
: : : +- Project (1320)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1319)
: : : :- Project (1313)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1312)
: : : : :- BroadcastHashJoin LeftOuter BuildRight (1308)
: : : : : :- Exchange (1302)
: : : : : : +- Scan parquet (1301)
: : : : : +- BroadcastExchange (1307)
: : : : : +- Project (1306)
: : : : : +- Exchange (1305)
: : : : : +- Project (1304)
: : : : : +- Scan parquet (1303)
: : : : +- BroadcastExchange (1311)
: : : : +- Exchange (1310)
: : : : +- Project (1309)
: : : : +- Scan parquet (201)
: : : +- BroadcastExchange (1318)
: : : +- Exchange (1317)
: : : +- Project (1316)
: : : +- Filter (1315)
: : : +- Scan parquet (1314)
: : +- Sort (1512)
: : +- HashAggregate (1511)
: : +- Exchange (1510)
: : +- HashAggregate (1509)
: : +- Project (1508)
: : +- SortMergeJoin Inner (1507)
: : :- Sort (1415)
: : : +- Exchange (1414)
: : : +- Project (1413)
: : : +- SortMergeJoin Inner (1412)
: : : :- Sort (1383)
: : : : +- Exchange (1382)
: : : : +- Project (1381)
: : : : +- Filter (1380)
: : : : +- Generate (1379)
: : : : +- Filter (1378)
: : : : +- ObjectHashAggregate (1377)
: : : : +- ObjectHashAggregate (1376)
: : : : +- Generate (1375)
: : : : +- BroadcastHashJoin Inner BuildLeft (1374)
: : : : :- BroadcastExchange (1331)
: : : : : +- Exchange (1330)
: : : : : +- Project (1329)
: : : : : +- Filter (1328)
: : : : : +- Scan parquet (1327)
: : : : +- Project (1373)
: : : : +- BroadcastHashJoin Inner BuildLeft (1372)
: : : : :- BroadcastExchange (1341)
: : : : : +- Project (1340)
: : : : : +- Generate (1339)
: : : : : +- Project (1338)
: : : : : +- Filter (1337)
: : : : : +- Generate (1336)
: : : : : +- Exchange (1335)
: : : : : +- Project (1334)
: : : : : +- Filter (1333)
: : : : : +- Scan parquet (1332)
: : : : +- HashAggregate (1371)
: : : : +- Exchange (1370)
: : : : +- HashAggregate (1369)
: : : : +- Project (1368)
: : : : +- Generate (1367)
: : : : +- Project (1366)
: : : : +- Generate (1365)
: : : : +- Project (1364)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1363)
: : : : :- Project (1357)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1356)
: : : : : :- Project (1351)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1350)
: : : : : : :- Exchange (1344)
: : : : : : : +- Filter (1343)
: : : : : : : +- Scan parquet (1342)
: : : : : : +- BroadcastExchange (1349)
: : : : : : +- Project (1348)
: : : : : : +- Exchange (1347)
: : : : : : +- Project (1346)
: : : : : : +- Scan parquet (1345)
: : : : : +- BroadcastExchange (1355)
: : : : : +- Exchange (1354)
: : : : : +- Project (1353)
: : : : : +- Scan parquet (1352)
: : : : +- BroadcastExchange (1362)
: : : : +- Exchange (1361)
: : : : +- Project (1360)
: : : : +- Filter (1359)
: : : : +- Scan parquet (1358)
: : : +- Sort (1411)
: : : +- Project (1410)
: : : +- Generate (1409)
: : : +- Project (1408)
: : : +- Generate (1407)
: : : +- Project (1406)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1405)
: : : :- Project (1399)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1398)
: : : : :- Project (1393)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1392)
: : : : : :- Exchange (1386)
: : : : : : +- Filter (1385)
: : : : : : +- Scan parquet (1384)
: : : : : +- BroadcastExchange (1391)
: : : : : +- Project (1390)
: : : : : +- Exchange (1389)
: : : : : +- Project (1388)
: : : : : +- Scan parquet (1387)
: : : : +- BroadcastExchange (1397)
: : : : +- Exchange (1396)
: : : : +- Project (1395)
: : : : +- Scan parquet (1394)
: : : +- BroadcastExchange (1404)
: : : +- Exchange (1403)
: : : +- Project (1402)
: : : +- Filter (1401)
: : : +- Scan parquet (1400)
: : +- Sort (1506)
: : +- Exchange (1505)
: : +- HashAggregate (1504)
: : +- HashAggregate (1503)
: : +- Project (1502)
: : +- SortMergeJoin Inner (1501)
: : :- Sort (1472)
: : : +- Exchange (1471)
: : : +- Project (1470)
: : : +- Filter (1469)
: : : +- Generate (1468)
: : : +- Filter (1467)
: : : +- ObjectHashAggregate (1466)
: : : +- ObjectHashAggregate (1465)
: : : +- Generate (1464)
: : : +- BroadcastHashJoin Inner BuildLeft (1463)
: : : :- BroadcastExchange (1420)
: : : : +- Exchange (1419)
: : : : +- Project (1418)
: : : : +- Filter (1417)
: : : : +- Scan parquet (1416)
: : : +- Project (1462)
: : : +- BroadcastHashJoin Inner BuildLeft (1461)
: : : :- BroadcastExchange (1430)
: : : : +- Project (1429)
: : : : +- Generate (1428)
: : : : +- Project (1427)
: : : : +- Filter (1426)
: : : : +- Generate (1425)
: : : : +- Exchange (1424)
: : : : +- Project (1423)
: : : : +- Filter (1422)
: : : : +- Scan parquet (1421)
: : : +- HashAggregate (1460)
: : : +- Exchange (1459)
: : : +- HashAggregate (1458)
: : : +- Project (1457)
: : : +- Generate (1456)
: : : +- Project (1455)
: : : +- Generate (1454)
: : : +- Project (1453)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1452)
: : : :- Project (1446)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1445)
: : : : :- Project (1440)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1439)
: : : : : :- Exchange (1433)
: : : : : : +- Filter (1432)
: : : : : : +- Scan parquet (1431)
: : : : : +- BroadcastExchange (1438)
: : : : : +- Project (1437)
: : : : : +- Exchange (1436)
: : : : : +- Project (1435)
: : : : : +- Scan parquet (1434)
: : : : +- BroadcastExchange (1444)
: : : : +- Exchange (1443)
: : : : +- Project (1442)
: : : : +- Scan parquet (1441)
: : : +- BroadcastExchange (1451)
: : : +- Exchange (1450)
: : : +- Project (1449)
: : : +- Filter (1448)
: : : +- Scan parquet (1447)
: : +- Sort (1500)
: : +- Project (1499)
: : +- Generate (1498)
: : +- Project (1497)
: : +- Generate (1496)
: : +- Project (1495)
: : +- BroadcastHashJoin LeftOuter BuildRight (1494)
: : :- Project (1488)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1487)
: : : :- Project (1482)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1481)
: : : : :- Exchange (1475)
: : : : : +- Filter (1474)
: : : : : +- Scan parquet (1473)
: : : : +- BroadcastExchange (1480)
: : : : +- Project (1479)
: : : : +- Exchange (1478)
: : : : +- Project (1477)
: : : : +- Scan parquet (1476)
: : : +- BroadcastExchange (1486)
: : : +- Exchange (1485)
: : : +- Project (1484)
: : : +- Scan parquet (1483)
: : +- BroadcastExchange (1493)
: : +- Exchange (1492)
: : +- Project (1491)
: : +- Filter (1490)
: : +- Scan parquet (1489)
: +- BroadcastExchange (1516)
: +- Filter (1515)
: +- Scan parquet (223)
+- Sort (1997)
+- Project (1996)
+- ObjectHashAggregate (1995)
+- Exchange (1994)
+- ObjectHashAggregate (1993)
+- Union (1992)
:- Filter (1530)
: +- InMemoryTableScan (245)
: +- InMemoryRelation (246)
: +- AdaptiveSparkPlan (1082)
+- == Final Plan ==
ResultQueryStage (1072)
+- * Filter (1071)
+- ObjectHashAggregate (1070)
+- ShuffleQueryStage (1069), Statistics(sizeInBytes=13.0 KiB, rowCount=41)
+- Exchange (1068)
+- ObjectHashAggregate (1067)
+- Project (1066)
+- Window (1065)
+- * Sort (1064)
+- AQEShuffleRead (1063)
+- ShuffleQueryStage (1062), Statistics(sizeInBytes=17.7 KiB, rowCount=41)
+- Exchange (1061)
+- * Project (1060)
+- TableCacheQueryStage (1059), Statistics(sizeInBytes=21.9 KiB, rowCount=41)
+- InMemoryTableScan (247)
+- InMemoryRelation (248)
+- AdaptiveSparkPlan (1058)
+- == Final Plan ==
ResultQueryStage (565)
+- Project (564)
+- * BroadcastHashJoin Inner BuildRight (563)
:- * Project (551)
: +- * BroadcastHashJoin Inner BuildLeft (550)
: :- BroadcastQueryStage (534), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (533)
: : +- AQEShuffleRead (532)
: : +- ShuffleQueryStage (531), Statistics(sizeInBytes=114.8 KiB, rowCount=980)
: : +- Exchange (530)
: : +- * Project (529)
: : +- * BroadcastHashJoin LeftOuter BuildRight (528)
: : :- AQEShuffleRead (422)
: : : +- ShuffleQueryStage (421), Statistics(sizeInBytes=114.8 KiB, rowCount=980)
: : : +- Exchange (420)
: : : +- * Project (419)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (418)
: : : :- * Project (286)
: : : : +- * Generate (285)
: : : : +- * Project (284)
: : : : +- * Generate (283)
: : : : +- Project (282)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (281)
: : : : :- * Project (272)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (271)
: : : : : :- * Project (263)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (262)
: : : : : : :- ShuffleQueryStage (253), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (252)
: : : : : : : +- * Filter (251)
: : : : : : : +- * ColumnarToRow (250)
: : : : : : : +- Scan parquet (249)
: : : : : : +- BroadcastQueryStage (261), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (260)
: : : : : : +- * Project (259)
: : : : : : +- ShuffleQueryStage (258), Statistics(sizeInBytes=339.5 KiB, rowCount=2.75E+3)
: : : : : : +- Exchange (257)
: : : : : : +- * Project (256)
: : : : : : +- * ColumnarToRow (255)
: : : : : : +- Scan parquet (254)
: : : : : +- BroadcastQueryStage (270), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- BroadcastExchange (269)
: : : : : +- ShuffleQueryStage (268), Statistics(sizeInBytes=4.4 KiB, rowCount=62)
: : : : : +- Exchange (267)
: : : : : +- * Project (266)
: : : : : +- * ColumnarToRow (265)
: : : : : +- Scan parquet (264)
: : : : +- BroadcastQueryStage (280), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- BroadcastExchange (279)
: : : : +- ShuffleQueryStage (278), Statistics(sizeInBytes=92.7 KiB, rowCount=159)
: : : : +- Exchange (277)
: : : : +- * Project (276)
: : : : +- * Filter (275)
: : : : +- * ColumnarToRow (274)
: : : : +- Scan parquet (273)
: : : +- BroadcastQueryStage (417), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (416)
: : : +- * HashAggregate (415)
: : : +- AQEShuffleRead (414)
: : : +- ShuffleQueryStage (413), Statistics(sizeInBytes=27.7 KiB, rowCount=295)
: : : +- Exchange (412)
: : : +- * HashAggregate (411)
: : : +- * Project (410)
: : : +- * BroadcastHashJoin Inner BuildLeft (409)
: : : :- BroadcastQueryStage (381), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : : +- BroadcastExchange (380)
: : : : +- AQEShuffleRead (379)
: : : : +- ShuffleQueryStage (378), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : : +- Exchange (377)
: : : : +- * Project (376)
: : : : +- * BroadcastHashJoin Inner BuildLeft (375)
: : : : :- BroadcastQueryStage (353), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : : +- BroadcastExchange (352)
: : : : : +- AQEShuffleRead (351)
: : : : : +- ShuffleQueryStage (350), Statistics(sizeInBytes=43.1 KiB, rowCount=394)
: : : : : +- Exchange (349)
: : : : : +- * Project (348)
: : : : : +- * Filter (347)
: : : : : +- * Generate (346)
: : : : : +- * Filter (345)
: : : : : +- ObjectHashAggregate (344)
: : : : : +- ObjectHashAggregate (343)
: : : : : +- Generate (342)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (341)
: : : : : :- BroadcastQueryStage (294), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- BroadcastExchange (293)
: : : : : : +- ShuffleQueryStage (292), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : : : +- Exchange (291)
: : : : : : +- * Project (290)
: : : : : : +- * Filter (289)
: : : : : : +- * ColumnarToRow (288)
: : : : : : +- Scan parquet (287)
: : : : : +- * Project (340)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (339)
: : : : : :- BroadcastQueryStage (307), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- BroadcastExchange (306)
: : : : : : +- * Project (305)
: : : : : : +- * Generate (304)
: : : : : : +- * Project (303)
: : : : : : +- * Filter (302)
: : : : : : +- * Generate (301)
: : : : : : +- ShuffleQueryStage (300), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : : : : : +- Exchange (299)
: : : : : : +- * Project (298)
: : : : : : +- * Filter (297)
: : : : : : +- * ColumnarToRow (296)
: : : : : : +- Scan parquet (295)
: : : : : +- * HashAggregate (338)
: : : : : +- AQEShuffleRead (337)
: : : : : +- ShuffleQueryStage (336), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: : : : : +- Exchange (335)
: : : : : +- * HashAggregate (334)
: : : : : +- * Project (333)
: : : : : +- * Generate (332)
: : : : : +- * Project (331)
: : : : : +- * Generate (330)
: : : : : +- Project (329)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (328)
: : : : : :- * Project (325)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (324)
: : : : : : :- * Project (316)
: : : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (315)
: : : : : : : :- ShuffleQueryStage (312), Statistics(sizeInBytes=84.2 KiB, rowCount=980)
: : : : : : : : +- Exchange (311)
: : : : : : : : +- * Filter (310)
: : : : : : : : +- * ColumnarToRow (309)
: : : : : : : : +- Scan parquet (308)
: : : : : : : +- BroadcastQueryStage (314), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : : +- ReusedExchange (313)
: : : : : : +- BroadcastQueryStage (323), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : : +- BroadcastExchange (322)
: : : : : : +- ShuffleQueryStage (321), Statistics(sizeInBytes=2.9 KiB, rowCount=62)
: : : : : : +- Exchange (320)
: : : : : : +- * Project (319)
: : : : : : +- * ColumnarToRow (318)
: : : : : : +- Scan parquet (317)
: : : : : +- BroadcastQueryStage (327), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : : +- ReusedExchange (326)
: : : : +- * Project (374)
: : : : +- * Generate (373)
: : : : +- * Project (372)
: : : : +- * Generate (371)
: : : : +- Project (370)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (369)
: : : : :- * Project (366)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (365)
: : : : : :- * Project (362)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (361)
: : : : : : :- ShuffleQueryStage (358), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (357)
: : : : : : : +- * Filter (356)
: : : : : : : +- * ColumnarToRow (355)
: : : : : : : +- Scan parquet (354)
: : : : : : +- BroadcastQueryStage (360), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- ReusedExchange (359)
: : : : : +- BroadcastQueryStage (364), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (363)
: : : : +- BroadcastQueryStage (368), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (367)
: : : +- AQEShuffleRead (408)
: : : +- ShuffleQueryStage (407), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : +- Exchange (406)
: : : +- * HashAggregate (405)
: : : +- * HashAggregate (404)
: : : +- * Project (403)
: : : +- * BroadcastHashJoin Inner BuildLeft (402)
: : : :- BroadcastQueryStage (383), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : +- ReusedExchange (382)
: : : +- * Project (401)
: : : +- * Generate (400)
: : : +- * Project (399)
: : : +- * Generate (398)
: : : +- Project (397)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (396)
: : : :- * Project (393)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (392)
: : : : :- * Project (389)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (388)
: : : : : :- ShuffleQueryStage (385), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : +- ReusedExchange (384)
: : : : : +- BroadcastQueryStage (387), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : +- ReusedExchange (386)
: : : : +- BroadcastQueryStage (391), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : +- ReusedExchange (390)
: : : +- BroadcastQueryStage (395), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : +- ReusedExchange (394)
: : +- BroadcastQueryStage (527), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (526)
: : +- AQEShuffleRead (525)
: : +- ShuffleQueryStage (524), Statistics(sizeInBytes=84.2 KiB, rowCount=980)
: : +- Exchange (523)
: : +- * SerializeFromObject (522)
: : +- * MapElements (521)
: : +- * DeserializeToObject (520)
: : +- ObjectHashAggregate (519)
: : +- ObjectHashAggregate (518)
: : +- * Project (517)
: : +- * BroadcastHashJoin LeftOuter BuildRight (516)
: : :- * Project (510)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (509)
: : : :- * Project (448)
: : : : +- * Project (447)
: : : : +- * Generate (446)
: : : : +- * Generate (445)
: : : : +- * Project (444)
: : : : +- Project (443)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (442)
: : : : :- * Project (439)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (438)
: : : : : :- * BroadcastHashJoin LeftOuter BuildRight (435)
: : : : : : :- ShuffleQueryStage (426), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (425)
: : : : : : : +- * ColumnarToRow (424)
: : : : : : : +- Scan parquet (423)
: : : : : : +- BroadcastQueryStage (434), Statistics(sizeInBytes=4.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (433)
: : : : : : +- * Project (432)
: : : : : : +- ShuffleQueryStage (431), Statistics(sizeInBytes=2.0 MiB, rowCount=2.75E+3)
: : : : : : +- Exchange (430)
: : : : : : +- * Project (429)
: : : : : : +- * ColumnarToRow (428)
: : : : : : +- Scan parquet (427)
: : : : : +- BroadcastQueryStage (437), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (436)
: : : : +- BroadcastQueryStage (441), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (440)
: : : +- BroadcastQueryStage (508), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (507)
: : : +- * HashAggregate (506)
: : : +- AQEShuffleRead (505)
: : : +- ShuffleQueryStage (504), Statistics(sizeInBytes=30.0 KiB, rowCount=295)
: : : +- Exchange (503)
: : : +- * HashAggregate (502)
: : : +- * Project (501)
: : : +- * BroadcastHashJoin Inner BuildRight (500)
: : : :- AQEShuffleRead (494)
: : : : +- ShuffleQueryStage (493), Statistics(sizeInBytes=34.6 KiB, rowCount=295)
: : : : +- Exchange (492)
: : : : +- * Project (491)
: : : : +- * BroadcastHashJoin Inner BuildLeft (490)
: : : : :- BroadcastQueryStage (471), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : : +- BroadcastExchange (470)
: : : : : +- AQEShuffleRead (469)
: : : : : +- ShuffleQueryStage (468), Statistics(sizeInBytes=46.2 KiB, rowCount=394)
: : : : : +- Exchange (467)
: : : : : +- * Project (466)
: : : : : +- * Filter (465)
: : : : : +- * Generate (464)
: : : : : +- * Filter (463)
: : : : : +- ObjectHashAggregate (462)
: : : : : +- ObjectHashAggregate (461)
: : : : : +- Generate (460)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (459)
: : : : : :- BroadcastQueryStage (450), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- ReusedExchange (449)
: : : : : +- * Project (458)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (457)
: : : : : :- BroadcastQueryStage (452), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- ReusedExchange (451)
: : : : : +- * HashAggregate (456)
: : : : : +- AQEShuffleRead (455)
: : : : : +- ShuffleQueryStage (454), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: : : : : +- ReusedExchange (453)
: : : : +- * Project (489)
: : : : +- * Generate (488)
: : : : +- * Project (487)
: : : : +- * Generate (486)
: : : : +- Project (485)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (484)
: : : : :- * Project (481)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (480)
: : : : : :- * Project (477)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (476)
: : : : : : :- ShuffleQueryStage (473), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- ReusedExchange (472)
: : : : : : +- BroadcastQueryStage (475), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- ReusedExchange (474)
: : : : : +- BroadcastQueryStage (479), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (478)
: : : : +- BroadcastQueryStage (483), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (482)
: : : +- BroadcastQueryStage (499), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (498)
: : : +- AQEShuffleRead (497)
: : : +- ShuffleQueryStage (496), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : +- ReusedExchange (495)
: : +- BroadcastQueryStage (515), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (514)
: : +- * Filter (513)
: : +- * ColumnarToRow (512)
: : +- Scan parquet (511)
: +- * Project (549)
: +- * BroadcastHashJoin Inner BuildLeft (548)
: :- BroadcastQueryStage (544), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : +- BroadcastExchange (543)
: : +- * Project (542)
: : +- * Filter (541)
: : +- * Generate (540)
: : +- * Project (539)
: : +- * Filter (538)
: : +- * Generate (537)
: : +- ShuffleQueryStage (536), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : +- ReusedExchange (535)
: +- * HashAggregate (547)
: +- ShuffleQueryStage (546), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: +- ReusedExchange (545)
+- BroadcastQueryStage (562), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
+- BroadcastExchange (561)
+- * Project (560)
+- * Filter (559)
+- * Generate (558)
+- ShuffleQueryStage (557), Statistics(sizeInBytes=29.9 KiB, rowCount=9)
+- Exchange (556)
+- * Project (555)
+- * Filter (554)
+- * ColumnarToRow (553)
+- Scan parquet (552)
+- == Initial Plan ==
Project (1057)
+- BroadcastHashJoin Inner BuildRight (1056)
:- Project (1048)
: +- SortMergeJoin Inner (1047)
: :- Sort (1002)
: : +- Exchange (1001)
: : +- Project (1000)
: : +- SortMergeJoin LeftOuter (999)
: : :- Sort (774)
: : : +- Exchange (773)
: : : +- Project (772)
: : : +- SortMergeJoin LeftOuter (771)
: : : :- Sort (589)
: : : : +- Project (588)
: : : : +- Generate (587)
: : : : +- Project (586)
: : : : +- Generate (585)
: : : : +- Project (584)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (583)
: : : : :- Project (578)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (577)
: : : : : :- Project (573)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (572)
: : : : : : :- Exchange (567)
: : : : : : : +- Filter (566)
: : : : : : : +- Scan parquet (249)
: : : : : : +- BroadcastExchange (571)
: : : : : : +- Project (570)
: : : : : : +- Exchange (569)
: : : : : : +- Project (568)
: : : : : : +- Scan parquet (254)
: : : : : +- BroadcastExchange (576)
: : : : : +- Exchange (575)
: : : : : +- Project (574)
: : : : : +- Scan parquet (264)
: : : : +- BroadcastExchange (582)
: : : : +- Exchange (581)
: : : : +- Project (580)
: : : : +- Filter (579)
: : : : +- Scan parquet (273)
: : : +- Sort (770)
: : : +- HashAggregate (769)
: : : +- Exchange (768)
: : : +- HashAggregate (767)
: : : +- Project (766)
: : : +- SortMergeJoin Inner (765)
: : : :- Sort (673)
: : : : +- Exchange (672)
: : : : +- Project (671)
: : : : +- SortMergeJoin Inner (670)
: : : : :- Sort (642)
: : : : : +- Exchange (641)
: : : : : +- Project (640)
: : : : : +- Filter (639)
: : : : : +- Generate (638)
: : : : : +- Filter (637)
: : : : : +- ObjectHashAggregate (636)
: : : : : +- ObjectHashAggregate (635)
: : : : : +- Generate (634)
: : : : : +- BroadcastHashJoin Inner BuildLeft (633)
: : : : : :- BroadcastExchange (593)
: : : : : : +- Exchange (592)
: : : : : : +- Project (591)
: : : : : : +- Filter (590)
: : : : : : +- Scan parquet (287)
: : : : : +- Project (632)
: : : : : +- BroadcastHashJoin Inner BuildLeft (631)
: : : : : :- BroadcastExchange (602)
: : : : : : +- Project (601)
: : : : : : +- Generate (600)
: : : : : : +- Project (599)
: : : : : : +- Filter (598)
: : : : : : +- Generate (597)
: : : : : : +- Exchange (596)
: : : : : : +- Project (595)
: : : : : : +- Filter (594)
: : : : : : +- Scan parquet (295)
: : : : : +- HashAggregate (630)
: : : : : +- Exchange (629)
: : : : : +- HashAggregate (628)
: : : : : +- Project (627)
: : : : : +- Generate (626)
: : : : : +- Project (625)
: : : : : +- Generate (624)
: : : : : +- Project (623)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (622)
: : : : : :- Project (616)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (615)
: : : : : : :- Project (611)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (610)
: : : : : : : :- Exchange (604)
: : : : : : : : +- Filter (603)
: : : : : : : : +- Scan parquet (308)
: : : : : : : +- BroadcastExchange (609)
: : : : : : : +- Project (608)
: : : : : : : +- Exchange (607)
: : : : : : : +- Project (606)
: : : : : : : +- Scan parquet (605)
: : : : : : +- BroadcastExchange (614)
: : : : : : +- Exchange (613)
: : : : : : +- Project (612)
: : : : : : +- Scan parquet (317)
: : : : : +- BroadcastExchange (621)
: : : : : +- Exchange (620)
: : : : : +- Project (619)
: : : : : +- Filter (618)
: : : : : +- Scan parquet (617)
: : : : +- Sort (669)
: : : : +- Project (668)
: : : : +- Generate (667)
: : : : +- Project (666)
: : : : +- Generate (665)
: : : : +- Project (664)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (663)
: : : : :- Project (657)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (656)
: : : : : :- Project (651)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (650)
: : : : : : :- Exchange (644)
: : : : : : : +- Filter (643)
: : : : : : : +- Scan parquet (354)
: : : : : : +- BroadcastExchange (649)
: : : : : : +- Project (648)
: : : : : : +- Exchange (647)
: : : : : : +- Project (646)
: : : : : : +- Scan parquet (645)
: : : : : +- BroadcastExchange (655)
: : : : : +- Exchange (654)
: : : : : +- Project (653)
: : : : : +- Scan parquet (652)
: : : : +- BroadcastExchange (662)
: : : : +- Exchange (661)
: : : : +- Project (660)
: : : : +- Filter (659)
: : : : +- Scan parquet (658)
: : : +- Sort (764)
: : : +- Exchange (763)
: : : +- HashAggregate (762)
: : : +- HashAggregate (761)
: : : +- Project (760)
: : : +- SortMergeJoin Inner (759)
: : : :- Sort (730)
: : : : +- Exchange (729)
: : : : +- Project (728)
: : : : +- Filter (727)
: : : : +- Generate (726)
: : : : +- Filter (725)
: : : : +- ObjectHashAggregate (724)
: : : : +- ObjectHashAggregate (723)
: : : : +- Generate (722)
: : : : +- BroadcastHashJoin Inner BuildLeft (721)
: : : : :- BroadcastExchange (678)
: : : : : +- Exchange (677)
: : : : : +- Project (676)
: : : : : +- Filter (675)
: : : : : +- Scan parquet (674)
: : : : +- Project (720)
: : : : +- BroadcastHashJoin Inner BuildLeft (719)
: : : : :- BroadcastExchange (688)
: : : : : +- Project (687)
: : : : : +- Generate (686)
: : : : : +- Project (685)
: : : : : +- Filter (684)
: : : : : +- Generate (683)
: : : : : +- Exchange (682)
: : : : : +- Project (681)
: : : : : +- Filter (680)
: : : : : +- Scan parquet (679)
: : : : +- HashAggregate (718)
: : : : +- Exchange (717)
: : : : +- HashAggregate (716)
: : : : +- Project (715)
: : : : +- Generate (714)
: : : : +- Project (713)
: : : : +- Generate (712)
: : : : +- Project (711)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (710)
: : : : :- Project (704)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (703)
: : : : : :- Project (698)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (697)
: : : : : : :- Exchange (691)
: : : : : : : +- Filter (690)
: : : : : : : +- Scan parquet (689)
: : : : : : +- BroadcastExchange (696)
: : : : : : +- Project (695)
: : : : : : +- Exchange (694)
: : : : : : +- Project (693)
: : : : : : +- Scan parquet (692)
: : : : : +- BroadcastExchange (702)
: : : : : +- Exchange (701)
: : : : : +- Project (700)
: : : : : +- Scan parquet (699)
: : : : +- BroadcastExchange (709)
: : : : +- Exchange (708)
: : : : +- Project (707)
: : : : +- Filter (706)
: : : : +- Scan parquet (705)
: : : +- Sort (758)
: : : +- Project (757)
: : : +- Generate (756)
: : : +- Project (755)
: : : +- Generate (754)
: : : +- Project (753)
: : : +- BroadcastHashJoin LeftOuter BuildRight (752)
: : : :- Project (746)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (745)
: : : : :- Project (740)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (739)
: : : : : :- Exchange (733)
: : : : : : +- Filter (732)
: : : : : : +- Scan parquet (731)
: : : : : +- BroadcastExchange (738)
: : : : : +- Project (737)
: : : : : +- Exchange (736)
: : : : : +- Project (735)
: : : : : +- Scan parquet (734)
: : : : +- BroadcastExchange (744)
: : : : +- Exchange (743)
: : : : +- Project (742)
: : : : +- Scan parquet (741)
: : : +- BroadcastExchange (751)
: : : +- Exchange (750)
: : : +- Project (749)
: : : +- Filter (748)
: : : +- Scan parquet (747)
: : +- Sort (998)
: : +- Exchange (997)
: : +- SerializeFromObject (996)
: : +- MapElements (995)
: : +- DeserializeToObject (994)
: : +- ObjectHashAggregate (993)
: : +- ObjectHashAggregate (992)
: : +- Project (991)
: : +- BroadcastHashJoin LeftOuter BuildRight (990)
: : :- Project (987)
: : : +- SortMergeJoin LeftOuter (986)
: : : :- Sort (799)
: : : : +- Project (798)
: : : : +- Project (797)
: : : : +- Generate (796)
: : : : +- Generate (795)
: : : : +- Project (794)
: : : : +- Project (793)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (792)
: : : : :- Project (786)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (785)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (780)
: : : : : : :- Exchange (775)
: : : : : : : +- Scan parquet (423)
: : : : : : +- BroadcastExchange (779)
: : : : : : +- Project (778)
: : : : : : +- Exchange (777)
: : : : : : +- Project (776)
: : : : : : +- Scan parquet (427)
: : : : : +- BroadcastExchange (784)
: : : : : +- Exchange (783)
: : : : : +- Project (782)
: : : : : +- Scan parquet (781)
: : : : +- BroadcastExchange (791)
: : : : +- Exchange (790)
: : : : +- Project (789)
: : : : +- Filter (788)
: : : : +- Scan parquet (787)
: : : +- Sort (985)
: : : +- HashAggregate (984)
: : : +- Exchange (983)
: : : +- HashAggregate (982)
: : : +- Project (981)
: : : +- SortMergeJoin Inner (980)
: : : :- Sort (888)
: : : : +- Exchange (887)
: : : : +- Project (886)
: : : : +- SortMergeJoin Inner (885)
: : : : :- Sort (856)
: : : : : +- Exchange (855)
: : : : : +- Project (854)
: : : : : +- Filter (853)
: : : : : +- Generate (852)
: : : : : +- Filter (851)
: : : : : +- ObjectHashAggregate (850)
: : : : : +- ObjectHashAggregate (849)
: : : : : +- Generate (848)
: : : : : +- BroadcastHashJoin Inner BuildLeft (847)
: : : : : :- BroadcastExchange (804)
: : : : : : +- Exchange (803)
: : : : : : +- Project (802)
: : : : : : +- Filter (801)
: : : : : : +- Scan parquet (800)
: : : : : +- Project (846)
: : : : : +- BroadcastHashJoin Inner BuildLeft (845)
: : : : : :- BroadcastExchange (814)
: : : : : : +- Project (813)
: : : : : : +- Generate (812)
: : : : : : +- Project (811)
: : : : : : +- Filter (810)
: : : : : : +- Generate (809)
: : : : : : +- Exchange (808)
: : : : : : +- Project (807)
: : : : : : +- Filter (806)
: : : : : : +- Scan parquet (805)
: : : : : +- HashAggregate (844)
: : : : : +- Exchange (843)
: : : : : +- HashAggregate (842)
: : : : : +- Project (841)
: : : : : +- Generate (840)
: : : : : +- Project (839)
: : : : : +- Generate (838)
: : : : : +- Project (837)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (836)
: : : : : :- Project (830)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (829)
: : : : : : :- Project (824)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (823)
: : : : : : : :- Exchange (817)
: : : : : : : : +- Filter (816)
: : : : : : : : +- Scan parquet (815)
: : : : : : : +- BroadcastExchange (822)
: : : : : : : +- Project (821)
: : : : : : : +- Exchange (820)
: : : : : : : +- Project (819)
: : : : : : : +- Scan parquet (818)
: : : : : : +- BroadcastExchange (828)
: : : : : : +- Exchange (827)
: : : : : : +- Project (826)
: : : : : : +- Scan parquet (825)
: : : : : +- BroadcastExchange (835)
: : : : : +- Exchange (834)
: : : : : +- Project (833)
: : : : : +- Filter (832)
: : : : : +- Scan parquet (831)
: : : : +- Sort (884)
: : : : +- Project (883)
: : : : +- Generate (882)
: : : : +- Project (881)
: : : : +- Generate (880)
: : : : +- Project (879)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (878)
: : : : :- Project (872)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (871)
: : : : : :- Project (866)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (865)
: : : : : : :- Exchange (859)
: : : : : : : +- Filter (858)
: : : : : : : +- Scan parquet (857)
: : : : : : +- BroadcastExchange (864)
: : : : : : +- Project (863)
: : : : : : +- Exchange (862)
: : : : : : +- Project (861)
: : : : : : +- Scan parquet (860)
: : : : : +- BroadcastExchange (870)
: : : : : +- Exchange (869)
: : : : : +- Project (868)
: : : : : +- Scan parquet (867)
: : : : +- BroadcastExchange (877)
: : : : +- Exchange (876)
: : : : +- Project (875)
: : : : +- Filter (874)
: : : : +- Scan parquet (873)
: : : +- Sort (979)
: : : +- Exchange (978)
: : : +- HashAggregate (977)
: : : +- HashAggregate (976)
: : : +- Project (975)
: : : +- SortMergeJoin Inner (974)
: : : :- Sort (945)
: : : : +- Exchange (944)
: : : : +- Project (943)
: : : : +- Filter (942)
: : : : +- Generate (941)
: : : : +- Filter (940)
: : : : +- ObjectHashAggregate (939)
: : : : +- ObjectHashAggregate (938)
: : : : +- Generate (937)
: : : : +- BroadcastHashJoin Inner BuildLeft (936)
: : : : :- BroadcastExchange (893)
: : : : : +- Exchange (892)
: : : : : +- Project (891)
: : : : : +- Filter (890)
: : : : : +- Scan parquet (889)
: : : : +- Project (935)
: : : : +- BroadcastHashJoin Inner BuildLeft (934)
: : : : :- BroadcastExchange (903)
: : : : : +- Project (902)
: : : : : +- Generate (901)
: : : : : +- Project (900)
: : : : : +- Filter (899)
: : : : : +- Generate (898)
: : : : : +- Exchange (897)
: : : : : +- Project (896)
: : : : : +- Filter (895)
: : : : : +- Scan parquet (894)
: : : : +- HashAggregate (933)
: : : : +- Exchange (932)
: : : : +- HashAggregate (931)
: : : : +- Project (930)
: : : : +- Generate (929)
: : : : +- Project (928)
: : : : +- Generate (927)
: : : : +- Project (926)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (925)
: : : : :- Project (919)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (918)
: : : : : :- Project (913)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (912)
: : : : : : :- Exchange (906)
: : : : : : : +- Filter (905)
: : : : : : : +- Scan parquet (904)
: : : : : : +- BroadcastExchange (911)
: : : : : : +- Project (910)
: : : : : : +- Exchange (909)
: : : : : : +- Project (908)
: : : : : : +- Scan parquet (907)
: : : : : +- BroadcastExchange (917)
: : : : : +- Exchange (916)
: : : : : +- Project (915)
: : : : : +- Scan parquet (914)
: : : : +- BroadcastExchange (924)
: : : : +- Exchange (923)
: : : : +- Project (922)
: : : : +- Filter (921)
: : : : +- Scan parquet (920)
: : : +- Sort (973)
: : : +- Project (972)
: : : +- Generate (971)
: : : +- Project (970)
: : : +- Generate (969)
: : : +- Project (968)
: : : +- BroadcastHashJoin LeftOuter BuildRight (967)
: : : :- Project (961)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (960)
: : : : :- Project (955)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (954)
: : : : : :- Exchange (948)
: : : : : : +- Filter (947)
: : : : : : +- Scan parquet (946)
: : : : : +- BroadcastExchange (953)
: : : : : +- Project (952)
: : : : : +- Exchange (951)
: : : : : +- Project (950)
: : : : : +- Scan parquet (949)
: : : : +- BroadcastExchange (959)
: : : : +- Exchange (958)
: : : : +- Project (957)
: : : : +- Scan parquet (956)
: : : +- BroadcastExchange (966)
: : : +- Exchange (965)
: : : +- Project (964)
: : : +- Filter (963)
: : : +- Scan parquet (962)
: : +- BroadcastExchange (989)
: : +- Filter (988)
: : +- Scan parquet (511)
: +- Sort (1046)
: +- Project (1045)
: +- BroadcastHashJoin Inner BuildLeft (1044)
: :- BroadcastExchange (1013)
: : +- Project (1012)
: : +- Filter (1011)
: : +- Generate (1010)
: : +- Project (1009)
: : +- Filter (1008)
: : +- Generate (1007)
: : +- Exchange (1006)
: : +- Project (1005)
: : +- Filter (1004)
: : +- Scan parquet (1003)
: +- HashAggregate (1043)
: +- Exchange (1042)
: +- HashAggregate (1041)
: +- Project (1040)
: +- Generate (1039)
: +- Project (1038)
: +- Generate (1037)
: +- Project (1036)
: +- BroadcastHashJoin LeftOuter BuildRight (1035)
: :- Project (1029)
: : +- BroadcastHashJoin LeftOuter BuildRight (1028)
: : :- Project (1023)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1022)
: : : :- Exchange (1016)
: : : : +- Filter (1015)
: : : : +- Scan parquet (1014)
: : : +- BroadcastExchange (1021)
: : : +- Project (1020)
: : : +- Exchange (1019)
: : : +- Project (1018)
: : : +- Scan parquet (1017)
: : +- BroadcastExchange (1027)
: : +- Exchange (1026)
: : +- Project (1025)
: : +- Scan parquet (1024)
: +- BroadcastExchange (1034)
: +- Exchange (1033)
: +- Project (1032)
: +- Filter (1031)
: +- Scan parquet (1030)
+- BroadcastExchange (1055)
+- Project (1054)
+- Filter (1053)
+- Generate (1052)
+- Exchange (1051)
+- Project (1050)
+- Filter (1049)
+- Scan parquet (552)
+- == Initial Plan ==
Filter (1081)
+- ObjectHashAggregate (1080)
+- Exchange (1079)
+- ObjectHashAggregate (1078)
+- Project (1077)
+- Window (1076)
+- Sort (1075)
+- Exchange (1074)
+- Project (1073)
+- InMemoryTableScan (247)
+- InMemoryRelation (248)
+- AdaptiveSparkPlan (1058)
+- == Final Plan ==
ResultQueryStage (565)
+- Project (564)
+- * BroadcastHashJoin Inner BuildRight (563)
:- * Project (551)
: +- * BroadcastHashJoin Inner BuildLeft (550)
: :- BroadcastQueryStage (534), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (533)
: : +- AQEShuffleRead (532)
: : +- ShuffleQueryStage (531), Statistics(sizeInBytes=114.8 KiB, rowCount=980)
: : +- Exchange (530)
: : +- * Project (529)
: : +- * BroadcastHashJoin LeftOuter BuildRight (528)
: : :- AQEShuffleRead (422)
: : : +- ShuffleQueryStage (421), Statistics(sizeInBytes=114.8 KiB, rowCount=980)
: : : +- Exchange (420)
: : : +- * Project (419)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (418)
: : : :- * Project (286)
: : : : +- * Generate (285)
: : : : +- * Project (284)
: : : : +- * Generate (283)
: : : : +- Project (282)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (281)
: : : : :- * Project (272)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (271)
: : : : : :- * Project (263)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (262)
: : : : : : :- ShuffleQueryStage (253), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (252)
: : : : : : : +- * Filter (251)
: : : : : : : +- * ColumnarToRow (250)
: : : : : : : +- Scan parquet (249)
: : : : : : +- BroadcastQueryStage (261), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (260)
: : : : : : +- * Project (259)
: : : : : : +- ShuffleQueryStage (258), Statistics(sizeInBytes=339.5 KiB, rowCount=2.75E+3)
: : : : : : +- Exchange (257)
: : : : : : +- * Project (256)
: : : : : : +- * ColumnarToRow (255)
: : : : : : +- Scan parquet (254)
: : : : : +- BroadcastQueryStage (270), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- BroadcastExchange (269)
: : : : : +- ShuffleQueryStage (268), Statistics(sizeInBytes=4.4 KiB, rowCount=62)
: : : : : +- Exchange (267)
: : : : : +- * Project (266)
: : : : : +- * ColumnarToRow (265)
: : : : : +- Scan parquet (264)
: : : : +- BroadcastQueryStage (280), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- BroadcastExchange (279)
: : : : +- ShuffleQueryStage (278), Statistics(sizeInBytes=92.7 KiB, rowCount=159)
: : : : +- Exchange (277)
: : : : +- * Project (276)
: : : : +- * Filter (275)
: : : : +- * ColumnarToRow (274)
: : : : +- Scan parquet (273)
: : : +- BroadcastQueryStage (417), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (416)
: : : +- * HashAggregate (415)
: : : +- AQEShuffleRead (414)
: : : +- ShuffleQueryStage (413), Statistics(sizeInBytes=27.7 KiB, rowCount=295)
: : : +- Exchange (412)
: : : +- * HashAggregate (411)
: : : +- * Project (410)
: : : +- * BroadcastHashJoin Inner BuildLeft (409)
: : : :- BroadcastQueryStage (381), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : : +- BroadcastExchange (380)
: : : : +- AQEShuffleRead (379)
: : : : +- ShuffleQueryStage (378), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : : +- Exchange (377)
: : : : +- * Project (376)
: : : : +- * BroadcastHashJoin Inner BuildLeft (375)
: : : : :- BroadcastQueryStage (353), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : : +- BroadcastExchange (352)
: : : : : +- AQEShuffleRead (351)
: : : : : +- ShuffleQueryStage (350), Statistics(sizeInBytes=43.1 KiB, rowCount=394)
: : : : : +- Exchange (349)
: : : : : +- * Project (348)
: : : : : +- * Filter (347)
: : : : : +- * Generate (346)
: : : : : +- * Filter (345)
: : : : : +- ObjectHashAggregate (344)
: : : : : +- ObjectHashAggregate (343)
: : : : : +- Generate (342)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (341)
: : : : : :- BroadcastQueryStage (294), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- BroadcastExchange (293)
: : : : : : +- ShuffleQueryStage (292), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : : : +- Exchange (291)
: : : : : : +- * Project (290)
: : : : : : +- * Filter (289)
: : : : : : +- * ColumnarToRow (288)
: : : : : : +- Scan parquet (287)
: : : : : +- * Project (340)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (339)
: : : : : :- BroadcastQueryStage (307), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- BroadcastExchange (306)
: : : : : : +- * Project (305)
: : : : : : +- * Generate (304)
: : : : : : +- * Project (303)
: : : : : : +- * Filter (302)
: : : : : : +- * Generate (301)
: : : : : : +- ShuffleQueryStage (300), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : : : : : +- Exchange (299)
: : : : : : +- * Project (298)
: : : : : : +- * Filter (297)
: : : : : : +- * ColumnarToRow (296)
: : : : : : +- Scan parquet (295)
: : : : : +- * HashAggregate (338)
: : : : : +- AQEShuffleRead (337)
: : : : : +- ShuffleQueryStage (336), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: : : : : +- Exchange (335)
: : : : : +- * HashAggregate (334)
: : : : : +- * Project (333)
: : : : : +- * Generate (332)
: : : : : +- * Project (331)
: : : : : +- * Generate (330)
: : : : : +- Project (329)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (328)
: : : : : :- * Project (325)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (324)
: : : : : : :- * Project (316)
: : : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (315)
: : : : : : : :- ShuffleQueryStage (312), Statistics(sizeInBytes=84.2 KiB, rowCount=980)
: : : : : : : : +- Exchange (311)
: : : : : : : : +- * Filter (310)
: : : : : : : : +- * ColumnarToRow (309)
: : : : : : : : +- Scan parquet (308)
: : : : : : : +- BroadcastQueryStage (314), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : : +- ReusedExchange (313)
: : : : : : +- BroadcastQueryStage (323), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : : +- BroadcastExchange (322)
: : : : : : +- ShuffleQueryStage (321), Statistics(sizeInBytes=2.9 KiB, rowCount=62)
: : : : : : +- Exchange (320)
: : : : : : +- * Project (319)
: : : : : : +- * ColumnarToRow (318)
: : : : : : +- Scan parquet (317)
: : : : : +- BroadcastQueryStage (327), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : : +- ReusedExchange (326)
: : : : +- * Project (374)
: : : : +- * Generate (373)
: : : : +- * Project (372)
: : : : +- * Generate (371)
: : : : +- Project (370)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (369)
: : : : :- * Project (366)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (365)
: : : : : :- * Project (362)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (361)
: : : : : : :- ShuffleQueryStage (358), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (357)
: : : : : : : +- * Filter (356)
: : : : : : : +- * ColumnarToRow (355)
: : : : : : : +- Scan parquet (354)
: : : : : : +- BroadcastQueryStage (360), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- ReusedExchange (359)
: : : : : +- BroadcastQueryStage (364), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (363)
: : : : +- BroadcastQueryStage (368), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (367)
: : : +- AQEShuffleRead (408)
: : : +- ShuffleQueryStage (407), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : +- Exchange (406)
: : : +- * HashAggregate (405)
: : : +- * HashAggregate (404)
: : : +- * Project (403)
: : : +- * BroadcastHashJoin Inner BuildLeft (402)
: : : :- BroadcastQueryStage (383), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : +- ReusedExchange (382)
: : : +- * Project (401)
: : : +- * Generate (400)
: : : +- * Project (399)
: : : +- * Generate (398)
: : : +- Project (397)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (396)
: : : :- * Project (393)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (392)
: : : : :- * Project (389)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (388)
: : : : : :- ShuffleQueryStage (385), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : +- ReusedExchange (384)
: : : : : +- BroadcastQueryStage (387), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : +- ReusedExchange (386)
: : : : +- BroadcastQueryStage (391), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : +- ReusedExchange (390)
: : : +- BroadcastQueryStage (395), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : +- ReusedExchange (394)
: : +- BroadcastQueryStage (527), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (526)
: : +- AQEShuffleRead (525)
: : +- ShuffleQueryStage (524), Statistics(sizeInBytes=84.2 KiB, rowCount=980)
: : +- Exchange (523)
: : +- * SerializeFromObject (522)
: : +- * MapElements (521)
: : +- * DeserializeToObject (520)
: : +- ObjectHashAggregate (519)
: : +- ObjectHashAggregate (518)
: : +- * Project (517)
: : +- * BroadcastHashJoin LeftOuter BuildRight (516)
: : :- * Project (510)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (509)
: : : :- * Project (448)
: : : : +- * Project (447)
: : : : +- * Generate (446)
: : : : +- * Generate (445)
: : : : +- * Project (444)
: : : : +- Project (443)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (442)
: : : : :- * Project (439)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (438)
: : : : : :- * BroadcastHashJoin LeftOuter BuildRight (435)
: : : : : : :- ShuffleQueryStage (426), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (425)
: : : : : : : +- * ColumnarToRow (424)
: : : : : : : +- Scan parquet (423)
: : : : : : +- BroadcastQueryStage (434), Statistics(sizeInBytes=4.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (433)
: : : : : : +- * Project (432)
: : : : : : +- ShuffleQueryStage (431), Statistics(sizeInBytes=2.0 MiB, rowCount=2.75E+3)
: : : : : : +- Exchange (430)
: : : : : : +- * Project (429)
: : : : : : +- * ColumnarToRow (428)
: : : : : : +- Scan parquet (427)
: : : : : +- BroadcastQueryStage (437), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (436)
: : : : +- BroadcastQueryStage (441), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (440)
: : : +- BroadcastQueryStage (508), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (507)
: : : +- * HashAggregate (506)
: : : +- AQEShuffleRead (505)
: : : +- ShuffleQueryStage (504), Statistics(sizeInBytes=30.0 KiB, rowCount=295)
: : : +- Exchange (503)
: : : +- * HashAggregate (502)
: : : +- * Project (501)
: : : +- * BroadcastHashJoin Inner BuildRight (500)
: : : :- AQEShuffleRead (494)
: : : : +- ShuffleQueryStage (493), Statistics(sizeInBytes=34.6 KiB, rowCount=295)
: : : : +- Exchange (492)
: : : : +- * Project (491)
: : : : +- * BroadcastHashJoin Inner BuildLeft (490)
: : : : :- BroadcastQueryStage (471), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : : +- BroadcastExchange (470)
: : : : : +- AQEShuffleRead (469)
: : : : : +- ShuffleQueryStage (468), Statistics(sizeInBytes=46.2 KiB, rowCount=394)
: : : : : +- Exchange (467)
: : : : : +- * Project (466)
: : : : : +- * Filter (465)
: : : : : +- * Generate (464)
: : : : : +- * Filter (463)
: : : : : +- ObjectHashAggregate (462)
: : : : : +- ObjectHashAggregate (461)
: : : : : +- Generate (460)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (459)
: : : : : :- BroadcastQueryStage (450), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- ReusedExchange (449)
: : : : : +- * Project (458)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (457)
: : : : : :- BroadcastQueryStage (452), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- ReusedExchange (451)
: : : : : +- * HashAggregate (456)
: : : : : +- AQEShuffleRead (455)
: : : : : +- ShuffleQueryStage (454), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: : : : : +- ReusedExchange (453)
: : : : +- * Project (489)
: : : : +- * Generate (488)
: : : : +- * Project (487)
: : : : +- * Generate (486)
: : : : +- Project (485)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (484)
: : : : :- * Project (481)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (480)
: : : : : :- * Project (477)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (476)
: : : : : : :- ShuffleQueryStage (473), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- ReusedExchange (472)
: : : : : : +- BroadcastQueryStage (475), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- ReusedExchange (474)
: : : : : +- BroadcastQueryStage (479), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (478)
: : : : +- BroadcastQueryStage (483), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (482)
: : : +- BroadcastQueryStage (499), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (498)
: : : +- AQEShuffleRead (497)
: : : +- ShuffleQueryStage (496), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : +- ReusedExchange (495)
: : +- BroadcastQueryStage (515), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (514)
: : +- * Filter (513)
: : +- * ColumnarToRow (512)
: : +- Scan parquet (511)
: +- * Project (549)
: +- * BroadcastHashJoin Inner BuildLeft (548)
: :- BroadcastQueryStage (544), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : +- BroadcastExchange (543)
: : +- * Project (542)
: : +- * Filter (541)
: : +- * Generate (540)
: : +- * Project (539)
: : +- * Filter (538)
: : +- * Generate (537)
: : +- ShuffleQueryStage (536), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : +- ReusedExchange (535)
: +- * HashAggregate (547)
: +- ShuffleQueryStage (546), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: +- ReusedExchange (545)
+- BroadcastQueryStage (562), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
+- BroadcastExchange (561)
+- * Project (560)
+- * Filter (559)
+- * Generate (558)
+- ShuffleQueryStage (557), Statistics(sizeInBytes=29.9 KiB, rowCount=9)
+- Exchange (556)
+- * Project (555)
+- * Filter (554)
+- * ColumnarToRow (553)
+- Scan parquet (552)
+- == Initial Plan ==
Project (1057)
+- BroadcastHashJoin Inner BuildRight (1056)
:- Project (1048)
: +- SortMergeJoin Inner (1047)
: :- Sort (1002)
: : +- Exchange (1001)
: : +- Project (1000)
: : +- SortMergeJoin LeftOuter (999)
: : :- Sort (774)
: : : +- Exchange (773)
: : : +- Project (772)
: : : +- SortMergeJoin LeftOuter (771)
: : : :- Sort (589)
: : : : +- Project (588)
: : : : +- Generate (587)
: : : : +- Project (586)
: : : : +- Generate (585)
: : : : +- Project (584)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (583)
: : : : :- Project (578)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (577)
: : : : : :- Project (573)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (572)
: : : : : : :- Exchange (567)
: : : : : : : +- Filter (566)
: : : : : : : +- Scan parquet (249)
: : : : : : +- BroadcastExchange (571)
: : : : : : +- Project (570)
: : : : : : +- Exchange (569)
: : : : : : +- Project (568)
: : : : : : +- Scan parquet (254)
: : : : : +- BroadcastExchange (576)
: : : : : +- Exchange (575)
: : : : : +- Project (574)
: : : : : +- Scan parquet (264)
: : : : +- BroadcastExchange (582)
: : : : +- Exchange (581)
: : : : +- Project (580)
: : : : +- Filter (579)
: : : : +- Scan parquet (273)
: : : +- Sort (770)
: : : +- HashAggregate (769)
: : : +- Exchange (768)
: : : +- HashAggregate (767)
: : : +- Project (766)
: : : +- SortMergeJoin Inner (765)
: : : :- Sort (673)
: : : : +- Exchange (672)
: : : : +- Project (671)
: : : : +- SortMergeJoin Inner (670)
: : : : :- Sort (642)
: : : : : +- Exchange (641)
: : : : : +- Project (640)
: : : : : +- Filter (639)
: : : : : +- Generate (638)
: : : : : +- Filter (637)
: : : : : +- ObjectHashAggregate (636)
: : : : : +- ObjectHashAggregate (635)
: : : : : +- Generate (634)
: : : : : +- BroadcastHashJoin Inner BuildLeft (633)
: : : : : :- BroadcastExchange (593)
: : : : : : +- Exchange (592)
: : : : : : +- Project (591)
: : : : : : +- Filter (590)
: : : : : : +- Scan parquet (287)
: : : : : +- Project (632)
: : : : : +- BroadcastHashJoin Inner BuildLeft (631)
: : : : : :- BroadcastExchange (602)
: : : : : : +- Project (601)
: : : : : : +- Generate (600)
: : : : : : +- Project (599)
: : : : : : +- Filter (598)
: : : : : : +- Generate (597)
: : : : : : +- Exchange (596)
: : : : : : +- Project (595)
: : : : : : +- Filter (594)
: : : : : : +- Scan parquet (295)
: : : : : +- HashAggregate (630)
: : : : : +- Exchange (629)
: : : : : +- HashAggregate (628)
: : : : : +- Project (627)
: : : : : +- Generate (626)
: : : : : +- Project (625)
: : : : : +- Generate (624)
: : : : : +- Project (623)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (622)
: : : : : :- Project (616)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (615)
: : : : : : :- Project (611)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (610)
: : : : : : : :- Exchange (604)
: : : : : : : : +- Filter (603)
: : : : : : : : +- Scan parquet (308)
: : : : : : : +- BroadcastExchange (609)
: : : : : : : +- Project (608)
: : : : : : : +- Exchange (607)
: : : : : : : +- Project (606)
: : : : : : : +- Scan parquet (605)
: : : : : : +- BroadcastExchange (614)
: : : : : : +- Exchange (613)
: : : : : : +- Project (612)
: : : : : : +- Scan parquet (317)
: : : : : +- BroadcastExchange (621)
: : : : : +- Exchange (620)
: : : : : +- Project (619)
: : : : : +- Filter (618)
: : : : : +- Scan parquet (617)
: : : : +- Sort (669)
: : : : +- Project (668)
: : : : +- Generate (667)
: : : : +- Project (666)
: : : : +- Generate (665)
: : : : +- Project (664)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (663)
: : : : :- Project (657)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (656)
: : : : : :- Project (651)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (650)
: : : : : : :- Exchange (644)
: : : : : : : +- Filter (643)
: : : : : : : +- Scan parquet (354)
: : : : : : +- BroadcastExchange (649)
: : : : : : +- Project (648)
: : : : : : +- Exchange (647)
: : : : : : +- Project (646)
: : : : : : +- Scan parquet (645)
: : : : : +- BroadcastExchange (655)
: : : : : +- Exchange (654)
: : : : : +- Project (653)
: : : : : +- Scan parquet (652)
: : : : +- BroadcastExchange (662)
: : : : +- Exchange (661)
: : : : +- Project (660)
: : : : +- Filter (659)
: : : : +- Scan parquet (658)
: : : +- Sort (764)
: : : +- Exchange (763)
: : : +- HashAggregate (762)
: : : +- HashAggregate (761)
: : : +- Project (760)
: : : +- SortMergeJoin Inner (759)
: : : :- Sort (730)
: : : : +- Exchange (729)
: : : : +- Project (728)
: : : : +- Filter (727)
: : : : +- Generate (726)
: : : : +- Filter (725)
: : : : +- ObjectHashAggregate (724)
: : : : +- ObjectHashAggregate (723)
: : : : +- Generate (722)
: : : : +- BroadcastHashJoin Inner BuildLeft (721)
: : : : :- BroadcastExchange (678)
: : : : : +- Exchange (677)
: : : : : +- Project (676)
: : : : : +- Filter (675)
: : : : : +- Scan parquet (674)
: : : : +- Project (720)
: : : : +- BroadcastHashJoin Inner BuildLeft (719)
: : : : :- BroadcastExchange (688)
: : : : : +- Project (687)
: : : : : +- Generate (686)
: : : : : +- Project (685)
: : : : : +- Filter (684)
: : : : : +- Generate (683)
: : : : : +- Exchange (682)
: : : : : +- Project (681)
: : : : : +- Filter (680)
: : : : : +- Scan parquet (679)
: : : : +- HashAggregate (718)
: : : : +- Exchange (717)
: : : : +- HashAggregate (716)
: : : : +- Project (715)
: : : : +- Generate (714)
: : : : +- Project (713)
: : : : +- Generate (712)
: : : : +- Project (711)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (710)
: : : : :- Project (704)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (703)
: : : : : :- Project (698)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (697)
: : : : : : :- Exchange (691)
: : : : : : : +- Filter (690)
: : : : : : : +- Scan parquet (689)
: : : : : : +- BroadcastExchange (696)
: : : : : : +- Project (695)
: : : : : : +- Exchange (694)
: : : : : : +- Project (693)
: : : : : : +- Scan parquet (692)
: : : : : +- BroadcastExchange (702)
: : : : : +- Exchange (701)
: : : : : +- Project (700)
: : : : : +- Scan parquet (699)
: : : : +- BroadcastExchange (709)
: : : : +- Exchange (708)
: : : : +- Project (707)
: : : : +- Filter (706)
: : : : +- Scan parquet (705)
: : : +- Sort (758)
: : : +- Project (757)
: : : +- Generate (756)
: : : +- Project (755)
: : : +- Generate (754)
: : : +- Project (753)
: : : +- BroadcastHashJoin LeftOuter BuildRight (752)
: : : :- Project (746)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (745)
: : : : :- Project (740)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (739)
: : : : : :- Exchange (733)
: : : : : : +- Filter (732)
: : : : : : +- Scan parquet (731)
: : : : : +- BroadcastExchange (738)
: : : : : +- Project (737)
: : : : : +- Exchange (736)
: : : : : +- Project (735)
: : : : : +- Scan parquet (734)
: : : : +- BroadcastExchange (744)
: : : : +- Exchange (743)
: : : : +- Project (742)
: : : : +- Scan parquet (741)
: : : +- BroadcastExchange (751)
: : : +- Exchange (750)
: : : +- Project (749)
: : : +- Filter (748)
: : : +- Scan parquet (747)
: : +- Sort (998)
: : +- Exchange (997)
: : +- SerializeFromObject (996)
: : +- MapElements (995)
: : +- DeserializeToObject (994)
: : +- ObjectHashAggregate (993)
: : +- ObjectHashAggregate (992)
: : +- Project (991)
: : +- BroadcastHashJoin LeftOuter BuildRight (990)
: : :- Project (987)
: : : +- SortMergeJoin LeftOuter (986)
: : : :- Sort (799)
: : : : +- Project (798)
: : : : +- Project (797)
: : : : +- Generate (796)
: : : : +- Generate (795)
: : : : +- Project (794)
: : : : +- Project (793)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (792)
: : : : :- Project (786)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (785)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (780)
: : : : : : :- Exchange (775)
: : : : : : : +- Scan parquet (423)
: : : : : : +- BroadcastExchange (779)
: : : : : : +- Project (778)
: : : : : : +- Exchange (777)
: : : : : : +- Project (776)
: : : : : : +- Scan parquet (427)
: : : : : +- BroadcastExchange (784)
: : : : : +- Exchange (783)
: : : : : +- Project (782)
: : : : : +- Scan parquet (781)
: : : : +- BroadcastExchange (791)
: : : : +- Exchange (790)
: : : : +- Project (789)
: : : : +- Filter (788)
: : : : +- Scan parquet (787)
: : : +- Sort (985)
: : : +- HashAggregate (984)
: : : +- Exchange (983)
: : : +- HashAggregate (982)
: : : +- Project (981)
: : : +- SortMergeJoin Inner (980)
: : : :- Sort (888)
: : : : +- Exchange (887)
: : : : +- Project (886)
: : : : +- SortMergeJoin Inner (885)
: : : : :- Sort (856)
: : : : : +- Exchange (855)
: : : : : +- Project (854)
: : : : : +- Filter (853)
: : : : : +- Generate (852)
: : : : : +- Filter (851)
: : : : : +- ObjectHashAggregate (850)
: : : : : +- ObjectHashAggregate (849)
: : : : : +- Generate (848)
: : : : : +- BroadcastHashJoin Inner BuildLeft (847)
: : : : : :- BroadcastExchange (804)
: : : : : : +- Exchange (803)
: : : : : : +- Project (802)
: : : : : : +- Filter (801)
: : : : : : +- Scan parquet (800)
: : : : : +- Project (846)
: : : : : +- BroadcastHashJoin Inner BuildLeft (845)
: : : : : :- BroadcastExchange (814)
: : : : : : +- Project (813)
: : : : : : +- Generate (812)
: : : : : : +- Project (811)
: : : : : : +- Filter (810)
: : : : : : +- Generate (809)
: : : : : : +- Exchange (808)
: : : : : : +- Project (807)
: : : : : : +- Filter (806)
: : : : : : +- Scan parquet (805)
: : : : : +- HashAggregate (844)
: : : : : +- Exchange (843)
: : : : : +- HashAggregate (842)
: : : : : +- Project (841)
: : : : : +- Generate (840)
: : : : : +- Project (839)
: : : : : +- Generate (838)
: : : : : +- Project (837)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (836)
: : : : : :- Project (830)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (829)
: : : : : : :- Project (824)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (823)
: : : : : : : :- Exchange (817)
: : : : : : : : +- Filter (816)
: : : : : : : : +- Scan parquet (815)
: : : : : : : +- BroadcastExchange (822)
: : : : : : : +- Project (821)
: : : : : : : +- Exchange (820)
: : : : : : : +- Project (819)
: : : : : : : +- Scan parquet (818)
: : : : : : +- BroadcastExchange (828)
: : : : : : +- Exchange (827)
: : : : : : +- Project (826)
: : : : : : +- Scan parquet (825)
: : : : : +- BroadcastExchange (835)
: : : : : +- Exchange (834)
: : : : : +- Project (833)
: : : : : +- Filter (832)
: : : : : +- Scan parquet (831)
: : : : +- Sort (884)
: : : : +- Project (883)
: : : : +- Generate (882)
: : : : +- Project (881)
: : : : +- Generate (880)
: : : : +- Project (879)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (878)
: : : : :- Project (872)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (871)
: : : : : :- Project (866)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (865)
: : : : : : :- Exchange (859)
: : : : : : : +- Filter (858)
: : : : : : : +- Scan parquet (857)
: : : : : : +- BroadcastExchange (864)
: : : : : : +- Project (863)
: : : : : : +- Exchange (862)
: : : : : : +- Project (861)
: : : : : : +- Scan parquet (860)
: : : : : +- BroadcastExchange (870)
: : : : : +- Exchange (869)
: : : : : +- Project (868)
: : : : : +- Scan parquet (867)
: : : : +- BroadcastExchange (877)
: : : : +- Exchange (876)
: : : : +- Project (875)
: : : : +- Filter (874)
: : : : +- Scan parquet (873)
: : : +- Sort (979)
: : : +- Exchange (978)
: : : +- HashAggregate (977)
: : : +- HashAggregate (976)
: : : +- Project (975)
: : : +- SortMergeJoin Inner (974)
: : : :- Sort (945)
: : : : +- Exchange (944)
: : : : +- Project (943)
: : : : +- Filter (942)
: : : : +- Generate (941)
: : : : +- Filter (940)
: : : : +- ObjectHashAggregate (939)
: : : : +- ObjectHashAggregate (938)
: : : : +- Generate (937)
: : : : +- BroadcastHashJoin Inner BuildLeft (936)
: : : : :- BroadcastExchange (893)
: : : : : +- Exchange (892)
: : : : : +- Project (891)
: : : : : +- Filter (890)
: : : : : +- Scan parquet (889)
: : : : +- Project (935)
: : : : +- BroadcastHashJoin Inner BuildLeft (934)
: : : : :- BroadcastExchange (903)
: : : : : +- Project (902)
: : : : : +- Generate (901)
: : : : : +- Project (900)
: : : : : +- Filter (899)
: : : : : +- Generate (898)
: : : : : +- Exchange (897)
: : : : : +- Project (896)
: : : : : +- Filter (895)
: : : : : +- Scan parquet (894)
: : : : +- HashAggregate (933)
: : : : +- Exchange (932)
: : : : +- HashAggregate (931)
: : : : +- Project (930)
: : : : +- Generate (929)
: : : : +- Project (928)
: : : : +- Generate (927)
: : : : +- Project (926)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (925)
: : : : :- Project (919)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (918)
: : : : : :- Project (913)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (912)
: : : : : : :- Exchange (906)
: : : : : : : +- Filter (905)
: : : : : : : +- Scan parquet (904)
: : : : : : +- BroadcastExchange (911)
: : : : : : +- Project (910)
: : : : : : +- Exchange (909)
: : : : : : +- Project (908)
: : : : : : +- Scan parquet (907)
: : : : : +- BroadcastExchange (917)
: : : : : +- Exchange (916)
: : : : : +- Project (915)
: : : : : +- Scan parquet (914)
: : : : +- BroadcastExchange (924)
: : : : +- Exchange (923)
: : : : +- Project (922)
: : : : +- Filter (921)
: : : : +- Scan parquet (920)
: : : +- Sort (973)
: : : +- Project (972)
: : : +- Generate (971)
: : : +- Project (970)
: : : +- Generate (969)
: : : +- Project (968)
: : : +- BroadcastHashJoin LeftOuter BuildRight (967)
: : : :- Project (961)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (960)
: : : : :- Project (955)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (954)
: : : : : :- Exchange (948)
: : : : : : +- Filter (947)
: : : : : : +- Scan parquet (946)
: : : : : +- BroadcastExchange (953)
: : : : : +- Project (952)
: : : : : +- Exchange (951)
: : : : : +- Project (950)
: : : : : +- Scan parquet (949)
: : : : +- BroadcastExchange (959)
: : : : +- Exchange (958)
: : : : +- Project (957)
: : : : +- Scan parquet (956)
: : : +- BroadcastExchange (966)
: : : +- Exchange (965)
: : : +- Project (964)
: : : +- Filter (963)
: : : +- Scan parquet (962)
: : +- BroadcastExchange (989)
: : +- Filter (988)
: : +- Scan parquet (511)
: +- Sort (1046)
: +- Project (1045)
: +- BroadcastHashJoin Inner BuildLeft (1044)
: :- BroadcastExchange (1013)
: : +- Project (1012)
: : +- Filter (1011)
: : +- Generate (1010)
: : +- Project (1009)
: : +- Filter (1008)
: : +- Generate (1007)
: : +- Exchange (1006)
: : +- Project (1005)
: : +- Filter (1004)
: : +- Scan parquet (1003)
: +- HashAggregate (1043)
: +- Exchange (1042)
: +- HashAggregate (1041)
: +- Project (1040)
: +- Generate (1039)
: +- Project (1038)
: +- Generate (1037)
: +- Project (1036)
: +- BroadcastHashJoin LeftOuter BuildRight (1035)
: :- Project (1029)
: : +- BroadcastHashJoin LeftOuter BuildRight (1028)
: : :- Project (1023)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1022)
: : : :- Exchange (1016)
: : : : +- Filter (1015)
: : : : +- Scan parquet (1014)
: : : +- BroadcastExchange (1021)
: : : +- Project (1020)
: : : +- Exchange (1019)
: : : +- Project (1018)
: : : +- Scan parquet (1017)
: : +- BroadcastExchange (1027)
: : +- Exchange (1026)
: : +- Project (1025)
: : +- Scan parquet (1024)
: +- BroadcastExchange (1034)
: +- Exchange (1033)
: +- Project (1032)
: +- Filter (1031)
: +- Scan parquet (1030)
+- BroadcastExchange (1055)
+- Project (1054)
+- Filter (1053)
+- Generate (1052)
+- Exchange (1051)
+- Project (1050)
+- Filter (1049)
+- Scan parquet (552)
+- Filter (1991)
+- ObjectHashAggregate (1990)
+- Exchange (1989)
+- ObjectHashAggregate (1988)
+- Project (1987)
+- BroadcastHashJoin Inner BuildRight (1986)
:- Project (1977)
: +- SortMergeJoin LeftOuter (1976)
: :- Sort (1748)
: : +- Exchange (1747)
: : +- Project (1746)
: : +- SortMergeJoin LeftOuter (1745)
: : :- Sort (1558)
: : : +- Project (1557)
: : : +- Generate (1556)
: : : +- Project (1555)
: : : +- Generate (1554)
: : : +- Project (1553)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1552)
: : : :- Project (1546)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1545)
: : : : :- Project (1540)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1539)
: : : : : :- Exchange (1533)
: : : : : : +- Filter (1532)
: : : : : : +- Scan parquet (1531)
: : : : : +- BroadcastExchange (1538)
: : : : : +- Project (1537)
: : : : : +- Exchange (1536)
: : : : : +- Project (1535)
: : : : : +- Scan parquet (1534)
: : : : +- BroadcastExchange (1544)
: : : : +- Exchange (1543)
: : : : +- Project (1542)
: : : : +- Scan parquet (1541)
: : : +- BroadcastExchange (1551)
: : : +- Exchange (1550)
: : : +- Project (1549)
: : : +- Filter (1548)
: : : +- Scan parquet (1547)
: : +- Sort (1744)
: : +- HashAggregate (1743)
: : +- Exchange (1742)
: : +- HashAggregate (1741)
: : +- Project (1740)
: : +- SortMergeJoin Inner (1739)
: : :- Sort (1647)
: : : +- Exchange (1646)
: : : +- Project (1645)
: : : +- SortMergeJoin Inner (1644)
: : : :- Sort (1615)
: : : : +- Exchange (1614)
: : : : +- Project (1613)
: : : : +- Filter (1612)
: : : : +- Generate (1611)
: : : : +- Filter (1610)
: : : : +- ObjectHashAggregate (1609)
: : : : +- ObjectHashAggregate (1608)
: : : : +- Generate (1607)
: : : : +- BroadcastHashJoin Inner BuildLeft (1606)
: : : : :- BroadcastExchange (1563)
: : : : : +- Exchange (1562)
: : : : : +- Project (1561)
: : : : : +- Filter (1560)
: : : : : +- Scan parquet (1559)
: : : : +- Project (1605)
: : : : +- BroadcastHashJoin Inner BuildLeft (1604)
: : : : :- BroadcastExchange (1573)
: : : : : +- Project (1572)
: : : : : +- Generate (1571)
: : : : : +- Project (1570)
: : : : : +- Filter (1569)
: : : : : +- Generate (1568)
: : : : : +- Exchange (1567)
: : : : : +- Project (1566)
: : : : : +- Filter (1565)
: : : : : +- Scan parquet (1564)
: : : : +- HashAggregate (1603)
: : : : +- Exchange (1602)
: : : : +- HashAggregate (1601)
: : : : +- Project (1600)
: : : : +- Generate (1599)
: : : : +- Project (1598)
: : : : +- Generate (1597)
: : : : +- Project (1596)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1595)
: : : : :- Project (1589)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1588)
: : : : : :- Project (1583)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1582)
: : : : : : :- Exchange (1576)
: : : : : : : +- Filter (1575)
: : : : : : : +- Scan parquet (1574)
: : : : : : +- BroadcastExchange (1581)
: : : : : : +- Project (1580)
: : : : : : +- Exchange (1579)
: : : : : : +- Project (1578)
: : : : : : +- Scan parquet (1577)
: : : : : +- BroadcastExchange (1587)
: : : : : +- Exchange (1586)
: : : : : +- Project (1585)
: : : : : +- Scan parquet (1584)
: : : : +- BroadcastExchange (1594)
: : : : +- Exchange (1593)
: : : : +- Project (1592)
: : : : +- Filter (1591)
: : : : +- Scan parquet (1590)
: : : +- Sort (1643)
: : : +- Project (1642)
: : : +- Generate (1641)
: : : +- Project (1640)
: : : +- Generate (1639)
: : : +- Project (1638)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1637)
: : : :- Project (1631)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1630)
: : : : :- Project (1625)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1624)
: : : : : :- Exchange (1618)
: : : : : : +- Filter (1617)
: : : : : : +- Scan parquet (1616)
: : : : : +- BroadcastExchange (1623)
: : : : : +- Project (1622)
: : : : : +- Exchange (1621)
: : : : : +- Project (1620)
: : : : : +- Scan parquet (1619)
: : : : +- BroadcastExchange (1629)
: : : : +- Exchange (1628)
: : : : +- Project (1627)
: : : : +- Scan parquet (1626)
: : : +- BroadcastExchange (1636)
: : : +- Exchange (1635)
: : : +- Project (1634)
: : : +- Filter (1633)
: : : +- Scan parquet (1632)
: : +- Sort (1738)
: : +- Exchange (1737)
: : +- HashAggregate (1736)
: : +- HashAggregate (1735)
: : +- Project (1734)
: : +- SortMergeJoin Inner (1733)
: : :- Sort (1704)
: : : +- Exchange (1703)
: : : +- Project (1702)
: : : +- Filter (1701)
: : : +- Generate (1700)
: : : +- Filter (1699)
: : : +- ObjectHashAggregate (1698)
: : : +- ObjectHashAggregate (1697)
: : : +- Generate (1696)
: : : +- BroadcastHashJoin Inner BuildLeft (1695)
: : : :- BroadcastExchange (1652)
: : : : +- Exchange (1651)
: : : : +- Project (1650)
: : : : +- Filter (1649)
: : : : +- Scan parquet (1648)
: : : +- Project (1694)
: : : +- BroadcastHashJoin Inner BuildLeft (1693)
: : : :- BroadcastExchange (1662)
: : : : +- Project (1661)
: : : : +- Generate (1660)
: : : : +- Project (1659)
: : : : +- Filter (1658)
: : : : +- Generate (1657)
: : : : +- Exchange (1656)
: : : : +- Project (1655)
: : : : +- Filter (1654)
: : : : +- Scan parquet (1653)
: : : +- HashAggregate (1692)
: : : +- Exchange (1691)
: : : +- HashAggregate (1690)
: : : +- Project (1689)
: : : +- Generate (1688)
: : : +- Project (1687)
: : : +- Generate (1686)
: : : +- Project (1685)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1684)
: : : :- Project (1678)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1677)
: : : : :- Project (1672)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1671)
: : : : : :- Exchange (1665)
: : : : : : +- Filter (1664)
: : : : : : +- Scan parquet (1663)
: : : : : +- BroadcastExchange (1670)
: : : : : +- Project (1669)
: : : : : +- Exchange (1668)
: : : : : +- Project (1667)
: : : : : +- Scan parquet (1666)
: : : : +- BroadcastExchange (1676)
: : : : +- Exchange (1675)
: : : : +- Project (1674)
: : : : +- Scan parquet (1673)
: : : +- BroadcastExchange (1683)
: : : +- Exchange (1682)
: : : +- Project (1681)
: : : +- Filter (1680)
: : : +- Scan parquet (1679)
: : +- Sort (1732)
: : +- Project (1731)
: : +- Generate (1730)
: : +- Project (1729)
: : +- Generate (1728)
: : +- Project (1727)
: : +- BroadcastHashJoin LeftOuter BuildRight (1726)
: : :- Project (1720)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1719)
: : : :- Project (1714)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1713)
: : : : :- Exchange (1707)
: : : : : +- Filter (1706)
: : : : : +- Scan parquet (1705)
: : : : +- BroadcastExchange (1712)
: : : : +- Project (1711)
: : : : +- Exchange (1710)
: : : : +- Project (1709)
: : : : +- Scan parquet (1708)
: : : +- BroadcastExchange (1718)
: : : +- Exchange (1717)
: : : +- Project (1716)
: : : +- Scan parquet (1715)
: : +- BroadcastExchange (1725)
: : +- Exchange (1724)
: : +- Project (1723)
: : +- Filter (1722)
: : +- Scan parquet (1721)
: +- Sort (1975)
: +- Exchange (1974)
: +- SerializeFromObject (1973)
: +- MapElements (1972)
: +- DeserializeToObject (1971)
: +- ObjectHashAggregate (1970)
: +- ObjectHashAggregate (1969)
: +- Project (1968)
: +- BroadcastHashJoin LeftOuter BuildRight (1967)
: :- Project (1963)
: : +- SortMergeJoin LeftOuter (1962)
: : :- Sort (1775)
: : : +- Project (1774)
: : : +- Project (1773)
: : : +- Generate (1772)
: : : +- Generate (1771)
: : : +- Project (1770)
: : : +- Project (1769)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1768)
: : : :- Project (1762)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1761)
: : : : :- BroadcastHashJoin LeftOuter BuildRight (1756)
: : : : : :- Exchange (1750)
: : : : : : +- Scan parquet (1749)
: : : : : +- BroadcastExchange (1755)
: : : : : +- Project (1754)
: : : : : +- Exchange (1753)
: : : : : +- Project (1752)
: : : : : +- Scan parquet (1751)
: : : : +- BroadcastExchange (1760)
: : : : +- Exchange (1759)
: : : : +- Project (1758)
: : : : +- Scan parquet (1757)
: : : +- BroadcastExchange (1767)
: : : +- Exchange (1766)
: : : +- Project (1765)
: : : +- Filter (1764)
: : : +- Scan parquet (1763)
: : +- Sort (1961)
: : +- HashAggregate (1960)
: : +- Exchange (1959)
: : +- HashAggregate (1958)
: : +- Project (1957)
: : +- SortMergeJoin Inner (1956)
: : :- Sort (1864)
: : : +- Exchange (1863)
: : : +- Project (1862)
: : : +- SortMergeJoin Inner (1861)
: : : :- Sort (1832)
: : : : +- Exchange (1831)
: : : : +- Project (1830)
: : : : +- Filter (1829)
: : : : +- Generate (1828)
: : : : +- Filter (1827)
: : : : +- ObjectHashAggregate (1826)
: : : : +- ObjectHashAggregate (1825)
: : : : +- Generate (1824)
: : : : +- BroadcastHashJoin Inner BuildLeft (1823)
: : : : :- BroadcastExchange (1780)
: : : : : +- Exchange (1779)
: : : : : +- Project (1778)
: : : : : +- Filter (1777)
: : : : : +- Scan parquet (1776)
: : : : +- Project (1822)
: : : : +- BroadcastHashJoin Inner BuildLeft (1821)
: : : : :- BroadcastExchange (1790)
: : : : : +- Project (1789)
: : : : : +- Generate (1788)
: : : : : +- Project (1787)
: : : : : +- Filter (1786)
: : : : : +- Generate (1785)
: : : : : +- Exchange (1784)
: : : : : +- Project (1783)
: : : : : +- Filter (1782)
: : : : : +- Scan parquet (1781)
: : : : +- HashAggregate (1820)
: : : : +- Exchange (1819)
: : : : +- HashAggregate (1818)
: : : : +- Project (1817)
: : : : +- Generate (1816)
: : : : +- Project (1815)
: : : : +- Generate (1814)
: : : : +- Project (1813)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1812)
: : : : :- Project (1806)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1805)
: : : : : :- Project (1800)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1799)
: : : : : : :- Exchange (1793)
: : : : : : : +- Filter (1792)
: : : : : : : +- Scan parquet (1791)
: : : : : : +- BroadcastExchange (1798)
: : : : : : +- Project (1797)
: : : : : : +- Exchange (1796)
: : : : : : +- Project (1795)
: : : : : : +- Scan parquet (1794)
: : : : : +- BroadcastExchange (1804)
: : : : : +- Exchange (1803)
: : : : : +- Project (1802)
: : : : : +- Scan parquet (1801)
: : : : +- BroadcastExchange (1811)
: : : : +- Exchange (1810)
: : : : +- Project (1809)
: : : : +- Filter (1808)
: : : : +- Scan parquet (1807)
: : : +- Sort (1860)
: : : +- Project (1859)
: : : +- Generate (1858)
: : : +- Project (1857)
: : : +- Generate (1856)
: : : +- Project (1855)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1854)
: : : :- Project (1848)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1847)
: : : : :- Project (1842)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1841)
: : : : : :- Exchange (1835)
: : : : : : +- Filter (1834)
: : : : : : +- Scan parquet (1833)
: : : : : +- BroadcastExchange (1840)
: : : : : +- Project (1839)
: : : : : +- Exchange (1838)
: : : : : +- Project (1837)
: : : : : +- Scan parquet (1836)
: : : : +- BroadcastExchange (1846)
: : : : +- Exchange (1845)
: : : : +- Project (1844)
: : : : +- Scan parquet (1843)
: : : +- BroadcastExchange (1853)
: : : +- Exchange (1852)
: : : +- Project (1851)
: : : +- Filter (1850)
: : : +- Scan parquet (1849)
: : +- Sort (1955)
: : +- Exchange (1954)
: : +- HashAggregate (1953)
: : +- HashAggregate (1952)
: : +- Project (1951)
: : +- SortMergeJoin Inner (1950)
: : :- Sort (1921)
: : : +- Exchange (1920)
: : : +- Project (1919)
: : : +- Filter (1918)
: : : +- Generate (1917)
: : : +- Filter (1916)
: : : +- ObjectHashAggregate (1915)
: : : +- ObjectHashAggregate (1914)
: : : +- Generate (1913)
: : : +- BroadcastHashJoin Inner BuildLeft (1912)
: : : :- BroadcastExchange (1869)
: : : : +- Exchange (1868)
: : : : +- Project (1867)
: : : : +- Filter (1866)
: : : : +- Scan parquet (1865)
: : : +- Project (1911)
: : : +- BroadcastHashJoin Inner BuildLeft (1910)
: : : :- BroadcastExchange (1879)
: : : : +- Project (1878)
: : : : +- Generate (1877)
: : : : +- Project (1876)
: : : : +- Filter (1875)
: : : : +- Generate (1874)
: : : : +- Exchange (1873)
: : : : +- Project (1872)
: : : : +- Filter (1871)
: : : : +- Scan parquet (1870)
: : : +- HashAggregate (1909)
: : : +- Exchange (1908)
: : : +- HashAggregate (1907)
: : : +- Project (1906)
: : : +- Generate (1905)
: : : +- Project (1904)
: : : +- Generate (1903)
: : : +- Project (1902)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1901)
: : : :- Project (1895)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1894)
: : : : :- Project (1889)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1888)
: : : : : :- Exchange (1882)
: : : : : : +- Filter (1881)
: : : : : : +- Scan parquet (1880)
: : : : : +- BroadcastExchange (1887)
: : : : : +- Project (1886)
: : : : : +- Exchange (1885)
: : : : : +- Project (1884)
: : : : : +- Scan parquet (1883)
: : : : +- BroadcastExchange (1893)
: : : : +- Exchange (1892)
: : : : +- Project (1891)
: : : : +- Scan parquet (1890)
: : : +- BroadcastExchange (1900)
: : : +- Exchange (1899)
: : : +- Project (1898)
: : : +- Filter (1897)
: : : +- Scan parquet (1896)
: : +- Sort (1949)
: : +- Project (1948)
: : +- Generate (1947)
: : +- Project (1946)
: : +- Generate (1945)
: : +- Project (1944)
: : +- BroadcastHashJoin LeftOuter BuildRight (1943)
: : :- Project (1937)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1936)
: : : :- Project (1931)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1930)
: : : : :- Exchange (1924)
: : : : : +- Filter (1923)
: : : : : +- Scan parquet (1922)
: : : : +- BroadcastExchange (1929)
: : : : +- Project (1928)
: : : : +- Exchange (1927)
: : : : +- Project (1926)
: : : : +- Scan parquet (1925)
: : : +- BroadcastExchange (1935)
: : : +- Exchange (1934)
: : : +- Project (1933)
: : : +- Scan parquet (1932)
: : +- BroadcastExchange (1942)
: : +- Exchange (1941)
: : +- Project (1940)
: : +- Filter (1939)
: : +- Scan parquet (1938)
: +- BroadcastExchange (1966)
: +- Filter (1965)
: +- Scan parquet (1964)
+- BroadcastExchange (1985)
+- Project (1984)
+- Filter (1983)
+- Generate (1982)
+- Exchange (1981)
+- Project (1980)
+- Filter (1979)
+- Scan parquet (1978)
(1) Scan parquet
Output [3]: [product#142980, plant#142981, orderDateTime#142982]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2) ColumnarToRow [codegen id : 1]
Input [3]: [product#142980, plant#142981, orderDateTime#142982]
(3) Exchange
Input [3]: [product#142980, plant#142981, orderDateTime#142982]
Arguments: hashpartitioning(product#142980, plant#142981, 25), REPARTITION_BY_NUM, [plan_id=222366]
(4) ShuffleQueryStage
Output [3]: [product#142980, plant#142981, orderDateTime#142982]
Arguments: 0
(5) Scan parquet
Output [8]: [internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992, systemId#142985]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>
(6) ColumnarToRow [codegen id : 2]
Input [8]: [internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992, systemId#142985]
(7) Project [codegen id : 2]
Output [8]: [systemId#142985, internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992]
Input [8]: [internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992, systemId#142985]
(8) Exchange
Input [8]: [systemId#142985, internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=222380]
(9) ShuffleQueryStage
Output [8]: [systemId#142985, internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992]
Arguments: 1
(10) Project [codegen id : 100]
Output [1]: [struct(systemId, systemId#142985, internalUUID, internalUUID#142986, plant, plant#142987, product, product#142988, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#142989, productionAspect, productionAspect#142990, salesPlant, salesPlant#142991, listing, listing#142992) AS productPlant#142994]
Input [8]: [systemId#142985, internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992]
(11) BroadcastExchange
Input [1]: [productPlant#142994]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=266970]
(12) BroadcastQueryStage
Output [1]: [productPlant#142994]
Arguments: 186
(13) BroadcastHashJoin [codegen id : 185]
Left keys [4]: [coalesce(product#142980, ), isnull(product#142980), coalesce(plant#142981, ), isnull(plant#142981)]
Right keys [4]: [coalesce(productPlant#142994.product.internalRefUUID, ), isnull(productPlant#142994.product.internalRefUUID), coalesce(productPlant#142994.plant.internalRefUUID, ), isnull(productPlant#142994.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(14) Scan parquet
Output [2]: [internalUUID#142998, systemId#142997]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(15) ColumnarToRow [codegen id : 3]
Input [2]: [internalUUID#142998, systemId#142997]
(16) Project [codegen id : 3]
Output [1]: [internalUUID#142998]
Input [2]: [internalUUID#142998, systemId#142997]
(17) Exchange
Input [1]: [internalUUID#142998]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=222398]
(18) ShuffleQueryStage
Output [1]: [internalUUID#142998]
Arguments: 2
(19) BroadcastExchange
Input [1]: [internalUUID#142998]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=222406]
(20) BroadcastQueryStage
Output [1]: [internalUUID#142998]
Arguments: 187
(21) BroadcastHashJoin [codegen id : 185]
Left keys [2]: [coalesce(plant#142981, ), isnull(plant#142981)]
Right keys [2]: [coalesce(internalUUID#142998, ), isnull(internalUUID#142998)]
Join type: LeftOuter
Join condition: None
(22) Project [codegen id : 185]
Output [4]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994]
Input [5]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, internalUUID#142998]
(23) Scan parquet
Output [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(24) ColumnarToRow [codegen id : 4]
Input [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
(25) Filter [codegen id : 4]
Input [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
Condition : isnotnull(internalUUID#143014)
(26) Project [codegen id : 4]
Output [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Input [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
(27) Exchange
Input [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=222418]
(28) ShuffleQueryStage
Output [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: 3
(29) BroadcastExchange
Input [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=222428]
(30) BroadcastQueryStage
Output [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: 188
(31) BroadcastHashJoin [codegen id : 185]
Left keys [1]: [product#142980]
Right keys [1]: [internalUUID#143014]
Join type: LeftOuter
Join condition: None
(32) Project
Output [5]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, filter(unitOfMeasureConversions#143020, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#142994.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#142994.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143018.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143018.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143026]
Input [7]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
(33) Project [codegen id : 186]
Output [6]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, filteredUnitOfMeasureConversions#143026.quantityDenominator AS _extract_quantityDenominator#147656, filteredUnitOfMeasureConversions#143026.quantityNumerator AS _extract_quantityNumerator#147657]
Input [5]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, filteredUnitOfMeasureConversions#143026]
(34) Generate [codegen id : 186]
Input [6]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, _extract_quantityDenominator#147656, _extract_quantityNumerator#147657]
Arguments: explode(_extract_quantityNumerator#147657), [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, _extract_quantityDenominator#147656], true, [quantityNumerator#143034]
(35) Generate [codegen id : 186]
Input [6]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, _extract_quantityDenominator#147656, quantityNumerator#143034]
Arguments: explode(_extract_quantityDenominator#147656), [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, quantityNumerator#143034], true, [quantityDenominator#143037]
(36) Project [codegen id : 186]
Output [5]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, (cast(quantityNumerator#143034 as double) / cast(quantityDenominator#143037 as double)) AS outboundUnit#143038]
Input [6]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, quantityNumerator#143034, quantityDenominator#143037]
(37) Project [codegen id : 186]
Output [5]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994.productionAspect.productPlanningPlants.minimumSafetyStock AS _extract_minimumSafetyStock#147969, CASE WHEN (isnull(outboundUnit#143038) OR (outboundUnit#143038 <= 0.0)) THEN 1.0 ELSE outboundUnit#143038 END AS outboundUnit#143039]
Input [5]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, outboundUnit#143038]
(38) Scan parquet
Output [6]: [internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, systemId#143076]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(39) ColumnarToRow [codegen id : 5]
Input [6]: [internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, systemId#143076]
(40) Filter [codegen id : 5]
Input [6]: [internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, systemId#143076]
Condition : (isnotnull(plant#143079.internalRefUUID) AND isnotnull(product#143078.internalRefUUID))
(41) Project [codegen id : 5]
Output [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
Input [6]: [internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, systemId#143076]
(42) Exchange
Input [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=222446]
(43) ShuffleQueryStage
Output [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
Arguments: 4
(44) BroadcastExchange
Input [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
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=222456]
(45) BroadcastQueryStage
Output [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
Arguments: 189
(46) Scan parquet
Output [2]: [marketUnit#143040, distributionCenters#143046]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(47) ColumnarToRow [codegen id : 6]
Input [2]: [marketUnit#143040, distributionCenters#143046]
(48) Filter [codegen id : 6]
Input [2]: [marketUnit#143040, distributionCenters#143046]
Condition : (((marketUnit#143040 <=> Daily_grocery) AND (size(distributionCenters#143046, true) > 0)) AND isnotnull(distributionCenters#143046))
(49) Project [codegen id : 6]
Output [1]: [distributionCenters#143046]
Input [2]: [marketUnit#143040, distributionCenters#143046]
(50) Exchange
Input [1]: [distributionCenters#143046]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=222466]
(51) ShuffleQueryStage
Output [1]: [distributionCenters#143046]
Arguments: 5
(52) Generate [codegen id : 101]
Input [1]: [distributionCenters#143046]
Arguments: explode(distributionCenters#143046), false, [distributionCenters#143064]
(53) Filter [codegen id : 101]
Input [1]: [distributionCenters#143064]
Condition : (((size(distributionCenters#143064.storageLocations, true) > 0) AND isnotnull(distributionCenters#143064.storageLocations)) AND isnotnull(distributionCenters#143064.internalRefUUID))
(54) Project [codegen id : 101]
Output [2]: [distributionCenters#143064.internalRefUUID AS _extract_internalRefUUID#147564, distributionCenters#143064.storageLocations AS _extract_storageLocations#147565]
Input [1]: [distributionCenters#143064]
(55) Generate [codegen id : 101]
Input [2]: [_extract_internalRefUUID#147564, _extract_storageLocations#147565]
Arguments: explode(_extract_storageLocations#147565), [_extract_internalRefUUID#147564], false, [storageLocations#143071]
(56) Project [codegen id : 101]
Output [3]: [_extract_internalRefUUID#147564 AS plantUuid#143066, storageLocations#143071.id AS storageLocId#143072, storageLocations#143071.internalRefUUID AS storageLocUuid#143073]
Input [2]: [_extract_internalRefUUID#147564, storageLocations#143071]
(57) BroadcastExchange
Input [3]: [plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=266998]
(58) BroadcastQueryStage
Output [3]: [plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
Arguments: 190
(59) Scan parquet
Output [2]: [product#143336, plant#143337]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(60) ColumnarToRow [codegen id : 7]
Input [2]: [product#143336, plant#143337]
(61) Filter [codegen id : 7]
Input [2]: [product#143336, plant#143337]
Condition : isnotnull(plant#143337)
(62) Exchange
Input [2]: [product#143336, plant#143337]
Arguments: hashpartitioning(product#143336, plant#143337, 25), REPARTITION_BY_NUM, [plan_id=222489]
(63) ShuffleQueryStage
Output [2]: [product#143336, plant#143337]
Arguments: 6
(64) Scan parquet
Output [4]: [plant#143342, product#143343, productionAspect#143345, systemId#143340]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(65) ColumnarToRow [codegen id : 8]
Input [4]: [plant#143342, product#143343, productionAspect#143345, systemId#143340]
(66) Project [codegen id : 8]
Output [4]: [plant#143342.internalRefUUID AS _extract_internalRefUUID#147902, product#143343.internalRefUUID AS _extract_internalRefUUID#147901, productionAspect#143345.productMovementPlants.unitOfIssue.code AS _extract_code#147903, productionAspect#143345.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#147904]
Input [4]: [plant#143342, product#143343, productionAspect#143345, systemId#143340]
(67) Exchange
Input [4]: [_extract_internalRefUUID#147902, _extract_internalRefUUID#147901, _extract_code#147903, _extract_internalRefUUID#147904]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=222505]
(68) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#147902, _extract_internalRefUUID#147901, _extract_code#147903, _extract_internalRefUUID#147904]
Arguments: 7
(69) Project [codegen id : 102]
Output [4]: [_extract_code#147903, _extract_internalRefUUID#147904, _extract_internalRefUUID#147901, _extract_internalRefUUID#147902]
Input [4]: [_extract_internalRefUUID#147902, _extract_internalRefUUID#147901, _extract_code#147903, _extract_internalRefUUID#147904]
(70) BroadcastExchange
Input [4]: [_extract_code#147903, _extract_internalRefUUID#147904, _extract_internalRefUUID#147901, _extract_internalRefUUID#147902]
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=267016]
(71) BroadcastQueryStage
Output [4]: [_extract_code#147903, _extract_internalRefUUID#147904, _extract_internalRefUUID#147901, _extract_internalRefUUID#147902]
Arguments: 191
(72) BroadcastHashJoin [codegen id : 128]
Left keys [4]: [coalesce(product#143336, ), isnull(product#143336), coalesce(plant#143337, ), isnull(plant#143337)]
Right keys [4]: [coalesce(_extract_internalRefUUID#147901, ), isnull(_extract_internalRefUUID#147901), coalesce(_extract_internalRefUUID#147902, ), isnull(_extract_internalRefUUID#147902)]
Join type: LeftOuter
Join condition: None
(73) Project [codegen id : 128]
Output [4]: [product#143336, plant#143337, _extract_code#147903, _extract_internalRefUUID#147904]
Input [6]: [product#143336, plant#143337, _extract_code#147903, _extract_internalRefUUID#147904, _extract_internalRefUUID#147901, _extract_internalRefUUID#147902]
(74) ReusedExchange [Reuses operator id: 19]
Output [1]: [internalUUID#143350]
(75) BroadcastQueryStage
Output [1]: [internalUUID#143350]
Arguments: 192
(76) BroadcastHashJoin [codegen id : 128]
Left keys [2]: [coalesce(plant#143337, ), isnull(plant#143337)]
Right keys [2]: [coalesce(internalUUID#143350, ), isnull(internalUUID#143350)]
Join type: LeftOuter
Join condition: None
(77) Project [codegen id : 128]
Output [4]: [product#143336, plant#143337, _extract_code#147903, _extract_internalRefUUID#147904]
Input [5]: [product#143336, plant#143337, _extract_code#147903, _extract_internalRefUUID#147904, internalUUID#143350]
(78) ReusedExchange [Reuses operator id: 29]
Output [3]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370]
(79) BroadcastQueryStage
Output [3]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370]
Arguments: 193
(80) BroadcastHashJoin [codegen id : 128]
Left keys [1]: [product#143336]
Right keys [1]: [internalUUID#143364]
Join type: LeftOuter
Join condition: None
(81) Project
Output [2]: [plant#143337, filter(unitOfMeasureConversions#143370, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#147903) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#147904)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143368.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143368.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143375]
Input [7]: [product#143336, plant#143337, _extract_code#147903, _extract_internalRefUUID#147904, internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370]
(82) Generate [codegen id : 129]
Input [2]: [plant#143337, filteredUnitOfMeasureConversions#143375]
Arguments: explode(filteredUnitOfMeasureConversions#143375.quantityNumerator), [plant#143337, filteredUnitOfMeasureConversions#143375], true, [quantityNumerator#143376]
(83) Project [codegen id : 129]
Output [2]: [plant#143337, filteredUnitOfMeasureConversions#143375.quantityDenominator AS _extract_quantityDenominator#147566]
Input [3]: [plant#143337, filteredUnitOfMeasureConversions#143375, quantityNumerator#143376]
(84) Generate [codegen id : 129]
Input [2]: [plant#143337, _extract_quantityDenominator#147566]
Arguments: explode(_extract_quantityDenominator#147566), [plant#143337], true, [quantityDenominator#143377]
(85) Project [codegen id : 129]
Output [1]: [plant#143337]
Input [2]: [plant#143337, quantityDenominator#143377]
(86) HashAggregate [codegen id : 129]
Input [1]: [plant#143337]
Keys [1]: [plant#143337]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143337]
(87) Exchange
Input [1]: [plant#143337]
Arguments: hashpartitioning(plant#143337, 25), ENSURE_REQUIREMENTS, [plan_id=280394]
(88) ShuffleQueryStage
Output [1]: [plant#143337]
Arguments: 287
(89) AQEShuffleRead
Input [1]: [plant#143337]
Arguments: coalesced
(90) HashAggregate
Input [1]: [plant#143337]
Keys [1]: [plant#143337]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143337]
(91) BroadcastHashJoin
Left keys [1]: [plantUuid#143066]
Right keys [1]: [plant#143337]
Join type: Inner
Join condition: None
(92) Project
Output [3]: [plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
Input [4]: [plantUuid#143066, storageLocId#143072, storageLocUuid#143073, plant#143337]
(93) BroadcastHashJoin [codegen id : 145]
Left keys [2]: [coalesce(plant#143079.internalRefUUID, ), isnull(plant#143079.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#143066, ), isnull(plantUuid#143066)]
Join type: Inner
Join condition: None
(94) Generate
Input [9]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
Arguments: explode(filter(stockQuantities#143081, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143073) AND (lambda x#143085.storageLocation.Id = storageLocId#143072)), lambda x#143085, false))), [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, plantUuid#143066], false, [stockQuantity#143086]
(95) ObjectHashAggregate
Input [7]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, plantUuid#143066, stockQuantity#143086]
Keys [5]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076]
Functions [2]: [partial_first(calculationDateTime#143080, false), partial_collect_list(stockQuantity#143086, 0, 0)]
Aggregate Attributes [3]: [first#144812, valueSet#144813, buf#144814]
Results [8]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076, first#144815, valueSet#144816, buf#144817]
(96) ObjectHashAggregate
Input [8]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076, first#144815, valueSet#144816, buf#144817]
Keys [5]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076]
Functions [2]: [first(calculationDateTime#143080, false), collect_list(stockQuantity#143086, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#143080)()#143100, collect_list(stockQuantity#143086, 0, 0)#143101]
Results [4]: [product#143078, plant#143079, first(calculationDateTime#143080)()#143100 AS calculationDateTime#143087, collect_list(stockQuantity#143086, 0, 0)#143101 AS stockQuantities#143088]
(97) Filter [codegen id : 146]
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantities#143088]
Condition : ((size(stockQuantities#143088, true) > 0) AND isnotnull(calculationDateTime#143087))
(98) Generate [codegen id : 146]
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantities#143088]
Arguments: explode(stockQuantities#143088), [product#143078, plant#143079, calculationDateTime#143087], false, [stockQuantity#143103]
(99) Filter [codegen id : 146]
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantity#143103]
Condition : (((isnotnull(stockQuantity#143103.specialStockIndicator.code) AND isnotnull(stockQuantity#143103.stockType.code)) AND (stockQuantity#143103.specialStockIndicator.code = )) AND (stockQuantity#143103.stockType.code = 01))
(100) Project [codegen id : 146]
Output [5]: [plant#143079.internalRefUUID AS plantUuid#143105, product#143078.internalRefUUID AS productUuid#143107, calculationDateTime#143087, stockQuantity#143103.storagelocation.id AS storageLocId#143108, stockQuantity#143103.quantity.measure AS quantity#143110]
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantity#143103]
(101) Exchange
Input [5]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108, quantity#143110]
Arguments: hashpartitioning(productUuid#143107, plantUuid#143105, 25), ENSURE_REQUIREMENTS, [plan_id=290244]
(102) ShuffleQueryStage
Output [5]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108, quantity#143110]
Arguments: 303
(103) AQEShuffleRead
Input [5]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108, quantity#143110]
Arguments: local
(104) BroadcastExchange
Input [5]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108, quantity#143110]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=293656]
(105) BroadcastQueryStage
Output [5]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108, quantity#143110]
Arguments: 317
(106) Scan parquet
Output [3]: [product#143122, plant#143123, orderDateTime#143124]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(107) ColumnarToRow [codegen id : 11]
Input [3]: [product#143122, plant#143123, orderDateTime#143124]
(108) Filter [codegen id : 11]
Input [3]: [product#143122, plant#143123, orderDateTime#143124]
Condition : ((isnotnull(orderDateTime#143124) AND isnotnull(plant#143123)) AND isnotnull(product#143122))
(109) Exchange
Input [3]: [product#143122, plant#143123, orderDateTime#143124]
Arguments: hashpartitioning(product#143122, plant#143123, 25), REPARTITION_BY_NUM, [plan_id=222587]
(110) ShuffleQueryStage
Output [3]: [product#143122, plant#143123, orderDateTime#143124]
Arguments: 12
(111) ReusedExchange [Reuses operator id: 70]
Output [4]: [_extract_code#147907, _extract_internalRefUUID#147908, _extract_internalRefUUID#147906, _extract_internalRefUUID#147905]
(112) BroadcastQueryStage
Output [4]: [_extract_code#147907, _extract_internalRefUUID#147908, _extract_internalRefUUID#147906, _extract_internalRefUUID#147905]
Arguments: 195
(113) BroadcastHashJoin [codegen id : 161]
Left keys [4]: [coalesce(product#143122, ), isnull(product#143122), coalesce(plant#143123, ), isnull(plant#143123)]
Right keys [4]: [coalesce(_extract_internalRefUUID#147906, ), isnull(_extract_internalRefUUID#147906), coalesce(_extract_internalRefUUID#147905, ), isnull(_extract_internalRefUUID#147905)]
Join type: LeftOuter
Join condition: None
(114) Project [codegen id : 161]
Output [5]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#147907, _extract_internalRefUUID#147908]
Input [7]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#147907, _extract_internalRefUUID#147908, _extract_internalRefUUID#147906, _extract_internalRefUUID#147905]
(115) ReusedExchange [Reuses operator id: 19]
Output [1]: [internalUUID#143136]
(116) BroadcastQueryStage
Output [1]: [internalUUID#143136]
Arguments: 196
(117) BroadcastHashJoin [codegen id : 161]
Left keys [2]: [coalesce(plant#143123, ), isnull(plant#143123)]
Right keys [2]: [coalesce(internalUUID#143136, ), isnull(internalUUID#143136)]
Join type: LeftOuter
Join condition: None
(118) Project [codegen id : 161]
Output [5]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#147907, _extract_internalRefUUID#147908]
Input [6]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#147907, _extract_internalRefUUID#147908, internalUUID#143136]
(119) ReusedExchange [Reuses operator id: 29]
Output [3]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156]
(120) BroadcastQueryStage
Output [3]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156]
Arguments: 197
(121) BroadcastHashJoin [codegen id : 161]
Left keys [1]: [product#143122]
Right keys [1]: [internalUUID#143150]
Join type: LeftOuter
Join condition: None
(122) Project
Output [4]: [product#143122, plant#143123, orderDateTime#143124, filter(unitOfMeasureConversions#143156, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#147907) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#147908)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143154.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143154.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143161]
Input [8]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#147907, _extract_internalRefUUID#147908, internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156]
(123) Generate
Input [4]: [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161]
Arguments: explode(filteredUnitOfMeasureConversions#143161.quantityNumerator), [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161], true, [quantityNumerator#143162]
(124) Project
Output [4]: [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161.quantityDenominator AS _extract_quantityDenominator#147570]
Input [5]: [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161, quantityNumerator#143162]
(125) Generate
Input [4]: [product#143122, plant#143123, orderDateTime#143124, _extract_quantityDenominator#147570]
Arguments: explode(_extract_quantityDenominator#147570), [product#143122, plant#143123, orderDateTime#143124], true, [quantityDenominator#143163]
(126) Project
Output [3]: [product#143122, plant#143123, orderDateTime#143124]
Input [4]: [product#143122, plant#143123, orderDateTime#143124, quantityDenominator#143163]
(127) BroadcastHashJoin [codegen id : 162]
Left keys [2]: [plantUuid#143105, productUuid#143107]
Right keys [2]: [plant#143123, product#143122]
Join type: Inner
Join condition: (calculationDateTime#143087 <= orderDateTime#143124)
(128) Project [codegen id : 162]
Output [5]: [plantUuid#143105 AS plant#143170, productUuid#143107 AS product#143171, storageLocId#143108, calculationDateTime#143087, quantity#143110]
Input [8]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108, quantity#143110, product#143122, plant#143123, orderDateTime#143124]
(129) Exchange
Input [5]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087, quantity#143110]
Arguments: hashpartitioning(coalesce(plant#143170, ), isnull(plant#143170), coalesce(product#143171, ), isnull(product#143171), coalesce(storageLocId#143108, ), isnull(storageLocId#143108), coalesce(calculationDateTime#143087, 1970-01-01 00:00:00), isnull(calculationDateTime#143087), 25), ENSURE_REQUIREMENTS, [plan_id=296515]
(130) ShuffleQueryStage
Output [5]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087, quantity#143110]
Arguments: 331
(131) AQEShuffleRead
Input [5]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087, quantity#143110]
Arguments: local
(132) BroadcastExchange
Input [5]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087, quantity#143110]
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=298966]
(133) BroadcastQueryStage
Output [5]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087, quantity#143110]
Arguments: 344
(134) ReusedExchange [Reuses operator id: 44]
Output [6]: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184]
(135) BroadcastQueryStage
Output [6]: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184]
Arguments: 198
(136) ReusedExchange [Reuses operator id: 57]
Output [3]: [plantUuid#143210, storageLocId#143211, storageLocUuid#143212]
(137) BroadcastQueryStage
Output [3]: [plantUuid#143210, storageLocId#143211, storageLocUuid#143212]
Arguments: 200
(138) ReusedExchange [Reuses operator id: 87]
Output [1]: [plant#143214]
(139) ShuffleQueryStage
Output [1]: [plant#143214]
Arguments: 289
(140) AQEShuffleRead
Input [1]: [plant#143214]
Arguments: coalesced
(141) HashAggregate
Input [1]: [plant#143214]
Keys [1]: [plant#143214]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143214]
(142) BroadcastHashJoin
Left keys [1]: [plantUuid#143210]
Right keys [1]: [plant#143214]
Join type: Inner
Join condition: None
(143) Project
Output [3]: [plantUuid#143210, storageLocId#143211, storageLocUuid#143212]
Input [4]: [plantUuid#143210, storageLocId#143211, storageLocUuid#143212, plant#143214]
(144) BroadcastHashJoin [codegen id : 147]
Left keys [2]: [coalesce(plant#143182.internalRefUUID, ), isnull(plant#143182.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#143210, ), isnull(plantUuid#143210)]
Join type: Inner
Join condition: None
(145) Generate
Input [9]: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184, plantUuid#143210, storageLocId#143211, storageLocUuid#143212]
Arguments: explode(filter(stockQuantities#143184, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143212) AND (lambda x#143085.storageLocation.Id = storageLocId#143211)), lambda x#143085, false))), [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, plantUuid#143210], false, [stockQuantity#143257]
(146) ObjectHashAggregate
Input [7]: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, plantUuid#143210, stockQuantity#143257]
Keys [5]: [plantUuid#143210, internalUUID#143180, plant#143182, product#143181, systemId#143179]
Functions [2]: [partial_first(calculationDateTime#143183, false), partial_collect_list(stockQuantity#143257, 0, 0)]
Aggregate Attributes [3]: [first#144820, valueSet#144821, buf#144822]
Results [8]: [plantUuid#143210, internalUUID#143180, plant#143182, product#143181, systemId#143179, first#144823, valueSet#144824, buf#144825]
(147) ObjectHashAggregate
Input [8]: [plantUuid#143210, internalUUID#143180, plant#143182, product#143181, systemId#143179, first#144823, valueSet#144824, buf#144825]
Keys [5]: [plantUuid#143210, internalUUID#143180, plant#143182, product#143181, systemId#143179]
Functions [2]: [first(calculationDateTime#143183, false), collect_list(stockQuantity#143257, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#143183)()#143100, collect_list(stockQuantity#143257, 0, 0)#143101]
Results [4]: [product#143181, plant#143182, first(calculationDateTime#143183)()#143100 AS calculationDateTime#143258, collect_list(stockQuantity#143257, 0, 0)#143101 AS stockQuantities#143259]
(148) Filter [codegen id : 148]
Input [4]: [product#143181, plant#143182, calculationDateTime#143258, stockQuantities#143259]
Condition : ((size(stockQuantities#143259, true) > 0) AND isnotnull(calculationDateTime#143258))
(149) Generate [codegen id : 148]
Input [4]: [product#143181, plant#143182, calculationDateTime#143258, stockQuantities#143259]
Arguments: explode(stockQuantities#143259), [product#143181, plant#143182, calculationDateTime#143258], false, [stockQuantity#143260]
(150) Filter [codegen id : 148]
Input [4]: [product#143181, plant#143182, calculationDateTime#143258, stockQuantity#143260]
Condition : (((isnotnull(stockQuantity#143260.specialStockIndicator.code) AND isnotnull(stockQuantity#143260.stockType.code)) AND (stockQuantity#143260.specialStockIndicator.code = )) AND (stockQuantity#143260.stockType.code = 01))
(151) Project [codegen id : 148]
Output [4]: [plant#143182.internalRefUUID AS plantUuid#143262, product#143181.internalRefUUID AS productUuid#143264, calculationDateTime#143258, stockQuantity#143260.storagelocation.id AS storageLocId#143265]
Input [4]: [product#143181, plant#143182, calculationDateTime#143258, stockQuantity#143260]
(152) Exchange
Input [4]: [plantUuid#143262, productUuid#143264, calculationDateTime#143258, storageLocId#143265]
Arguments: hashpartitioning(productUuid#143264, plantUuid#143262, 25), ENSURE_REQUIREMENTS, [plan_id=290312]
(153) ShuffleQueryStage
Output [4]: [plantUuid#143262, productUuid#143264, calculationDateTime#143258, storageLocId#143265]
Arguments: 304
(154) AQEShuffleRead
Input [4]: [plantUuid#143262, productUuid#143264, calculationDateTime#143258, storageLocId#143265]
Arguments: local
(155) BroadcastExchange
Input [4]: [plantUuid#143262, productUuid#143264, calculationDateTime#143258, storageLocId#143265]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=295075]
(156) BroadcastQueryStage
Output [4]: [plantUuid#143262, productUuid#143264, calculationDateTime#143258, storageLocId#143265]
Arguments: 322
(157) ReusedExchange [Reuses operator id: 109]
Output [3]: [product#143270, plant#143271, orderDateTime#143272]
(158) ShuffleQueryStage
Output [3]: [product#143270, plant#143271, orderDateTime#143272]
Arguments: 32
(159) ReusedExchange [Reuses operator id: 70]
Output [4]: [_extract_code#147913, _extract_internalRefUUID#147914, _extract_internalRefUUID#147915, _extract_internalRefUUID#147916]
(160) BroadcastQueryStage
Output [4]: [_extract_code#147913, _extract_internalRefUUID#147914, _extract_internalRefUUID#147915, _extract_internalRefUUID#147916]
Arguments: 206
(161) BroadcastHashJoin [codegen id : 167]
Left keys [4]: [coalesce(product#143270, ), isnull(product#143270), coalesce(plant#143271, ), isnull(plant#143271)]
Right keys [4]: [coalesce(_extract_internalRefUUID#147915, ), isnull(_extract_internalRefUUID#147915), coalesce(_extract_internalRefUUID#147916, ), isnull(_extract_internalRefUUID#147916)]
Join type: LeftOuter
Join condition: None
(162) Project [codegen id : 167]
Output [5]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#147913, _extract_internalRefUUID#147914]
Input [7]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#147913, _extract_internalRefUUID#147914, _extract_internalRefUUID#147915, _extract_internalRefUUID#147916]
(163) ReusedExchange [Reuses operator id: 19]
Output [1]: [internalUUID#143284]
(164) BroadcastQueryStage
Output [1]: [internalUUID#143284]
Arguments: 207
(165) BroadcastHashJoin [codegen id : 167]
Left keys [2]: [coalesce(plant#143271, ), isnull(plant#143271)]
Right keys [2]: [coalesce(internalUUID#143284, ), isnull(internalUUID#143284)]
Join type: LeftOuter
Join condition: None
(166) Project [codegen id : 167]
Output [5]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#147913, _extract_internalRefUUID#147914]
Input [6]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#147913, _extract_internalRefUUID#147914, internalUUID#143284]
(167) ReusedExchange [Reuses operator id: 29]
Output [3]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304]
(168) BroadcastQueryStage
Output [3]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304]
Arguments: 208
(169) BroadcastHashJoin [codegen id : 167]
Left keys [1]: [product#143270]
Right keys [1]: [internalUUID#143298]
Join type: LeftOuter
Join condition: None
(170) Project
Output [4]: [product#143270, plant#143271, orderDateTime#143272, filter(unitOfMeasureConversions#143304, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#147913) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#147914)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143302.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143302.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143309]
Input [8]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#147913, _extract_internalRefUUID#147914, internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304]
(171) Generate
Input [4]: [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309]
Arguments: explode(filteredUnitOfMeasureConversions#143309.quantityNumerator), [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309], true, [quantityNumerator#143310]
(172) Project
Output [4]: [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309.quantityDenominator AS _extract_quantityDenominator#147580]
Input [5]: [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309, quantityNumerator#143310]
(173) Generate
Input [4]: [product#143270, plant#143271, orderDateTime#143272, _extract_quantityDenominator#147580]
Arguments: explode(_extract_quantityDenominator#147580), [product#143270, plant#143271, orderDateTime#143272], true, [quantityDenominator#143311]
(174) Project
Output [3]: [product#143270, plant#143271, orderDateTime#143272]
Input [4]: [product#143270, plant#143271, orderDateTime#143272, quantityDenominator#143311]
(175) BroadcastHashJoin [codegen id : 168]
Left keys [2]: [plantUuid#143262, productUuid#143264]
Right keys [2]: [plant#143271, product#143270]
Join type: Inner
Join condition: (calculationDateTime#143258 <= orderDateTime#143272)
(176) Project [codegen id : 168]
Output [4]: [plantUuid#143262 AS plant#143314, productUuid#143264 AS product#143315, storageLocId#143265, calculationDateTime#143258]
Input [7]: [plantUuid#143262, productUuid#143264, calculationDateTime#143258, storageLocId#143265, product#143270, plant#143271, orderDateTime#143272]
(177) HashAggregate [codegen id : 168]
Input [4]: [plant#143314, product#143315, storageLocId#143265, calculationDateTime#143258]
Keys [3]: [plant#143314, product#143315, storageLocId#143265]
Functions [1]: [partial_max(calculationDateTime#143258)]
Aggregate Attributes [1]: [max#144818]
Results [4]: [plant#143314, product#143315, storageLocId#143265, max#144819]
(178) HashAggregate [codegen id : 168]
Input [4]: [plant#143314, product#143315, storageLocId#143265, max#144819]
Keys [3]: [plant#143314, product#143315, storageLocId#143265]
Functions [1]: [max(calculationDateTime#143258)]
Aggregate Attributes [1]: [max(calculationDateTime#143258)#143178]
Results [4]: [plant#143314, product#143315, storageLocId#143265, max(calculationDateTime#143258)#143178 AS max_calc_datetime#143172]
(179) Exchange
Input [4]: [plant#143314, product#143315, storageLocId#143265, max_calc_datetime#143172]
Arguments: hashpartitioning(coalesce(plant#143314, ), isnull(plant#143314), coalesce(product#143315, ), isnull(product#143315), coalesce(storageLocId#143265, ), isnull(storageLocId#143265), coalesce(max_calc_datetime#143172, 1970-01-01 00:00:00), isnull(max_calc_datetime#143172), 25), ENSURE_REQUIREMENTS, [plan_id=297848]
(180) ShuffleQueryStage
Output [4]: [plant#143314, product#143315, storageLocId#143265, max_calc_datetime#143172]
Arguments: 336
(181) AQEShuffleRead
Input [4]: [plant#143314, product#143315, storageLocId#143265, max_calc_datetime#143172]
Arguments: local
(182) BroadcastHashJoin [codegen id : 177]
Left keys [8]: [coalesce(plant#143170, ), isnull(plant#143170), coalesce(product#143171, ), isnull(product#143171), coalesce(storageLocId#143108, ), isnull(storageLocId#143108), coalesce(calculationDateTime#143087, 1970-01-01 00:00:00), isnull(calculationDateTime#143087)]
Right keys [8]: [coalesce(plant#143314, ), isnull(plant#143314), coalesce(product#143315, ), isnull(product#143315), coalesce(storageLocId#143265, ), isnull(storageLocId#143265), coalesce(max_calc_datetime#143172, 1970-01-01 00:00:00), isnull(max_calc_datetime#143172)]
Join type: Inner
Join condition: None
(183) Project [codegen id : 177]
Output [4]: [plant#143170, product#143171, calculationDateTime#143087, quantity#143110]
Input [9]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087, quantity#143110, plant#143314, product#143315, storageLocId#143265, max_calc_datetime#143172]
(184) HashAggregate [codegen id : 177]
Input [4]: [plant#143170, product#143171, calculationDateTime#143087, quantity#143110]
Keys [2]: [product#143171, plant#143170]
Functions [2]: [partial_min(calculationDateTime#143087), partial_sum(quantity#143110)]
Aggregate Attributes [2]: [min#144810, sum#148681]
Results [4]: [product#143171, plant#143170, min#144811, sum#148682]
(185) Exchange
Input [4]: [product#143171, plant#143170, min#144811, sum#148682]
Arguments: hashpartitioning(product#143171, plant#143170, 25), ENSURE_REQUIREMENTS, [plan_id=301654]
(186) ShuffleQueryStage
Output [4]: [product#143171, plant#143170, min#144811, sum#148682]
Arguments: 350
(187) AQEShuffleRead
Input [4]: [product#143171, plant#143170, min#144811, sum#148682]
Arguments: coalesced
(188) HashAggregate [codegen id : 181]
Input [4]: [product#143171, plant#143170, min#144811, sum#148682]
Keys [2]: [product#143171, plant#143170]
Functions [2]: [min(calculationDateTime#143087), sum(quantity#143110)]
Aggregate Attributes [2]: [min(calculationDateTime#143087)#143334, sum(quantity#143110)#143333]
Results [4]: [product#143171, plant#143170, min(calculationDateTime#143087)#143334 AS minCalculationDateTime#143327, round(sum(quantity#143110)#143333, 0) AS roundedQuantitySum#143335]
(189) BroadcastExchange
Input [4]: [product#143171, plant#143170, minCalculationDateTime#143327, roundedQuantitySum#143335]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=302933]
(190) BroadcastQueryStage
Output [4]: [product#143171, plant#143170, minCalculationDateTime#143327, roundedQuantitySum#143335]
Arguments: 356
(191) BroadcastHashJoin [codegen id : 186]
Left keys [2]: [plant#142981, product#142980]
Right keys [2]: [plant#143170, product#143171]
Join type: LeftOuter
Join condition: None
(192) Project [codegen id : 186]
Output [6]: [product#142980, plant#142981, _extract_minimumSafetyStock#147969, outboundUnit#143039, CASE WHEN isnotnull(minCalculationDateTime#143327) THEN minCalculationDateTime#143327 ELSE orderDateTime#142982 END AS stockDatetime#143384, CASE WHEN isnotnull(roundedQuantitySum#143335) THEN array(roundedQuantitySum#143335) ELSE [0.0] END AS stockBatchQuantities#143385]
Input [9]: [product#142980, plant#142981, orderDateTime#142982, _extract_minimumSafetyStock#147969, outboundUnit#143039, product#143171, plant#143170, minCalculationDateTime#143327, roundedQuantitySum#143335]
(193) Exchange
Input [6]: [product#142980, plant#142981, _extract_minimumSafetyStock#147969, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385]
Arguments: hashpartitioning(coalesce(plant#142981, ), isnull(plant#142981), coalesce(product#142980, ), isnull(product#142980), 25), ENSURE_REQUIREMENTS, [plan_id=304035]
(194) ShuffleQueryStage
Output [6]: [product#142980, plant#142981, _extract_minimumSafetyStock#147969, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385]
Arguments: 362
(195) AQEShuffleRead
Input [6]: [product#142980, plant#142981, _extract_minimumSafetyStock#147969, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385]
Arguments: local
(196) ReusedExchange [Reuses operator id: 3]
Output [3]: [product#143466, plant#143467, orderDateTime#143468]
(197) ShuffleQueryStage
Output [3]: [product#143466, plant#143467, orderDateTime#143468]
Arguments: 40
(198) ReusedExchange [Reuses operator id: 11]
Output [1]: [productPlant#143478]
(199) BroadcastQueryStage
Output [1]: [productPlant#143478]
Arguments: 210
(200) BroadcastHashJoin [codegen id : 187]
Left keys [4]: [coalesce(product#143466, ), isnull(product#143466), coalesce(plant#143467, ), isnull(plant#143467)]
Right keys [4]: [coalesce(productPlant#143478.product.internalRefUUID, ), isnull(productPlant#143478.product.internalRefUUID), coalesce(productPlant#143478.plant.internalRefUUID, ), isnull(productPlant#143478.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(201) Scan parquet
Output [3]: [internalUUID#143480, address#143486, systemId#143479]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string,address:struct<timeZone:struct<code:string>>>
(202) ColumnarToRow [codegen id : 27]
Input [3]: [internalUUID#143480, address#143486, systemId#143479]
(203) Project [codegen id : 27]
Output [2]: [internalUUID#143480, address#143486.timeZone.code AS timezonecode#143491]
Input [3]: [internalUUID#143480, address#143486, systemId#143479]
(204) Exchange
Input [2]: [internalUUID#143480, timezonecode#143491]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=222966]
(205) ShuffleQueryStage
Output [2]: [internalUUID#143480, timezonecode#143491]
Arguments: 43
(206) BroadcastExchange
Input [2]: [internalUUID#143480, timezonecode#143491]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=222974]
(207) BroadcastQueryStage
Output [2]: [internalUUID#143480, timezonecode#143491]
Arguments: 211
(208) BroadcastHashJoin [codegen id : 187]
Left keys [2]: [coalesce(plant#143467, ), isnull(plant#143467)]
Right keys [2]: [coalesce(internalUUID#143480, ), isnull(internalUUID#143480)]
Join type: LeftOuter
Join condition: None
(209) Project [codegen id : 187]
Output [5]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, CASE WHEN isnotnull(timezonecode#143491) THEN timezonecode#143491 ELSE UTC END AS timezonecode#143492]
Input [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, internalUUID#143480, timezonecode#143491]
(210) ReusedExchange [Reuses operator id: 29]
Output [3]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500]
(211) BroadcastQueryStage
Output [3]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500]
Arguments: 212
(212) BroadcastHashJoin [codegen id : 187]
Left keys [1]: [product#143466]
Right keys [1]: [internalUUID#143494]
Join type: LeftOuter
Join condition: None
(213) Project
Output [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, filter(unitOfMeasureConversions#143500, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143498.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143498.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143505]
Input [8]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500]
(214) Project [codegen id : 188]
Output [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, filteredUnitOfMeasureConversions#143505.quantityDenominator AS _extract_quantityDenominator#147682, filteredUnitOfMeasureConversions#143505.quantityNumerator AS _extract_quantityNumerator#147683]
Input [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, filteredUnitOfMeasureConversions#143505]
(215) Generate [codegen id : 188]
Input [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, _extract_quantityDenominator#147682, _extract_quantityNumerator#147683]
Arguments: explode(_extract_quantityNumerator#147683), [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, _extract_quantityDenominator#147682], true, [quantityNumerator#143506]
(216) Generate [codegen id : 188]
Input [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, _extract_quantityDenominator#147682, quantityNumerator#143506]
Arguments: explode(_extract_quantityDenominator#147682), [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, quantityNumerator#143506], true, [quantityDenominator#143507]
(217) Project [codegen id : 188]
Output [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, (cast(quantityNumerator#143506 as double) / cast(quantityDenominator#143507 as double)) AS outboundUnit#143508]
Input [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, quantityNumerator#143506, quantityDenominator#143507]
(218) Project [codegen id : 188]
Output [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, CASE WHEN (isnull(outboundUnit#143508) OR (outboundUnit#143508 <= 0.0)) THEN 1.0 ELSE outboundUnit#143508 END AS outboundUnit#143509]
Input [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143508]
(219) ReusedExchange [Reuses operator id: 189]
Output [4]: [product#143646, plant#143645, minCalculationDateTime#143786, roundedQuantitySum#143787]
(220) BroadcastQueryStage
Output [4]: [product#143646, plant#143645, minCalculationDateTime#143786, roundedQuantitySum#143787]
Arguments: 358
(221) BroadcastHashJoin [codegen id : 188]
Left keys [2]: [plant#143467, product#143466]
Right keys [2]: [plant#143645, product#143646]
Join type: LeftOuter
Join condition: None
(222) Project [codegen id : 188]
Output [8]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, CASE WHEN isnotnull(minCalculationDateTime#143786) THEN minCalculationDateTime#143786 ELSE orderDateTime#143468 END AS stockDatetime#143788, CASE WHEN isnotnull(roundedQuantitySum#143787) THEN array(roundedQuantitySum#143787) ELSE [0.0] END AS stockBatchQuantities#143789]
Input [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, product#143646, plant#143645, minCalculationDateTime#143786, roundedQuantitySum#143787]
(223) Scan parquet
Output [9]: [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000002108/0_1_10000002108]
PushedFilters: [IsNotNull(product), IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,demandChannel:string,demandStream:string,considerVariance:boolean,demandTimeBuckets:array<struct<demandStartDateTime:timestamp,demandQuantity:double,demandVariance:double>>,demandPointInTimeStart:timestamp,demandPointInTimeEnd:timestamp,demandPointInTime:array<struct<demandDateTime:timestamp,demandQuantity:double,demandVariance:double>>>
(224) ColumnarToRow [codegen id : 49]
Input [9]: [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
(225) Filter [codegen id : 49]
Input [9]: [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
Condition : (isnotnull(product#143387) AND isnotnull(plant#143388))
(226) BroadcastExchange
Input [9]: [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=223510]
(227) BroadcastQueryStage
Output [9]: [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
Arguments: 86
(228) BroadcastHashJoin [codegen id : 188]
Left keys [2]: [product#143466, plant#143467]
Right keys [2]: [product#143387, plant#143388]
Join type: LeftOuter
Join condition: None
(229) Project [codegen id : 188]
Output [9]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, CASE WHEN isnotnull(product#143387) THEN struct(demandChannel, demandChannel#143389, demandStream, demandStream#143390, considerVariance, considerVariance#143391, demandTimeBuckets, demandTimeBuckets#143392, demandPointInTimeStart, demandPointInTimeStart#143393, demandPointInTimeEnd, demandPointInTimeEnd#143394, demandPointInTime, demandPointInTime#143395) END AS rawDemands#143412]
Input [17]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
(230) ObjectHashAggregate
Input [9]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, rawDemands#143412]
Keys [9]: [product#143466, plant#143467, orderDateTime#143468, knownfloatingpointnormalized(if (isnull(productPlant#143478)) null else named_struct(systemId, productPlant#143478.systemId, internalUUID, productPlant#143478.internalUUID, plant, productPlant#143478.plant, product, productPlant#143478.product, blockedForReplenishmentStartingFrom, productPlant#143478.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#143478.productionAspect)) null else named_struct(productMovementPlants, productPlant#143478.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#143478.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#143478.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#143478.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#143478.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#143478.productionAspect.productPlanningPlants.minimumLotSize)), minimumSafetyStock, knownfloatingpointnormalized(normalizenanandzero(productPlant#143478.productionAspect.productPlanningPlants.minimumSafetyStock)), logisticalRoundingProfile, productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#143478.salesPlant, listing, productPlant#143478.listing)) AS productPlant#143478, timezonecode#143492, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#143509)) AS outboundUnit#143509, stockDatetime#143788, knownfloatingpointnormalized(transform(stockBatchQuantities#143789, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#152168)), lambda arg#152168, false))) AS stockBatchQuantities#143789, [7226582400000000] AS [7226582400000000]#152167]
Functions [1]: [partial_collect_list(rawDemands#143412, 0, 0)]
Aggregate Attributes [1]: [buf#144828]
Results [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000]#152167, buf#144829]
(231) ObjectHashAggregate
Input [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000]#152167, buf#144829]
Keys [9]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000]#152167]
Functions [1]: [collect_list(rawDemands#143412, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#143412, 0, 0)#143431]
Results [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#143790, collect_list(rawDemands#143412, 0, 0)#143431 AS rawDemands#143413]
(232) DeserializeToObject [codegen id : 189]
Input [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, stockBatchShelfLifeEndDatetimes#143790, rawDemands#143413]
Arguments: createexternalrow(invoke(product#143466.toString()), invoke(plant#143467.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#143468)), if (isnull(productPlant#143478)) null else createexternalrow(invoke(productPlant#143478.systemId.toString()), invoke(productPlant#143478.internalUUID.toString()), if (isnull(productPlant#143478.plant)) null else createexternalrow(invoke(productPlant#143478.plant.internalRefUUID.toString()), invoke(productPlant#143478.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#143478.product)) null else createexternalrow(invoke(productPlant#143478.product.internalRefUUID.toString()), invoke(productPlant#143478.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#143478.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#143478.productionAspect)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#143478.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#143478.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#143478.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#143478.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(minimumSafetyStock,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#143478.salesPlant)) null else createexternalrow(if (isnull(productPlant#143478.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#143478.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#143478.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#143478.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#143492.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#143509)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#143788)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#143789, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#143790, 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#143413, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#143452: org.apache.spark.sql.Row
(233) MapElements [codegen id : 189]
Input [1]: [obj#143452]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@2d5ca6d1, obj#143457: org.apache.spark.sql.Row
(234) SerializeFromObject [codegen id : 189]
Input [1]: [obj#143457]
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#143462, 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#143463, 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#143464, 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#143465]
(235) Exchange
Input [4]: [product#143462, plant#143463, dayBucketDemands#143464, pointInTimeDemands#143465]
Arguments: hashpartitioning(coalesce(plant#143463, ), isnull(plant#143463), coalesce(product#143462, ), isnull(product#143462), 25), ENSURE_REQUIREMENTS, [plan_id=304102]
(236) ShuffleQueryStage
Output [4]: [product#143462, plant#143463, dayBucketDemands#143464, pointInTimeDemands#143465]
Arguments: 363
(237) AQEShuffleRead
Input [4]: [product#143462, plant#143463, dayBucketDemands#143464, pointInTimeDemands#143465]
Arguments: local
(238) BroadcastExchange
Input [4]: [product#143462, plant#143463, dayBucketDemands#143464, pointInTimeDemands#143465]
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=305115]
(239) BroadcastQueryStage
Output [4]: [product#143462, plant#143463, dayBucketDemands#143464, pointInTimeDemands#143465]
Arguments: 368
(240) BroadcastHashJoin [codegen id : 196]
Left keys [4]: [coalesce(plant#142981, ), isnull(plant#142981), coalesce(product#142980, ), isnull(product#142980)]
Right keys [4]: [coalesce(plant#143463, ), isnull(plant#143463), coalesce(product#143462, ), isnull(product#143462)]
Join type: LeftOuter
Join condition: None
(241) Project [codegen id : 196]
Output [8]: [product#142980, plant#142981, _extract_minimumSafetyStock#147969, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, dayBucketDemands#143464, pointInTimeDemands#143465]
Input [10]: [product#142980, plant#142981, _extract_minimumSafetyStock#147969, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, product#143462, plant#143463, dayBucketDemands#143464, pointInTimeDemands#143465]
(242) Exchange
Input [8]: [product#142980, plant#142981, _extract_minimumSafetyStock#147969, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, dayBucketDemands#143464, pointInTimeDemands#143465]
Arguments: hashpartitioning(product#142980, plant#142981, 25), ENSURE_REQUIREMENTS, [plan_id=305195]
(243) ShuffleQueryStage
Output [8]: [product#142980, plant#142981, _extract_minimumSafetyStock#147969, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, dayBucketDemands#143464, pointInTimeDemands#143465]
Arguments: 369
(244) AQEShuffleRead
Input [8]: [product#142980, plant#142981, _extract_minimumSafetyStock#147969, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, dayBucketDemands#143464, pointInTimeDemands#143465]
Arguments: local
(245) InMemoryTableScan
Output [3]: [product#143833, plant#143832, openGoodsMovements#145382]
Arguments: [product#143833, plant#143832, openGoodsMovements#145382], [isnotnull(product#143833), isnotnull(plant#143832)]
(246) InMemoryRelation
Arguments: [product#143833, plant#143832, openGoodsMovements#145382], StorageLevel(disk, memory, 2 replicas)
(247) InMemoryTableScan
Output [10]: [id#143817, internalUUID#143816, plant#143832, product#143833, quantityDenominator#143840, quantityNumerator#143839, quantityUom#143837, quantityUomUuid#143838, scheduleLines#143841, validConfirmations#143932]
Arguments: [id#143817, internalUUID#143816, plant#143832, product#143833, quantityDenominator#143840, quantityNumerator#143839, quantityUom#143837, quantityUomUuid#143838, scheduleLines#143841, validConfirmations#143932]
(248) InMemoryRelation
Arguments: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842, stockDatetime#143384, timezonecode#143012, validConfirmations#143932], StorageLevel(disk, memory, deserialized, 1 replicas)
(249) Scan parquet
Output [3]: [product#142980, plant#142981, orderDateTime#142982]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(250) ColumnarToRow [codegen id : 1]
Input [3]: [product#142980, plant#142981, orderDateTime#142982]
(251) Filter [codegen id : 1]
Input [3]: [product#142980, plant#142981, orderDateTime#142982]
Condition : (isnotnull(plant#142981) AND isnotnull(product#142980))
(252) Exchange
Input [3]: [product#142980, plant#142981, orderDateTime#142982]
Arguments: hashpartitioning(product#142980, plant#142981, 25), REPARTITION_BY_NUM, [plan_id=226365]
(253) ShuffleQueryStage
Output [3]: [product#142980, plant#142981, orderDateTime#142982]
Arguments: 0
(254) Scan parquet
Output [4]: [plant#142987, product#142988, productionAspect#142990, systemId#142985]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(255) ColumnarToRow [codegen id : 2]
Input [4]: [plant#142987, product#142988, productionAspect#142990, systemId#142985]
(256) Project [codegen id : 2]
Output [4]: [plant#142987.internalRefUUID AS _extract_internalRefUUID#144131, product#142988.internalRefUUID AS _extract_internalRefUUID#144130, productionAspect#142990.productMovementPlants.unitOfIssue.code AS _extract_code#144128, productionAspect#142990.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#144129]
Input [4]: [plant#142987, product#142988, productionAspect#142990, systemId#142985]
(257) Exchange
Input [4]: [_extract_internalRefUUID#144131, _extract_internalRefUUID#144130, _extract_code#144128, _extract_internalRefUUID#144129]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=226381]
(258) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#144131, _extract_internalRefUUID#144130, _extract_code#144128, _extract_internalRefUUID#144129]
Arguments: 1
(259) Project [codegen id : 61]
Output [4]: [_extract_code#144128, _extract_internalRefUUID#144129, _extract_internalRefUUID#144130, _extract_internalRefUUID#144131]
Input [4]: [_extract_internalRefUUID#144131, _extract_internalRefUUID#144130, _extract_code#144128, _extract_internalRefUUID#144129]
(260) BroadcastExchange
Input [4]: [_extract_code#144128, _extract_internalRefUUID#144129, _extract_internalRefUUID#144130, _extract_internalRefUUID#144131]
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=236366]
(261) BroadcastQueryStage
Output [4]: [_extract_code#144128, _extract_internalRefUUID#144129, _extract_internalRefUUID#144130, _extract_internalRefUUID#144131]
Arguments: 122
(262) BroadcastHashJoin [codegen id : 102]
Left keys [4]: [coalesce(product#142980, ), isnull(product#142980), coalesce(plant#142981, ), isnull(plant#142981)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144130, ), isnull(_extract_internalRefUUID#144130), coalesce(_extract_internalRefUUID#144131, ), isnull(_extract_internalRefUUID#144131)]
Join type: LeftOuter
Join condition: None
(263) Project [codegen id : 102]
Output [5]: [product#142980, plant#142981, orderDateTime#142982, _extract_code#144128, _extract_internalRefUUID#144129]
Input [7]: [product#142980, plant#142981, orderDateTime#142982, _extract_code#144128, _extract_internalRefUUID#144129, _extract_internalRefUUID#144130, _extract_internalRefUUID#144131]
(264) Scan parquet
Output [3]: [internalUUID#142998, address#143004, systemId#142997]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string,address:struct<timeZone:struct<code:string>>>
(265) ColumnarToRow [codegen id : 3]
Input [3]: [internalUUID#142998, address#143004, systemId#142997]
(266) Project [codegen id : 3]
Output [2]: [internalUUID#142998, address#143004.timeZone.code AS timezonecode#143009]
Input [3]: [internalUUID#142998, address#143004, systemId#142997]
(267) Exchange
Input [2]: [internalUUID#142998, timezonecode#143009]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=226400]
(268) ShuffleQueryStage
Output [2]: [internalUUID#142998, timezonecode#143009]
Arguments: 2
(269) BroadcastExchange
Input [2]: [internalUUID#142998, timezonecode#143009]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=234017]
(270) BroadcastQueryStage
Output [2]: [internalUUID#142998, timezonecode#143009]
Arguments: 120
(271) BroadcastHashJoin [codegen id : 102]
Left keys [2]: [coalesce(plant#142981, ), isnull(plant#142981)]
Right keys [2]: [coalesce(internalUUID#142998, ), isnull(internalUUID#142998)]
Join type: LeftOuter
Join condition: None
(272) Project [codegen id : 102]
Output [6]: [product#142980, plant#142981, orderDateTime#142982, _extract_code#144128, _extract_internalRefUUID#144129, CASE WHEN isnotnull(timezonecode#143009) THEN timezonecode#143009 ELSE UTC END AS timezonecode#143012]
Input [7]: [product#142980, plant#142981, orderDateTime#142982, _extract_code#144128, _extract_internalRefUUID#144129, internalUUID#142998, timezonecode#143009]
(273) Scan parquet
Output [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(274) ColumnarToRow [codegen id : 4]
Input [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
(275) Filter [codegen id : 4]
Input [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
Condition : isnotnull(internalUUID#143014)
(276) Project [codegen id : 4]
Output [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Input [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
(277) Exchange
Input [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=226420]
(278) ShuffleQueryStage
Output [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: 3
(279) BroadcastExchange
Input [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=228578]
(280) BroadcastQueryStage
Output [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: 97
(281) BroadcastHashJoin [codegen id : 102]
Left keys [1]: [product#142980]
Right keys [1]: [internalUUID#143014]
Join type: LeftOuter
Join condition: None
(282) Project
Output [5]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, filter(unitOfMeasureConversions#143020, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144128) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144129)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143018.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143018.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143026]
Input [9]: [product#142980, plant#142981, orderDateTime#142982, _extract_code#144128, _extract_internalRefUUID#144129, timezonecode#143012, internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
(283) Generate [codegen id : 103]
Input [5]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, filteredUnitOfMeasureConversions#143026]
Arguments: explode(filteredUnitOfMeasureConversions#143026.quantityNumerator), [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, filteredUnitOfMeasureConversions#143026], true, [quantityNumerator#143034]
(284) Project [codegen id : 103]
Output [5]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, filteredUnitOfMeasureConversions#143026.quantityDenominator AS _extract_quantityDenominator#143934]
Input [6]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, filteredUnitOfMeasureConversions#143026, quantityNumerator#143034]
(285) Generate [codegen id : 103]
Input [5]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, _extract_quantityDenominator#143934]
Arguments: explode(_extract_quantityDenominator#143934), [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012], true, [quantityDenominator#143037]
(286) Project [codegen id : 103]
Output [4]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012]
Input [5]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, quantityDenominator#143037]
(287) Scan parquet
Output [6]: [internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, systemId#143076]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(288) ColumnarToRow [codegen id : 5]
Input [6]: [internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, systemId#143076]
(289) Filter [codegen id : 5]
Input [6]: [internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, systemId#143076]
Condition : (isnotnull(plant#143079.internalRefUUID) AND isnotnull(product#143078.internalRefUUID))
(290) Project [codegen id : 5]
Output [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
Input [6]: [internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, systemId#143076]
(291) Exchange
Input [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=226447]
(292) ShuffleQueryStage
Output [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
Arguments: 4
(293) BroadcastExchange
Input [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
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=232392]
(294) BroadcastQueryStage
Output [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
Arguments: 116
(295) Scan parquet
Output [2]: [marketUnit#143040, distributionCenters#143046]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(296) ColumnarToRow [codegen id : 6]
Input [2]: [marketUnit#143040, distributionCenters#143046]
(297) Filter [codegen id : 6]
Input [2]: [marketUnit#143040, distributionCenters#143046]
Condition : (((marketUnit#143040 <=> Daily_grocery) AND (size(distributionCenters#143046, true) > 0)) AND isnotnull(distributionCenters#143046))
(298) Project [codegen id : 6]
Output [1]: [distributionCenters#143046]
Input [2]: [marketUnit#143040, distributionCenters#143046]
(299) Exchange
Input [1]: [distributionCenters#143046]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=226467]
(300) ShuffleQueryStage
Output [1]: [distributionCenters#143046]
Arguments: 5
(301) Generate [codegen id : 56]
Input [1]: [distributionCenters#143046]
Arguments: explode(distributionCenters#143046), false, [distributionCenters#143064]
(302) Filter [codegen id : 56]
Input [1]: [distributionCenters#143064]
Condition : (((size(distributionCenters#143064.storageLocations, true) > 0) AND isnotnull(distributionCenters#143064.storageLocations)) AND isnotnull(distributionCenters#143064.internalRefUUID))
(303) Project [codegen id : 56]
Output [2]: [distributionCenters#143064.internalRefUUID AS _extract_internalRefUUID#143938, distributionCenters#143064.storageLocations AS _extract_storageLocations#143939]
Input [1]: [distributionCenters#143064]
(304) Generate [codegen id : 56]
Input [2]: [_extract_internalRefUUID#143938, _extract_storageLocations#143939]
Arguments: explode(_extract_storageLocations#143939), [_extract_internalRefUUID#143938], false, [storageLocations#143071]
(305) Project [codegen id : 56]
Output [3]: [_extract_internalRefUUID#143938 AS plantUuid#143066, storageLocations#143071.id AS storageLocId#143072, storageLocations#143071.internalRefUUID AS storageLocUuid#143073]
Input [2]: [_extract_internalRefUUID#143938, storageLocations#143071]
(306) BroadcastExchange
Input [3]: [plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=231359]
(307) BroadcastQueryStage
Output [3]: [plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
Arguments: 108
(308) Scan parquet
Output [2]: [product#143336, plant#143337]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(309) ColumnarToRow [codegen id : 7]
Input [2]: [product#143336, plant#143337]
(310) Filter [codegen id : 7]
Input [2]: [product#143336, plant#143337]
Condition : isnotnull(plant#143337)
(311) Exchange
Input [2]: [product#143336, plant#143337]
Arguments: hashpartitioning(product#143336, plant#143337, 25), REPARTITION_BY_NUM, [plan_id=226490]
(312) ShuffleQueryStage
Output [2]: [product#143336, plant#143337]
Arguments: 6
(313) ReusedExchange [Reuses operator id: 260]
Output [4]: [_extract_code#144134, _extract_internalRefUUID#144135, _extract_internalRefUUID#144132, _extract_internalRefUUID#144133]
(314) BroadcastQueryStage
Output [4]: [_extract_code#144134, _extract_internalRefUUID#144135, _extract_internalRefUUID#144132, _extract_internalRefUUID#144133]
Arguments: 124
(315) BroadcastHashJoin [codegen id : 73]
Left keys [4]: [coalesce(product#143336, ), isnull(product#143336), coalesce(plant#143337, ), isnull(plant#143337)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144132, ), isnull(_extract_internalRefUUID#144132), coalesce(_extract_internalRefUUID#144133, ), isnull(_extract_internalRefUUID#144133)]
Join type: LeftOuter
Join condition: None
(316) Project [codegen id : 73]
Output [4]: [product#143336, plant#143337, _extract_code#144134, _extract_internalRefUUID#144135]
Input [6]: [product#143336, plant#143337, _extract_code#144134, _extract_internalRefUUID#144135, _extract_internalRefUUID#144132, _extract_internalRefUUID#144133]
(317) Scan parquet
Output [2]: [internalUUID#143350, systemId#143349]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(318) ColumnarToRow [codegen id : 9]
Input [2]: [internalUUID#143350, systemId#143349]
(319) Project [codegen id : 9]
Output [1]: [internalUUID#143350]
Input [2]: [internalUUID#143350, systemId#143349]
(320) Exchange
Input [1]: [internalUUID#143350]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=226527]
(321) ShuffleQueryStage
Output [1]: [internalUUID#143350]
Arguments: 9
(322) BroadcastExchange
Input [1]: [internalUUID#143350]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=237446]
(323) BroadcastQueryStage
Output [1]: [internalUUID#143350]
Arguments: 141
(324) BroadcastHashJoin [codegen id : 73]
Left keys [2]: [coalesce(plant#143337, ), isnull(plant#143337)]
Right keys [2]: [coalesce(internalUUID#143350, ), isnull(internalUUID#143350)]
Join type: LeftOuter
Join condition: None
(325) Project [codegen id : 73]
Output [4]: [product#143336, plant#143337, _extract_code#144134, _extract_internalRefUUID#144135]
Input [5]: [product#143336, plant#143337, _extract_code#144134, _extract_internalRefUUID#144135, internalUUID#143350]
(326) ReusedExchange [Reuses operator id: 279]
Output [3]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370]
(327) BroadcastQueryStage
Output [3]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370]
Arguments: 98
(328) BroadcastHashJoin [codegen id : 73]
Left keys [1]: [product#143336]
Right keys [1]: [internalUUID#143364]
Join type: LeftOuter
Join condition: None
(329) Project
Output [2]: [plant#143337, filter(unitOfMeasureConversions#143370, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144134) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144135)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143368.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143368.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143375]
Input [7]: [product#143336, plant#143337, _extract_code#144134, _extract_internalRefUUID#144135, internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370]
(330) Generate [codegen id : 74]
Input [2]: [plant#143337, filteredUnitOfMeasureConversions#143375]
Arguments: explode(filteredUnitOfMeasureConversions#143375.quantityNumerator), [plant#143337, filteredUnitOfMeasureConversions#143375], true, [quantityNumerator#143376]
(331) Project [codegen id : 74]
Output [2]: [plant#143337, filteredUnitOfMeasureConversions#143375.quantityDenominator AS _extract_quantityDenominator#143940]
Input [3]: [plant#143337, filteredUnitOfMeasureConversions#143375, quantityNumerator#143376]
(332) Generate [codegen id : 74]
Input [2]: [plant#143337, _extract_quantityDenominator#143940]
Arguments: explode(_extract_quantityDenominator#143940), [plant#143337], true, [quantityDenominator#143377]
(333) Project [codegen id : 74]
Output [1]: [plant#143337]
Input [2]: [plant#143337, quantityDenominator#143377]
(334) HashAggregate [codegen id : 74]
Input [1]: [plant#143337]
Keys [1]: [plant#143337]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143337]
(335) Exchange
Input [1]: [plant#143337]
Arguments: hashpartitioning(plant#143337, 25), ENSURE_REQUIREMENTS, [plan_id=254858]
(336) ShuffleQueryStage
Output [1]: [plant#143337]
Arguments: 152
(337) AQEShuffleRead
Input [1]: [plant#143337]
Arguments: coalesced
(338) HashAggregate
Input [1]: [plant#143337]
Keys [1]: [plant#143337]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143337]
(339) BroadcastHashJoin
Left keys [1]: [plantUuid#143066]
Right keys [1]: [plant#143337]
Join type: Inner
Join condition: None
(340) Project
Output [3]: [plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
Input [4]: [plantUuid#143066, storageLocId#143072, storageLocUuid#143073, plant#143337]
(341) BroadcastHashJoin [codegen id : 83]
Left keys [2]: [coalesce(plant#143079.internalRefUUID, ), isnull(plant#143079.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#143066, ), isnull(plantUuid#143066)]
Join type: Inner
Join condition: None
(342) Generate
Input [9]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
Arguments: explode(filter(stockQuantities#143081, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143073) AND (lambda x#143085.storageLocation.Id = storageLocId#143072)), lambda x#143085, false))), [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, plantUuid#143066], false, [stockQuantity#143086]
(343) ObjectHashAggregate
Input [7]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, plantUuid#143066, stockQuantity#143086]
Keys [5]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076]
Functions [2]: [partial_first(calculationDateTime#143080, false), partial_collect_list(stockQuantity#143086, 0, 0)]
Aggregate Attributes [3]: [first#144812, valueSet#144813, buf#144814]
Results [8]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076, first#144815, valueSet#144816, buf#144817]
(344) ObjectHashAggregate
Input [8]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076, first#144815, valueSet#144816, buf#144817]
Keys [5]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076]
Functions [2]: [first(calculationDateTime#143080, false), collect_list(stockQuantity#143086, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#143080)()#143100, collect_list(stockQuantity#143086, 0, 0)#143101]
Results [4]: [product#143078, plant#143079, first(calculationDateTime#143080)()#143100 AS calculationDateTime#143087, collect_list(stockQuantity#143086, 0, 0)#143101 AS stockQuantities#143088]
(345) Filter [codegen id : 84]
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantities#143088]
Condition : ((size(stockQuantities#143088, true) > 0) AND isnotnull(calculationDateTime#143087))
(346) Generate [codegen id : 84]
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantities#143088]
Arguments: explode(stockQuantities#143088), [product#143078, plant#143079, calculationDateTime#143087], false, [stockQuantity#143103]
(347) Filter [codegen id : 84]
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantity#143103]
Condition : (((isnotnull(stockQuantity#143103.specialStockIndicator.code) AND isnotnull(stockQuantity#143103.stockType.code)) AND (stockQuantity#143103.specialStockIndicator.code = )) AND (stockQuantity#143103.stockType.code = 01))
(348) Project [codegen id : 84]
Output [4]: [plant#143079.internalRefUUID AS plantUuid#143105, product#143078.internalRefUUID AS productUuid#143107, calculationDateTime#143087, stockQuantity#143103.storagelocation.id AS storageLocId#143108]
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantity#143103]
(349) Exchange
Input [4]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108]
Arguments: hashpartitioning(productUuid#143107, plantUuid#143105, 25), ENSURE_REQUIREMENTS, [plan_id=257985]
(350) ShuffleQueryStage
Output [4]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108]
Arguments: 161
(351) AQEShuffleRead
Input [4]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108]
Arguments: local
(352) BroadcastExchange
Input [4]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=258936]
(353) BroadcastQueryStage
Output [4]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108]
Arguments: 167
(354) Scan parquet
Output [3]: [product#143122, plant#143123, orderDateTime#143124]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(355) ColumnarToRow [codegen id : 11]
Input [3]: [product#143122, plant#143123, orderDateTime#143124]
(356) Filter [codegen id : 11]
Input [3]: [product#143122, plant#143123, orderDateTime#143124]
Condition : ((isnotnull(orderDateTime#143124) AND isnotnull(plant#143123)) AND isnotnull(product#143122))
(357) Exchange
Input [3]: [product#143122, plant#143123, orderDateTime#143124]
Arguments: hashpartitioning(product#143122, plant#143123, 25), REPARTITION_BY_NUM, [plan_id=226588]
(358) ShuffleQueryStage
Output [3]: [product#143122, plant#143123, orderDateTime#143124]
Arguments: 12
(359) ReusedExchange [Reuses operator id: 260]
Output [4]: [_extract_code#144138, _extract_internalRefUUID#144139, _extract_internalRefUUID#144137, _extract_internalRefUUID#144136]
(360) BroadcastQueryStage
Output [4]: [_extract_code#144138, _extract_internalRefUUID#144139, _extract_internalRefUUID#144137, _extract_internalRefUUID#144136]
Arguments: 126
(361) BroadcastHashJoin [codegen id : 91]
Left keys [4]: [coalesce(product#143122, ), isnull(product#143122), coalesce(plant#143123, ), isnull(plant#143123)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144137, ), isnull(_extract_internalRefUUID#144137), coalesce(_extract_internalRefUUID#144136, ), isnull(_extract_internalRefUUID#144136)]
Join type: LeftOuter
Join condition: None
(362) Project [codegen id : 91]
Output [5]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#144138, _extract_internalRefUUID#144139]
Input [7]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#144138, _extract_internalRefUUID#144139, _extract_internalRefUUID#144137, _extract_internalRefUUID#144136]
(363) ReusedExchange [Reuses operator id: 322]
Output [1]: [internalUUID#143136]
(364) BroadcastQueryStage
Output [1]: [internalUUID#143136]
Arguments: 142
(365) BroadcastHashJoin [codegen id : 91]
Left keys [2]: [coalesce(plant#143123, ), isnull(plant#143123)]
Right keys [2]: [coalesce(internalUUID#143136, ), isnull(internalUUID#143136)]
Join type: LeftOuter
Join condition: None
(366) Project [codegen id : 91]
Output [5]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#144138, _extract_internalRefUUID#144139]
Input [6]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#144138, _extract_internalRefUUID#144139, internalUUID#143136]
(367) ReusedExchange [Reuses operator id: 279]
Output [3]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156]
(368) BroadcastQueryStage
Output [3]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156]
Arguments: 99
(369) BroadcastHashJoin [codegen id : 91]
Left keys [1]: [product#143122]
Right keys [1]: [internalUUID#143150]
Join type: LeftOuter
Join condition: None
(370) Project
Output [4]: [product#143122, plant#143123, orderDateTime#143124, filter(unitOfMeasureConversions#143156, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144138) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144139)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143154.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143154.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143161]
Input [8]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#144138, _extract_internalRefUUID#144139, internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156]
(371) Generate
Input [4]: [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161]
Arguments: explode(filteredUnitOfMeasureConversions#143161.quantityNumerator), [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161], true, [quantityNumerator#143162]
(372) Project
Output [4]: [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161.quantityDenominator AS _extract_quantityDenominator#143944]
Input [5]: [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161, quantityNumerator#143162]
(373) Generate
Input [4]: [product#143122, plant#143123, orderDateTime#143124, _extract_quantityDenominator#143944]
Arguments: explode(_extract_quantityDenominator#143944), [product#143122, plant#143123, orderDateTime#143124], true, [quantityDenominator#143163]
(374) Project
Output [3]: [product#143122, plant#143123, orderDateTime#143124]
Input [4]: [product#143122, plant#143123, orderDateTime#143124, quantityDenominator#143163]
(375) BroadcastHashJoin [codegen id : 92]
Left keys [2]: [plantUuid#143105, productUuid#143107]
Right keys [2]: [plant#143123, product#143122]
Join type: Inner
Join condition: (calculationDateTime#143087 <= orderDateTime#143124)
(376) Project [codegen id : 92]
Output [4]: [plantUuid#143105 AS plant#143170, productUuid#143107 AS product#143171, storageLocId#143108, calculationDateTime#143087]
Input [7]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108, product#143122, plant#143123, orderDateTime#143124]
(377) Exchange
Input [4]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087]
Arguments: hashpartitioning(coalesce(plant#143170, ), isnull(plant#143170), coalesce(product#143171, ), isnull(product#143171), coalesce(storageLocId#143108, ), isnull(storageLocId#143108), coalesce(calculationDateTime#143087, 1970-01-01 00:00:00), isnull(calculationDateTime#143087), 25), ENSURE_REQUIREMENTS, [plan_id=259674]
(378) ShuffleQueryStage
Output [4]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087]
Arguments: 172
(379) AQEShuffleRead
Input [4]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087]
Arguments: local
(380) BroadcastExchange
Input [4]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087]
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=260723]
(381) BroadcastQueryStage
Output [4]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087]
Arguments: 177
(382) ReusedExchange [Reuses operator id: 352]
Output [4]: [plantUuid#143262, productUuid#143264, calculationDateTime#143258, storageLocId#143265]
(383) BroadcastQueryStage
Output [4]: [plantUuid#143262, productUuid#143264, calculationDateTime#143258, storageLocId#143265]
Arguments: 169
(384) ReusedExchange [Reuses operator id: 357]
Output [3]: [product#143270, plant#143271, orderDateTime#143272]
(385) ShuffleQueryStage
Output [3]: [product#143270, plant#143271, orderDateTime#143272]
Arguments: 32
(386) ReusedExchange [Reuses operator id: 260]
Output [4]: [_extract_code#144144, _extract_internalRefUUID#144145, _extract_internalRefUUID#144146, _extract_internalRefUUID#144147]
(387) BroadcastQueryStage
Output [4]: [_extract_code#144144, _extract_internalRefUUID#144145, _extract_internalRefUUID#144146, _extract_internalRefUUID#144147]
Arguments: 130
(388) BroadcastHashJoin [codegen id : 93]
Left keys [4]: [coalesce(product#143270, ), isnull(product#143270), coalesce(plant#143271, ), isnull(plant#143271)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144146, ), isnull(_extract_internalRefUUID#144146), coalesce(_extract_internalRefUUID#144147, ), isnull(_extract_internalRefUUID#144147)]
Join type: LeftOuter
Join condition: None
(389) Project [codegen id : 93]
Output [5]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#144144, _extract_internalRefUUID#144145]
Input [7]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#144144, _extract_internalRefUUID#144145, _extract_internalRefUUID#144146, _extract_internalRefUUID#144147]
(390) ReusedExchange [Reuses operator id: 322]
Output [1]: [internalUUID#143284]
(391) BroadcastQueryStage
Output [1]: [internalUUID#143284]
Arguments: 144
(392) BroadcastHashJoin [codegen id : 93]
Left keys [2]: [coalesce(plant#143271, ), isnull(plant#143271)]
Right keys [2]: [coalesce(internalUUID#143284, ), isnull(internalUUID#143284)]
Join type: LeftOuter
Join condition: None
(393) Project [codegen id : 93]
Output [5]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#144144, _extract_internalRefUUID#144145]
Input [6]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#144144, _extract_internalRefUUID#144145, internalUUID#143284]
(394) ReusedExchange [Reuses operator id: 279]
Output [3]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304]
(395) BroadcastQueryStage
Output [3]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304]
Arguments: 101
(396) BroadcastHashJoin [codegen id : 93]
Left keys [1]: [product#143270]
Right keys [1]: [internalUUID#143298]
Join type: LeftOuter
Join condition: None
(397) Project
Output [4]: [product#143270, plant#143271, orderDateTime#143272, filter(unitOfMeasureConversions#143304, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144144) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144145)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143302.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143302.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143309]
Input [8]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#144144, _extract_internalRefUUID#144145, internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304]
(398) Generate
Input [4]: [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309]
Arguments: explode(filteredUnitOfMeasureConversions#143309.quantityNumerator), [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309], true, [quantityNumerator#143310]
(399) Project
Output [4]: [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309.quantityDenominator AS _extract_quantityDenominator#143954]
Input [5]: [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309, quantityNumerator#143310]
(400) Generate
Input [4]: [product#143270, plant#143271, orderDateTime#143272, _extract_quantityDenominator#143954]
Arguments: explode(_extract_quantityDenominator#143954), [product#143270, plant#143271, orderDateTime#143272], true, [quantityDenominator#143311]
(401) Project
Output [3]: [product#143270, plant#143271, orderDateTime#143272]
Input [4]: [product#143270, plant#143271, orderDateTime#143272, quantityDenominator#143311]
(402) BroadcastHashJoin [codegen id : 94]
Left keys [2]: [plantUuid#143262, productUuid#143264]
Right keys [2]: [plant#143271, product#143270]
Join type: Inner
Join condition: (calculationDateTime#143258 <= orderDateTime#143272)
(403) Project [codegen id : 94]
Output [4]: [plantUuid#143262 AS plant#143314, productUuid#143264 AS product#143315, storageLocId#143265, calculationDateTime#143258]
Input [7]: [plantUuid#143262, productUuid#143264, calculationDateTime#143258, storageLocId#143265, product#143270, plant#143271, orderDateTime#143272]
(404) HashAggregate [codegen id : 94]
Input [4]: [plant#143314, product#143315, storageLocId#143265, calculationDateTime#143258]
Keys [3]: [plant#143314, product#143315, storageLocId#143265]
Functions [1]: [partial_max(calculationDateTime#143258)]
Aggregate Attributes [1]: [max#144818]
Results [4]: [plant#143314, product#143315, storageLocId#143265, max#144819]
(405) HashAggregate [codegen id : 94]
Input [4]: [plant#143314, product#143315, storageLocId#143265, max#144819]
Keys [3]: [plant#143314, product#143315, storageLocId#143265]
Functions [1]: [max(calculationDateTime#143258)]
Aggregate Attributes [1]: [max(calculationDateTime#143258)#143178]
Results [4]: [plant#143314, product#143315, storageLocId#143265, max(calculationDateTime#143258)#143178 AS max_calc_datetime#143172]
(406) Exchange
Input [4]: [plant#143314, product#143315, storageLocId#143265, max_calc_datetime#143172]
Arguments: hashpartitioning(coalesce(plant#143314, ), isnull(plant#143314), coalesce(product#143315, ), isnull(product#143315), coalesce(storageLocId#143265, ), isnull(storageLocId#143265), coalesce(max_calc_datetime#143172, 1970-01-01 00:00:00), isnull(max_calc_datetime#143172), 25), ENSURE_REQUIREMENTS, [plan_id=259733]
(407) ShuffleQueryStage
Output [4]: [plant#143314, product#143315, storageLocId#143265, max_calc_datetime#143172]
Arguments: 173
(408) AQEShuffleRead
Input [4]: [plant#143314, product#143315, storageLocId#143265, max_calc_datetime#143172]
Arguments: local
(409) BroadcastHashJoin [codegen id : 99]
Left keys [8]: [coalesce(plant#143170, ), isnull(plant#143170), coalesce(product#143171, ), isnull(product#143171), coalesce(storageLocId#143108, ), isnull(storageLocId#143108), coalesce(calculationDateTime#143087, 1970-01-01 00:00:00), isnull(calculationDateTime#143087)]
Right keys [8]: [coalesce(plant#143314, ), isnull(plant#143314), coalesce(product#143315, ), isnull(product#143315), coalesce(storageLocId#143265, ), isnull(storageLocId#143265), coalesce(max_calc_datetime#143172, 1970-01-01 00:00:00), isnull(max_calc_datetime#143172)]
Join type: Inner
Join condition: None
(410) Project [codegen id : 99]
Output [3]: [plant#143170, product#143171, calculationDateTime#143087]
Input [8]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087, plant#143314, product#143315, storageLocId#143265, max_calc_datetime#143172]
(411) HashAggregate [codegen id : 99]
Input [3]: [plant#143170, product#143171, calculationDateTime#143087]
Keys [2]: [product#143171, plant#143170]
Functions [1]: [partial_min(calculationDateTime#143087)]
Aggregate Attributes [1]: [min#144810]
Results [3]: [product#143171, plant#143170, min#144811]
(412) Exchange
Input [3]: [product#143171, plant#143170, min#144811]
Arguments: hashpartitioning(product#143171, plant#143170, 25), ENSURE_REQUIREMENTS, [plan_id=261880]
(413) ShuffleQueryStage
Output [3]: [product#143171, plant#143170, min#144811]
Arguments: 179
(414) AQEShuffleRead
Input [3]: [product#143171, plant#143170, min#144811]
Arguments: coalesced
(415) HashAggregate [codegen id : 101]
Input [3]: [product#143171, plant#143170, min#144811]
Keys [2]: [product#143171, plant#143170]
Functions [1]: [min(calculationDateTime#143087)]
Aggregate Attributes [1]: [min(calculationDateTime#143087)#143334]
Results [3]: [product#143171, plant#143170, min(calculationDateTime#143087)#143334 AS minCalculationDateTime#143327]
(416) BroadcastExchange
Input [3]: [product#143171, plant#143170, minCalculationDateTime#143327]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=263108]
(417) BroadcastQueryStage
Output [3]: [product#143171, plant#143170, minCalculationDateTime#143327]
Arguments: 182
(418) BroadcastHashJoin [codegen id : 103]
Left keys [2]: [plant#142981, product#142980]
Right keys [2]: [plant#143170, product#143171]
Join type: LeftOuter
Join condition: None
(419) Project [codegen id : 103]
Output [4]: [product#142980, plant#142981, timezonecode#143012, CASE WHEN isnotnull(minCalculationDateTime#143327) THEN minCalculationDateTime#143327 ELSE orderDateTime#142982 END AS stockDatetime#143384]
Input [7]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, product#143171, plant#143170, minCalculationDateTime#143327]
(420) Exchange
Input [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: hashpartitioning(coalesce(plant#142981, ), isnull(plant#142981), coalesce(product#142980, ), isnull(product#142980), 25), ENSURE_REQUIREMENTS, [plan_id=263400]
(421) ShuffleQueryStage
Output [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: 183
(422) AQEShuffleRead
Input [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: local
(423) Scan parquet
Output [3]: [product#143466, plant#143467, orderDateTime#143468]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(424) ColumnarToRow [codegen id : 25]
Input [3]: [product#143466, plant#143467, orderDateTime#143468]
(425) Exchange
Input [3]: [product#143466, plant#143467, orderDateTime#143468]
Arguments: hashpartitioning(product#143466, plant#143467, 25), REPARTITION_BY_NUM, [plan_id=226931]
(426) ShuffleQueryStage
Output [3]: [product#143466, plant#143467, orderDateTime#143468]
Arguments: 39
(427) Scan parquet
Output [8]: [internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477, systemId#143470]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>
(428) ColumnarToRow [codegen id : 26]
Input [8]: [internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477, systemId#143470]
(429) Project [codegen id : 26]
Output [8]: [systemId#143470, internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477]
Input [8]: [internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477, systemId#143470]
(430) Exchange
Input [8]: [systemId#143470, internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=226945]
(431) ShuffleQueryStage
Output [8]: [systemId#143470, internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477]
Arguments: 40
(432) Project [codegen id : 71]
Output [1]: [struct(systemId, systemId#143470, internalUUID, internalUUID#143471, plant, plant#143472, product, product#143473, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143474, productionAspect, productionAspect#143475, salesPlant, salesPlant#143476, listing, listing#143477) AS productPlant#143478]
Input [8]: [systemId#143470, internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477]
(433) BroadcastExchange
Input [1]: [productPlant#143478]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=240579]
(434) BroadcastQueryStage
Output [1]: [productPlant#143478]
Arguments: 150
(435) BroadcastHashJoin [codegen id : 105]
Left keys [4]: [coalesce(product#143466, ), isnull(product#143466), coalesce(plant#143467, ), isnull(plant#143467)]
Right keys [4]: [coalesce(productPlant#143478.product.internalRefUUID, ), isnull(productPlant#143478.product.internalRefUUID), coalesce(productPlant#143478.plant.internalRefUUID, ), isnull(productPlant#143478.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(436) ReusedExchange [Reuses operator id: 269]
Output [2]: [internalUUID#143480, timezonecode#143491]
(437) BroadcastQueryStage
Output [2]: [internalUUID#143480, timezonecode#143491]
Arguments: 121
(438) BroadcastHashJoin [codegen id : 105]
Left keys [2]: [coalesce(plant#143467, ), isnull(plant#143467)]
Right keys [2]: [coalesce(internalUUID#143480, ), isnull(internalUUID#143480)]
Join type: LeftOuter
Join condition: None
(439) Project [codegen id : 105]
Output [5]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, CASE WHEN isnotnull(timezonecode#143491) THEN timezonecode#143491 ELSE UTC END AS timezonecode#143492]
Input [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, internalUUID#143480, timezonecode#143491]
(440) ReusedExchange [Reuses operator id: 279]
Output [3]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500]
(441) BroadcastQueryStage
Output [3]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500]
Arguments: 102
(442) BroadcastHashJoin [codegen id : 105]
Left keys [1]: [product#143466]
Right keys [1]: [internalUUID#143494]
Join type: LeftOuter
Join condition: None
(443) Project
Output [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, filter(unitOfMeasureConversions#143500, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143498.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143498.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143505]
Input [8]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500]
(444) Project [codegen id : 106]
Output [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, filteredUnitOfMeasureConversions#143505.quantityDenominator AS _extract_quantityDenominator#144016, filteredUnitOfMeasureConversions#143505.quantityNumerator AS _extract_quantityNumerator#144017]
Input [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, filteredUnitOfMeasureConversions#143505]
(445) Generate [codegen id : 106]
Input [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, _extract_quantityDenominator#144016, _extract_quantityNumerator#144017]
Arguments: explode(_extract_quantityNumerator#144017), [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, _extract_quantityDenominator#144016], true, [quantityNumerator#143506]
(446) Generate [codegen id : 106]
Input [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, _extract_quantityDenominator#144016, quantityNumerator#143506]
Arguments: explode(_extract_quantityDenominator#144016), [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, quantityNumerator#143506], true, [quantityDenominator#143507]
(447) Project [codegen id : 106]
Output [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, (cast(quantityNumerator#143506 as double) / cast(quantityDenominator#143507 as double)) AS outboundUnit#143508]
Input [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, quantityNumerator#143506, quantityDenominator#143507]
(448) Project [codegen id : 106]
Output [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, CASE WHEN (isnull(outboundUnit#143508) OR (outboundUnit#143508 <= 0.0)) THEN 1.0 ELSE outboundUnit#143508 END AS outboundUnit#143509]
Input [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143508]
(449) ReusedExchange [Reuses operator id: 293]
Output [6]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515]
(450) BroadcastQueryStage
Output [6]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515]
Arguments: 118
(451) ReusedExchange [Reuses operator id: 306]
Output [3]: [plantUuid#143541, storageLocId#143542, storageLocUuid#143543]
(452) BroadcastQueryStage
Output [3]: [plantUuid#143541, storageLocId#143542, storageLocUuid#143543]
Arguments: 112
(453) ReusedExchange [Reuses operator id: 335]
Output [1]: [plant#143545]
(454) ShuffleQueryStage
Output [1]: [plant#143545]
Arguments: 156
(455) AQEShuffleRead
Input [1]: [plant#143545]
Arguments: coalesced
(456) HashAggregate
Input [1]: [plant#143545]
Keys [1]: [plant#143545]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143545]
(457) BroadcastHashJoin
Left keys [1]: [plantUuid#143541]
Right keys [1]: [plant#143545]
Join type: Inner
Join condition: None
(458) Project
Output [3]: [plantUuid#143541, storageLocId#143542, storageLocUuid#143543]
Input [4]: [plantUuid#143541, storageLocId#143542, storageLocUuid#143543, plant#143545]
(459) BroadcastHashJoin [codegen id : 87]
Left keys [2]: [coalesce(plant#143513.internalRefUUID, ), isnull(plant#143513.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#143541, ), isnull(plantUuid#143541)]
Join type: Inner
Join condition: None
(460) Generate
Input [9]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515, plantUuid#143541, storageLocId#143542, storageLocUuid#143543]
Arguments: explode(filter(stockQuantities#143515, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143543) AND (lambda x#143085.storageLocation.Id = storageLocId#143542)), lambda x#143085, false))), [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, plantUuid#143541], false, [stockQuantity#143588]
(461) ObjectHashAggregate
Input [7]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, plantUuid#143541, stockQuantity#143588]
Keys [5]: [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510]
Functions [2]: [partial_first(calculationDateTime#143514, false), partial_collect_list(stockQuantity#143588, 0, 0)]
Aggregate Attributes [3]: [first#144834, valueSet#144835, buf#144836]
Results [8]: [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510, first#144837, valueSet#144838, buf#144839]
(462) ObjectHashAggregate
Input [8]: [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510, first#144837, valueSet#144838, buf#144839]
Keys [5]: [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510]
Functions [2]: [first(calculationDateTime#143514, false), collect_list(stockQuantity#143588, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#143514)()#143100, collect_list(stockQuantity#143588, 0, 0)#143101]
Results [4]: [product#143512, plant#143513, first(calculationDateTime#143514)()#143100 AS calculationDateTime#143589, collect_list(stockQuantity#143588, 0, 0)#143101 AS stockQuantities#143590]
(463) Filter [codegen id : 88]
Input [4]: [product#143512, plant#143513, calculationDateTime#143589, stockQuantities#143590]
Condition : ((size(stockQuantities#143590, true) > 0) AND isnotnull(calculationDateTime#143589))
(464) Generate [codegen id : 88]
Input [4]: [product#143512, plant#143513, calculationDateTime#143589, stockQuantities#143590]
Arguments: explode(stockQuantities#143590), [product#143512, plant#143513, calculationDateTime#143589], false, [stockQuantity#143591]
(465) Filter [codegen id : 88]
Input [4]: [product#143512, plant#143513, calculationDateTime#143589, stockQuantity#143591]
Condition : (((isnotnull(stockQuantity#143591.specialStockIndicator.code) AND isnotnull(stockQuantity#143591.stockType.code)) AND (stockQuantity#143591.specialStockIndicator.code = )) AND (stockQuantity#143591.stockType.code = 01))
(466) Project [codegen id : 88]
Output [5]: [plant#143513.internalRefUUID AS plantUuid#143593, product#143512.internalRefUUID AS productUuid#143595, calculationDateTime#143589, stockQuantity#143591.storagelocation.id AS storageLocId#143596, stockQuantity#143591.quantity.measure AS quantity#143598]
Input [4]: [product#143512, plant#143513, calculationDateTime#143589, stockQuantity#143591]
(467) Exchange
Input [5]: [plantUuid#143593, productUuid#143595, calculationDateTime#143589, storageLocId#143596, quantity#143598]
Arguments: hashpartitioning(productUuid#143595, plantUuid#143593, 25), ENSURE_REQUIREMENTS, [plan_id=258135]
(468) ShuffleQueryStage
Output [5]: [plantUuid#143593, productUuid#143595, calculationDateTime#143589, storageLocId#143596, quantity#143598]
Arguments: 164
(469) AQEShuffleRead
Input [5]: [plantUuid#143593, productUuid#143595, calculationDateTime#143589, storageLocId#143596, quantity#143598]
Arguments: local
(470) BroadcastExchange
Input [5]: [plantUuid#143593, productUuid#143595, calculationDateTime#143589, storageLocId#143596, quantity#143598]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=260287]
(471) BroadcastQueryStage
Output [5]: [plantUuid#143593, productUuid#143595, calculationDateTime#143589, storageLocId#143596, quantity#143598]
Arguments: 176
(472) ReusedExchange [Reuses operator id: 357]
Output [3]: [product#143601, plant#143602, orderDateTime#143603]
(473) ShuffleQueryStage
Output [3]: [product#143601, plant#143602, orderDateTime#143603]
Arguments: 58
(474) ReusedExchange [Reuses operator id: 260]
Output [4]: [_extract_code#144154, _extract_internalRefUUID#144155, _extract_internalRefUUID#144152, _extract_internalRefUUID#144153]
(475) BroadcastQueryStage
Output [4]: [_extract_code#144154, _extract_internalRefUUID#144155, _extract_internalRefUUID#144152, _extract_internalRefUUID#144153]
Arguments: 134
(476) BroadcastHashJoin [codegen id : 97]
Left keys [4]: [coalesce(product#143601, ), isnull(product#143601), coalesce(plant#143602, ), isnull(plant#143602)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144152, ), isnull(_extract_internalRefUUID#144152), coalesce(_extract_internalRefUUID#144153, ), isnull(_extract_internalRefUUID#144153)]
Join type: LeftOuter
Join condition: None
(477) Project [codegen id : 97]
Output [5]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#144154, _extract_internalRefUUID#144155]
Input [7]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#144154, _extract_internalRefUUID#144155, _extract_internalRefUUID#144152, _extract_internalRefUUID#144153]
(478) ReusedExchange [Reuses operator id: 322]
Output [1]: [internalUUID#143615]
(479) BroadcastQueryStage
Output [1]: [internalUUID#143615]
Arguments: 146
(480) BroadcastHashJoin [codegen id : 97]
Left keys [2]: [coalesce(plant#143602, ), isnull(plant#143602)]
Right keys [2]: [coalesce(internalUUID#143615, ), isnull(internalUUID#143615)]
Join type: LeftOuter
Join condition: None
(481) Project [codegen id : 97]
Output [5]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#144154, _extract_internalRefUUID#144155]
Input [6]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#144154, _extract_internalRefUUID#144155, internalUUID#143615]
(482) ReusedExchange [Reuses operator id: 279]
Output [3]: [internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635]
(483) BroadcastQueryStage
Output [3]: [internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635]
Arguments: 104
(484) BroadcastHashJoin [codegen id : 97]
Left keys [1]: [product#143601]
Right keys [1]: [internalUUID#143629]
Join type: LeftOuter
Join condition: None
(485) Project
Output [4]: [product#143601, plant#143602, orderDateTime#143603, filter(unitOfMeasureConversions#143635, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144154) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144155)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143633.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143633.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143640]
Input [8]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#144154, _extract_internalRefUUID#144155, internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635]
(486) Generate
Input [4]: [product#143601, plant#143602, orderDateTime#143603, filteredUnitOfMeasureConversions#143640]
Arguments: explode(filteredUnitOfMeasureConversions#143640.quantityNumerator), [product#143601, plant#143602, orderDateTime#143603, filteredUnitOfMeasureConversions#143640], true, [quantityNumerator#143641]
(487) Project
Output [4]: [product#143601, plant#143602, orderDateTime#143603, filteredUnitOfMeasureConversions#143640.quantityDenominator AS _extract_quantityDenominator#143966]
Input [5]: [product#143601, plant#143602, orderDateTime#143603, filteredUnitOfMeasureConversions#143640, quantityNumerator#143641]
(488) Generate
Input [4]: [product#143601, plant#143602, orderDateTime#143603, _extract_quantityDenominator#143966]
Arguments: explode(_extract_quantityDenominator#143966), [product#143601, plant#143602, orderDateTime#143603], true, [quantityDenominator#143642]
(489) Project
Output [3]: [product#143601, plant#143602, orderDateTime#143603]
Input [4]: [product#143601, plant#143602, orderDateTime#143603, quantityDenominator#143642]
(490) BroadcastHashJoin [codegen id : 98]
Left keys [2]: [plantUuid#143593, productUuid#143595]
Right keys [2]: [plant#143602, product#143601]
Join type: Inner
Join condition: (calculationDateTime#143589 <= orderDateTime#143603)
(491) Project [codegen id : 98]
Output [5]: [plantUuid#143593 AS plant#143645, productUuid#143595 AS product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598]
Input [8]: [plantUuid#143593, productUuid#143595, calculationDateTime#143589, storageLocId#143596, quantity#143598, product#143601, plant#143602, orderDateTime#143603]
(492) Exchange
Input [5]: [plant#143645, product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598]
Arguments: hashpartitioning(coalesce(plant#143645, ), isnull(plant#143645), coalesce(product#143646, ), isnull(product#143646), coalesce(storageLocId#143596, ), isnull(storageLocId#143596), coalesce(calculationDateTime#143589, 1970-01-01 00:00:00), isnull(calculationDateTime#143589), 25), ENSURE_REQUIREMENTS, [plan_id=261160]
(493) ShuffleQueryStage
Output [5]: [plant#143645, product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598]
Arguments: 178
(494) AQEShuffleRead
Input [5]: [plant#143645, product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598]
Arguments: local
(495) ReusedExchange [Reuses operator id: 406]
Output [4]: [plant#143782, product#143783, storageLocId#143733, max_calc_datetime#143784]
(496) ShuffleQueryStage
Output [4]: [plant#143782, product#143783, storageLocId#143733, max_calc_datetime#143784]
Arguments: 175
(497) AQEShuffleRead
Input [4]: [plant#143782, product#143783, storageLocId#143733, max_calc_datetime#143784]
Arguments: local
(498) BroadcastExchange
Input [4]: [plant#143782, product#143783, storageLocId#143733, max_calc_datetime#143784]
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=261902]
(499) BroadcastQueryStage
Output [4]: [plant#143782, product#143783, storageLocId#143733, max_calc_datetime#143784]
Arguments: 180
(500) BroadcastHashJoin [codegen id : 100]
Left keys [8]: [coalesce(plant#143645, ), isnull(plant#143645), coalesce(product#143646, ), isnull(product#143646), coalesce(storageLocId#143596, ), isnull(storageLocId#143596), coalesce(calculationDateTime#143589, 1970-01-01 00:00:00), isnull(calculationDateTime#143589)]
Right keys [8]: [coalesce(plant#143782, ), isnull(plant#143782), coalesce(product#143783, ), isnull(product#143783), coalesce(storageLocId#143733, ), isnull(storageLocId#143733), coalesce(max_calc_datetime#143784, 1970-01-01 00:00:00), isnull(max_calc_datetime#143784)]
Join type: Inner
Join condition: None
(501) Project [codegen id : 100]
Output [4]: [plant#143645, product#143646, calculationDateTime#143589, quantity#143598]
Input [9]: [plant#143645, product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598, plant#143782, product#143783, storageLocId#143733, max_calc_datetime#143784]
(502) HashAggregate [codegen id : 100]
Input [4]: [plant#143645, product#143646, calculationDateTime#143589, quantity#143598]
Keys [2]: [product#143646, plant#143645]
Functions [2]: [partial_min(calculationDateTime#143589), partial_sum(quantity#143598)]
Aggregate Attributes [2]: [min#144830, sum#144831]
Results [4]: [product#143646, plant#143645, min#144832, sum#144833]
(503) Exchange
Input [4]: [product#143646, plant#143645, min#144832, sum#144833]
Arguments: hashpartitioning(product#143646, plant#143645, 25), ENSURE_REQUIREMENTS, [plan_id=262809]
(504) ShuffleQueryStage
Output [4]: [product#143646, plant#143645, min#144832, sum#144833]
Arguments: 181
(505) AQEShuffleRead
Input [4]: [product#143646, plant#143645, min#144832, sum#144833]
Arguments: coalesced
(506) HashAggregate [codegen id : 104]
Input [4]: [product#143646, plant#143645, min#144832, sum#144833]
Keys [2]: [product#143646, plant#143645]
Functions [2]: [min(calculationDateTime#143589), sum(quantity#143598)]
Aggregate Attributes [2]: [min(calculationDateTime#143589)#143334, sum(quantity#143598)#143333]
Results [4]: [product#143646, plant#143645, min(calculationDateTime#143589)#143334 AS minCalculationDateTime#143786, round(sum(quantity#143598)#143333, 0) AS roundedQuantitySum#143787]
(507) BroadcastExchange
Input [4]: [product#143646, plant#143645, minCalculationDateTime#143786, roundedQuantitySum#143787]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=263627]
(508) BroadcastQueryStage
Output [4]: [product#143646, plant#143645, minCalculationDateTime#143786, roundedQuantitySum#143787]
Arguments: 184
(509) BroadcastHashJoin [codegen id : 106]
Left keys [2]: [plant#143467, product#143466]
Right keys [2]: [plant#143645, product#143646]
Join type: LeftOuter
Join condition: None
(510) Project [codegen id : 106]
Output [8]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, CASE WHEN isnotnull(minCalculationDateTime#143786) THEN minCalculationDateTime#143786 ELSE orderDateTime#143468 END AS stockDatetime#143788, CASE WHEN isnotnull(roundedQuantitySum#143787) THEN array(roundedQuantitySum#143787) ELSE [0.0] END AS stockBatchQuantities#143789]
Input [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, product#143646, plant#143645, minCalculationDateTime#143786, roundedQuantitySum#143787]
(511) Scan parquet
Output [9]: [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000002108/0_1_10000002108]
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>>>
(512) ColumnarToRow [codegen id : 49]
Input [9]: [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
(513) Filter [codegen id : 49]
Input [9]: [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
Condition : (isnotnull(product#143387) AND isnotnull(plant#143388))
(514) BroadcastExchange
Input [9]: [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=227509]
(515) BroadcastQueryStage
Output [9]: [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
Arguments: 85
(516) BroadcastHashJoin [codegen id : 106]
Left keys [2]: [product#143466, plant#143467]
Right keys [2]: [product#143387, plant#143388]
Join type: LeftOuter
Join condition: None
(517) Project [codegen id : 106]
Output [9]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, CASE WHEN isnotnull(product#143387) THEN struct(demandChannel, demandChannel#143389, demandStream, demandStream#143390, considerVariance, considerVariance#143391, demandTimeBuckets, demandTimeBuckets#143392, demandPointInTimeStart, demandPointInTimeStart#143393, demandPointInTimeEnd, demandPointInTimeEnd#143394, demandPointInTime, demandPointInTime#143395) END AS rawDemands#143412]
Input [17]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
(518) ObjectHashAggregate
Input [9]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, rawDemands#143412]
Keys [9]: [product#143466, plant#143467, orderDateTime#143468, knownfloatingpointnormalized(if (isnull(productPlant#143478)) null else named_struct(systemId, productPlant#143478.systemId, internalUUID, productPlant#143478.internalUUID, plant, productPlant#143478.plant, product, productPlant#143478.product, blockedForReplenishmentStartingFrom, productPlant#143478.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#143478.productionAspect)) null else named_struct(productMovementPlants, productPlant#143478.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#143478.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#143478.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#143478.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#143478.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#143478.productionAspect.productPlanningPlants.minimumLotSize)), minimumSafetyStock, knownfloatingpointnormalized(normalizenanandzero(productPlant#143478.productionAspect.productPlanningPlants.minimumSafetyStock)), logisticalRoundingProfile, productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#143478.salesPlant, listing, productPlant#143478.listing)) AS productPlant#143478, timezonecode#143492, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#143509)) AS outboundUnit#143509, stockDatetime#143788, knownfloatingpointnormalized(transform(stockBatchQuantities#143789, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#150351)), lambda arg#150351, false))) AS stockBatchQuantities#143789, [7226582400000000] AS [7226582400000000]#150350]
Functions [1]: [partial_collect_list(rawDemands#143412, 0, 0)]
Aggregate Attributes [1]: [buf#144828]
Results [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000]#150350, buf#144829]
(519) ObjectHashAggregate
Input [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000]#150350, buf#144829]
Keys [9]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000]#150350]
Functions [1]: [collect_list(rawDemands#143412, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#143412, 0, 0)#143431]
Results [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#143790, collect_list(rawDemands#143412, 0, 0)#143431 AS rawDemands#143413]
(520) DeserializeToObject [codegen id : 107]
Input [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, stockBatchShelfLifeEndDatetimes#143790, rawDemands#143413]
Arguments: createexternalrow(invoke(product#143466.toString()), invoke(plant#143467.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#143468)), if (isnull(productPlant#143478)) null else createexternalrow(invoke(productPlant#143478.systemId.toString()), invoke(productPlant#143478.internalUUID.toString()), if (isnull(productPlant#143478.plant)) null else createexternalrow(invoke(productPlant#143478.plant.internalRefUUID.toString()), invoke(productPlant#143478.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#143478.product)) null else createexternalrow(invoke(productPlant#143478.product.internalRefUUID.toString()), invoke(productPlant#143478.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#143478.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#143478.productionAspect)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#143478.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#143478.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#143478.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#143478.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(minimumSafetyStock,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#143478.salesPlant)) null else createexternalrow(if (isnull(productPlant#143478.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#143478.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#143478.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#143478.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#143492.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#143509)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#143788)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#143789, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#143790, 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#143413, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#143452: org.apache.spark.sql.Row
(521) MapElements [codegen id : 107]
Input [1]: [obj#143452]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@2d5ca6d1, obj#143457: org.apache.spark.sql.Row
(522) SerializeFromObject [codegen id : 107]
Input [1]: [obj#143457]
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#143462, 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#143463]
(523) Exchange
Input [2]: [product#143462, plant#143463]
Arguments: hashpartitioning(coalesce(plant#143463, ), isnull(plant#143463), coalesce(product#143462, ), isnull(product#143462), 25), ENSURE_REQUIREMENTS, [plan_id=263848]
(524) ShuffleQueryStage
Output [2]: [product#143462, plant#143463]
Arguments: 185
(525) AQEShuffleRead
Input [2]: [product#143462, plant#143463]
Arguments: local
(526) BroadcastExchange
Input [2]: [product#143462, plant#143463]
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=264019]
(527) BroadcastQueryStage
Output [2]: [product#143462, plant#143463]
Arguments: 186
(528) BroadcastHashJoin [codegen id : 108]
Left keys [4]: [coalesce(plant#142981, ), isnull(plant#142981), coalesce(product#142980, ), isnull(product#142980)]
Right keys [4]: [coalesce(plant#143463, ), isnull(plant#143463), coalesce(product#143462, ), isnull(product#143462)]
Join type: LeftOuter
Join condition: None
(529) Project [codegen id : 108]
Output [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Input [6]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384, product#143462, plant#143463]
(530) Exchange
Input [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: hashpartitioning(plant#142981, 25), ENSURE_REQUIREMENTS, [plan_id=264090]
(531) ShuffleQueryStage
Output [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: 187
(532) AQEShuffleRead
Input [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: local
(533) BroadcastExchange
Input [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true]),false), [plan_id=264140]
(534) BroadcastQueryStage
Output [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: 188
(535) ReusedExchange [Reuses operator id: 299]
Output [1]: [distributionCenters#143861]
(536) ShuffleQueryStage
Output [1]: [distributionCenters#143861]
Arguments: 87
(537) Generate [codegen id : 60]
Input [1]: [distributionCenters#143861]
Arguments: explode(distributionCenters#143861), false, [distributionCenters#143877]
(538) Filter [codegen id : 60]
Input [1]: [distributionCenters#143877]
Condition : (((size(distributionCenters#143877.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#143877.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#143877.internalRefUUID))
(539) Project [codegen id : 60]
Output [2]: [distributionCenters#143877.internalRefUUID AS _extract_internalRefUUID#143980, distributionCenters#143877.storageLocations.internalRefUUID AS _extract_internalRefUUID#144165]
Input [1]: [distributionCenters#143877]
(540) Generate [codegen id : 60]
Input [2]: [_extract_internalRefUUID#143980, _extract_internalRefUUID#144165]
Arguments: explode(_extract_internalRefUUID#144165), [_extract_internalRefUUID#143980], false, [storageLocations#143878]
(541) Filter [codegen id : 60]
Input [2]: [_extract_internalRefUUID#143980, storageLocations#143878]
Condition : isnotnull(storageLocations#143878)
(542) Project [codegen id : 60]
Output [2]: [_extract_internalRefUUID#143980 AS plantUuid#143880, storageLocations#143878 AS storageLocUuid#143882]
Input [2]: [_extract_internalRefUUID#143980, storageLocations#143878]
(543) BroadcastExchange
Input [2]: [plantUuid#143880, storageLocUuid#143882]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=231566]
(544) BroadcastQueryStage
Output [2]: [plantUuid#143880, storageLocUuid#143882]
Arguments: 115
(545) ReusedExchange [Reuses operator id: 335]
Output [1]: [plant#143884]
(546) ShuffleQueryStage
Output [1]: [plant#143884]
Arguments: 160
(547) HashAggregate
Input [1]: [plant#143884]
Keys [1]: [plant#143884]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143884]
(548) BroadcastHashJoin
Left keys [1]: [plantUuid#143880]
Right keys [1]: [plant#143884]
Join type: Inner
Join condition: None
(549) Project
Output [2]: [plantUuid#143880 AS plant#143854, storageLocUuid#143882]
Input [3]: [plantUuid#143880, storageLocUuid#143882, plant#143884]
(550) BroadcastHashJoin [codegen id : 109]
Left keys [1]: [plant#142981]
Right keys [1]: [plant#143854]
Join type: Inner
Join condition: None
(551) Project [codegen id : 109]
Output [5]: [plant#142981, product#142980, timezonecode#143012, stockDatetime#143384, storageLocUuid#143882]
Input [6]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384, plant#143854, storageLocUuid#143882]
(552) Scan parquet
Output [6]: [internalUUID#143816, id#143817, supplier#143819, isMarkedForDeletion#143822, items#143823, systemId#143815]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-procurement-purchaseorder]
PushedFilters: [IsNotNull(isMarkedForDeletion), Not(EqualTo(isMarkedForDeletion,true)), IsNotNull(items)]
ReadSchema: struct<internalUUID:string,id:string,supplier:struct<internalRefUUID:string,id:string>,isMarkedForDeletion:boolean,items:array<struct<number:string,completeIndicator:boolean,returnIndicator:boolean,deletionIndicator:boolean,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:double,quantityUnit:struct<internalRefUUID:string,code:string>,quantityNumerator:double,quantityDenominator:double,scheduleLines:array<struct<number:string,deliveryAt:timestamp,quantity:double,quantityUnit:struct<internalRefUUID:string,code:string>,receivedQuantity:double,deliveredQuantity:double,productAvailabilityDateTime:timestamp>>,confirmations:array<struct<number:string,confirmationCategory:struct<internalRefUUID:string,code:string>,confirmationDeliveryDate:date,confirmedDeliveryAt:timestamp,confirmedQuantity:double,mrpRelevantQuantity:double,confirmationCreationCategory:string,deletionIndicator:boolean,isRelevantForConfirmation:boolean,delivery:struct<internalRefUUID:string,id:string>,deliveryItemNumber:string>>>>>
(553) ColumnarToRow [codegen id : 55]
Input [6]: [internalUUID#143816, id#143817, supplier#143819, isMarkedForDeletion#143822, items#143823, systemId#143815]
(554) Filter [codegen id : 55]
Input [6]: [internalUUID#143816, id#143817, supplier#143819, isMarkedForDeletion#143822, items#143823, systemId#143815]
Condition : (((isnotnull(isMarkedForDeletion#143822) AND NOT isMarkedForDeletion#143822) AND (size(items#143823, true) > 0)) AND isnotnull(items#143823))
(555) Project [codegen id : 55]
Output [4]: [internalUUID#143816, id#143817, supplier#143819, items#143823]
Input [6]: [internalUUID#143816, id#143817, supplier#143819, isMarkedForDeletion#143822, items#143823, systemId#143815]
(556) Exchange
Input [4]: [internalUUID#143816, id#143817, supplier#143819, items#143823]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=227742]
(557) ShuffleQueryStage
Output [4]: [internalUUID#143816, id#143817, supplier#143819, items#143823]
Arguments: 96
(558) Generate [codegen id : 72]
Input [4]: [internalUUID#143816, id#143817, supplier#143819, items#143823]
Arguments: explode(items#143823), [internalUUID#143816, id#143817, supplier#143819], false, [item#143827]
(559) Filter [codegen id : 72]
Input [4]: [internalUUID#143816, id#143817, supplier#143819, item#143827]
Condition : ((((isnotnull(item#143827.deletionIndicator) AND isnotnull(item#143827.completeIndicator)) AND isnotnull(item#143827.returnIndicator)) AND ((NOT item#143827.deletionIndicator AND NOT item#143827.completeIndicator) AND NOT item#143827.returnIndicator)) AND ((isnotnull(item#143827.product.internalRefUUID) AND isnotnull(item#143827.plant.internalRefUUID)) AND isnotnull(item#143827.storageLocation.internalRefUUID)))
(560) Project [codegen id : 72]
Output [14]: [id#143817, internalUUID#143816, supplier#143819.internalRefUUID AS supplierUuid#143824, item#143827.plant.internalRefUUID AS plant#143832, item#143827.product.internalRefUUID AS product#143833, item#143827.plant.id AS externalPlantId#143834, item#143827.product.id AS externalProductId#143835, item#143827.storageLocation.internalRefUUID AS storageLocUuid#143836, item#143827.quantityUnit.code AS quantityUom#143837, item#143827.quantityUnit.internalRefUUID AS quantityUomUuid#143838, item#143827.quantityNumerator AS quantityNumerator#143839, item#143827.quantityDenominator AS quantityDenominator#143840, item#143827.scheduleLines AS scheduleLines#143841, item#143827.confirmations AS confirmations#143842]
Input [4]: [internalUUID#143816, id#143817, supplier#143819, item#143827]
(561) BroadcastExchange
Input [14]: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842]
Arguments: HashedRelationBroadcastMode(List(input[4, string, true], input[3, string, true], input[7, string, true]),false), [plan_id=241931]
(562) BroadcastQueryStage
Output [14]: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842]
Arguments: 151
(563) BroadcastHashJoin [codegen id : 109]
Left keys [3]: [product#142980, plant#142981, storageLocUuid#143882]
Right keys [3]: [product#143833, plant#143832, storageLocUuid#143836]
Join type: Inner
Join condition: None
(564) Project
Output [17]: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842, stockDatetime#143384, timezonecode#143012, filter(confirmations#143842, lambdafunction(((NOT lambda x_29#143933.deletionIndicator AND lambda x_29#143933.isRelevantForConfirmation) AND isnotnull(lambda x_29#143933.confirmedDeliveryAt)), lambda x_29#143933, false)) AS validConfirmations#143932]
Input [19]: [plant#142981, product#142980, timezonecode#143012, stockDatetime#143384, storageLocUuid#143882, id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842]
(565) ResultQueryStage
Output [17]: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842, stockDatetime#143384, timezonecode#143012, validConfirmations#143932]
Arguments: 189
(566) Filter
Input [3]: [product#142980, plant#142981, orderDateTime#142982]
Condition : (isnotnull(plant#142981) AND isnotnull(product#142980))
(567) Exchange
Input [3]: [product#142980, plant#142981, orderDateTime#142982]
Arguments: hashpartitioning(product#142980, plant#142981, 25), REPARTITION_BY_NUM, [plan_id=216939]
(568) Project
Output [4]: [plant#142987.internalRefUUID AS _extract_internalRefUUID#144131, product#142988.internalRefUUID AS _extract_internalRefUUID#144130, productionAspect#142990.productMovementPlants.unitOfIssue.code AS _extract_code#144128, productionAspect#142990.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#144129]
Input [4]: [plant#142987, product#142988, productionAspect#142990, systemId#142985]
(569) Exchange
Input [4]: [_extract_internalRefUUID#144131, _extract_internalRefUUID#144130, _extract_code#144128, _extract_internalRefUUID#144129]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216510]
(570) Project
Output [4]: [_extract_code#144128, _extract_internalRefUUID#144129, _extract_internalRefUUID#144130, _extract_internalRefUUID#144131]
Input [4]: [_extract_internalRefUUID#144131, _extract_internalRefUUID#144130, _extract_code#144128, _extract_internalRefUUID#144129]
(571) BroadcastExchange
Input [4]: [_extract_code#144128, _extract_internalRefUUID#144129, _extract_internalRefUUID#144130, _extract_internalRefUUID#144131]
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=217138]
(572) BroadcastHashJoin
Left keys [4]: [coalesce(product#142980, ), isnull(product#142980), coalesce(plant#142981, ), isnull(plant#142981)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144130, ), isnull(_extract_internalRefUUID#144130), coalesce(_extract_internalRefUUID#144131, ), isnull(_extract_internalRefUUID#144131)]
Join type: LeftOuter
Join condition: None
(573) Project
Output [5]: [product#142980, plant#142981, orderDateTime#142982, _extract_code#144128, _extract_internalRefUUID#144129]
Input [7]: [product#142980, plant#142981, orderDateTime#142982, _extract_code#144128, _extract_internalRefUUID#144129, _extract_internalRefUUID#144130, _extract_internalRefUUID#144131]
(574) Project
Output [2]: [internalUUID#142998, address#143004.timeZone.code AS timezonecode#143009]
Input [3]: [internalUUID#142998, address#143004, systemId#142997]
(575) Exchange
Input [2]: [internalUUID#142998, timezonecode#143009]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216516]
(576) BroadcastExchange
Input [2]: [internalUUID#142998, timezonecode#143009]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=217142]
(577) BroadcastHashJoin
Left keys [2]: [coalesce(plant#142981, ), isnull(plant#142981)]
Right keys [2]: [coalesce(internalUUID#142998, ), isnull(internalUUID#142998)]
Join type: LeftOuter
Join condition: None
(578) Project
Output [6]: [product#142980, plant#142981, orderDateTime#142982, _extract_code#144128, _extract_internalRefUUID#144129, CASE WHEN isnotnull(timezonecode#143009) THEN timezonecode#143009 ELSE UTC END AS timezonecode#143012]
Input [7]: [product#142980, plant#142981, orderDateTime#142982, _extract_code#144128, _extract_internalRefUUID#144129, internalUUID#142998, timezonecode#143009]
(579) Filter
Input [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
Condition : isnotnull(internalUUID#143014)
(580) Project
Output [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Input [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
(581) Exchange
Input [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216522]
(582) BroadcastExchange
Input [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217146]
(583) BroadcastHashJoin
Left keys [1]: [product#142980]
Right keys [1]: [internalUUID#143014]
Join type: LeftOuter
Join condition: None
(584) Project
Output [5]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, filter(unitOfMeasureConversions#143020, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144128) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144129)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143018.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143018.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143026]
Input [9]: [product#142980, plant#142981, orderDateTime#142982, _extract_code#144128, _extract_internalRefUUID#144129, timezonecode#143012, internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
(585) Generate
Input [5]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, filteredUnitOfMeasureConversions#143026]
Arguments: explode(filteredUnitOfMeasureConversions#143026.quantityNumerator), [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, filteredUnitOfMeasureConversions#143026], true, [quantityNumerator#143034]
(586) Project
Output [5]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, filteredUnitOfMeasureConversions#143026.quantityDenominator AS _extract_quantityDenominator#143934]
Input [6]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, filteredUnitOfMeasureConversions#143026, quantityNumerator#143034]
(587) Generate
Input [5]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, _extract_quantityDenominator#143934]
Arguments: explode(_extract_quantityDenominator#143934), [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012], true, [quantityDenominator#143037]
(588) Project
Output [4]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012]
Input [5]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, quantityDenominator#143037]
(589) Sort
Input [4]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012]
Arguments: [product#142980 ASC NULLS FIRST, plant#142981 ASC NULLS FIRST], false, 0
(590) Filter
Input [6]: [internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, systemId#143076]
Condition : (isnotnull(plant#143079.internalRefUUID) AND isnotnull(product#143078.internalRefUUID))
(591) Project
Output [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
Input [6]: [internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, systemId#143076]
(592) Exchange
Input [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216532]
(593) BroadcastExchange
Input [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
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=217177]
(594) Filter
Input [2]: [marketUnit#143040, distributionCenters#143046]
Condition : (((marketUnit#143040 <=> Daily_grocery) AND (size(distributionCenters#143046, true) > 0)) AND isnotnull(distributionCenters#143046))
(595) Project
Output [1]: [distributionCenters#143046]
Input [2]: [marketUnit#143040, distributionCenters#143046]
(596) Exchange
Input [1]: [distributionCenters#143046]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216536]
(597) Generate
Input [1]: [distributionCenters#143046]
Arguments: explode(distributionCenters#143046), false, [distributionCenters#143064]
(598) Filter
Input [1]: [distributionCenters#143064]
Condition : (((size(distributionCenters#143064.storageLocations, true) > 0) AND isnotnull(distributionCenters#143064.storageLocations)) AND isnotnull(distributionCenters#143064.internalRefUUID))
(599) Project
Output [2]: [distributionCenters#143064.internalRefUUID AS _extract_internalRefUUID#143938, distributionCenters#143064.storageLocations AS _extract_storageLocations#143939]
Input [1]: [distributionCenters#143064]
(600) Generate
Input [2]: [_extract_internalRefUUID#143938, _extract_storageLocations#143939]
Arguments: explode(_extract_storageLocations#143939), [_extract_internalRefUUID#143938], false, [storageLocations#143071]
(601) Project
Output [3]: [_extract_internalRefUUID#143938 AS plantUuid#143066, storageLocations#143071.id AS storageLocId#143072, storageLocations#143071.internalRefUUID AS storageLocUuid#143073]
Input [2]: [_extract_internalRefUUID#143938, storageLocations#143071]
(602) BroadcastExchange
Input [3]: [plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217173]
(603) Filter
Input [2]: [product#143336, plant#143337]
Condition : isnotnull(plant#143337)
(604) Exchange
Input [2]: [product#143336, plant#143337]
Arguments: hashpartitioning(product#143336, plant#143337, 25), REPARTITION_BY_NUM, [plan_id=216950]
(605) Scan parquet
Output [4]: [plant#143342, product#143343, productionAspect#143345, systemId#143340]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(606) Project
Output [4]: [plant#143342.internalRefUUID AS _extract_internalRefUUID#144133, product#143343.internalRefUUID AS _extract_internalRefUUID#144132, productionAspect#143345.productMovementPlants.unitOfIssue.code AS _extract_code#144134, productionAspect#143345.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#144135]
Input [4]: [plant#143342, product#143343, productionAspect#143345, systemId#143340]
(607) Exchange
Input [4]: [_extract_internalRefUUID#144133, _extract_internalRefUUID#144132, _extract_code#144134, _extract_internalRefUUID#144135]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216548]
(608) Project
Output [4]: [_extract_code#144134, _extract_internalRefUUID#144135, _extract_internalRefUUID#144132, _extract_internalRefUUID#144133]
Input [4]: [_extract_internalRefUUID#144133, _extract_internalRefUUID#144132, _extract_code#144134, _extract_internalRefUUID#144135]
(609) BroadcastExchange
Input [4]: [_extract_code#144134, _extract_internalRefUUID#144135, _extract_internalRefUUID#144132, _extract_internalRefUUID#144133]
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=217153]
(610) BroadcastHashJoin
Left keys [4]: [coalesce(product#143336, ), isnull(product#143336), coalesce(plant#143337, ), isnull(plant#143337)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144132, ), isnull(_extract_internalRefUUID#144132), coalesce(_extract_internalRefUUID#144133, ), isnull(_extract_internalRefUUID#144133)]
Join type: LeftOuter
Join condition: None
(611) Project
Output [4]: [product#143336, plant#143337, _extract_code#144134, _extract_internalRefUUID#144135]
Input [6]: [product#143336, plant#143337, _extract_code#144134, _extract_internalRefUUID#144135, _extract_internalRefUUID#144132, _extract_internalRefUUID#144133]
(612) Project
Output [1]: [internalUUID#143350]
Input [2]: [internalUUID#143350, systemId#143349]
(613) Exchange
Input [1]: [internalUUID#143350]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216554]
(614) BroadcastExchange
Input [1]: [internalUUID#143350]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=217157]
(615) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143337, ), isnull(plant#143337)]
Right keys [2]: [coalesce(internalUUID#143350, ), isnull(internalUUID#143350)]
Join type: LeftOuter
Join condition: None
(616) Project
Output [4]: [product#143336, plant#143337, _extract_code#144134, _extract_internalRefUUID#144135]
Input [5]: [product#143336, plant#143337, _extract_code#144134, _extract_internalRefUUID#144135, internalUUID#143350]
(617) Scan parquet
Output [4]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370, systemId#143363]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(618) Filter
Input [4]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370, systemId#143363]
Condition : isnotnull(internalUUID#143364)
(619) Project
Output [3]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370]
Input [4]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370, systemId#143363]
(620) Exchange
Input [3]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216560]
(621) BroadcastExchange
Input [3]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217161]
(622) BroadcastHashJoin
Left keys [1]: [product#143336]
Right keys [1]: [internalUUID#143364]
Join type: LeftOuter
Join condition: None
(623) Project
Output [2]: [plant#143337, filter(unitOfMeasureConversions#143370, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144134) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144135)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143368.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143368.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143375]
Input [7]: [product#143336, plant#143337, _extract_code#144134, _extract_internalRefUUID#144135, internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370]
(624) Generate
Input [2]: [plant#143337, filteredUnitOfMeasureConversions#143375]
Arguments: explode(filteredUnitOfMeasureConversions#143375.quantityNumerator), [plant#143337, filteredUnitOfMeasureConversions#143375], true, [quantityNumerator#143376]
(625) Project
Output [2]: [plant#143337, filteredUnitOfMeasureConversions#143375.quantityDenominator AS _extract_quantityDenominator#143940]
Input [3]: [plant#143337, filteredUnitOfMeasureConversions#143375, quantityNumerator#143376]
(626) Generate
Input [2]: [plant#143337, _extract_quantityDenominator#143940]
Arguments: explode(_extract_quantityDenominator#143940), [plant#143337], true, [quantityDenominator#143377]
(627) Project
Output [1]: [plant#143337]
Input [2]: [plant#143337, quantityDenominator#143377]
(628) HashAggregate
Input [1]: [plant#143337]
Keys [1]: [plant#143337]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143337]
(629) Exchange
Input [1]: [plant#143337]
Arguments: hashpartitioning(plant#143337, 25), ENSURE_REQUIREMENTS, [plan_id=217170]
(630) HashAggregate
Input [1]: [plant#143337]
Keys [1]: [plant#143337]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143337]
(631) BroadcastHashJoin
Left keys [1]: [plantUuid#143066]
Right keys [1]: [plant#143337]
Join type: Inner
Join condition: None
(632) Project
Output [3]: [plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
Input [4]: [plantUuid#143066, storageLocId#143072, storageLocUuid#143073, plant#143337]
(633) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143079.internalRefUUID, ), isnull(plant#143079.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#143066, ), isnull(plantUuid#143066)]
Join type: Inner
Join condition: None
(634) Generate
Input [9]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
Arguments: explode(filter(stockQuantities#143081, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143073) AND (lambda x#143085.storageLocation.Id = storageLocId#143072)), lambda x#143085, false))), [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, plantUuid#143066], false, [stockQuantity#143086]
(635) ObjectHashAggregate
Input [7]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, plantUuid#143066, stockQuantity#143086]
Keys [5]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076]
Functions [2]: [partial_first(calculationDateTime#143080, false), partial_collect_list(stockQuantity#143086, 0, 0)]
Aggregate Attributes [3]: [first#144812, valueSet#144813, buf#144814]
Results [8]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076, first#144815, valueSet#144816, buf#144817]
(636) ObjectHashAggregate
Input [8]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076, first#144815, valueSet#144816, buf#144817]
Keys [5]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076]
Functions [2]: [first(calculationDateTime#143080, false), collect_list(stockQuantity#143086, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#143080)()#143100, collect_list(stockQuantity#143086, 0, 0)#143101]
Results [4]: [product#143078, plant#143079, first(calculationDateTime#143080)()#143100 AS calculationDateTime#143087, collect_list(stockQuantity#143086, 0, 0)#143101 AS stockQuantities#143088]
(637) Filter
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantities#143088]
Condition : ((size(stockQuantities#143088, true) > 0) AND isnotnull(calculationDateTime#143087))
(638) Generate
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantities#143088]
Arguments: explode(stockQuantities#143088), [product#143078, plant#143079, calculationDateTime#143087], false, [stockQuantity#143103]
(639) Filter
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantity#143103]
Condition : (((isnotnull(stockQuantity#143103.specialStockIndicator.code) AND isnotnull(stockQuantity#143103.stockType.code)) AND (stockQuantity#143103.specialStockIndicator.code = )) AND (stockQuantity#143103.stockType.code = 01))
(640) Project
Output [4]: [plant#143079.internalRefUUID AS plantUuid#143105, product#143078.internalRefUUID AS productUuid#143107, calculationDateTime#143087, stockQuantity#143103.storagelocation.id AS storageLocId#143108]
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantity#143103]
(641) Exchange
Input [4]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108]
Arguments: hashpartitioning(productUuid#143107, plantUuid#143105, 25), ENSURE_REQUIREMENTS, [plan_id=217203]
(642) Sort
Input [4]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108]
Arguments: [productUuid#143107 ASC NULLS FIRST, plantUuid#143105 ASC NULLS FIRST], false, 0
(643) Filter
Input [3]: [product#143122, plant#143123, orderDateTime#143124]
Condition : ((isnotnull(orderDateTime#143124) AND isnotnull(plant#143123)) AND isnotnull(product#143122))
(644) Exchange
Input [3]: [product#143122, plant#143123, orderDateTime#143124]
Arguments: hashpartitioning(product#143122, plant#143123, 25), REPARTITION_BY_NUM, [plan_id=216973]
(645) Scan parquet
Output [4]: [plant#143128, product#143129, productionAspect#143131, systemId#143126]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(646) Project
Output [4]: [plant#143128.internalRefUUID AS _extract_internalRefUUID#144136, product#143129.internalRefUUID AS _extract_internalRefUUID#144137, productionAspect#143131.productMovementPlants.unitOfIssue.code AS _extract_code#144138, productionAspect#143131.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#144139]
Input [4]: [plant#143128, product#143129, productionAspect#143131, systemId#143126]
(647) Exchange
Input [4]: [_extract_internalRefUUID#144136, _extract_internalRefUUID#144137, _extract_code#144138, _extract_internalRefUUID#144139]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216585]
(648) Project
Output [4]: [_extract_code#144138, _extract_internalRefUUID#144139, _extract_internalRefUUID#144137, _extract_internalRefUUID#144136]
Input [4]: [_extract_internalRefUUID#144136, _extract_internalRefUUID#144137, _extract_code#144138, _extract_internalRefUUID#144139]
(649) BroadcastExchange
Input [4]: [_extract_code#144138, _extract_internalRefUUID#144139, _extract_internalRefUUID#144137, _extract_internalRefUUID#144136]
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=217186]
(650) BroadcastHashJoin
Left keys [4]: [coalesce(product#143122, ), isnull(product#143122), coalesce(plant#143123, ), isnull(plant#143123)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144137, ), isnull(_extract_internalRefUUID#144137), coalesce(_extract_internalRefUUID#144136, ), isnull(_extract_internalRefUUID#144136)]
Join type: LeftOuter
Join condition: None
(651) Project
Output [5]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#144138, _extract_internalRefUUID#144139]
Input [7]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#144138, _extract_internalRefUUID#144139, _extract_internalRefUUID#144137, _extract_internalRefUUID#144136]
(652) Scan parquet
Output [2]: [internalUUID#143136, systemId#143135]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(653) Project
Output [1]: [internalUUID#143136]
Input [2]: [internalUUID#143136, systemId#143135]
(654) Exchange
Input [1]: [internalUUID#143136]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216591]
(655) BroadcastExchange
Input [1]: [internalUUID#143136]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=217190]
(656) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143123, ), isnull(plant#143123)]
Right keys [2]: [coalesce(internalUUID#143136, ), isnull(internalUUID#143136)]
Join type: LeftOuter
Join condition: None
(657) Project
Output [5]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#144138, _extract_internalRefUUID#144139]
Input [6]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#144138, _extract_internalRefUUID#144139, internalUUID#143136]
(658) Scan parquet
Output [4]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156, systemId#143149]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(659) Filter
Input [4]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156, systemId#143149]
Condition : isnotnull(internalUUID#143150)
(660) Project
Output [3]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156]
Input [4]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156, systemId#143149]
(661) Exchange
Input [3]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216597]
(662) BroadcastExchange
Input [3]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217194]
(663) BroadcastHashJoin
Left keys [1]: [product#143122]
Right keys [1]: [internalUUID#143150]
Join type: LeftOuter
Join condition: None
(664) Project
Output [4]: [product#143122, plant#143123, orderDateTime#143124, filter(unitOfMeasureConversions#143156, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144138) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144139)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143154.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143154.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143161]
Input [8]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#144138, _extract_internalRefUUID#144139, internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156]
(665) Generate
Input [4]: [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161]
Arguments: explode(filteredUnitOfMeasureConversions#143161.quantityNumerator), [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161], true, [quantityNumerator#143162]
(666) Project
Output [4]: [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161.quantityDenominator AS _extract_quantityDenominator#143944]
Input [5]: [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161, quantityNumerator#143162]
(667) Generate
Input [4]: [product#143122, plant#143123, orderDateTime#143124, _extract_quantityDenominator#143944]
Arguments: explode(_extract_quantityDenominator#143944), [product#143122, plant#143123, orderDateTime#143124], true, [quantityDenominator#143163]
(668) Project
Output [3]: [product#143122, plant#143123, orderDateTime#143124]
Input [4]: [product#143122, plant#143123, orderDateTime#143124, quantityDenominator#143163]
(669) Sort
Input [3]: [product#143122, plant#143123, orderDateTime#143124]
Arguments: [product#143122 ASC NULLS FIRST, plant#143123 ASC NULLS FIRST], false, 0
(670) SortMergeJoin
Left keys [2]: [productUuid#143107, plantUuid#143105]
Right keys [2]: [product#143122, plant#143123]
Join type: Inner
Join condition: (calculationDateTime#143087 <= orderDateTime#143124)
(671) Project
Output [4]: [plantUuid#143105 AS plant#143170, productUuid#143107 AS product#143171, storageLocId#143108, calculationDateTime#143087]
Input [7]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108, product#143122, plant#143123, orderDateTime#143124]
(672) Exchange
Input [4]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087]
Arguments: hashpartitioning(coalesce(plant#143170, ), isnull(plant#143170), coalesce(product#143171, ), isnull(product#143171), coalesce(storageLocId#143108, ), isnull(storageLocId#143108), coalesce(calculationDateTime#143087, 1970-01-01 00:00:00), isnull(calculationDateTime#143087), 25), ENSURE_REQUIREMENTS, [plan_id=217267]
(673) Sort
Input [4]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087]
Arguments: [coalesce(plant#143170, ) ASC NULLS FIRST, isnull(plant#143170) ASC NULLS FIRST, coalesce(product#143171, ) ASC NULLS FIRST, isnull(product#143171) ASC NULLS FIRST, coalesce(storageLocId#143108, ) ASC NULLS FIRST, isnull(storageLocId#143108) ASC NULLS FIRST, coalesce(calculationDateTime#143087, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#143087) ASC NULLS FIRST], false, 0
(674) Scan parquet
Output [6]: [internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184, systemId#143179]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(675) Filter
Input [6]: [internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184, systemId#143179]
Condition : (isnotnull(plant#143182.internalRefUUID) AND isnotnull(product#143181.internalRefUUID))
(676) Project
Output [6]: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184]
Input [6]: [internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184, systemId#143179]
(677) Exchange
Input [6]: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216609]
(678) BroadcastExchange
Input [6]: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184]
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=217232]
(679) Scan parquet
Output [2]: [marketUnit#143185, distributionCenters#143191]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(680) Filter
Input [2]: [marketUnit#143185, distributionCenters#143191]
Condition : (((marketUnit#143185 <=> Daily_grocery) AND (size(distributionCenters#143191, true) > 0)) AND isnotnull(distributionCenters#143191))
(681) Project
Output [1]: [distributionCenters#143191]
Input [2]: [marketUnit#143185, distributionCenters#143191]
(682) Exchange
Input [1]: [distributionCenters#143191]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216613]
(683) Generate
Input [1]: [distributionCenters#143191]
Arguments: explode(distributionCenters#143191), false, [distributionCenters#143207]
(684) Filter
Input [1]: [distributionCenters#143207]
Condition : (((size(distributionCenters#143207.storageLocations, true) > 0) AND isnotnull(distributionCenters#143207.storageLocations)) AND isnotnull(distributionCenters#143207.internalRefUUID))
(685) Project
Output [2]: [distributionCenters#143207.internalRefUUID AS _extract_internalRefUUID#143948, distributionCenters#143207.storageLocations AS _extract_storageLocations#143949]
Input [1]: [distributionCenters#143207]
(686) Generate
Input [2]: [_extract_internalRefUUID#143948, _extract_storageLocations#143949]
Arguments: explode(_extract_storageLocations#143949), [_extract_internalRefUUID#143948], false, [storageLocations#143208]
(687) Project
Output [3]: [_extract_internalRefUUID#143948 AS plantUuid#143210, storageLocations#143208.id AS storageLocId#143211, storageLocations#143208.internalRefUUID AS storageLocUuid#143212]
Input [2]: [_extract_internalRefUUID#143948, storageLocations#143208]
(688) BroadcastExchange
Input [3]: [plantUuid#143210, storageLocId#143211, storageLocUuid#143212]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217228]
(689) Scan parquet
Output [2]: [product#143213, plant#143214]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(690) Filter
Input [2]: [product#143213, plant#143214]
Condition : isnotnull(plant#143214)
(691) Exchange
Input [2]: [product#143213, plant#143214]
Arguments: hashpartitioning(product#143213, plant#143214, 25), REPARTITION_BY_NUM, [plan_id=216986]
(692) Scan parquet
Output [4]: [plant#143219, product#143220, productionAspect#143222, systemId#143217]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(693) Project
Output [4]: [plant#143219.internalRefUUID AS _extract_internalRefUUID#144143, product#143220.internalRefUUID AS _extract_internalRefUUID#144140, productionAspect#143222.productMovementPlants.unitOfIssue.code AS _extract_code#144141, productionAspect#143222.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#144142]
Input [4]: [plant#143219, product#143220, productionAspect#143222, systemId#143217]
(694) Exchange
Input [4]: [_extract_internalRefUUID#144143, _extract_internalRefUUID#144140, _extract_code#144141, _extract_internalRefUUID#144142]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216625]
(695) Project
Output [4]: [_extract_code#144141, _extract_internalRefUUID#144142, _extract_internalRefUUID#144140, _extract_internalRefUUID#144143]
Input [4]: [_extract_internalRefUUID#144143, _extract_internalRefUUID#144140, _extract_code#144141, _extract_internalRefUUID#144142]
(696) BroadcastExchange
Input [4]: [_extract_code#144141, _extract_internalRefUUID#144142, _extract_internalRefUUID#144140, _extract_internalRefUUID#144143]
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=217208]
(697) BroadcastHashJoin
Left keys [4]: [coalesce(product#143213, ), isnull(product#143213), coalesce(plant#143214, ), isnull(plant#143214)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144140, ), isnull(_extract_internalRefUUID#144140), coalesce(_extract_internalRefUUID#144143, ), isnull(_extract_internalRefUUID#144143)]
Join type: LeftOuter
Join condition: None
(698) Project
Output [4]: [product#143213, plant#143214, _extract_code#144141, _extract_internalRefUUID#144142]
Input [6]: [product#143213, plant#143214, _extract_code#144141, _extract_internalRefUUID#144142, _extract_internalRefUUID#144140, _extract_internalRefUUID#144143]
(699) Scan parquet
Output [2]: [internalUUID#143227, systemId#143226]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(700) Project
Output [1]: [internalUUID#143227]
Input [2]: [internalUUID#143227, systemId#143226]
(701) Exchange
Input [1]: [internalUUID#143227]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216631]
(702) BroadcastExchange
Input [1]: [internalUUID#143227]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=217212]
(703) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143214, ), isnull(plant#143214)]
Right keys [2]: [coalesce(internalUUID#143227, ), isnull(internalUUID#143227)]
Join type: LeftOuter
Join condition: None
(704) Project
Output [4]: [product#143213, plant#143214, _extract_code#144141, _extract_internalRefUUID#144142]
Input [5]: [product#143213, plant#143214, _extract_code#144141, _extract_internalRefUUID#144142, internalUUID#143227]
(705) Scan parquet
Output [4]: [internalUUID#143241, baseUnitOfMeasure#143245, unitOfMeasureConversions#143247, systemId#143240]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(706) Filter
Input [4]: [internalUUID#143241, baseUnitOfMeasure#143245, unitOfMeasureConversions#143247, systemId#143240]
Condition : isnotnull(internalUUID#143241)
(707) Project
Output [3]: [internalUUID#143241, baseUnitOfMeasure#143245, unitOfMeasureConversions#143247]
Input [4]: [internalUUID#143241, baseUnitOfMeasure#143245, unitOfMeasureConversions#143247, systemId#143240]
(708) Exchange
Input [3]: [internalUUID#143241, baseUnitOfMeasure#143245, unitOfMeasureConversions#143247]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216637]
(709) BroadcastExchange
Input [3]: [internalUUID#143241, baseUnitOfMeasure#143245, unitOfMeasureConversions#143247]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217216]
(710) BroadcastHashJoin
Left keys [1]: [product#143213]
Right keys [1]: [internalUUID#143241]
Join type: LeftOuter
Join condition: None
(711) Project
Output [2]: [plant#143214, filter(unitOfMeasureConversions#143247, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144141) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144142)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143245.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143245.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143252]
Input [7]: [product#143213, plant#143214, _extract_code#144141, _extract_internalRefUUID#144142, internalUUID#143241, baseUnitOfMeasure#143245, unitOfMeasureConversions#143247]
(712) Generate
Input [2]: [plant#143214, filteredUnitOfMeasureConversions#143252]
Arguments: explode(filteredUnitOfMeasureConversions#143252.quantityNumerator), [plant#143214, filteredUnitOfMeasureConversions#143252], true, [quantityNumerator#143253]
(713) Project
Output [2]: [plant#143214, filteredUnitOfMeasureConversions#143252.quantityDenominator AS _extract_quantityDenominator#143950]
Input [3]: [plant#143214, filteredUnitOfMeasureConversions#143252, quantityNumerator#143253]
(714) Generate
Input [2]: [plant#143214, _extract_quantityDenominator#143950]
Arguments: explode(_extract_quantityDenominator#143950), [plant#143214], true, [quantityDenominator#143254]
(715) Project
Output [1]: [plant#143214]
Input [2]: [plant#143214, quantityDenominator#143254]
(716) HashAggregate
Input [1]: [plant#143214]
Keys [1]: [plant#143214]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143214]
(717) Exchange
Input [1]: [plant#143214]
Arguments: hashpartitioning(plant#143214, 25), ENSURE_REQUIREMENTS, [plan_id=217225]
(718) HashAggregate
Input [1]: [plant#143214]
Keys [1]: [plant#143214]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143214]
(719) BroadcastHashJoin
Left keys [1]: [plantUuid#143210]
Right keys [1]: [plant#143214]
Join type: Inner
Join condition: None
(720) Project
Output [3]: [plantUuid#143210, storageLocId#143211, storageLocUuid#143212]
Input [4]: [plantUuid#143210, storageLocId#143211, storageLocUuid#143212, plant#143214]
(721) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143182.internalRefUUID, ), isnull(plant#143182.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#143210, ), isnull(plantUuid#143210)]
Join type: Inner
Join condition: None
(722) Generate
Input [9]: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184, plantUuid#143210, storageLocId#143211, storageLocUuid#143212]
Arguments: explode(filter(stockQuantities#143184, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143212) AND (lambda x#143085.storageLocation.Id = storageLocId#143211)), lambda x#143085, false))), [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, plantUuid#143210], false, [stockQuantity#143257]
(723) ObjectHashAggregate
Input [7]: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, plantUuid#143210, stockQuantity#143257]
Keys [5]: [plantUuid#143210, internalUUID#143180, plant#143182, product#143181, systemId#143179]
Functions [2]: [partial_first(calculationDateTime#143183, false), partial_collect_list(stockQuantity#143257, 0, 0)]
Aggregate Attributes [3]: [first#144820, valueSet#144821, buf#144822]
Results [8]: [plantUuid#143210, internalUUID#143180, plant#143182, product#143181, systemId#143179, first#144823, valueSet#144824, buf#144825]
(724) ObjectHashAggregate
Input [8]: [plantUuid#143210, internalUUID#143180, plant#143182, product#143181, systemId#143179, first#144823, valueSet#144824, buf#144825]
Keys [5]: [plantUuid#143210, internalUUID#143180, plant#143182, product#143181, systemId#143179]
Functions [2]: [first(calculationDateTime#143183, false), collect_list(stockQuantity#143257, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#143183)()#143100, collect_list(stockQuantity#143257, 0, 0)#143101]
Results [4]: [product#143181, plant#143182, first(calculationDateTime#143183)()#143100 AS calculationDateTime#143258, collect_list(stockQuantity#143257, 0, 0)#143101 AS stockQuantities#143259]
(725) Filter
Input [4]: [product#143181, plant#143182, calculationDateTime#143258, stockQuantities#143259]
Condition : ((size(stockQuantities#143259, true) > 0) AND isnotnull(calculationDateTime#143258))
(726) Generate
Input [4]: [product#143181, plant#143182, calculationDateTime#143258, stockQuantities#143259]
Arguments: explode(stockQuantities#143259), [product#143181, plant#143182, calculationDateTime#143258], false, [stockQuantity#143260]
(727) Filter
Input [4]: [product#143181, plant#143182, calculationDateTime#143258, stockQuantity#143260]
Condition : (((isnotnull(stockQuantity#143260.specialStockIndicator.code) AND isnotnull(stockQuantity#143260.stockType.code)) AND (stockQuantity#143260.specialStockIndicator.code = )) AND (stockQuantity#143260.stockType.code = 01))
(728) Project
Output [4]: [plant#143182.internalRefUUID AS plantUuid#143262, product#143181.internalRefUUID AS productUuid#143264, calculationDateTime#143258, stockQuantity#143260.storagelocation.id AS storageLocId#143265]
Input [4]: [product#143181, plant#143182, calculationDateTime#143258, stockQuantity#143260]
(729) Exchange
Input [4]: [plantUuid#143262, productUuid#143264, calculationDateTime#143258, storageLocId#143265]
Arguments: hashpartitioning(productUuid#143264, plantUuid#143262, 25), ENSURE_REQUIREMENTS, [plan_id=217258]
(730) Sort
Input [4]: [plantUuid#143262, productUuid#143264, calculationDateTime#143258, storageLocId#143265]
Arguments: [productUuid#143264 ASC NULLS FIRST, plantUuid#143262 ASC NULLS FIRST], false, 0
(731) Scan parquet
Output [3]: [product#143270, plant#143271, orderDateTime#143272]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(732) Filter
Input [3]: [product#143270, plant#143271, orderDateTime#143272]
Condition : ((isnotnull(orderDateTime#143272) AND isnotnull(plant#143271)) AND isnotnull(product#143270))
(733) Exchange
Input [3]: [product#143270, plant#143271, orderDateTime#143272]
Arguments: hashpartitioning(product#143270, plant#143271, 25), REPARTITION_BY_NUM, [plan_id=217009]
(734) Scan parquet
Output [4]: [plant#143276, product#143277, productionAspect#143279, systemId#143274]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(735) Project
Output [4]: [plant#143276.internalRefUUID AS _extract_internalRefUUID#144147, product#143277.internalRefUUID AS _extract_internalRefUUID#144146, productionAspect#143279.productMovementPlants.unitOfIssue.code AS _extract_code#144144, productionAspect#143279.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#144145]
Input [4]: [plant#143276, product#143277, productionAspect#143279, systemId#143274]
(736) Exchange
Input [4]: [_extract_internalRefUUID#144147, _extract_internalRefUUID#144146, _extract_code#144144, _extract_internalRefUUID#144145]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216662]
(737) Project
Output [4]: [_extract_code#144144, _extract_internalRefUUID#144145, _extract_internalRefUUID#144146, _extract_internalRefUUID#144147]
Input [4]: [_extract_internalRefUUID#144147, _extract_internalRefUUID#144146, _extract_code#144144, _extract_internalRefUUID#144145]
(738) BroadcastExchange
Input [4]: [_extract_code#144144, _extract_internalRefUUID#144145, _extract_internalRefUUID#144146, _extract_internalRefUUID#144147]
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=217241]
(739) BroadcastHashJoin
Left keys [4]: [coalesce(product#143270, ), isnull(product#143270), coalesce(plant#143271, ), isnull(plant#143271)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144146, ), isnull(_extract_internalRefUUID#144146), coalesce(_extract_internalRefUUID#144147, ), isnull(_extract_internalRefUUID#144147)]
Join type: LeftOuter
Join condition: None
(740) Project
Output [5]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#144144, _extract_internalRefUUID#144145]
Input [7]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#144144, _extract_internalRefUUID#144145, _extract_internalRefUUID#144146, _extract_internalRefUUID#144147]
(741) Scan parquet
Output [2]: [internalUUID#143284, systemId#143283]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(742) Project
Output [1]: [internalUUID#143284]
Input [2]: [internalUUID#143284, systemId#143283]
(743) Exchange
Input [1]: [internalUUID#143284]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216668]
(744) BroadcastExchange
Input [1]: [internalUUID#143284]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=217245]
(745) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143271, ), isnull(plant#143271)]
Right keys [2]: [coalesce(internalUUID#143284, ), isnull(internalUUID#143284)]
Join type: LeftOuter
Join condition: None
(746) Project
Output [5]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#144144, _extract_internalRefUUID#144145]
Input [6]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#144144, _extract_internalRefUUID#144145, internalUUID#143284]
(747) Scan parquet
Output [4]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304, systemId#143297]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(748) Filter
Input [4]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304, systemId#143297]
Condition : isnotnull(internalUUID#143298)
(749) Project
Output [3]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304]
Input [4]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304, systemId#143297]
(750) Exchange
Input [3]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216674]
(751) BroadcastExchange
Input [3]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217249]
(752) BroadcastHashJoin
Left keys [1]: [product#143270]
Right keys [1]: [internalUUID#143298]
Join type: LeftOuter
Join condition: None
(753) Project
Output [4]: [product#143270, plant#143271, orderDateTime#143272, filter(unitOfMeasureConversions#143304, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144144) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144145)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143302.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143302.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143309]
Input [8]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#144144, _extract_internalRefUUID#144145, internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304]
(754) Generate
Input [4]: [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309]
Arguments: explode(filteredUnitOfMeasureConversions#143309.quantityNumerator), [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309], true, [quantityNumerator#143310]
(755) Project
Output [4]: [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309.quantityDenominator AS _extract_quantityDenominator#143954]
Input [5]: [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309, quantityNumerator#143310]
(756) Generate
Input [4]: [product#143270, plant#143271, orderDateTime#143272, _extract_quantityDenominator#143954]
Arguments: explode(_extract_quantityDenominator#143954), [product#143270, plant#143271, orderDateTime#143272], true, [quantityDenominator#143311]
(757) Project
Output [3]: [product#143270, plant#143271, orderDateTime#143272]
Input [4]: [product#143270, plant#143271, orderDateTime#143272, quantityDenominator#143311]
(758) Sort
Input [3]: [product#143270, plant#143271, orderDateTime#143272]
Arguments: [product#143270 ASC NULLS FIRST, plant#143271 ASC NULLS FIRST], false, 0
(759) SortMergeJoin
Left keys [2]: [productUuid#143264, plantUuid#143262]
Right keys [2]: [product#143270, plant#143271]
Join type: Inner
Join condition: (calculationDateTime#143258 <= orderDateTime#143272)
(760) Project
Output [4]: [plantUuid#143262 AS plant#143314, productUuid#143264 AS product#143315, storageLocId#143265, calculationDateTime#143258]
Input [7]: [plantUuid#143262, productUuid#143264, calculationDateTime#143258, storageLocId#143265, product#143270, plant#143271, orderDateTime#143272]
(761) HashAggregate
Input [4]: [plant#143314, product#143315, storageLocId#143265, calculationDateTime#143258]
Keys [3]: [plant#143314, product#143315, storageLocId#143265]
Functions [1]: [partial_max(calculationDateTime#143258)]
Aggregate Attributes [1]: [max#144818]
Results [4]: [plant#143314, product#143315, storageLocId#143265, max#144819]
(762) HashAggregate
Input [4]: [plant#143314, product#143315, storageLocId#143265, max#144819]
Keys [3]: [plant#143314, product#143315, storageLocId#143265]
Functions [1]: [max(calculationDateTime#143258)]
Aggregate Attributes [1]: [max(calculationDateTime#143258)#143178]
Results [4]: [plant#143314, product#143315, storageLocId#143265, max(calculationDateTime#143258)#143178 AS max_calc_datetime#143172]
(763) Exchange
Input [4]: [plant#143314, product#143315, storageLocId#143265, max_calc_datetime#143172]
Arguments: hashpartitioning(coalesce(plant#143314, ), isnull(plant#143314), coalesce(product#143315, ), isnull(product#143315), coalesce(storageLocId#143265, ), isnull(storageLocId#143265), coalesce(max_calc_datetime#143172, 1970-01-01 00:00:00), isnull(max_calc_datetime#143172), 25), ENSURE_REQUIREMENTS, [plan_id=217268]
(764) Sort
Input [4]: [plant#143314, product#143315, storageLocId#143265, max_calc_datetime#143172]
Arguments: [coalesce(plant#143314, ) ASC NULLS FIRST, isnull(plant#143314) ASC NULLS FIRST, coalesce(product#143315, ) ASC NULLS FIRST, isnull(product#143315) ASC NULLS FIRST, coalesce(storageLocId#143265, ) ASC NULLS FIRST, isnull(storageLocId#143265) ASC NULLS FIRST, coalesce(max_calc_datetime#143172, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#143172) ASC NULLS FIRST], false, 0
(765) SortMergeJoin
Left keys [8]: [coalesce(plant#143170, ), isnull(plant#143170), coalesce(product#143171, ), isnull(product#143171), coalesce(storageLocId#143108, ), isnull(storageLocId#143108), coalesce(calculationDateTime#143087, 1970-01-01 00:00:00), isnull(calculationDateTime#143087)]
Right keys [8]: [coalesce(plant#143314, ), isnull(plant#143314), coalesce(product#143315, ), isnull(product#143315), coalesce(storageLocId#143265, ), isnull(storageLocId#143265), coalesce(max_calc_datetime#143172, 1970-01-01 00:00:00), isnull(max_calc_datetime#143172)]
Join type: Inner
Join condition: None
(766) Project
Output [3]: [plant#143170, product#143171, calculationDateTime#143087]
Input [8]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087, plant#143314, product#143315, storageLocId#143265, max_calc_datetime#143172]
(767) HashAggregate
Input [3]: [plant#143170, product#143171, calculationDateTime#143087]
Keys [2]: [product#143171, plant#143170]
Functions [1]: [partial_min(calculationDateTime#143087)]
Aggregate Attributes [1]: [min#144810]
Results [3]: [product#143171, plant#143170, min#144811]
(768) Exchange
Input [3]: [product#143171, plant#143170, min#144811]
Arguments: hashpartitioning(product#143171, plant#143170, 25), ENSURE_REQUIREMENTS, [plan_id=217275]
(769) HashAggregate
Input [3]: [product#143171, plant#143170, min#144811]
Keys [2]: [product#143171, plant#143170]
Functions [1]: [min(calculationDateTime#143087)]
Aggregate Attributes [1]: [min(calculationDateTime#143087)#143334]
Results [3]: [product#143171, plant#143170, min(calculationDateTime#143087)#143334 AS minCalculationDateTime#143327]
(770) Sort
Input [3]: [product#143171, plant#143170, minCalculationDateTime#143327]
Arguments: [product#143171 ASC NULLS FIRST, plant#143170 ASC NULLS FIRST], false, 0
(771) SortMergeJoin
Left keys [2]: [product#142980, plant#142981]
Right keys [2]: [product#143171, plant#143170]
Join type: LeftOuter
Join condition: None
(772) Project
Output [4]: [product#142980, plant#142981, timezonecode#143012, CASE WHEN isnotnull(minCalculationDateTime#143327) THEN minCalculationDateTime#143327 ELSE orderDateTime#142982 END AS stockDatetime#143384]
Input [7]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, product#143171, plant#143170, minCalculationDateTime#143327]
(773) Exchange
Input [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: hashpartitioning(coalesce(plant#142981, ), isnull(plant#142981), coalesce(product#142980, ), isnull(product#142980), 25), ENSURE_REQUIREMENTS, [plan_id=217439]
(774) Sort
Input [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: [coalesce(plant#142981, ) ASC NULLS FIRST, isnull(plant#142981) ASC NULLS FIRST, coalesce(product#142980, ) ASC NULLS FIRST, isnull(product#142980) ASC NULLS FIRST], false, 0
(775) Exchange
Input [3]: [product#143466, plant#143467, orderDateTime#143468]
Arguments: hashpartitioning(product#143466, plant#143467, 25), REPARTITION_BY_NUM, [plan_id=216692]
(776) Project
Output [8]: [systemId#143470, internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477]
Input [8]: [internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477, systemId#143470]
(777) Exchange
Input [8]: [systemId#143470, internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216695]
(778) Project
Output [1]: [struct(systemId, systemId#143470, internalUUID, internalUUID#143471, plant, plant#143472, product, product#143473, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143474, productionAspect, productionAspect#143475, salesPlant, salesPlant#143476, listing, listing#143477) AS productPlant#143478]
Input [8]: [systemId#143470, internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477]
(779) BroadcastExchange
Input [1]: [productPlant#143478]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=217283]
(780) BroadcastHashJoin
Left keys [4]: [coalesce(product#143466, ), isnull(product#143466), coalesce(plant#143467, ), isnull(plant#143467)]
Right keys [4]: [coalesce(productPlant#143478.product.internalRefUUID, ), isnull(productPlant#143478.product.internalRefUUID), coalesce(productPlant#143478.plant.internalRefUUID, ), isnull(productPlant#143478.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(781) Scan parquet
Output [3]: [internalUUID#143480, address#143486, systemId#143479]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string,address:struct<timeZone:struct<code:string>>>
(782) Project
Output [2]: [internalUUID#143480, address#143486.timeZone.code AS timezonecode#143491]
Input [3]: [internalUUID#143480, address#143486, systemId#143479]
(783) Exchange
Input [2]: [internalUUID#143480, timezonecode#143491]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216700]
(784) BroadcastExchange
Input [2]: [internalUUID#143480, timezonecode#143491]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=217286]
(785) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143467, ), isnull(plant#143467)]
Right keys [2]: [coalesce(internalUUID#143480, ), isnull(internalUUID#143480)]
Join type: LeftOuter
Join condition: None
(786) Project
Output [5]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, CASE WHEN isnotnull(timezonecode#143491) THEN timezonecode#143491 ELSE UTC END AS timezonecode#143492]
Input [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, internalUUID#143480, timezonecode#143491]
(787) Scan parquet
Output [4]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500, systemId#143493]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(788) Filter
Input [4]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500, systemId#143493]
Condition : isnotnull(internalUUID#143494)
(789) Project
Output [3]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500]
Input [4]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500, systemId#143493]
(790) Exchange
Input [3]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216706]
(791) BroadcastExchange
Input [3]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217290]
(792) BroadcastHashJoin
Left keys [1]: [product#143466]
Right keys [1]: [internalUUID#143494]
Join type: LeftOuter
Join condition: None
(793) Project
Output [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, filter(unitOfMeasureConversions#143500, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143498.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143498.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143505]
Input [8]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500]
(794) Project
Output [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, filteredUnitOfMeasureConversions#143505.quantityDenominator AS _extract_quantityDenominator#144016, filteredUnitOfMeasureConversions#143505.quantityNumerator AS _extract_quantityNumerator#144017]
Input [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, filteredUnitOfMeasureConversions#143505]
(795) Generate
Input [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, _extract_quantityDenominator#144016, _extract_quantityNumerator#144017]
Arguments: explode(_extract_quantityNumerator#144017), [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, _extract_quantityDenominator#144016], true, [quantityNumerator#143506]
(796) Generate
Input [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, _extract_quantityDenominator#144016, quantityNumerator#143506]
Arguments: explode(_extract_quantityDenominator#144016), [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, quantityNumerator#143506], true, [quantityDenominator#143507]
(797) Project
Output [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, (cast(quantityNumerator#143506 as double) / cast(quantityDenominator#143507 as double)) AS outboundUnit#143508]
Input [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, quantityNumerator#143506, quantityDenominator#143507]
(798) Project
Output [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, CASE WHEN (isnull(outboundUnit#143508) OR (outboundUnit#143508 <= 0.0)) THEN 1.0 ELSE outboundUnit#143508 END AS outboundUnit#143509]
Input [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143508]
(799) Sort
Input [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509]
Arguments: [product#143466 ASC NULLS FIRST, plant#143467 ASC NULLS FIRST], false, 0
(800) Scan parquet
Output [6]: [internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515, systemId#143510]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(801) Filter
Input [6]: [internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515, systemId#143510]
Condition : (isnotnull(plant#143513.internalRefUUID) AND isnotnull(product#143512.internalRefUUID))
(802) Project
Output [6]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515]
Input [6]: [internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515, systemId#143510]
(803) Exchange
Input [6]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216717]
(804) BroadcastExchange
Input [6]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515]
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=217322]
(805) Scan parquet
Output [2]: [marketUnit#143516, distributionCenters#143522]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(806) Filter
Input [2]: [marketUnit#143516, distributionCenters#143522]
Condition : (((marketUnit#143516 <=> Daily_grocery) AND (size(distributionCenters#143522, true) > 0)) AND isnotnull(distributionCenters#143522))
(807) Project
Output [1]: [distributionCenters#143522]
Input [2]: [marketUnit#143516, distributionCenters#143522]
(808) Exchange
Input [1]: [distributionCenters#143522]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216721]
(809) Generate
Input [1]: [distributionCenters#143522]
Arguments: explode(distributionCenters#143522), false, [distributionCenters#143538]
(810) Filter
Input [1]: [distributionCenters#143538]
Condition : (((size(distributionCenters#143538.storageLocations, true) > 0) AND isnotnull(distributionCenters#143538.storageLocations)) AND isnotnull(distributionCenters#143538.internalRefUUID))
(811) Project
Output [2]: [distributionCenters#143538.internalRefUUID AS _extract_internalRefUUID#143960, distributionCenters#143538.storageLocations AS _extract_storageLocations#143961]
Input [1]: [distributionCenters#143538]
(812) Generate
Input [2]: [_extract_internalRefUUID#143960, _extract_storageLocations#143961]
Arguments: explode(_extract_storageLocations#143961), [_extract_internalRefUUID#143960], false, [storageLocations#143539]
(813) Project
Output [3]: [_extract_internalRefUUID#143960 AS plantUuid#143541, storageLocations#143539.id AS storageLocId#143542, storageLocations#143539.internalRefUUID AS storageLocUuid#143543]
Input [2]: [_extract_internalRefUUID#143960, storageLocations#143539]
(814) BroadcastExchange
Input [3]: [plantUuid#143541, storageLocId#143542, storageLocUuid#143543]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217318]
(815) Scan parquet
Output [2]: [product#143544, plant#143545]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(816) Filter
Input [2]: [product#143544, plant#143545]
Condition : isnotnull(plant#143545)
(817) Exchange
Input [2]: [product#143544, plant#143545]
Arguments: hashpartitioning(product#143544, plant#143545, 25), REPARTITION_BY_NUM, [plan_id=217030]
(818) Scan parquet
Output [4]: [plant#143550, product#143551, productionAspect#143553, systemId#143548]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(819) Project
Output [4]: [plant#143550.internalRefUUID AS _extract_internalRefUUID#144148, product#143551.internalRefUUID AS _extract_internalRefUUID#144149, productionAspect#143553.productMovementPlants.unitOfIssue.code AS _extract_code#144150, productionAspect#143553.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#144151]
Input [4]: [plant#143550, product#143551, productionAspect#143553, systemId#143548]
(820) Exchange
Input [4]: [_extract_internalRefUUID#144148, _extract_internalRefUUID#144149, _extract_code#144150, _extract_internalRefUUID#144151]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216733]
(821) Project
Output [4]: [_extract_code#144150, _extract_internalRefUUID#144151, _extract_internalRefUUID#144149, _extract_internalRefUUID#144148]
Input [4]: [_extract_internalRefUUID#144148, _extract_internalRefUUID#144149, _extract_code#144150, _extract_internalRefUUID#144151]
(822) BroadcastExchange
Input [4]: [_extract_code#144150, _extract_internalRefUUID#144151, _extract_internalRefUUID#144149, _extract_internalRefUUID#144148]
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=217298]
(823) BroadcastHashJoin
Left keys [4]: [coalesce(product#143544, ), isnull(product#143544), coalesce(plant#143545, ), isnull(plant#143545)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144149, ), isnull(_extract_internalRefUUID#144149), coalesce(_extract_internalRefUUID#144148, ), isnull(_extract_internalRefUUID#144148)]
Join type: LeftOuter
Join condition: None
(824) Project
Output [4]: [product#143544, plant#143545, _extract_code#144150, _extract_internalRefUUID#144151]
Input [6]: [product#143544, plant#143545, _extract_code#144150, _extract_internalRefUUID#144151, _extract_internalRefUUID#144149, _extract_internalRefUUID#144148]
(825) Scan parquet
Output [2]: [internalUUID#143558, systemId#143557]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(826) Project
Output [1]: [internalUUID#143558]
Input [2]: [internalUUID#143558, systemId#143557]
(827) Exchange
Input [1]: [internalUUID#143558]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216739]
(828) BroadcastExchange
Input [1]: [internalUUID#143558]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=217302]
(829) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143545, ), isnull(plant#143545)]
Right keys [2]: [coalesce(internalUUID#143558, ), isnull(internalUUID#143558)]
Join type: LeftOuter
Join condition: None
(830) Project
Output [4]: [product#143544, plant#143545, _extract_code#144150, _extract_internalRefUUID#144151]
Input [5]: [product#143544, plant#143545, _extract_code#144150, _extract_internalRefUUID#144151, internalUUID#143558]
(831) Scan parquet
Output [4]: [internalUUID#143572, baseUnitOfMeasure#143576, unitOfMeasureConversions#143578, systemId#143571]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(832) Filter
Input [4]: [internalUUID#143572, baseUnitOfMeasure#143576, unitOfMeasureConversions#143578, systemId#143571]
Condition : isnotnull(internalUUID#143572)
(833) Project
Output [3]: [internalUUID#143572, baseUnitOfMeasure#143576, unitOfMeasureConversions#143578]
Input [4]: [internalUUID#143572, baseUnitOfMeasure#143576, unitOfMeasureConversions#143578, systemId#143571]
(834) Exchange
Input [3]: [internalUUID#143572, baseUnitOfMeasure#143576, unitOfMeasureConversions#143578]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216745]
(835) BroadcastExchange
Input [3]: [internalUUID#143572, baseUnitOfMeasure#143576, unitOfMeasureConversions#143578]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217306]
(836) BroadcastHashJoin
Left keys [1]: [product#143544]
Right keys [1]: [internalUUID#143572]
Join type: LeftOuter
Join condition: None
(837) Project
Output [2]: [plant#143545, filter(unitOfMeasureConversions#143578, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144150) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144151)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143576.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143576.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143583]
Input [7]: [product#143544, plant#143545, _extract_code#144150, _extract_internalRefUUID#144151, internalUUID#143572, baseUnitOfMeasure#143576, unitOfMeasureConversions#143578]
(838) Generate
Input [2]: [plant#143545, filteredUnitOfMeasureConversions#143583]
Arguments: explode(filteredUnitOfMeasureConversions#143583.quantityNumerator), [plant#143545, filteredUnitOfMeasureConversions#143583], true, [quantityNumerator#143584]
(839) Project
Output [2]: [plant#143545, filteredUnitOfMeasureConversions#143583.quantityDenominator AS _extract_quantityDenominator#143962]
Input [3]: [plant#143545, filteredUnitOfMeasureConversions#143583, quantityNumerator#143584]
(840) Generate
Input [2]: [plant#143545, _extract_quantityDenominator#143962]
Arguments: explode(_extract_quantityDenominator#143962), [plant#143545], true, [quantityDenominator#143585]
(841) Project
Output [1]: [plant#143545]
Input [2]: [plant#143545, quantityDenominator#143585]
(842) HashAggregate
Input [1]: [plant#143545]
Keys [1]: [plant#143545]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143545]
(843) Exchange
Input [1]: [plant#143545]
Arguments: hashpartitioning(plant#143545, 25), ENSURE_REQUIREMENTS, [plan_id=217315]
(844) HashAggregate
Input [1]: [plant#143545]
Keys [1]: [plant#143545]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143545]
(845) BroadcastHashJoin
Left keys [1]: [plantUuid#143541]
Right keys [1]: [plant#143545]
Join type: Inner
Join condition: None
(846) Project
Output [3]: [plantUuid#143541, storageLocId#143542, storageLocUuid#143543]
Input [4]: [plantUuid#143541, storageLocId#143542, storageLocUuid#143543, plant#143545]
(847) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143513.internalRefUUID, ), isnull(plant#143513.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#143541, ), isnull(plantUuid#143541)]
Join type: Inner
Join condition: None
(848) Generate
Input [9]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515, plantUuid#143541, storageLocId#143542, storageLocUuid#143543]
Arguments: explode(filter(stockQuantities#143515, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143543) AND (lambda x#143085.storageLocation.Id = storageLocId#143542)), lambda x#143085, false))), [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, plantUuid#143541], false, [stockQuantity#143588]
(849) ObjectHashAggregate
Input [7]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, plantUuid#143541, stockQuantity#143588]
Keys [5]: [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510]
Functions [2]: [partial_first(calculationDateTime#143514, false), partial_collect_list(stockQuantity#143588, 0, 0)]
Aggregate Attributes [3]: [first#144834, valueSet#144835, buf#144836]
Results [8]: [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510, first#144837, valueSet#144838, buf#144839]
(850) ObjectHashAggregate
Input [8]: [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510, first#144837, valueSet#144838, buf#144839]
Keys [5]: [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510]
Functions [2]: [first(calculationDateTime#143514, false), collect_list(stockQuantity#143588, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#143514)()#143100, collect_list(stockQuantity#143588, 0, 0)#143101]
Results [4]: [product#143512, plant#143513, first(calculationDateTime#143514)()#143100 AS calculationDateTime#143589, collect_list(stockQuantity#143588, 0, 0)#143101 AS stockQuantities#143590]
(851) Filter
Input [4]: [product#143512, plant#143513, calculationDateTime#143589, stockQuantities#143590]
Condition : ((size(stockQuantities#143590, true) > 0) AND isnotnull(calculationDateTime#143589))
(852) Generate
Input [4]: [product#143512, plant#143513, calculationDateTime#143589, stockQuantities#143590]
Arguments: explode(stockQuantities#143590), [product#143512, plant#143513, calculationDateTime#143589], false, [stockQuantity#143591]
(853) Filter
Input [4]: [product#143512, plant#143513, calculationDateTime#143589, stockQuantity#143591]
Condition : (((isnotnull(stockQuantity#143591.specialStockIndicator.code) AND isnotnull(stockQuantity#143591.stockType.code)) AND (stockQuantity#143591.specialStockIndicator.code = )) AND (stockQuantity#143591.stockType.code = 01))
(854) Project
Output [5]: [plant#143513.internalRefUUID AS plantUuid#143593, product#143512.internalRefUUID AS productUuid#143595, calculationDateTime#143589, stockQuantity#143591.storagelocation.id AS storageLocId#143596, stockQuantity#143591.quantity.measure AS quantity#143598]
Input [4]: [product#143512, plant#143513, calculationDateTime#143589, stockQuantity#143591]
(855) Exchange
Input [5]: [plantUuid#143593, productUuid#143595, calculationDateTime#143589, storageLocId#143596, quantity#143598]
Arguments: hashpartitioning(productUuid#143595, plantUuid#143593, 25), ENSURE_REQUIREMENTS, [plan_id=217348]
(856) Sort
Input [5]: [plantUuid#143593, productUuid#143595, calculationDateTime#143589, storageLocId#143596, quantity#143598]
Arguments: [productUuid#143595 ASC NULLS FIRST, plantUuid#143593 ASC NULLS FIRST], false, 0
(857) Scan parquet
Output [3]: [product#143601, plant#143602, orderDateTime#143603]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(858) Filter
Input [3]: [product#143601, plant#143602, orderDateTime#143603]
Condition : ((isnotnull(orderDateTime#143603) AND isnotnull(plant#143602)) AND isnotnull(product#143601))
(859) Exchange
Input [3]: [product#143601, plant#143602, orderDateTime#143603]
Arguments: hashpartitioning(product#143601, plant#143602, 25), REPARTITION_BY_NUM, [plan_id=217053]
(860) Scan parquet
Output [4]: [plant#143607, product#143608, productionAspect#143610, systemId#143605]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(861) Project
Output [4]: [plant#143607.internalRefUUID AS _extract_internalRefUUID#144153, product#143608.internalRefUUID AS _extract_internalRefUUID#144152, productionAspect#143610.productMovementPlants.unitOfIssue.code AS _extract_code#144154, productionAspect#143610.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#144155]
Input [4]: [plant#143607, product#143608, productionAspect#143610, systemId#143605]
(862) Exchange
Input [4]: [_extract_internalRefUUID#144153, _extract_internalRefUUID#144152, _extract_code#144154, _extract_internalRefUUID#144155]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216770]
(863) Project
Output [4]: [_extract_code#144154, _extract_internalRefUUID#144155, _extract_internalRefUUID#144152, _extract_internalRefUUID#144153]
Input [4]: [_extract_internalRefUUID#144153, _extract_internalRefUUID#144152, _extract_code#144154, _extract_internalRefUUID#144155]
(864) BroadcastExchange
Input [4]: [_extract_code#144154, _extract_internalRefUUID#144155, _extract_internalRefUUID#144152, _extract_internalRefUUID#144153]
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=217331]
(865) BroadcastHashJoin
Left keys [4]: [coalesce(product#143601, ), isnull(product#143601), coalesce(plant#143602, ), isnull(plant#143602)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144152, ), isnull(_extract_internalRefUUID#144152), coalesce(_extract_internalRefUUID#144153, ), isnull(_extract_internalRefUUID#144153)]
Join type: LeftOuter
Join condition: None
(866) Project
Output [5]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#144154, _extract_internalRefUUID#144155]
Input [7]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#144154, _extract_internalRefUUID#144155, _extract_internalRefUUID#144152, _extract_internalRefUUID#144153]
(867) Scan parquet
Output [2]: [internalUUID#143615, systemId#143614]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(868) Project
Output [1]: [internalUUID#143615]
Input [2]: [internalUUID#143615, systemId#143614]
(869) Exchange
Input [1]: [internalUUID#143615]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216776]
(870) BroadcastExchange
Input [1]: [internalUUID#143615]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=217335]
(871) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143602, ), isnull(plant#143602)]
Right keys [2]: [coalesce(internalUUID#143615, ), isnull(internalUUID#143615)]
Join type: LeftOuter
Join condition: None
(872) Project
Output [5]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#144154, _extract_internalRefUUID#144155]
Input [6]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#144154, _extract_internalRefUUID#144155, internalUUID#143615]
(873) Scan parquet
Output [4]: [internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635, systemId#143628]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(874) Filter
Input [4]: [internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635, systemId#143628]
Condition : isnotnull(internalUUID#143629)
(875) Project
Output [3]: [internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635]
Input [4]: [internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635, systemId#143628]
(876) Exchange
Input [3]: [internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216782]
(877) BroadcastExchange
Input [3]: [internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217339]
(878) BroadcastHashJoin
Left keys [1]: [product#143601]
Right keys [1]: [internalUUID#143629]
Join type: LeftOuter
Join condition: None
(879) Project
Output [4]: [product#143601, plant#143602, orderDateTime#143603, filter(unitOfMeasureConversions#143635, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144154) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144155)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143633.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143633.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143640]
Input [8]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#144154, _extract_internalRefUUID#144155, internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635]
(880) Generate
Input [4]: [product#143601, plant#143602, orderDateTime#143603, filteredUnitOfMeasureConversions#143640]
Arguments: explode(filteredUnitOfMeasureConversions#143640.quantityNumerator), [product#143601, plant#143602, orderDateTime#143603, filteredUnitOfMeasureConversions#143640], true, [quantityNumerator#143641]
(881) Project
Output [4]: [product#143601, plant#143602, orderDateTime#143603, filteredUnitOfMeasureConversions#143640.quantityDenominator AS _extract_quantityDenominator#143966]
Input [5]: [product#143601, plant#143602, orderDateTime#143603, filteredUnitOfMeasureConversions#143640, quantityNumerator#143641]
(882) Generate
Input [4]: [product#143601, plant#143602, orderDateTime#143603, _extract_quantityDenominator#143966]
Arguments: explode(_extract_quantityDenominator#143966), [product#143601, plant#143602, orderDateTime#143603], true, [quantityDenominator#143642]
(883) Project
Output [3]: [product#143601, plant#143602, orderDateTime#143603]
Input [4]: [product#143601, plant#143602, orderDateTime#143603, quantityDenominator#143642]
(884) Sort
Input [3]: [product#143601, plant#143602, orderDateTime#143603]
Arguments: [product#143601 ASC NULLS FIRST, plant#143602 ASC NULLS FIRST], false, 0
(885) SortMergeJoin
Left keys [2]: [productUuid#143595, plantUuid#143593]
Right keys [2]: [product#143601, plant#143602]
Join type: Inner
Join condition: (calculationDateTime#143589 <= orderDateTime#143603)
(886) Project
Output [5]: [plantUuid#143593 AS plant#143645, productUuid#143595 AS product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598]
Input [8]: [plantUuid#143593, productUuid#143595, calculationDateTime#143589, storageLocId#143596, quantity#143598, product#143601, plant#143602, orderDateTime#143603]
(887) Exchange
Input [5]: [plant#143645, product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598]
Arguments: hashpartitioning(coalesce(plant#143645, ), isnull(plant#143645), coalesce(product#143646, ), isnull(product#143646), coalesce(storageLocId#143596, ), isnull(storageLocId#143596), coalesce(calculationDateTime#143589, 1970-01-01 00:00:00), isnull(calculationDateTime#143589), 25), ENSURE_REQUIREMENTS, [plan_id=217412]
(888) Sort
Input [5]: [plant#143645, product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598]
Arguments: [coalesce(plant#143645, ) ASC NULLS FIRST, isnull(plant#143645) ASC NULLS FIRST, coalesce(product#143646, ) ASC NULLS FIRST, isnull(product#143646) ASC NULLS FIRST, coalesce(storageLocId#143596, ) ASC NULLS FIRST, isnull(storageLocId#143596) ASC NULLS FIRST, coalesce(calculationDateTime#143589, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#143589) ASC NULLS FIRST], false, 0
(889) Scan parquet
Output [6]: [internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652, systemId#143647]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(890) Filter
Input [6]: [internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652, systemId#143647]
Condition : (isnotnull(plant#143650.internalRefUUID) AND isnotnull(product#143649.internalRefUUID))
(891) Project
Output [6]: [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652]
Input [6]: [internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652, systemId#143647]
(892) Exchange
Input [6]: [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216794]
(893) BroadcastExchange
Input [6]: [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652]
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=217377]
(894) Scan parquet
Output [2]: [marketUnit#143653, distributionCenters#143659]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(895) Filter
Input [2]: [marketUnit#143653, distributionCenters#143659]
Condition : (((marketUnit#143653 <=> Daily_grocery) AND (size(distributionCenters#143659, true) > 0)) AND isnotnull(distributionCenters#143659))
(896) Project
Output [1]: [distributionCenters#143659]
Input [2]: [marketUnit#143653, distributionCenters#143659]
(897) Exchange
Input [1]: [distributionCenters#143659]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216798]
(898) Generate
Input [1]: [distributionCenters#143659]
Arguments: explode(distributionCenters#143659), false, [distributionCenters#143675]
(899) Filter
Input [1]: [distributionCenters#143675]
Condition : (((size(distributionCenters#143675.storageLocations, true) > 0) AND isnotnull(distributionCenters#143675.storageLocations)) AND isnotnull(distributionCenters#143675.internalRefUUID))
(900) Project
Output [2]: [distributionCenters#143675.internalRefUUID AS _extract_internalRefUUID#143970, distributionCenters#143675.storageLocations AS _extract_storageLocations#143971]
Input [1]: [distributionCenters#143675]
(901) Generate
Input [2]: [_extract_internalRefUUID#143970, _extract_storageLocations#143971]
Arguments: explode(_extract_storageLocations#143971), [_extract_internalRefUUID#143970], false, [storageLocations#143676]
(902) Project
Output [3]: [_extract_internalRefUUID#143970 AS plantUuid#143678, storageLocations#143676.id AS storageLocId#143679, storageLocations#143676.internalRefUUID AS storageLocUuid#143680]
Input [2]: [_extract_internalRefUUID#143970, storageLocations#143676]
(903) BroadcastExchange
Input [3]: [plantUuid#143678, storageLocId#143679, storageLocUuid#143680]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217373]
(904) Scan parquet
Output [2]: [product#143681, plant#143682]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(905) Filter
Input [2]: [product#143681, plant#143682]
Condition : isnotnull(plant#143682)
(906) Exchange
Input [2]: [product#143681, plant#143682]
Arguments: hashpartitioning(product#143681, plant#143682, 25), REPARTITION_BY_NUM, [plan_id=217066]
(907) Scan parquet
Output [4]: [plant#143687, product#143688, productionAspect#143690, systemId#143685]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(908) Project
Output [4]: [plant#143687.internalRefUUID AS _extract_internalRefUUID#144159, product#143688.internalRefUUID AS _extract_internalRefUUID#144156, productionAspect#143690.productMovementPlants.unitOfIssue.code AS _extract_code#144157, productionAspect#143690.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#144158]
Input [4]: [plant#143687, product#143688, productionAspect#143690, systemId#143685]
(909) Exchange
Input [4]: [_extract_internalRefUUID#144159, _extract_internalRefUUID#144156, _extract_code#144157, _extract_internalRefUUID#144158]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216810]
(910) Project
Output [4]: [_extract_code#144157, _extract_internalRefUUID#144158, _extract_internalRefUUID#144156, _extract_internalRefUUID#144159]
Input [4]: [_extract_internalRefUUID#144159, _extract_internalRefUUID#144156, _extract_code#144157, _extract_internalRefUUID#144158]
(911) BroadcastExchange
Input [4]: [_extract_code#144157, _extract_internalRefUUID#144158, _extract_internalRefUUID#144156, _extract_internalRefUUID#144159]
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=217353]
(912) BroadcastHashJoin
Left keys [4]: [coalesce(product#143681, ), isnull(product#143681), coalesce(plant#143682, ), isnull(plant#143682)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144156, ), isnull(_extract_internalRefUUID#144156), coalesce(_extract_internalRefUUID#144159, ), isnull(_extract_internalRefUUID#144159)]
Join type: LeftOuter
Join condition: None
(913) Project
Output [4]: [product#143681, plant#143682, _extract_code#144157, _extract_internalRefUUID#144158]
Input [6]: [product#143681, plant#143682, _extract_code#144157, _extract_internalRefUUID#144158, _extract_internalRefUUID#144156, _extract_internalRefUUID#144159]
(914) Scan parquet
Output [2]: [internalUUID#143695, systemId#143694]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(915) Project
Output [1]: [internalUUID#143695]
Input [2]: [internalUUID#143695, systemId#143694]
(916) Exchange
Input [1]: [internalUUID#143695]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216816]
(917) BroadcastExchange
Input [1]: [internalUUID#143695]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=217357]
(918) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143682, ), isnull(plant#143682)]
Right keys [2]: [coalesce(internalUUID#143695, ), isnull(internalUUID#143695)]
Join type: LeftOuter
Join condition: None
(919) Project
Output [4]: [product#143681, plant#143682, _extract_code#144157, _extract_internalRefUUID#144158]
Input [5]: [product#143681, plant#143682, _extract_code#144157, _extract_internalRefUUID#144158, internalUUID#143695]
(920) Scan parquet
Output [4]: [internalUUID#143709, baseUnitOfMeasure#143713, unitOfMeasureConversions#143715, systemId#143708]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(921) Filter
Input [4]: [internalUUID#143709, baseUnitOfMeasure#143713, unitOfMeasureConversions#143715, systemId#143708]
Condition : isnotnull(internalUUID#143709)
(922) Project
Output [3]: [internalUUID#143709, baseUnitOfMeasure#143713, unitOfMeasureConversions#143715]
Input [4]: [internalUUID#143709, baseUnitOfMeasure#143713, unitOfMeasureConversions#143715, systemId#143708]
(923) Exchange
Input [3]: [internalUUID#143709, baseUnitOfMeasure#143713, unitOfMeasureConversions#143715]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216822]
(924) BroadcastExchange
Input [3]: [internalUUID#143709, baseUnitOfMeasure#143713, unitOfMeasureConversions#143715]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217361]
(925) BroadcastHashJoin
Left keys [1]: [product#143681]
Right keys [1]: [internalUUID#143709]
Join type: LeftOuter
Join condition: None
(926) Project
Output [2]: [plant#143682, filter(unitOfMeasureConversions#143715, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144157) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144158)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143713.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143713.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143720]
Input [7]: [product#143681, plant#143682, _extract_code#144157, _extract_internalRefUUID#144158, internalUUID#143709, baseUnitOfMeasure#143713, unitOfMeasureConversions#143715]
(927) Generate
Input [2]: [plant#143682, filteredUnitOfMeasureConversions#143720]
Arguments: explode(filteredUnitOfMeasureConversions#143720.quantityNumerator), [plant#143682, filteredUnitOfMeasureConversions#143720], true, [quantityNumerator#143721]
(928) Project
Output [2]: [plant#143682, filteredUnitOfMeasureConversions#143720.quantityDenominator AS _extract_quantityDenominator#143972]
Input [3]: [plant#143682, filteredUnitOfMeasureConversions#143720, quantityNumerator#143721]
(929) Generate
Input [2]: [plant#143682, _extract_quantityDenominator#143972]
Arguments: explode(_extract_quantityDenominator#143972), [plant#143682], true, [quantityDenominator#143722]
(930) Project
Output [1]: [plant#143682]
Input [2]: [plant#143682, quantityDenominator#143722]
(931) HashAggregate
Input [1]: [plant#143682]
Keys [1]: [plant#143682]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143682]
(932) Exchange
Input [1]: [plant#143682]
Arguments: hashpartitioning(plant#143682, 25), ENSURE_REQUIREMENTS, [plan_id=217370]
(933) HashAggregate
Input [1]: [plant#143682]
Keys [1]: [plant#143682]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143682]
(934) BroadcastHashJoin
Left keys [1]: [plantUuid#143678]
Right keys [1]: [plant#143682]
Join type: Inner
Join condition: None
(935) Project
Output [3]: [plantUuid#143678, storageLocId#143679, storageLocUuid#143680]
Input [4]: [plantUuid#143678, storageLocId#143679, storageLocUuid#143680, plant#143682]
(936) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143650.internalRefUUID, ), isnull(plant#143650.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#143678, ), isnull(plantUuid#143678)]
Join type: Inner
Join condition: None
(937) Generate
Input [9]: [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652, plantUuid#143678, storageLocId#143679, storageLocUuid#143680]
Arguments: explode(filter(stockQuantities#143652, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143680) AND (lambda x#143085.storageLocation.Id = storageLocId#143679)), lambda x#143085, false))), [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, plantUuid#143678], false, [stockQuantity#143725]
(938) ObjectHashAggregate
Input [7]: [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, plantUuid#143678, stockQuantity#143725]
Keys [5]: [plantUuid#143678, internalUUID#143648, plant#143650, product#143649, systemId#143647]
Functions [2]: [partial_first(calculationDateTime#143651, false), partial_collect_list(stockQuantity#143725, 0, 0)]
Aggregate Attributes [3]: [first#144842, valueSet#144843, buf#144844]
Results [8]: [plantUuid#143678, internalUUID#143648, plant#143650, product#143649, systemId#143647, first#144845, valueSet#144846, buf#144847]
(939) ObjectHashAggregate
Input [8]: [plantUuid#143678, internalUUID#143648, plant#143650, product#143649, systemId#143647, first#144845, valueSet#144846, buf#144847]
Keys [5]: [plantUuid#143678, internalUUID#143648, plant#143650, product#143649, systemId#143647]
Functions [2]: [first(calculationDateTime#143651, false), collect_list(stockQuantity#143725, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#143651)()#143100, collect_list(stockQuantity#143725, 0, 0)#143101]
Results [4]: [product#143649, plant#143650, first(calculationDateTime#143651)()#143100 AS calculationDateTime#143726, collect_list(stockQuantity#143725, 0, 0)#143101 AS stockQuantities#143727]
(940) Filter
Input [4]: [product#143649, plant#143650, calculationDateTime#143726, stockQuantities#143727]
Condition : ((size(stockQuantities#143727, true) > 0) AND isnotnull(calculationDateTime#143726))
(941) Generate
Input [4]: [product#143649, plant#143650, calculationDateTime#143726, stockQuantities#143727]
Arguments: explode(stockQuantities#143727), [product#143649, plant#143650, calculationDateTime#143726], false, [stockQuantity#143728]
(942) Filter
Input [4]: [product#143649, plant#143650, calculationDateTime#143726, stockQuantity#143728]
Condition : (((isnotnull(stockQuantity#143728.specialStockIndicator.code) AND isnotnull(stockQuantity#143728.stockType.code)) AND (stockQuantity#143728.specialStockIndicator.code = )) AND (stockQuantity#143728.stockType.code = 01))
(943) Project
Output [4]: [plant#143650.internalRefUUID AS plantUuid#143730, product#143649.internalRefUUID AS productUuid#143732, calculationDateTime#143726, stockQuantity#143728.storagelocation.id AS storageLocId#143733]
Input [4]: [product#143649, plant#143650, calculationDateTime#143726, stockQuantity#143728]
(944) Exchange
Input [4]: [plantUuid#143730, productUuid#143732, calculationDateTime#143726, storageLocId#143733]
Arguments: hashpartitioning(productUuid#143732, plantUuid#143730, 25), ENSURE_REQUIREMENTS, [plan_id=217403]
(945) Sort
Input [4]: [plantUuid#143730, productUuid#143732, calculationDateTime#143726, storageLocId#143733]
Arguments: [productUuid#143732 ASC NULLS FIRST, plantUuid#143730 ASC NULLS FIRST], false, 0
(946) Scan parquet
Output [3]: [product#143738, plant#143739, orderDateTime#143740]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(947) Filter
Input [3]: [product#143738, plant#143739, orderDateTime#143740]
Condition : ((isnotnull(orderDateTime#143740) AND isnotnull(plant#143739)) AND isnotnull(product#143738))
(948) Exchange
Input [3]: [product#143738, plant#143739, orderDateTime#143740]
Arguments: hashpartitioning(product#143738, plant#143739, 25), REPARTITION_BY_NUM, [plan_id=217089]
(949) Scan parquet
Output [4]: [plant#143744, product#143745, productionAspect#143747, systemId#143742]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(950) Project
Output [4]: [plant#143744.internalRefUUID AS _extract_internalRefUUID#144161, product#143745.internalRefUUID AS _extract_internalRefUUID#144160, productionAspect#143747.productMovementPlants.unitOfIssue.code AS _extract_code#144162, productionAspect#143747.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#144163]
Input [4]: [plant#143744, product#143745, productionAspect#143747, systemId#143742]
(951) Exchange
Input [4]: [_extract_internalRefUUID#144161, _extract_internalRefUUID#144160, _extract_code#144162, _extract_internalRefUUID#144163]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216847]
(952) Project
Output [4]: [_extract_code#144162, _extract_internalRefUUID#144163, _extract_internalRefUUID#144160, _extract_internalRefUUID#144161]
Input [4]: [_extract_internalRefUUID#144161, _extract_internalRefUUID#144160, _extract_code#144162, _extract_internalRefUUID#144163]
(953) BroadcastExchange
Input [4]: [_extract_code#144162, _extract_internalRefUUID#144163, _extract_internalRefUUID#144160, _extract_internalRefUUID#144161]
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=217386]
(954) BroadcastHashJoin
Left keys [4]: [coalesce(product#143738, ), isnull(product#143738), coalesce(plant#143739, ), isnull(plant#143739)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144160, ), isnull(_extract_internalRefUUID#144160), coalesce(_extract_internalRefUUID#144161, ), isnull(_extract_internalRefUUID#144161)]
Join type: LeftOuter
Join condition: None
(955) Project
Output [5]: [product#143738, plant#143739, orderDateTime#143740, _extract_code#144162, _extract_internalRefUUID#144163]
Input [7]: [product#143738, plant#143739, orderDateTime#143740, _extract_code#144162, _extract_internalRefUUID#144163, _extract_internalRefUUID#144160, _extract_internalRefUUID#144161]
(956) Scan parquet
Output [2]: [internalUUID#143752, systemId#143751]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(957) Project
Output [1]: [internalUUID#143752]
Input [2]: [internalUUID#143752, systemId#143751]
(958) Exchange
Input [1]: [internalUUID#143752]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216853]
(959) BroadcastExchange
Input [1]: [internalUUID#143752]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=217390]
(960) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143739, ), isnull(plant#143739)]
Right keys [2]: [coalesce(internalUUID#143752, ), isnull(internalUUID#143752)]
Join type: LeftOuter
Join condition: None
(961) Project
Output [5]: [product#143738, plant#143739, orderDateTime#143740, _extract_code#144162, _extract_internalRefUUID#144163]
Input [6]: [product#143738, plant#143739, orderDateTime#143740, _extract_code#144162, _extract_internalRefUUID#144163, internalUUID#143752]
(962) Scan parquet
Output [4]: [internalUUID#143766, baseUnitOfMeasure#143770, unitOfMeasureConversions#143772, systemId#143765]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(963) Filter
Input [4]: [internalUUID#143766, baseUnitOfMeasure#143770, unitOfMeasureConversions#143772, systemId#143765]
Condition : isnotnull(internalUUID#143766)
(964) Project
Output [3]: [internalUUID#143766, baseUnitOfMeasure#143770, unitOfMeasureConversions#143772]
Input [4]: [internalUUID#143766, baseUnitOfMeasure#143770, unitOfMeasureConversions#143772, systemId#143765]
(965) Exchange
Input [3]: [internalUUID#143766, baseUnitOfMeasure#143770, unitOfMeasureConversions#143772]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216859]
(966) BroadcastExchange
Input [3]: [internalUUID#143766, baseUnitOfMeasure#143770, unitOfMeasureConversions#143772]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217394]
(967) BroadcastHashJoin
Left keys [1]: [product#143738]
Right keys [1]: [internalUUID#143766]
Join type: LeftOuter
Join condition: None
(968) Project
Output [4]: [product#143738, plant#143739, orderDateTime#143740, filter(unitOfMeasureConversions#143772, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144162) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144163)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143770.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143770.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143777]
Input [8]: [product#143738, plant#143739, orderDateTime#143740, _extract_code#144162, _extract_internalRefUUID#144163, internalUUID#143766, baseUnitOfMeasure#143770, unitOfMeasureConversions#143772]
(969) Generate
Input [4]: [product#143738, plant#143739, orderDateTime#143740, filteredUnitOfMeasureConversions#143777]
Arguments: explode(filteredUnitOfMeasureConversions#143777.quantityNumerator), [product#143738, plant#143739, orderDateTime#143740, filteredUnitOfMeasureConversions#143777], true, [quantityNumerator#143778]
(970) Project
Output [4]: [product#143738, plant#143739, orderDateTime#143740, filteredUnitOfMeasureConversions#143777.quantityDenominator AS _extract_quantityDenominator#143976]
Input [5]: [product#143738, plant#143739, orderDateTime#143740, filteredUnitOfMeasureConversions#143777, quantityNumerator#143778]
(971) Generate
Input [4]: [product#143738, plant#143739, orderDateTime#143740, _extract_quantityDenominator#143976]
Arguments: explode(_extract_quantityDenominator#143976), [product#143738, plant#143739, orderDateTime#143740], true, [quantityDenominator#143779]
(972) Project
Output [3]: [product#143738, plant#143739, orderDateTime#143740]
Input [4]: [product#143738, plant#143739, orderDateTime#143740, quantityDenominator#143779]
(973) Sort
Input [3]: [product#143738, plant#143739, orderDateTime#143740]
Arguments: [product#143738 ASC NULLS FIRST, plant#143739 ASC NULLS FIRST], false, 0
(974) SortMergeJoin
Left keys [2]: [productUuid#143732, plantUuid#143730]
Right keys [2]: [product#143738, plant#143739]
Join type: Inner
Join condition: (calculationDateTime#143726 <= orderDateTime#143740)
(975) Project
Output [4]: [plantUuid#143730 AS plant#143782, productUuid#143732 AS product#143783, storageLocId#143733, calculationDateTime#143726]
Input [7]: [plantUuid#143730, productUuid#143732, calculationDateTime#143726, storageLocId#143733, product#143738, plant#143739, orderDateTime#143740]
(976) HashAggregate
Input [4]: [plant#143782, product#143783, storageLocId#143733, calculationDateTime#143726]
Keys [3]: [plant#143782, product#143783, storageLocId#143733]
Functions [1]: [partial_max(calculationDateTime#143726)]
Aggregate Attributes [1]: [max#144840]
Results [4]: [plant#143782, product#143783, storageLocId#143733, max#144841]
(977) HashAggregate
Input [4]: [plant#143782, product#143783, storageLocId#143733, max#144841]
Keys [3]: [plant#143782, product#143783, storageLocId#143733]
Functions [1]: [max(calculationDateTime#143726)]
Aggregate Attributes [1]: [max(calculationDateTime#143726)#143178]
Results [4]: [plant#143782, product#143783, storageLocId#143733, max(calculationDateTime#143726)#143178 AS max_calc_datetime#143784]
(978) Exchange
Input [4]: [plant#143782, product#143783, storageLocId#143733, max_calc_datetime#143784]
Arguments: hashpartitioning(coalesce(plant#143782, ), isnull(plant#143782), coalesce(product#143783, ), isnull(product#143783), coalesce(storageLocId#143733, ), isnull(storageLocId#143733), coalesce(max_calc_datetime#143784, 1970-01-01 00:00:00), isnull(max_calc_datetime#143784), 25), ENSURE_REQUIREMENTS, [plan_id=217413]
(979) Sort
Input [4]: [plant#143782, product#143783, storageLocId#143733, max_calc_datetime#143784]
Arguments: [coalesce(plant#143782, ) ASC NULLS FIRST, isnull(plant#143782) ASC NULLS FIRST, coalesce(product#143783, ) ASC NULLS FIRST, isnull(product#143783) ASC NULLS FIRST, coalesce(storageLocId#143733, ) ASC NULLS FIRST, isnull(storageLocId#143733) ASC NULLS FIRST, coalesce(max_calc_datetime#143784, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#143784) ASC NULLS FIRST], false, 0
(980) SortMergeJoin
Left keys [8]: [coalesce(plant#143645, ), isnull(plant#143645), coalesce(product#143646, ), isnull(product#143646), coalesce(storageLocId#143596, ), isnull(storageLocId#143596), coalesce(calculationDateTime#143589, 1970-01-01 00:00:00), isnull(calculationDateTime#143589)]
Right keys [8]: [coalesce(plant#143782, ), isnull(plant#143782), coalesce(product#143783, ), isnull(product#143783), coalesce(storageLocId#143733, ), isnull(storageLocId#143733), coalesce(max_calc_datetime#143784, 1970-01-01 00:00:00), isnull(max_calc_datetime#143784)]
Join type: Inner
Join condition: None
(981) Project
Output [4]: [plant#143645, product#143646, calculationDateTime#143589, quantity#143598]
Input [9]: [plant#143645, product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598, plant#143782, product#143783, storageLocId#143733, max_calc_datetime#143784]
(982) HashAggregate
Input [4]: [plant#143645, product#143646, calculationDateTime#143589, quantity#143598]
Keys [2]: [product#143646, plant#143645]
Functions [2]: [partial_min(calculationDateTime#143589), partial_sum(quantity#143598)]
Aggregate Attributes [2]: [min#144830, sum#144831]
Results [4]: [product#143646, plant#143645, min#144832, sum#144833]
(983) Exchange
Input [4]: [product#143646, plant#143645, min#144832, sum#144833]
Arguments: hashpartitioning(product#143646, plant#143645, 25), ENSURE_REQUIREMENTS, [plan_id=217420]
(984) HashAggregate
Input [4]: [product#143646, plant#143645, min#144832, sum#144833]
Keys [2]: [product#143646, plant#143645]
Functions [2]: [min(calculationDateTime#143589), sum(quantity#143598)]
Aggregate Attributes [2]: [min(calculationDateTime#143589)#143334, sum(quantity#143598)#143333]
Results [4]: [product#143646, plant#143645, min(calculationDateTime#143589)#143334 AS minCalculationDateTime#143786, round(sum(quantity#143598)#143333, 0) AS roundedQuantitySum#143787]
(985) Sort
Input [4]: [product#143646, plant#143645, minCalculationDateTime#143786, roundedQuantitySum#143787]
Arguments: [product#143646 ASC NULLS FIRST, plant#143645 ASC NULLS FIRST], false, 0
(986) SortMergeJoin
Left keys [2]: [product#143466, plant#143467]
Right keys [2]: [product#143646, plant#143645]
Join type: LeftOuter
Join condition: None
(987) Project
Output [8]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, CASE WHEN isnotnull(minCalculationDateTime#143786) THEN minCalculationDateTime#143786 ELSE orderDateTime#143468 END AS stockDatetime#143788, CASE WHEN isnotnull(roundedQuantitySum#143787) THEN array(roundedQuantitySum#143787) ELSE [0.0] END AS stockBatchQuantities#143789]
Input [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, product#143646, plant#143645, minCalculationDateTime#143786, roundedQuantitySum#143787]
(988) Filter
Input [9]: [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
Condition : (isnotnull(product#143387) AND isnotnull(plant#143388))
(989) BroadcastExchange
Input [9]: [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=217429]
(990) BroadcastHashJoin
Left keys [2]: [product#143466, plant#143467]
Right keys [2]: [product#143387, plant#143388]
Join type: LeftOuter
Join condition: None
(991) Project
Output [9]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, CASE WHEN isnotnull(product#143387) THEN struct(demandChannel, demandChannel#143389, demandStream, demandStream#143390, considerVariance, considerVariance#143391, demandTimeBuckets, demandTimeBuckets#143392, demandPointInTimeStart, demandPointInTimeStart#143393, demandPointInTimeEnd, demandPointInTimeEnd#143394, demandPointInTime, demandPointInTime#143395) END AS rawDemands#143412]
Input [17]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
(992) ObjectHashAggregate
Input [9]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, rawDemands#143412]
Keys [9]: [product#143466, plant#143467, orderDateTime#143468, knownfloatingpointnormalized(if (isnull(productPlant#143478)) null else named_struct(systemId, productPlant#143478.systemId, internalUUID, productPlant#143478.internalUUID, plant, productPlant#143478.plant, product, productPlant#143478.product, blockedForReplenishmentStartingFrom, productPlant#143478.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#143478.productionAspect)) null else named_struct(productMovementPlants, productPlant#143478.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#143478.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#143478.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#143478.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#143478.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#143478.productionAspect.productPlanningPlants.minimumLotSize)), minimumSafetyStock, knownfloatingpointnormalized(normalizenanandzero(productPlant#143478.productionAspect.productPlanningPlants.minimumSafetyStock)), logisticalRoundingProfile, productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#143478.salesPlant, listing, productPlant#143478.listing)) AS productPlant#143478, timezonecode#143492, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#143509)) AS outboundUnit#143509, stockDatetime#143788, knownfloatingpointnormalized(transform(stockBatchQuantities#143789, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#144827)), lambda arg#144827, false))) AS stockBatchQuantities#143789, [7226582400000000] AS [7226582400000000]#144826]
Functions [1]: [partial_collect_list(rawDemands#143412, 0, 0)]
Aggregate Attributes [1]: [buf#144828]
Results [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000]#144826, buf#144829]
(993) ObjectHashAggregate
Input [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000]#144826, buf#144829]
Keys [9]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000]#144826]
Functions [1]: [collect_list(rawDemands#143412, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#143412, 0, 0)#143431]
Results [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#143790, collect_list(rawDemands#143412, 0, 0)#143431 AS rawDemands#143413]
(994) DeserializeToObject
Input [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, stockBatchShelfLifeEndDatetimes#143790, rawDemands#143413]
Arguments: createexternalrow(invoke(product#143466.toString()), invoke(plant#143467.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#143468)), if (isnull(productPlant#143478)) null else createexternalrow(invoke(productPlant#143478.systemId.toString()), invoke(productPlant#143478.internalUUID.toString()), if (isnull(productPlant#143478.plant)) null else createexternalrow(invoke(productPlant#143478.plant.internalRefUUID.toString()), invoke(productPlant#143478.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#143478.product)) null else createexternalrow(invoke(productPlant#143478.product.internalRefUUID.toString()), invoke(productPlant#143478.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#143478.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#143478.productionAspect)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#143478.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#143478.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#143478.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#143478.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(minimumSafetyStock,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#143478.salesPlant)) null else createexternalrow(if (isnull(productPlant#143478.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#143478.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#143478.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#143478.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#143492.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#143509)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#143788)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#143789, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#143790, 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#143413, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#143452: org.apache.spark.sql.Row
(995) MapElements
Input [1]: [obj#143452]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@2d5ca6d1, obj#143457: org.apache.spark.sql.Row
(996) SerializeFromObject
Input [1]: [obj#143457]
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#143462, 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#143463]
(997) Exchange
Input [2]: [product#143462, plant#143463]
Arguments: hashpartitioning(coalesce(plant#143463, ), isnull(plant#143463), coalesce(product#143462, ), isnull(product#143462), 25), ENSURE_REQUIREMENTS, [plan_id=217440]
(998) Sort
Input [2]: [product#143462, plant#143463]
Arguments: [coalesce(plant#143463, ) ASC NULLS FIRST, isnull(plant#143463) ASC NULLS FIRST, coalesce(product#143462, ) ASC NULLS FIRST, isnull(product#143462) ASC NULLS FIRST], false, 0
(999) SortMergeJoin
Left keys [4]: [coalesce(plant#142981, ), isnull(plant#142981), coalesce(product#142980, ), isnull(product#142980)]
Right keys [4]: [coalesce(plant#143463, ), isnull(plant#143463), coalesce(product#143462, ), isnull(product#143462)]
Join type: LeftOuter
Join condition: None
(1000) Project
Output [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Input [6]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384, product#143462, plant#143463]
(1001) Exchange
Input [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: hashpartitioning(plant#142981, 25), ENSURE_REQUIREMENTS, [plan_id=217470]
(1002) Sort
Input [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: [plant#142981 ASC NULLS FIRST], false, 0
(1003) Scan parquet
Output [2]: [marketUnit#143855, distributionCenters#143861]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1004) Filter
Input [2]: [marketUnit#143855, distributionCenters#143861]
Condition : (((marketUnit#143855 <=> Daily_grocery) AND (size(distributionCenters#143861, true) > 0)) AND isnotnull(distributionCenters#143861))
(1005) Project
Output [1]: [distributionCenters#143861]
Input [2]: [marketUnit#143855, distributionCenters#143861]
(1006) Exchange
Input [1]: [distributionCenters#143861]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216891]
(1007) Generate
Input [1]: [distributionCenters#143861]
Arguments: explode(distributionCenters#143861), false, [distributionCenters#143877]
(1008) Filter
Input [1]: [distributionCenters#143877]
Condition : (((size(distributionCenters#143877.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#143877.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#143877.internalRefUUID))
(1009) Project
Output [2]: [distributionCenters#143877.internalRefUUID AS _extract_internalRefUUID#143980, distributionCenters#143877.storageLocations.internalRefUUID AS _extract_internalRefUUID#144165]
Input [1]: [distributionCenters#143877]
(1010) Generate
Input [2]: [_extract_internalRefUUID#143980, _extract_internalRefUUID#144165]
Arguments: explode(_extract_internalRefUUID#144165), [_extract_internalRefUUID#143980], false, [storageLocations#143878]
(1011) Filter
Input [2]: [_extract_internalRefUUID#143980, storageLocations#143878]
Condition : isnotnull(storageLocations#143878)
(1012) Project
Output [2]: [_extract_internalRefUUID#143980 AS plantUuid#143880, storageLocations#143878 AS storageLocUuid#143882]
Input [2]: [_extract_internalRefUUID#143980, storageLocations#143878]
(1013) BroadcastExchange
Input [2]: [plantUuid#143880, storageLocUuid#143882]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217465]
(1014) Scan parquet
Output [2]: [product#143883, plant#143884]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1015) Filter
Input [2]: [product#143883, plant#143884]
Condition : isnotnull(plant#143884)
(1016) Exchange
Input [2]: [product#143883, plant#143884]
Arguments: hashpartitioning(product#143883, plant#143884, 25), REPARTITION_BY_NUM, [plan_id=217119]
(1017) Scan parquet
Output [4]: [plant#143889, product#143890, productionAspect#143892, systemId#143887]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1018) Project
Output [4]: [plant#143889.internalRefUUID AS _extract_internalRefUUID#144166, product#143890.internalRefUUID AS _extract_internalRefUUID#144167, productionAspect#143892.productMovementPlants.unitOfIssue.code AS _extract_code#144168, productionAspect#143892.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#144169]
Input [4]: [plant#143889, product#143890, productionAspect#143892, systemId#143887]
(1019) Exchange
Input [4]: [_extract_internalRefUUID#144166, _extract_internalRefUUID#144167, _extract_code#144168, _extract_internalRefUUID#144169]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216904]
(1020) Project
Output [4]: [_extract_code#144168, _extract_internalRefUUID#144169, _extract_internalRefUUID#144167, _extract_internalRefUUID#144166]
Input [4]: [_extract_internalRefUUID#144166, _extract_internalRefUUID#144167, _extract_code#144168, _extract_internalRefUUID#144169]
(1021) BroadcastExchange
Input [4]: [_extract_code#144168, _extract_internalRefUUID#144169, _extract_internalRefUUID#144167, _extract_internalRefUUID#144166]
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=217445]
(1022) BroadcastHashJoin
Left keys [4]: [coalesce(product#143883, ), isnull(product#143883), coalesce(plant#143884, ), isnull(plant#143884)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144167, ), isnull(_extract_internalRefUUID#144167), coalesce(_extract_internalRefUUID#144166, ), isnull(_extract_internalRefUUID#144166)]
Join type: LeftOuter
Join condition: None
(1023) Project
Output [4]: [product#143883, plant#143884, _extract_code#144168, _extract_internalRefUUID#144169]
Input [6]: [product#143883, plant#143884, _extract_code#144168, _extract_internalRefUUID#144169, _extract_internalRefUUID#144167, _extract_internalRefUUID#144166]
(1024) Scan parquet
Output [2]: [internalUUID#143897, systemId#143896]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1025) Project
Output [1]: [internalUUID#143897]
Input [2]: [internalUUID#143897, systemId#143896]
(1026) Exchange
Input [1]: [internalUUID#143897]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216910]
(1027) BroadcastExchange
Input [1]: [internalUUID#143897]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=217449]
(1028) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143884, ), isnull(plant#143884)]
Right keys [2]: [coalesce(internalUUID#143897, ), isnull(internalUUID#143897)]
Join type: LeftOuter
Join condition: None
(1029) Project
Output [4]: [product#143883, plant#143884, _extract_code#144168, _extract_internalRefUUID#144169]
Input [5]: [product#143883, plant#143884, _extract_code#144168, _extract_internalRefUUID#144169, internalUUID#143897]
(1030) Scan parquet
Output [4]: [internalUUID#143911, baseUnitOfMeasure#143915, unitOfMeasureConversions#143917, systemId#143910]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1031) Filter
Input [4]: [internalUUID#143911, baseUnitOfMeasure#143915, unitOfMeasureConversions#143917, systemId#143910]
Condition : isnotnull(internalUUID#143911)
(1032) Project
Output [3]: [internalUUID#143911, baseUnitOfMeasure#143915, unitOfMeasureConversions#143917]
Input [4]: [internalUUID#143911, baseUnitOfMeasure#143915, unitOfMeasureConversions#143917, systemId#143910]
(1033) Exchange
Input [3]: [internalUUID#143911, baseUnitOfMeasure#143915, unitOfMeasureConversions#143917]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216916]
(1034) BroadcastExchange
Input [3]: [internalUUID#143911, baseUnitOfMeasure#143915, unitOfMeasureConversions#143917]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217453]
(1035) BroadcastHashJoin
Left keys [1]: [product#143883]
Right keys [1]: [internalUUID#143911]
Join type: LeftOuter
Join condition: None
(1036) Project
Output [2]: [plant#143884, filter(unitOfMeasureConversions#143917, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144168) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144169)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143915.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143915.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143922]
Input [7]: [product#143883, plant#143884, _extract_code#144168, _extract_internalRefUUID#144169, internalUUID#143911, baseUnitOfMeasure#143915, unitOfMeasureConversions#143917]
(1037) Generate
Input [2]: [plant#143884, filteredUnitOfMeasureConversions#143922]
Arguments: explode(filteredUnitOfMeasureConversions#143922.quantityNumerator), [plant#143884, filteredUnitOfMeasureConversions#143922], true, [quantityNumerator#143923]
(1038) Project
Output [2]: [plant#143884, filteredUnitOfMeasureConversions#143922.quantityDenominator AS _extract_quantityDenominator#143982]
Input [3]: [plant#143884, filteredUnitOfMeasureConversions#143922, quantityNumerator#143923]
(1039) Generate
Input [2]: [plant#143884, _extract_quantityDenominator#143982]
Arguments: explode(_extract_quantityDenominator#143982), [plant#143884], true, [quantityDenominator#143924]
(1040) Project
Output [1]: [plant#143884]
Input [2]: [plant#143884, quantityDenominator#143924]
(1041) HashAggregate
Input [1]: [plant#143884]
Keys [1]: [plant#143884]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143884]
(1042) Exchange
Input [1]: [plant#143884]
Arguments: hashpartitioning(plant#143884, 25), ENSURE_REQUIREMENTS, [plan_id=217462]
(1043) HashAggregate
Input [1]: [plant#143884]
Keys [1]: [plant#143884]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143884]
(1044) BroadcastHashJoin
Left keys [1]: [plantUuid#143880]
Right keys [1]: [plant#143884]
Join type: Inner
Join condition: None
(1045) Project
Output [2]: [plantUuid#143880 AS plant#143854, storageLocUuid#143882]
Input [3]: [plantUuid#143880, storageLocUuid#143882, plant#143884]
(1046) Sort
Input [2]: [plant#143854, storageLocUuid#143882]
Arguments: [plant#143854 ASC NULLS FIRST], false, 0
(1047) SortMergeJoin
Left keys [1]: [plant#142981]
Right keys [1]: [plant#143854]
Join type: Inner
Join condition: None
(1048) Project
Output [5]: [plant#142981, product#142980, timezonecode#143012, stockDatetime#143384, storageLocUuid#143882]
Input [6]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384, plant#143854, storageLocUuid#143882]
(1049) Filter
Input [6]: [internalUUID#143816, id#143817, supplier#143819, isMarkedForDeletion#143822, items#143823, systemId#143815]
Condition : (((isnotnull(isMarkedForDeletion#143822) AND NOT isMarkedForDeletion#143822) AND (size(items#143823, true) > 0)) AND isnotnull(items#143823))
(1050) Project
Output [4]: [internalUUID#143816, id#143817, supplier#143819, items#143823]
Input [6]: [internalUUID#143816, id#143817, supplier#143819, isMarkedForDeletion#143822, items#143823, systemId#143815]
(1051) Exchange
Input [4]: [internalUUID#143816, id#143817, supplier#143819, items#143823]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216932]
(1052) Generate
Input [4]: [internalUUID#143816, id#143817, supplier#143819, items#143823]
Arguments: explode(items#143823), [internalUUID#143816, id#143817, supplier#143819], false, [item#143827]
(1053) Filter
Input [4]: [internalUUID#143816, id#143817, supplier#143819, item#143827]
Condition : ((((isnotnull(item#143827.deletionIndicator) AND isnotnull(item#143827.completeIndicator)) AND isnotnull(item#143827.returnIndicator)) AND ((NOT item#143827.deletionIndicator AND NOT item#143827.completeIndicator) AND NOT item#143827.returnIndicator)) AND ((isnotnull(item#143827.product.internalRefUUID) AND isnotnull(item#143827.plant.internalRefUUID)) AND isnotnull(item#143827.storageLocation.internalRefUUID)))
(1054) Project
Output [14]: [id#143817, internalUUID#143816, supplier#143819.internalRefUUID AS supplierUuid#143824, item#143827.plant.internalRefUUID AS plant#143832, item#143827.product.internalRefUUID AS product#143833, item#143827.plant.id AS externalPlantId#143834, item#143827.product.id AS externalProductId#143835, item#143827.storageLocation.internalRefUUID AS storageLocUuid#143836, item#143827.quantityUnit.code AS quantityUom#143837, item#143827.quantityUnit.internalRefUUID AS quantityUomUuid#143838, item#143827.quantityNumerator AS quantityNumerator#143839, item#143827.quantityDenominator AS quantityDenominator#143840, item#143827.scheduleLines AS scheduleLines#143841, item#143827.confirmations AS confirmations#143842]
Input [4]: [internalUUID#143816, id#143817, supplier#143819, item#143827]
(1055) BroadcastExchange
Input [14]: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842]
Arguments: HashedRelationBroadcastMode(List(input[4, string, true], input[3, string, true], input[7, string, true]),false), [plan_id=217476]
(1056) BroadcastHashJoin
Left keys [3]: [product#142980, plant#142981, storageLocUuid#143882]
Right keys [3]: [product#143833, plant#143832, storageLocUuid#143836]
Join type: Inner
Join condition: None
(1057) Project
Output [17]: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842, stockDatetime#143384, timezonecode#143012, filter(confirmations#143842, lambdafunction(((NOT lambda x_29#143933.deletionIndicator AND lambda x_29#143933.isRelevantForConfirmation) AND isnotnull(lambda x_29#143933.confirmedDeliveryAt)), lambda x_29#143933, false)) AS validConfirmations#143932]
Input [19]: [plant#142981, product#142980, timezonecode#143012, stockDatetime#143384, storageLocUuid#143882, id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842]
(1058) AdaptiveSparkPlan
Output [17]: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842, stockDatetime#143384, timezonecode#143012, validConfirmations#143932]
Arguments: isFinalPlan=true
(1059) TableCacheQueryStage
Output [10]: [id#143817, internalUUID#143816, plant#143832, product#143833, quantityDenominator#143840, quantityNumerator#143839, quantityUom#143837, quantityUomUuid#143838, scheduleLines#143841, validConfirmations#143932]
Arguments: 0
(1060) Project [codegen id : 1]
Output [11]: [id#143817, internalUUID#143816, plant#143832, product#143833, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, validConfirmations#143932, size(validConfirmations#143932, false) AS _w0#145380]
Input [10]: [id#143817, internalUUID#143816, plant#143832, product#143833, quantityDenominator#143840, quantityNumerator#143839, quantityUom#143837, quantityUomUuid#143838, scheduleLines#143841, validConfirmations#143932]
(1061) Exchange
Input [11]: [id#143817, internalUUID#143816, plant#143832, product#143833, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, validConfirmations#143932, _w0#145380]
Arguments: hashpartitioning(internalUUID#143816, 25), ENSURE_REQUIREMENTS, [plan_id=264227]
(1062) ShuffleQueryStage
Output [11]: [id#143817, internalUUID#143816, plant#143832, product#143833, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, validConfirmations#143932, _w0#145380]
Arguments: 1
(1063) AQEShuffleRead
Input [11]: [id#143817, internalUUID#143816, plant#143832, product#143833, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, validConfirmations#143932, _w0#145380]
Arguments: coalesced
(1064) Sort [codegen id : 2]
Input [11]: [id#143817, internalUUID#143816, plant#143832, product#143833, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, validConfirmations#143932, _w0#145380]
Arguments: [internalUUID#143816 ASC NULLS FIRST], false, 0
(1065) Window
Input [11]: [id#143817, internalUUID#143816, plant#143832, product#143833, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, validConfirmations#143932, _w0#145380]
Arguments: [sum(_w0#145380) windowspecdefinition(internalUUID#143816, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#145381L], [internalUUID#143816]
(1066) Project
Output [3]: [plant#143832, product#143833, filter(transform(CASE WHEN (_we0#145381L > 0) THEN transform(validConfirmations#143932, lambdafunction(struct(openQty, greatest((lambda x_35#145376.confirmedQuantity - coalesce(lambda x_35#145376.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_35#145376.confirmedDeliveryAt), lambda x_35#145376, false)) ELSE transform(scheduleLines#143841, lambdafunction(struct(openQty, greatest((lambda x_34#145377.quantity - coalesce(lambda x_34#145377.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_34#145377.deliveryAt), lambda x_34#145377, false)) END, lambdafunction(struct(documentId, id#143817, documentUuid, internalUUID#143816, openQty, lambda x_36#145378.openQty, openQtyInBaseUnit, ((lambda x_36#145378.openQty * quantityNumerator#143839) / quantityDenominator#143840), qtyUom, quantityUom#143837, qtyUomUuid, quantityUomUuid#143838, availabilityDatetime, lambda x_36#145378.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_36#145378, false)), lambdafunction(NOT (lambda x_37#145379.openQty = 0.0), lambda x_37#145379, false)) AS openGoodsMovements#145374]
Input [12]: [id#143817, internalUUID#143816, plant#143832, product#143833, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, validConfirmations#143932, _w0#145380, _we0#145381L]
(1067) ObjectHashAggregate
Input [3]: [plant#143832, product#143833, openGoodsMovements#145374]
Keys [2]: [product#143833, plant#143832]
Functions [1]: [partial_collect_list(openGoodsMovements#145374, 0, 0)]
Aggregate Attributes [1]: [buf#145657]
Results [3]: [product#143833, plant#143832, buf#145658]
(1068) Exchange
Input [3]: [product#143833, plant#143832, buf#145658]
Arguments: hashpartitioning(product#143833, plant#143832, 25), ENSURE_REQUIREMENTS, [plan_id=264286]
(1069) ShuffleQueryStage
Output [3]: [product#143833, plant#143832, buf#145658]
Arguments: 2
(1070) ObjectHashAggregate
Input [3]: [product#143833, plant#143832, buf#145658]
Keys [2]: [product#143833, plant#143832]
Functions [1]: [collect_list(openGoodsMovements#145374, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#145374, 0, 0)#145401]
Results [3]: [product#143833, plant#143832, flatten(collect_list(openGoodsMovements#145374, 0, 0)#145401) AS openGoodsMovements#145382]
(1071) Filter [codegen id : 3]
Input [3]: [product#143833, plant#143832, openGoodsMovements#145382]
Condition : (size(openGoodsMovements#145382, false) > 0)
(1072) ResultQueryStage
Output [3]: [product#143833, plant#143832, openGoodsMovements#145382]
Arguments: 3
(1073) Project
Output [11]: [id#143817, internalUUID#143816, plant#143832, product#143833, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, validConfirmations#143932, size(validConfirmations#143932, false) AS _w0#145380]
Input [10]: [id#143817, internalUUID#143816, plant#143832, product#143833, quantityDenominator#143840, quantityNumerator#143839, quantityUom#143837, quantityUomUuid#143838, scheduleLines#143841, validConfirmations#143932]
(1074) Exchange
Input [11]: [id#143817, internalUUID#143816, plant#143832, product#143833, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, validConfirmations#143932, _w0#145380]
Arguments: hashpartitioning(internalUUID#143816, 25), ENSURE_REQUIREMENTS, [plan_id=217504]
(1075) Sort
Input [11]: [id#143817, internalUUID#143816, plant#143832, product#143833, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, validConfirmations#143932, _w0#145380]
Arguments: [internalUUID#143816 ASC NULLS FIRST], false, 0
(1076) Window
Input [11]: [id#143817, internalUUID#143816, plant#143832, product#143833, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, validConfirmations#143932, _w0#145380]
Arguments: [sum(_w0#145380) windowspecdefinition(internalUUID#143816, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#145381L], [internalUUID#143816]
(1077) Project
Output [3]: [plant#143832, product#143833, filter(transform(CASE WHEN (_we0#145381L > 0) THEN transform(validConfirmations#143932, lambdafunction(struct(openQty, greatest((lambda x_35#145376.confirmedQuantity - coalesce(lambda x_35#145376.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_35#145376.confirmedDeliveryAt), lambda x_35#145376, false)) ELSE transform(scheduleLines#143841, lambdafunction(struct(openQty, greatest((lambda x_34#145377.quantity - coalesce(lambda x_34#145377.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_34#145377.deliveryAt), lambda x_34#145377, false)) END, lambdafunction(struct(documentId, id#143817, documentUuid, internalUUID#143816, openQty, lambda x_36#145378.openQty, openQtyInBaseUnit, ((lambda x_36#145378.openQty * quantityNumerator#143839) / quantityDenominator#143840), qtyUom, quantityUom#143837, qtyUomUuid, quantityUomUuid#143838, availabilityDatetime, lambda x_36#145378.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_36#145378, false)), lambdafunction(NOT (lambda x_37#145379.openQty = 0.0), lambda x_37#145379, false)) AS openGoodsMovements#145374]
Input [12]: [id#143817, internalUUID#143816, plant#143832, product#143833, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, validConfirmations#143932, _w0#145380, _we0#145381L]
(1078) ObjectHashAggregate
Input [3]: [plant#143832, product#143833, openGoodsMovements#145374]
Keys [2]: [product#143833, plant#143832]
Functions [1]: [partial_collect_list(openGoodsMovements#145374, 0, 0)]
Aggregate Attributes [1]: [buf#145657]
Results [3]: [product#143833, plant#143832, buf#145658]
(1079) Exchange
Input [3]: [product#143833, plant#143832, buf#145658]
Arguments: hashpartitioning(product#143833, plant#143832, 25), ENSURE_REQUIREMENTS, [plan_id=217510]
(1080) ObjectHashAggregate
Input [3]: [product#143833, plant#143832, buf#145658]
Keys [2]: [product#143833, plant#143832]
Functions [1]: [collect_list(openGoodsMovements#145374, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#145374, 0, 0)#145401]
Results [3]: [product#143833, plant#143832, flatten(collect_list(openGoodsMovements#145374, 0, 0)#145401) AS openGoodsMovements#145382]
(1081) Filter
Input [3]: [product#143833, plant#143832, openGoodsMovements#145382]
Condition : (size(openGoodsMovements#145382, false) > 0)
(1082) AdaptiveSparkPlan
Output [3]: [product#143833, plant#143832, openGoodsMovements#145382]
Arguments: isFinalPlan=true
(1083) TableCacheQueryStage
Output [3]: [product#143833, plant#143832, openGoodsMovements#145382]
Arguments: 87
(1084) Filter [codegen id : 197]
Input [3]: [product#143833, plant#143832, openGoodsMovements#145382]
Condition : (isnotnull(product#143833) AND isnotnull(plant#143832))
(1085) ObjectHashAggregate
Input [3]: [product#143833, plant#143832, openGoodsMovements#145382]
Keys [2]: [product#143833, plant#143832]
Functions [1]: [partial_collect_list(openGoodsMovements#145382, 0, 0)]
Aggregate Attributes [1]: [buf#148685]
Results [3]: [product#143833, plant#143832, buf#148686]
(1086) ObjectHashAggregate
Input [3]: [product#143833, plant#143832, buf#148686]
Keys [2]: [product#143833, plant#143832]
Functions [1]: [collect_list(openGoodsMovements#145382, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#145382, 0, 0)#146446]
Results [3]: [product#143833, plant#143832, flatten(collect_list(openGoodsMovements#145382, 0, 0)#146446) AS openGoodsMovements#146442]
(1087) Project [codegen id : 198]
Output [5]: [product#143833, plant#143832, openGoodsMovements#146442.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#147652, openGoodsMovements#146442.availabilityDatetime AS _extract_availabilityDatetime#147653, openGoodsMovements#146442.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#147654]
Input [3]: [product#143833, plant#143832, openGoodsMovements#146442]
(1088) BroadcastExchange
Input [5]: [product#143833, plant#143832, _extract_openQtyInBaseUnit#147652, _extract_availabilityDatetime#147653, _extract_shelfLifeEndDatetime#147654]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=305245]
(1089) BroadcastQueryStage
Output [5]: [product#143833, plant#143832, _extract_openQtyInBaseUnit#147652, _extract_availabilityDatetime#147653, _extract_shelfLifeEndDatetime#147654]
Arguments: 370
(1090) BroadcastHashJoin [codegen id : 199]
Left keys [2]: [product#142980, plant#142981]
Right keys [2]: [product#143833, plant#143832]
Join type: LeftOuter
Join condition: None
(1091) Project [codegen id : 199]
Output [16]: [product#142980, plant#142981, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#143386, dayBucketDemands#143464, pointInTimeDemands#143465, coalesce(_extract_openQtyInBaseUnit#147652, []) AS openGoodsMovementQuantities#147161, coalesce(_extract_availabilityDatetime#147653, []) AS openGoodsMovementAvailabilityDatetimes#147162, coalesce(_extract_shelfLifeEndDatetime#147654, []) AS openGoodsMovementShelfLifeEndDatetimes#147163, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#147264, concat([ListingPeriod], CASE WHEN isnotnull(_extract_minimumSafetyStock#147969) THEN [MinStock] ELSE [] END) AS timeDependentSettingsName#147407, concat([-2208988800000000], CASE WHEN isnotnull(_extract_minimumSafetyStock#147969) THEN [-2208988800000000] ELSE [] END) AS timeDependentSettingsStartDatetime#147409, concat([7226582400000000], CASE WHEN isnotnull(_extract_minimumSafetyStock#147969) THEN [7226582400000000] ELSE [] END) AS timeDependentSettingsEndDatetime#147411, concat([1.0], CASE WHEN isnotnull(_extract_minimumSafetyStock#147969) THEN array(_extract_minimumSafetyStock#147969) ELSE [] END) AS timeDependentSettingsValue#147413]
Input [13]: [product#142980, plant#142981, _extract_minimumSafetyStock#147969, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, dayBucketDemands#143464, pointInTimeDemands#143465, product#143833, plant#143832, _extract_openQtyInBaseUnit#147652, _extract_availabilityDatetime#147653, _extract_shelfLifeEndDatetime#147654]
(1092) ResultQueryStage
Output [16]: [product#142980, plant#142981, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386, dayBucketDemands#143464, pointInTimeDemands#143465, openGoodsMovementQuantities#147161, openGoodsMovementAvailabilityDatetimes#147162, openGoodsMovementShelfLifeEndDatetimes#147163, configuration#147264, timeDependentSettingsName#147407, timeDependentSettingsStartDatetime#147409, timeDependentSettingsEndDatetime#147411, timeDependentSettingsValue#147413]
Arguments: 372
(1093) Exchange
Input [3]: [product#142980, plant#142981, orderDateTime#142982]
Arguments: hashpartitioning(product#142980, plant#142981, 25), REPARTITION_BY_NUM, [plan_id=219810]
(1094) Project
Output [8]: [systemId#142985, internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992]
Input [8]: [internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992, systemId#142985]
(1095) Exchange
Input [8]: [systemId#142985, internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=219813]
(1096) Project
Output [1]: [struct(systemId, systemId#142985, internalUUID, internalUUID#142986, plant, plant#142987, product, product#142988, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#142989, productionAspect, productionAspect#142990, salesPlant, salesPlant#142991, listing, listing#142992) AS productPlant#142994]
Input [8]: [systemId#142985, internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992]
(1097) BroadcastExchange
Input [1]: [productPlant#142994]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=220956]
(1098) BroadcastHashJoin
Left keys [4]: [coalesce(product#142980, ), isnull(product#142980), coalesce(plant#142981, ), isnull(plant#142981)]
Right keys [4]: [coalesce(productPlant#142994.product.internalRefUUID, ), isnull(productPlant#142994.product.internalRefUUID), coalesce(productPlant#142994.plant.internalRefUUID, ), isnull(productPlant#142994.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1099) Project
Output [1]: [internalUUID#142998]
Input [2]: [internalUUID#142998, systemId#142997]
(1100) Exchange
Input [1]: [internalUUID#142998]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=219818]
(1101) BroadcastExchange
Input [1]: [internalUUID#142998]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=220959]
(1102) BroadcastHashJoin
Left keys [2]: [coalesce(plant#142981, ), isnull(plant#142981)]
Right keys [2]: [coalesce(internalUUID#142998, ), isnull(internalUUID#142998)]
Join type: LeftOuter
Join condition: None
(1103) Project
Output [4]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994]
Input [5]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, internalUUID#142998]
(1104) Filter
Input [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
Condition : isnotnull(internalUUID#143014)
(1105) Project
Output [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Input [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
(1106) Exchange
Input [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=219824]
(1107) BroadcastExchange
Input [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220963]
(1108) BroadcastHashJoin
Left keys [1]: [product#142980]
Right keys [1]: [internalUUID#143014]
Join type: LeftOuter
Join condition: None
(1109) Project
Output [5]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, filter(unitOfMeasureConversions#143020, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#142994.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#142994.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143018.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143018.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143026]
Input [7]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
(1110) Project
Output [6]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, filteredUnitOfMeasureConversions#143026.quantityDenominator AS _extract_quantityDenominator#147656, filteredUnitOfMeasureConversions#143026.quantityNumerator AS _extract_quantityNumerator#147657]
Input [5]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, filteredUnitOfMeasureConversions#143026]
(1111) Generate
Input [6]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, _extract_quantityDenominator#147656, _extract_quantityNumerator#147657]
Arguments: explode(_extract_quantityNumerator#147657), [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, _extract_quantityDenominator#147656], true, [quantityNumerator#143034]
(1112) Generate
Input [6]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, _extract_quantityDenominator#147656, quantityNumerator#143034]
Arguments: explode(_extract_quantityDenominator#147656), [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, quantityNumerator#143034], true, [quantityDenominator#143037]
(1113) Project
Output [5]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, (cast(quantityNumerator#143034 as double) / cast(quantityDenominator#143037 as double)) AS outboundUnit#143038]
Input [6]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, quantityNumerator#143034, quantityDenominator#143037]
(1114) Project
Output [5]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994.productionAspect.productPlanningPlants.minimumSafetyStock AS _extract_minimumSafetyStock#147969, CASE WHEN (isnull(outboundUnit#143038) OR (outboundUnit#143038 <= 0.0)) THEN 1.0 ELSE outboundUnit#143038 END AS outboundUnit#143039]
Input [5]: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, outboundUnit#143038]
(1115) Sort
Input [5]: [product#142980, plant#142981, orderDateTime#142982, _extract_minimumSafetyStock#147969, outboundUnit#143039]
Arguments: [product#142980 ASC NULLS FIRST, plant#142981 ASC NULLS FIRST], false, 0
(1116) Filter
Input [6]: [internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, systemId#143076]
Condition : (isnotnull(plant#143079.internalRefUUID) AND isnotnull(product#143078.internalRefUUID))
(1117) Project
Output [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
Input [6]: [internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, systemId#143076]
(1118) Exchange
Input [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=219835]
(1119) BroadcastExchange
Input [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
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=220995]
(1120) Filter
Input [2]: [marketUnit#143040, distributionCenters#143046]
Condition : (((marketUnit#143040 <=> Daily_grocery) AND (size(distributionCenters#143046, true) > 0)) AND isnotnull(distributionCenters#143046))
(1121) Project
Output [1]: [distributionCenters#143046]
Input [2]: [marketUnit#143040, distributionCenters#143046]
(1122) Exchange
Input [1]: [distributionCenters#143046]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=219839]
(1123) Generate
Input [1]: [distributionCenters#143046]
Arguments: explode(distributionCenters#143046), false, [distributionCenters#143064]
(1124) Filter
Input [1]: [distributionCenters#143064]
Condition : (((size(distributionCenters#143064.storageLocations, true) > 0) AND isnotnull(distributionCenters#143064.storageLocations)) AND isnotnull(distributionCenters#143064.internalRefUUID))
(1125) Project
Output [2]: [distributionCenters#143064.internalRefUUID AS _extract_internalRefUUID#147564, distributionCenters#143064.storageLocations AS _extract_storageLocations#147565]
Input [1]: [distributionCenters#143064]
(1126) Generate
Input [2]: [_extract_internalRefUUID#147564, _extract_storageLocations#147565]
Arguments: explode(_extract_storageLocations#147565), [_extract_internalRefUUID#147564], false, [storageLocations#143071]
(1127) Project
Output [3]: [_extract_internalRefUUID#147564 AS plantUuid#143066, storageLocations#143071.id AS storageLocId#143072, storageLocations#143071.internalRefUUID AS storageLocUuid#143073]
Input [2]: [_extract_internalRefUUID#147564, storageLocations#143071]
(1128) BroadcastExchange
Input [3]: [plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220991]
(1129) Filter
Input [2]: [product#143336, plant#143337]
Condition : isnotnull(plant#143337)
(1130) Exchange
Input [2]: [product#143336, plant#143337]
Arguments: hashpartitioning(product#143336, plant#143337, 25), REPARTITION_BY_NUM, [plan_id=220596]
(1131) Project
Output [4]: [plant#143342.internalRefUUID AS _extract_internalRefUUID#147902, product#143343.internalRefUUID AS _extract_internalRefUUID#147901, productionAspect#143345.productMovementPlants.unitOfIssue.code AS _extract_code#147903, productionAspect#143345.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#147904]
Input [4]: [plant#143342, product#143343, productionAspect#143345, systemId#143340]
(1132) Exchange
Input [4]: [_extract_internalRefUUID#147902, _extract_internalRefUUID#147901, _extract_code#147903, _extract_internalRefUUID#147904]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=219851]
(1133) Project
Output [4]: [_extract_code#147903, _extract_internalRefUUID#147904, _extract_internalRefUUID#147901, _extract_internalRefUUID#147902]
Input [4]: [_extract_internalRefUUID#147902, _extract_internalRefUUID#147901, _extract_code#147903, _extract_internalRefUUID#147904]
(1134) BroadcastExchange
Input [4]: [_extract_code#147903, _extract_internalRefUUID#147904, _extract_internalRefUUID#147901, _extract_internalRefUUID#147902]
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=220971]
(1135) BroadcastHashJoin
Left keys [4]: [coalesce(product#143336, ), isnull(product#143336), coalesce(plant#143337, ), isnull(plant#143337)]
Right keys [4]: [coalesce(_extract_internalRefUUID#147901, ), isnull(_extract_internalRefUUID#147901), coalesce(_extract_internalRefUUID#147902, ), isnull(_extract_internalRefUUID#147902)]
Join type: LeftOuter
Join condition: None
(1136) Project
Output [4]: [product#143336, plant#143337, _extract_code#147903, _extract_internalRefUUID#147904]
Input [6]: [product#143336, plant#143337, _extract_code#147903, _extract_internalRefUUID#147904, _extract_internalRefUUID#147901, _extract_internalRefUUID#147902]
(1137) Scan parquet
Output [2]: [internalUUID#143350, systemId#143349]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1138) Project
Output [1]: [internalUUID#143350]
Input [2]: [internalUUID#143350, systemId#143349]
(1139) Exchange
Input [1]: [internalUUID#143350]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=219857]
(1140) BroadcastExchange
Input [1]: [internalUUID#143350]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=220975]
(1141) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143337, ), isnull(plant#143337)]
Right keys [2]: [coalesce(internalUUID#143350, ), isnull(internalUUID#143350)]
Join type: LeftOuter
Join condition: None
(1142) Project
Output [4]: [product#143336, plant#143337, _extract_code#147903, _extract_internalRefUUID#147904]
Input [5]: [product#143336, plant#143337, _extract_code#147903, _extract_internalRefUUID#147904, internalUUID#143350]
(1143) Scan parquet
Output [4]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370, systemId#143363]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1144) Filter
Input [4]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370, systemId#143363]
Condition : isnotnull(internalUUID#143364)
(1145) Project
Output [3]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370]
Input [4]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370, systemId#143363]
(1146) Exchange
Input [3]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=219863]
(1147) BroadcastExchange
Input [3]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220979]
(1148) BroadcastHashJoin
Left keys [1]: [product#143336]
Right keys [1]: [internalUUID#143364]
Join type: LeftOuter
Join condition: None
(1149) Project
Output [2]: [plant#143337, filter(unitOfMeasureConversions#143370, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#147903) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#147904)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143368.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143368.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143375]
Input [7]: [product#143336, plant#143337, _extract_code#147903, _extract_internalRefUUID#147904, internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370]
(1150) Generate
Input [2]: [plant#143337, filteredUnitOfMeasureConversions#143375]
Arguments: explode(filteredUnitOfMeasureConversions#143375.quantityNumerator), [plant#143337, filteredUnitOfMeasureConversions#143375], true, [quantityNumerator#143376]
(1151) Project
Output [2]: [plant#143337, filteredUnitOfMeasureConversions#143375.quantityDenominator AS _extract_quantityDenominator#147566]
Input [3]: [plant#143337, filteredUnitOfMeasureConversions#143375, quantityNumerator#143376]
(1152) Generate
Input [2]: [plant#143337, _extract_quantityDenominator#147566]
Arguments: explode(_extract_quantityDenominator#147566), [plant#143337], true, [quantityDenominator#143377]
(1153) Project
Output [1]: [plant#143337]
Input [2]: [plant#143337, quantityDenominator#143377]
(1154) HashAggregate
Input [1]: [plant#143337]
Keys [1]: [plant#143337]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143337]
(1155) Exchange
Input [1]: [plant#143337]
Arguments: hashpartitioning(plant#143337, 25), ENSURE_REQUIREMENTS, [plan_id=220988]
(1156) HashAggregate
Input [1]: [plant#143337]
Keys [1]: [plant#143337]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143337]
(1157) BroadcastHashJoin
Left keys [1]: [plantUuid#143066]
Right keys [1]: [plant#143337]
Join type: Inner
Join condition: None
(1158) Project
Output [3]: [plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
Input [4]: [plantUuid#143066, storageLocId#143072, storageLocUuid#143073, plant#143337]
(1159) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143079.internalRefUUID, ), isnull(plant#143079.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#143066, ), isnull(plantUuid#143066)]
Join type: Inner
Join condition: None
(1160) Generate
Input [9]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
Arguments: explode(filter(stockQuantities#143081, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143073) AND (lambda x#143085.storageLocation.Id = storageLocId#143072)), lambda x#143085, false))), [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, plantUuid#143066], false, [stockQuantity#143086]
(1161) ObjectHashAggregate
Input [7]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, plantUuid#143066, stockQuantity#143086]
Keys [5]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076]
Functions [2]: [partial_first(calculationDateTime#143080, false), partial_collect_list(stockQuantity#143086, 0, 0)]
Aggregate Attributes [3]: [first#144812, valueSet#144813, buf#144814]
Results [8]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076, first#144815, valueSet#144816, buf#144817]
(1162) ObjectHashAggregate
Input [8]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076, first#144815, valueSet#144816, buf#144817]
Keys [5]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076]
Functions [2]: [first(calculationDateTime#143080, false), collect_list(stockQuantity#143086, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#143080)()#143100, collect_list(stockQuantity#143086, 0, 0)#143101]
Results [4]: [product#143078, plant#143079, first(calculationDateTime#143080)()#143100 AS calculationDateTime#143087, collect_list(stockQuantity#143086, 0, 0)#143101 AS stockQuantities#143088]
(1163) Filter
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantities#143088]
Condition : ((size(stockQuantities#143088, true) > 0) AND isnotnull(calculationDateTime#143087))
(1164) Generate
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantities#143088]
Arguments: explode(stockQuantities#143088), [product#143078, plant#143079, calculationDateTime#143087], false, [stockQuantity#143103]
(1165) Filter
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantity#143103]
Condition : (((isnotnull(stockQuantity#143103.specialStockIndicator.code) AND isnotnull(stockQuantity#143103.stockType.code)) AND (stockQuantity#143103.specialStockIndicator.code = )) AND (stockQuantity#143103.stockType.code = 01))
(1166) Project
Output [5]: [plant#143079.internalRefUUID AS plantUuid#143105, product#143078.internalRefUUID AS productUuid#143107, calculationDateTime#143087, stockQuantity#143103.storagelocation.id AS storageLocId#143108, stockQuantity#143103.quantity.measure AS quantity#143110]
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantity#143103]
(1167) Exchange
Input [5]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108, quantity#143110]
Arguments: hashpartitioning(productUuid#143107, plantUuid#143105, 25), ENSURE_REQUIREMENTS, [plan_id=221021]
(1168) Sort
Input [5]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108, quantity#143110]
Arguments: [productUuid#143107 ASC NULLS FIRST, plantUuid#143105 ASC NULLS FIRST], false, 0
(1169) Filter
Input [3]: [product#143122, plant#143123, orderDateTime#143124]
Condition : ((isnotnull(orderDateTime#143124) AND isnotnull(plant#143123)) AND isnotnull(product#143122))
(1170) Exchange
Input [3]: [product#143122, plant#143123, orderDateTime#143124]
Arguments: hashpartitioning(product#143122, plant#143123, 25), REPARTITION_BY_NUM, [plan_id=220619]
(1171) Scan parquet
Output [4]: [plant#143128, product#143129, productionAspect#143131, systemId#143126]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1172) Project
Output [4]: [plant#143128.internalRefUUID AS _extract_internalRefUUID#147905, product#143129.internalRefUUID AS _extract_internalRefUUID#147906, productionAspect#143131.productMovementPlants.unitOfIssue.code AS _extract_code#147907, productionAspect#143131.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#147908]
Input [4]: [plant#143128, product#143129, productionAspect#143131, systemId#143126]
(1173) Exchange
Input [4]: [_extract_internalRefUUID#147905, _extract_internalRefUUID#147906, _extract_code#147907, _extract_internalRefUUID#147908]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=219888]
(1174) Project
Output [4]: [_extract_code#147907, _extract_internalRefUUID#147908, _extract_internalRefUUID#147906, _extract_internalRefUUID#147905]
Input [4]: [_extract_internalRefUUID#147905, _extract_internalRefUUID#147906, _extract_code#147907, _extract_internalRefUUID#147908]
(1175) BroadcastExchange
Input [4]: [_extract_code#147907, _extract_internalRefUUID#147908, _extract_internalRefUUID#147906, _extract_internalRefUUID#147905]
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=221004]
(1176) BroadcastHashJoin
Left keys [4]: [coalesce(product#143122, ), isnull(product#143122), coalesce(plant#143123, ), isnull(plant#143123)]
Right keys [4]: [coalesce(_extract_internalRefUUID#147906, ), isnull(_extract_internalRefUUID#147906), coalesce(_extract_internalRefUUID#147905, ), isnull(_extract_internalRefUUID#147905)]
Join type: LeftOuter
Join condition: None
(1177) Project
Output [5]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#147907, _extract_internalRefUUID#147908]
Input [7]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#147907, _extract_internalRefUUID#147908, _extract_internalRefUUID#147906, _extract_internalRefUUID#147905]
(1178) Scan parquet
Output [2]: [internalUUID#143136, systemId#143135]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1179) Project
Output [1]: [internalUUID#143136]
Input [2]: [internalUUID#143136, systemId#143135]
(1180) Exchange
Input [1]: [internalUUID#143136]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=219894]
(1181) BroadcastExchange
Input [1]: [internalUUID#143136]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=221008]
(1182) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143123, ), isnull(plant#143123)]
Right keys [2]: [coalesce(internalUUID#143136, ), isnull(internalUUID#143136)]
Join type: LeftOuter
Join condition: None
(1183) Project
Output [5]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#147907, _extract_internalRefUUID#147908]
Input [6]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#147907, _extract_internalRefUUID#147908, internalUUID#143136]
(1184) Scan parquet
Output [4]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156, systemId#143149]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1185) Filter
Input [4]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156, systemId#143149]
Condition : isnotnull(internalUUID#143150)
(1186) Project
Output [3]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156]
Input [4]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156, systemId#143149]
(1187) Exchange
Input [3]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=219900]
(1188) BroadcastExchange
Input [3]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221012]
(1189) BroadcastHashJoin
Left keys [1]: [product#143122]
Right keys [1]: [internalUUID#143150]
Join type: LeftOuter
Join condition: None
(1190) Project
Output [4]: [product#143122, plant#143123, orderDateTime#143124, filter(unitOfMeasureConversions#143156, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#147907) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#147908)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143154.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143154.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143161]
Input [8]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#147907, _extract_internalRefUUID#147908, internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156]
(1191) Generate
Input [4]: [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161]
Arguments: explode(filteredUnitOfMeasureConversions#143161.quantityNumerator), [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161], true, [quantityNumerator#143162]
(1192) Project
Output [4]: [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161.quantityDenominator AS _extract_quantityDenominator#147570]
Input [5]: [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161, quantityNumerator#143162]
(1193) Generate
Input [4]: [product#143122, plant#143123, orderDateTime#143124, _extract_quantityDenominator#147570]
Arguments: explode(_extract_quantityDenominator#147570), [product#143122, plant#143123, orderDateTime#143124], true, [quantityDenominator#143163]
(1194) Project
Output [3]: [product#143122, plant#143123, orderDateTime#143124]
Input [4]: [product#143122, plant#143123, orderDateTime#143124, quantityDenominator#143163]
(1195) Sort
Input [3]: [product#143122, plant#143123, orderDateTime#143124]
Arguments: [product#143122 ASC NULLS FIRST, plant#143123 ASC NULLS FIRST], false, 0
(1196) SortMergeJoin
Left keys [2]: [productUuid#143107, plantUuid#143105]
Right keys [2]: [product#143122, plant#143123]
Join type: Inner
Join condition: (calculationDateTime#143087 <= orderDateTime#143124)
(1197) Project
Output [5]: [plantUuid#143105 AS plant#143170, productUuid#143107 AS product#143171, storageLocId#143108, calculationDateTime#143087, quantity#143110]
Input [8]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108, quantity#143110, product#143122, plant#143123, orderDateTime#143124]
(1198) Exchange
Input [5]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087, quantity#143110]
Arguments: hashpartitioning(coalesce(plant#143170, ), isnull(plant#143170), coalesce(product#143171, ), isnull(product#143171), coalesce(storageLocId#143108, ), isnull(storageLocId#143108), coalesce(calculationDateTime#143087, 1970-01-01 00:00:00), isnull(calculationDateTime#143087), 25), ENSURE_REQUIREMENTS, [plan_id=221085]
(1199) Sort
Input [5]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087, quantity#143110]
Arguments: [coalesce(plant#143170, ) ASC NULLS FIRST, isnull(plant#143170) ASC NULLS FIRST, coalesce(product#143171, ) ASC NULLS FIRST, isnull(product#143171) ASC NULLS FIRST, coalesce(storageLocId#143108, ) ASC NULLS FIRST, isnull(storageLocId#143108) ASC NULLS FIRST, coalesce(calculationDateTime#143087, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#143087) ASC NULLS FIRST], false, 0
(1200) Scan parquet
Output [6]: [internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184, systemId#143179]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(1201) Filter
Input [6]: [internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184, systemId#143179]
Condition : (isnotnull(plant#143182.internalRefUUID) AND isnotnull(product#143181.internalRefUUID))
(1202) Project
Output [6]: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184]
Input [6]: [internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184, systemId#143179]
(1203) Exchange
Input [6]: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=219912]
(1204) BroadcastExchange
Input [6]: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184]
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=221050]
(1205) Scan parquet
Output [2]: [marketUnit#143185, distributionCenters#143191]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1206) Filter
Input [2]: [marketUnit#143185, distributionCenters#143191]
Condition : (((marketUnit#143185 <=> Daily_grocery) AND (size(distributionCenters#143191, true) > 0)) AND isnotnull(distributionCenters#143191))
(1207) Project
Output [1]: [distributionCenters#143191]
Input [2]: [marketUnit#143185, distributionCenters#143191]
(1208) Exchange
Input [1]: [distributionCenters#143191]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=219916]
(1209) Generate
Input [1]: [distributionCenters#143191]
Arguments: explode(distributionCenters#143191), false, [distributionCenters#143207]
(1210) Filter
Input [1]: [distributionCenters#143207]
Condition : (((size(distributionCenters#143207.storageLocations, true) > 0) AND isnotnull(distributionCenters#143207.storageLocations)) AND isnotnull(distributionCenters#143207.internalRefUUID))
(1211) Project
Output [2]: [distributionCenters#143207.internalRefUUID AS _extract_internalRefUUID#147574, distributionCenters#143207.storageLocations AS _extract_storageLocations#147575]
Input [1]: [distributionCenters#143207]
(1212) Generate
Input [2]: [_extract_internalRefUUID#147574, _extract_storageLocations#147575]
Arguments: explode(_extract_storageLocations#147575), [_extract_internalRefUUID#147574], false, [storageLocations#143208]
(1213) Project
Output [3]: [_extract_internalRefUUID#147574 AS plantUuid#143210, storageLocations#143208.id AS storageLocId#143211, storageLocations#143208.internalRefUUID AS storageLocUuid#143212]
Input [2]: [_extract_internalRefUUID#147574, storageLocations#143208]
(1214) BroadcastExchange
Input [3]: [plantUuid#143210, storageLocId#143211, storageLocUuid#143212]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221046]
(1215) Scan parquet
Output [2]: [product#143213, plant#143214]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1216) Filter
Input [2]: [product#143213, plant#143214]
Condition : isnotnull(plant#143214)
(1217) Exchange
Input [2]: [product#143213, plant#143214]
Arguments: hashpartitioning(product#143213, plant#143214, 25), REPARTITION_BY_NUM, [plan_id=220632]
(1218) Scan parquet
Output [4]: [plant#143219, product#143220, productionAspect#143222, systemId#143217]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1219) Project
Output [4]: [plant#143219.internalRefUUID AS _extract_internalRefUUID#147912, product#143220.internalRefUUID AS _extract_internalRefUUID#147909, productionAspect#143222.productMovementPlants.unitOfIssue.code AS _extract_code#147910, productionAspect#143222.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#147911]
Input [4]: [plant#143219, product#143220, productionAspect#143222, systemId#143217]
(1220) Exchange
Input [4]: [_extract_internalRefUUID#147912, _extract_internalRefUUID#147909, _extract_code#147910, _extract_internalRefUUID#147911]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=219928]
(1221) Project
Output [4]: [_extract_code#147910, _extract_internalRefUUID#147911, _extract_internalRefUUID#147909, _extract_internalRefUUID#147912]
Input [4]: [_extract_internalRefUUID#147912, _extract_internalRefUUID#147909, _extract_code#147910, _extract_internalRefUUID#147911]
(1222) BroadcastExchange
Input [4]: [_extract_code#147910, _extract_internalRefUUID#147911, _extract_internalRefUUID#147909, _extract_internalRefUUID#147912]
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=221026]
(1223) BroadcastHashJoin
Left keys [4]: [coalesce(product#143213, ), isnull(product#143213), coalesce(plant#143214, ), isnull(plant#143214)]
Right keys [4]: [coalesce(_extract_internalRefUUID#147909, ), isnull(_extract_internalRefUUID#147909), coalesce(_extract_internalRefUUID#147912, ), isnull(_extract_internalRefUUID#147912)]
Join type: LeftOuter
Join condition: None
(1224) Project
Output [4]: [product#143213, plant#143214, _extract_code#147910, _extract_internalRefUUID#147911]
Input [6]: [product#143213, plant#143214, _extract_code#147910, _extract_internalRefUUID#147911, _extract_internalRefUUID#147909, _extract_internalRefUUID#147912]
(1225) Scan parquet
Output [2]: [internalUUID#143227, systemId#143226]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1226) Project
Output [1]: [internalUUID#143227]
Input [2]: [internalUUID#143227, systemId#143226]
(1227) Exchange
Input [1]: [internalUUID#143227]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=219934]
(1228) BroadcastExchange
Input [1]: [internalUUID#143227]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=221030]
(1229) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143214, ), isnull(plant#143214)]
Right keys [2]: [coalesce(internalUUID#143227, ), isnull(internalUUID#143227)]
Join type: LeftOuter
Join condition: None
(1230) Project
Output [4]: [product#143213, plant#143214, _extract_code#147910, _extract_internalRefUUID#147911]
Input [5]: [product#143213, plant#143214, _extract_code#147910, _extract_internalRefUUID#147911, internalUUID#143227]
(1231) Scan parquet
Output [4]: [internalUUID#143241, baseUnitOfMeasure#143245, unitOfMeasureConversions#143247, systemId#143240]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1232) Filter
Input [4]: [internalUUID#143241, baseUnitOfMeasure#143245, unitOfMeasureConversions#143247, systemId#143240]
Condition : isnotnull(internalUUID#143241)
(1233) Project
Output [3]: [internalUUID#143241, baseUnitOfMeasure#143245, unitOfMeasureConversions#143247]
Input [4]: [internalUUID#143241, baseUnitOfMeasure#143245, unitOfMeasureConversions#143247, systemId#143240]
(1234) Exchange
Input [3]: [internalUUID#143241, baseUnitOfMeasure#143245, unitOfMeasureConversions#143247]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=219940]
(1235) BroadcastExchange
Input [3]: [internalUUID#143241, baseUnitOfMeasure#143245, unitOfMeasureConversions#143247]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221034]
(1236) BroadcastHashJoin
Left keys [1]: [product#143213]
Right keys [1]: [internalUUID#143241]
Join type: LeftOuter
Join condition: None
(1237) Project
Output [2]: [plant#143214, filter(unitOfMeasureConversions#143247, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#147910) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#147911)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143245.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143245.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143252]
Input [7]: [product#143213, plant#143214, _extract_code#147910, _extract_internalRefUUID#147911, internalUUID#143241, baseUnitOfMeasure#143245, unitOfMeasureConversions#143247]
(1238) Generate
Input [2]: [plant#143214, filteredUnitOfMeasureConversions#143252]
Arguments: explode(filteredUnitOfMeasureConversions#143252.quantityNumerator), [plant#143214, filteredUnitOfMeasureConversions#143252], true, [quantityNumerator#143253]
(1239) Project
Output [2]: [plant#143214, filteredUnitOfMeasureConversions#143252.quantityDenominator AS _extract_quantityDenominator#147576]
Input [3]: [plant#143214, filteredUnitOfMeasureConversions#143252, quantityNumerator#143253]
(1240) Generate
Input [2]: [plant#143214, _extract_quantityDenominator#147576]
Arguments: explode(_extract_quantityDenominator#147576), [plant#143214], true, [quantityDenominator#143254]
(1241) Project
Output [1]: [plant#143214]
Input [2]: [plant#143214, quantityDenominator#143254]
(1242) HashAggregate
Input [1]: [plant#143214]
Keys [1]: [plant#143214]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143214]
(1243) Exchange
Input [1]: [plant#143214]
Arguments: hashpartitioning(plant#143214, 25), ENSURE_REQUIREMENTS, [plan_id=221043]
(1244) HashAggregate
Input [1]: [plant#143214]
Keys [1]: [plant#143214]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143214]
(1245) BroadcastHashJoin
Left keys [1]: [plantUuid#143210]
Right keys [1]: [plant#143214]
Join type: Inner
Join condition: None
(1246) Project
Output [3]: [plantUuid#143210, storageLocId#143211, storageLocUuid#143212]
Input [4]: [plantUuid#143210, storageLocId#143211, storageLocUuid#143212, plant#143214]
(1247) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143182.internalRefUUID, ), isnull(plant#143182.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#143210, ), isnull(plantUuid#143210)]
Join type: Inner
Join condition: None
(1248) Generate
Input [9]: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184, plantUuid#143210, storageLocId#143211, storageLocUuid#143212]
Arguments: explode(filter(stockQuantities#143184, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143212) AND (lambda x#143085.storageLocation.Id = storageLocId#143211)), lambda x#143085, false))), [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, plantUuid#143210], false, [stockQuantity#143257]
(1249) ObjectHashAggregate
Input [7]: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, plantUuid#143210, stockQuantity#143257]
Keys [5]: [plantUuid#143210, internalUUID#143180, plant#143182, product#143181, systemId#143179]
Functions [2]: [partial_first(calculationDateTime#143183, false), partial_collect_list(stockQuantity#143257, 0, 0)]
Aggregate Attributes [3]: [first#144820, valueSet#144821, buf#144822]
Results [8]: [plantUuid#143210, internalUUID#143180, plant#143182, product#143181, systemId#143179, first#144823, valueSet#144824, buf#144825]
(1250) ObjectHashAggregate
Input [8]: [plantUuid#143210, internalUUID#143180, plant#143182, product#143181, systemId#143179, first#144823, valueSet#144824, buf#144825]
Keys [5]: [plantUuid#143210, internalUUID#143180, plant#143182, product#143181, systemId#143179]
Functions [2]: [first(calculationDateTime#143183, false), collect_list(stockQuantity#143257, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#143183)()#143100, collect_list(stockQuantity#143257, 0, 0)#143101]
Results [4]: [product#143181, plant#143182, first(calculationDateTime#143183)()#143100 AS calculationDateTime#143258, collect_list(stockQuantity#143257, 0, 0)#143101 AS stockQuantities#143259]
(1251) Filter
Input [4]: [product#143181, plant#143182, calculationDateTime#143258, stockQuantities#143259]
Condition : ((size(stockQuantities#143259, true) > 0) AND isnotnull(calculationDateTime#143258))
(1252) Generate
Input [4]: [product#143181, plant#143182, calculationDateTime#143258, stockQuantities#143259]
Arguments: explode(stockQuantities#143259), [product#143181, plant#143182, calculationDateTime#143258], false, [stockQuantity#143260]
(1253) Filter
Input [4]: [product#143181, plant#143182, calculationDateTime#143258, stockQuantity#143260]
Condition : (((isnotnull(stockQuantity#143260.specialStockIndicator.code) AND isnotnull(stockQuantity#143260.stockType.code)) AND (stockQuantity#143260.specialStockIndicator.code = )) AND (stockQuantity#143260.stockType.code = 01))
(1254) Project
Output [4]: [plant#143182.internalRefUUID AS plantUuid#143262, product#143181.internalRefUUID AS productUuid#143264, calculationDateTime#143258, stockQuantity#143260.storagelocation.id AS storageLocId#143265]
Input [4]: [product#143181, plant#143182, calculationDateTime#143258, stockQuantity#143260]
(1255) Exchange
Input [4]: [plantUuid#143262, productUuid#143264, calculationDateTime#143258, storageLocId#143265]
Arguments: hashpartitioning(productUuid#143264, plantUuid#143262, 25), ENSURE_REQUIREMENTS, [plan_id=221076]
(1256) Sort
Input [4]: [plantUuid#143262, productUuid#143264, calculationDateTime#143258, storageLocId#143265]
Arguments: [productUuid#143264 ASC NULLS FIRST, plantUuid#143262 ASC NULLS FIRST], false, 0
(1257) Scan parquet
Output [3]: [product#143270, plant#143271, orderDateTime#143272]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1258) Filter
Input [3]: [product#143270, plant#143271, orderDateTime#143272]
Condition : ((isnotnull(orderDateTime#143272) AND isnotnull(plant#143271)) AND isnotnull(product#143270))
(1259) Exchange
Input [3]: [product#143270, plant#143271, orderDateTime#143272]
Arguments: hashpartitioning(product#143270, plant#143271, 25), REPARTITION_BY_NUM, [plan_id=220655]
(1260) Scan parquet
Output [4]: [plant#143276, product#143277, productionAspect#143279, systemId#143274]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1261) Project
Output [4]: [plant#143276.internalRefUUID AS _extract_internalRefUUID#147916, product#143277.internalRefUUID AS _extract_internalRefUUID#147915, productionAspect#143279.productMovementPlants.unitOfIssue.code AS _extract_code#147913, productionAspect#143279.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#147914]
Input [4]: [plant#143276, product#143277, productionAspect#143279, systemId#143274]
(1262) Exchange
Input [4]: [_extract_internalRefUUID#147916, _extract_internalRefUUID#147915, _extract_code#147913, _extract_internalRefUUID#147914]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=219965]
(1263) Project
Output [4]: [_extract_code#147913, _extract_internalRefUUID#147914, _extract_internalRefUUID#147915, _extract_internalRefUUID#147916]
Input [4]: [_extract_internalRefUUID#147916, _extract_internalRefUUID#147915, _extract_code#147913, _extract_internalRefUUID#147914]
(1264) BroadcastExchange
Input [4]: [_extract_code#147913, _extract_internalRefUUID#147914, _extract_internalRefUUID#147915, _extract_internalRefUUID#147916]
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=221059]
(1265) BroadcastHashJoin
Left keys [4]: [coalesce(product#143270, ), isnull(product#143270), coalesce(plant#143271, ), isnull(plant#143271)]
Right keys [4]: [coalesce(_extract_internalRefUUID#147915, ), isnull(_extract_internalRefUUID#147915), coalesce(_extract_internalRefUUID#147916, ), isnull(_extract_internalRefUUID#147916)]
Join type: LeftOuter
Join condition: None
(1266) Project
Output [5]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#147913, _extract_internalRefUUID#147914]
Input [7]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#147913, _extract_internalRefUUID#147914, _extract_internalRefUUID#147915, _extract_internalRefUUID#147916]
(1267) Scan parquet
Output [2]: [internalUUID#143284, systemId#143283]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1268) Project
Output [1]: [internalUUID#143284]
Input [2]: [internalUUID#143284, systemId#143283]
(1269) Exchange
Input [1]: [internalUUID#143284]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=219971]
(1270) BroadcastExchange
Input [1]: [internalUUID#143284]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=221063]
(1271) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143271, ), isnull(plant#143271)]
Right keys [2]: [coalesce(internalUUID#143284, ), isnull(internalUUID#143284)]
Join type: LeftOuter
Join condition: None
(1272) Project
Output [5]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#147913, _extract_internalRefUUID#147914]
Input [6]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#147913, _extract_internalRefUUID#147914, internalUUID#143284]
(1273) Scan parquet
Output [4]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304, systemId#143297]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1274) Filter
Input [4]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304, systemId#143297]
Condition : isnotnull(internalUUID#143298)
(1275) Project
Output [3]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304]
Input [4]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304, systemId#143297]
(1276) Exchange
Input [3]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=219977]
(1277) BroadcastExchange
Input [3]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221067]
(1278) BroadcastHashJoin
Left keys [1]: [product#143270]
Right keys [1]: [internalUUID#143298]
Join type: LeftOuter
Join condition: None
(1279) Project
Output [4]: [product#143270, plant#143271, orderDateTime#143272, filter(unitOfMeasureConversions#143304, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#147913) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#147914)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143302.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143302.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143309]
Input [8]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#147913, _extract_internalRefUUID#147914, internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304]
(1280) Generate
Input [4]: [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309]
Arguments: explode(filteredUnitOfMeasureConversions#143309.quantityNumerator), [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309], true, [quantityNumerator#143310]
(1281) Project
Output [4]: [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309.quantityDenominator AS _extract_quantityDenominator#147580]
Input [5]: [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309, quantityNumerator#143310]
(1282) Generate
Input [4]: [product#143270, plant#143271, orderDateTime#143272, _extract_quantityDenominator#147580]
Arguments: explode(_extract_quantityDenominator#147580), [product#143270, plant#143271, orderDateTime#143272], true, [quantityDenominator#143311]
(1283) Project
Output [3]: [product#143270, plant#143271, orderDateTime#143272]
Input [4]: [product#143270, plant#143271, orderDateTime#143272, quantityDenominator#143311]
(1284) Sort
Input [3]: [product#143270, plant#143271, orderDateTime#143272]
Arguments: [product#143270 ASC NULLS FIRST, plant#143271 ASC NULLS FIRST], false, 0
(1285) SortMergeJoin
Left keys [2]: [productUuid#143264, plantUuid#143262]
Right keys [2]: [product#143270, plant#143271]
Join type: Inner
Join condition: (calculationDateTime#143258 <= orderDateTime#143272)
(1286) Project
Output [4]: [plantUuid#143262 AS plant#143314, productUuid#143264 AS product#143315, storageLocId#143265, calculationDateTime#143258]
Input [7]: [plantUuid#143262, productUuid#143264, calculationDateTime#143258, storageLocId#143265, product#143270, plant#143271, orderDateTime#143272]
(1287) HashAggregate
Input [4]: [plant#143314, product#143315, storageLocId#143265, calculationDateTime#143258]
Keys [3]: [plant#143314, product#143315, storageLocId#143265]
Functions [1]: [partial_max(calculationDateTime#143258)]
Aggregate Attributes [1]: [max#144818]
Results [4]: [plant#143314, product#143315, storageLocId#143265, max#144819]
(1288) HashAggregate
Input [4]: [plant#143314, product#143315, storageLocId#143265, max#144819]
Keys [3]: [plant#143314, product#143315, storageLocId#143265]
Functions [1]: [max(calculationDateTime#143258)]
Aggregate Attributes [1]: [max(calculationDateTime#143258)#143178]
Results [4]: [plant#143314, product#143315, storageLocId#143265, max(calculationDateTime#143258)#143178 AS max_calc_datetime#143172]
(1289) Exchange
Input [4]: [plant#143314, product#143315, storageLocId#143265, max_calc_datetime#143172]
Arguments: hashpartitioning(coalesce(plant#143314, ), isnull(plant#143314), coalesce(product#143315, ), isnull(product#143315), coalesce(storageLocId#143265, ), isnull(storageLocId#143265), coalesce(max_calc_datetime#143172, 1970-01-01 00:00:00), isnull(max_calc_datetime#143172), 25), ENSURE_REQUIREMENTS, [plan_id=221086]
(1290) Sort
Input [4]: [plant#143314, product#143315, storageLocId#143265, max_calc_datetime#143172]
Arguments: [coalesce(plant#143314, ) ASC NULLS FIRST, isnull(plant#143314) ASC NULLS FIRST, coalesce(product#143315, ) ASC NULLS FIRST, isnull(product#143315) ASC NULLS FIRST, coalesce(storageLocId#143265, ) ASC NULLS FIRST, isnull(storageLocId#143265) ASC NULLS FIRST, coalesce(max_calc_datetime#143172, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#143172) ASC NULLS FIRST], false, 0
(1291) SortMergeJoin
Left keys [8]: [coalesce(plant#143170, ), isnull(plant#143170), coalesce(product#143171, ), isnull(product#143171), coalesce(storageLocId#143108, ), isnull(storageLocId#143108), coalesce(calculationDateTime#143087, 1970-01-01 00:00:00), isnull(calculationDateTime#143087)]
Right keys [8]: [coalesce(plant#143314, ), isnull(plant#143314), coalesce(product#143315, ), isnull(product#143315), coalesce(storageLocId#143265, ), isnull(storageLocId#143265), coalesce(max_calc_datetime#143172, 1970-01-01 00:00:00), isnull(max_calc_datetime#143172)]
Join type: Inner
Join condition: None
(1292) Project
Output [4]: [plant#143170, product#143171, calculationDateTime#143087, quantity#143110]
Input [9]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087, quantity#143110, plant#143314, product#143315, storageLocId#143265, max_calc_datetime#143172]
(1293) HashAggregate
Input [4]: [plant#143170, product#143171, calculationDateTime#143087, quantity#143110]
Keys [2]: [product#143171, plant#143170]
Functions [2]: [partial_min(calculationDateTime#143087), partial_sum(quantity#143110)]
Aggregate Attributes [2]: [min#144810, sum#148681]
Results [4]: [product#143171, plant#143170, min#144811, sum#148682]
(1294) Exchange
Input [4]: [product#143171, plant#143170, min#144811, sum#148682]
Arguments: hashpartitioning(product#143171, plant#143170, 25), ENSURE_REQUIREMENTS, [plan_id=221093]
(1295) HashAggregate
Input [4]: [product#143171, plant#143170, min#144811, sum#148682]
Keys [2]: [product#143171, plant#143170]
Functions [2]: [min(calculationDateTime#143087), sum(quantity#143110)]
Aggregate Attributes [2]: [min(calculationDateTime#143087)#143334, sum(quantity#143110)#143333]
Results [4]: [product#143171, plant#143170, min(calculationDateTime#143087)#143334 AS minCalculationDateTime#143327, round(sum(quantity#143110)#143333, 0) AS roundedQuantitySum#143335]
(1296) Sort
Input [4]: [product#143171, plant#143170, minCalculationDateTime#143327, roundedQuantitySum#143335]
Arguments: [product#143171 ASC NULLS FIRST, plant#143170 ASC NULLS FIRST], false, 0
(1297) SortMergeJoin
Left keys [2]: [product#142980, plant#142981]
Right keys [2]: [product#143171, plant#143170]
Join type: LeftOuter
Join condition: None
(1298) Project
Output [6]: [product#142980, plant#142981, _extract_minimumSafetyStock#147969, outboundUnit#143039, CASE WHEN isnotnull(minCalculationDateTime#143327) THEN minCalculationDateTime#143327 ELSE orderDateTime#142982 END AS stockDatetime#143384, CASE WHEN isnotnull(roundedQuantitySum#143335) THEN array(roundedQuantitySum#143335) ELSE [0.0] END AS stockBatchQuantities#143385]
Input [9]: [product#142980, plant#142981, orderDateTime#142982, _extract_minimumSafetyStock#147969, outboundUnit#143039, product#143171, plant#143170, minCalculationDateTime#143327, roundedQuantitySum#143335]
(1299) Exchange
Input [6]: [product#142980, plant#142981, _extract_minimumSafetyStock#147969, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385]
Arguments: hashpartitioning(coalesce(plant#142981, ), isnull(plant#142981), coalesce(product#142980, ), isnull(product#142980), 25), ENSURE_REQUIREMENTS, [plan_id=221257]
(1300) Sort
Input [6]: [product#142980, plant#142981, _extract_minimumSafetyStock#147969, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385]
Arguments: [coalesce(plant#142981, ) ASC NULLS FIRST, isnull(plant#142981) ASC NULLS FIRST, coalesce(product#142980, ) ASC NULLS FIRST, isnull(product#142980) ASC NULLS FIRST], false, 0
(1301) Scan parquet
Output [3]: [product#143466, plant#143467, orderDateTime#143468]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1302) Exchange
Input [3]: [product#143466, plant#143467, orderDateTime#143468]
Arguments: hashpartitioning(product#143466, plant#143467, 25), REPARTITION_BY_NUM, [plan_id=219995]
(1303) Scan parquet
Output [8]: [internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477, systemId#143470]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>
(1304) Project
Output [8]: [systemId#143470, internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477]
Input [8]: [internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477, systemId#143470]
(1305) Exchange
Input [8]: [systemId#143470, internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=219998]
(1306) Project
Output [1]: [struct(systemId, systemId#143470, internalUUID, internalUUID#143471, plant, plant#143472, product, product#143473, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143474, productionAspect, productionAspect#143475, salesPlant, salesPlant#143476, listing, listing#143477) AS productPlant#143478]
Input [8]: [systemId#143470, internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477]
(1307) BroadcastExchange
Input [1]: [productPlant#143478]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=221101]
(1308) BroadcastHashJoin
Left keys [4]: [coalesce(product#143466, ), isnull(product#143466), coalesce(plant#143467, ), isnull(plant#143467)]
Right keys [4]: [coalesce(productPlant#143478.product.internalRefUUID, ), isnull(productPlant#143478.product.internalRefUUID), coalesce(productPlant#143478.plant.internalRefUUID, ), isnull(productPlant#143478.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1309) Project
Output [2]: [internalUUID#143480, address#143486.timeZone.code AS timezonecode#143491]
Input [3]: [internalUUID#143480, address#143486, systemId#143479]
(1310) Exchange
Input [2]: [internalUUID#143480, timezonecode#143491]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220003]
(1311) BroadcastExchange
Input [2]: [internalUUID#143480, timezonecode#143491]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=221104]
(1312) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143467, ), isnull(plant#143467)]
Right keys [2]: [coalesce(internalUUID#143480, ), isnull(internalUUID#143480)]
Join type: LeftOuter
Join condition: None
(1313) Project
Output [5]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, CASE WHEN isnotnull(timezonecode#143491) THEN timezonecode#143491 ELSE UTC END AS timezonecode#143492]
Input [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, internalUUID#143480, timezonecode#143491]
(1314) Scan parquet
Output [4]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500, systemId#143493]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1315) Filter
Input [4]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500, systemId#143493]
Condition : isnotnull(internalUUID#143494)
(1316) Project
Output [3]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500]
Input [4]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500, systemId#143493]
(1317) Exchange
Input [3]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220009]
(1318) BroadcastExchange
Input [3]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221108]
(1319) BroadcastHashJoin
Left keys [1]: [product#143466]
Right keys [1]: [internalUUID#143494]
Join type: LeftOuter
Join condition: None
(1320) Project
Output [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, filter(unitOfMeasureConversions#143500, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143498.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143498.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143505]
Input [8]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500]
(1321) Project
Output [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, filteredUnitOfMeasureConversions#143505.quantityDenominator AS _extract_quantityDenominator#147682, filteredUnitOfMeasureConversions#143505.quantityNumerator AS _extract_quantityNumerator#147683]
Input [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, filteredUnitOfMeasureConversions#143505]
(1322) Generate
Input [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, _extract_quantityDenominator#147682, _extract_quantityNumerator#147683]
Arguments: explode(_extract_quantityNumerator#147683), [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, _extract_quantityDenominator#147682], true, [quantityNumerator#143506]
(1323) Generate
Input [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, _extract_quantityDenominator#147682, quantityNumerator#143506]
Arguments: explode(_extract_quantityDenominator#147682), [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, quantityNumerator#143506], true, [quantityDenominator#143507]
(1324) Project
Output [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, (cast(quantityNumerator#143506 as double) / cast(quantityDenominator#143507 as double)) AS outboundUnit#143508]
Input [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, quantityNumerator#143506, quantityDenominator#143507]
(1325) Project
Output [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, CASE WHEN (isnull(outboundUnit#143508) OR (outboundUnit#143508 <= 0.0)) THEN 1.0 ELSE outboundUnit#143508 END AS outboundUnit#143509]
Input [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143508]
(1326) Sort
Input [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509]
Arguments: [product#143466 ASC NULLS FIRST, plant#143467 ASC NULLS FIRST], false, 0
(1327) Scan parquet
Output [6]: [internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515, systemId#143510]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(1328) Filter
Input [6]: [internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515, systemId#143510]
Condition : (isnotnull(plant#143513.internalRefUUID) AND isnotnull(product#143512.internalRefUUID))
(1329) Project
Output [6]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515]
Input [6]: [internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515, systemId#143510]
(1330) Exchange
Input [6]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220020]
(1331) BroadcastExchange
Input [6]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515]
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=221140]
(1332) Scan parquet
Output [2]: [marketUnit#143516, distributionCenters#143522]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1333) Filter
Input [2]: [marketUnit#143516, distributionCenters#143522]
Condition : (((marketUnit#143516 <=> Daily_grocery) AND (size(distributionCenters#143522, true) > 0)) AND isnotnull(distributionCenters#143522))
(1334) Project
Output [1]: [distributionCenters#143522]
Input [2]: [marketUnit#143516, distributionCenters#143522]
(1335) Exchange
Input [1]: [distributionCenters#143522]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220024]
(1336) Generate
Input [1]: [distributionCenters#143522]
Arguments: explode(distributionCenters#143522), false, [distributionCenters#143538]
(1337) Filter
Input [1]: [distributionCenters#143538]
Condition : (((size(distributionCenters#143538.storageLocations, true) > 0) AND isnotnull(distributionCenters#143538.storageLocations)) AND isnotnull(distributionCenters#143538.internalRefUUID))
(1338) Project
Output [2]: [distributionCenters#143538.internalRefUUID AS _extract_internalRefUUID#147586, distributionCenters#143538.storageLocations AS _extract_storageLocations#147587]
Input [1]: [distributionCenters#143538]
(1339) Generate
Input [2]: [_extract_internalRefUUID#147586, _extract_storageLocations#147587]
Arguments: explode(_extract_storageLocations#147587), [_extract_internalRefUUID#147586], false, [storageLocations#143539]
(1340) Project
Output [3]: [_extract_internalRefUUID#147586 AS plantUuid#143541, storageLocations#143539.id AS storageLocId#143542, storageLocations#143539.internalRefUUID AS storageLocUuid#143543]
Input [2]: [_extract_internalRefUUID#147586, storageLocations#143539]
(1341) BroadcastExchange
Input [3]: [plantUuid#143541, storageLocId#143542, storageLocUuid#143543]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221136]
(1342) Scan parquet
Output [2]: [product#143544, plant#143545]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1343) Filter
Input [2]: [product#143544, plant#143545]
Condition : isnotnull(plant#143545)
(1344) Exchange
Input [2]: [product#143544, plant#143545]
Arguments: hashpartitioning(product#143544, plant#143545, 25), REPARTITION_BY_NUM, [plan_id=220676]
(1345) Scan parquet
Output [4]: [plant#143550, product#143551, productionAspect#143553, systemId#143548]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1346) Project
Output [4]: [plant#143550.internalRefUUID AS _extract_internalRefUUID#147917, product#143551.internalRefUUID AS _extract_internalRefUUID#147918, productionAspect#143553.productMovementPlants.unitOfIssue.code AS _extract_code#147919, productionAspect#143553.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#147920]
Input [4]: [plant#143550, product#143551, productionAspect#143553, systemId#143548]
(1347) Exchange
Input [4]: [_extract_internalRefUUID#147917, _extract_internalRefUUID#147918, _extract_code#147919, _extract_internalRefUUID#147920]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220036]
(1348) Project
Output [4]: [_extract_code#147919, _extract_internalRefUUID#147920, _extract_internalRefUUID#147918, _extract_internalRefUUID#147917]
Input [4]: [_extract_internalRefUUID#147917, _extract_internalRefUUID#147918, _extract_code#147919, _extract_internalRefUUID#147920]
(1349) BroadcastExchange
Input [4]: [_extract_code#147919, _extract_internalRefUUID#147920, _extract_internalRefUUID#147918, _extract_internalRefUUID#147917]
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=221116]
(1350) BroadcastHashJoin
Left keys [4]: [coalesce(product#143544, ), isnull(product#143544), coalesce(plant#143545, ), isnull(plant#143545)]
Right keys [4]: [coalesce(_extract_internalRefUUID#147918, ), isnull(_extract_internalRefUUID#147918), coalesce(_extract_internalRefUUID#147917, ), isnull(_extract_internalRefUUID#147917)]
Join type: LeftOuter
Join condition: None
(1351) Project
Output [4]: [product#143544, plant#143545, _extract_code#147919, _extract_internalRefUUID#147920]
Input [6]: [product#143544, plant#143545, _extract_code#147919, _extract_internalRefUUID#147920, _extract_internalRefUUID#147918, _extract_internalRefUUID#147917]
(1352) Scan parquet
Output [2]: [internalUUID#143558, systemId#143557]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1353) Project
Output [1]: [internalUUID#143558]
Input [2]: [internalUUID#143558, systemId#143557]
(1354) Exchange
Input [1]: [internalUUID#143558]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220042]
(1355) BroadcastExchange
Input [1]: [internalUUID#143558]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=221120]
(1356) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143545, ), isnull(plant#143545)]
Right keys [2]: [coalesce(internalUUID#143558, ), isnull(internalUUID#143558)]
Join type: LeftOuter
Join condition: None
(1357) Project
Output [4]: [product#143544, plant#143545, _extract_code#147919, _extract_internalRefUUID#147920]
Input [5]: [product#143544, plant#143545, _extract_code#147919, _extract_internalRefUUID#147920, internalUUID#143558]
(1358) Scan parquet
Output [4]: [internalUUID#143572, baseUnitOfMeasure#143576, unitOfMeasureConversions#143578, systemId#143571]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1359) Filter
Input [4]: [internalUUID#143572, baseUnitOfMeasure#143576, unitOfMeasureConversions#143578, systemId#143571]
Condition : isnotnull(internalUUID#143572)
(1360) Project
Output [3]: [internalUUID#143572, baseUnitOfMeasure#143576, unitOfMeasureConversions#143578]
Input [4]: [internalUUID#143572, baseUnitOfMeasure#143576, unitOfMeasureConversions#143578, systemId#143571]
(1361) Exchange
Input [3]: [internalUUID#143572, baseUnitOfMeasure#143576, unitOfMeasureConversions#143578]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220048]
(1362) BroadcastExchange
Input [3]: [internalUUID#143572, baseUnitOfMeasure#143576, unitOfMeasureConversions#143578]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221124]
(1363) BroadcastHashJoin
Left keys [1]: [product#143544]
Right keys [1]: [internalUUID#143572]
Join type: LeftOuter
Join condition: None
(1364) Project
Output [2]: [plant#143545, filter(unitOfMeasureConversions#143578, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#147919) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#147920)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143576.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143576.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143583]
Input [7]: [product#143544, plant#143545, _extract_code#147919, _extract_internalRefUUID#147920, internalUUID#143572, baseUnitOfMeasure#143576, unitOfMeasureConversions#143578]
(1365) Generate
Input [2]: [plant#143545, filteredUnitOfMeasureConversions#143583]
Arguments: explode(filteredUnitOfMeasureConversions#143583.quantityNumerator), [plant#143545, filteredUnitOfMeasureConversions#143583], true, [quantityNumerator#143584]
(1366) Project
Output [2]: [plant#143545, filteredUnitOfMeasureConversions#143583.quantityDenominator AS _extract_quantityDenominator#147588]
Input [3]: [plant#143545, filteredUnitOfMeasureConversions#143583, quantityNumerator#143584]
(1367) Generate
Input [2]: [plant#143545, _extract_quantityDenominator#147588]
Arguments: explode(_extract_quantityDenominator#147588), [plant#143545], true, [quantityDenominator#143585]
(1368) Project
Output [1]: [plant#143545]
Input [2]: [plant#143545, quantityDenominator#143585]
(1369) HashAggregate
Input [1]: [plant#143545]
Keys [1]: [plant#143545]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143545]
(1370) Exchange
Input [1]: [plant#143545]
Arguments: hashpartitioning(plant#143545, 25), ENSURE_REQUIREMENTS, [plan_id=221133]
(1371) HashAggregate
Input [1]: [plant#143545]
Keys [1]: [plant#143545]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143545]
(1372) BroadcastHashJoin
Left keys [1]: [plantUuid#143541]
Right keys [1]: [plant#143545]
Join type: Inner
Join condition: None
(1373) Project
Output [3]: [plantUuid#143541, storageLocId#143542, storageLocUuid#143543]
Input [4]: [plantUuid#143541, storageLocId#143542, storageLocUuid#143543, plant#143545]
(1374) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143513.internalRefUUID, ), isnull(plant#143513.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#143541, ), isnull(plantUuid#143541)]
Join type: Inner
Join condition: None
(1375) Generate
Input [9]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515, plantUuid#143541, storageLocId#143542, storageLocUuid#143543]
Arguments: explode(filter(stockQuantities#143515, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143543) AND (lambda x#143085.storageLocation.Id = storageLocId#143542)), lambda x#143085, false))), [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, plantUuid#143541], false, [stockQuantity#143588]
(1376) ObjectHashAggregate
Input [7]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, plantUuid#143541, stockQuantity#143588]
Keys [5]: [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510]
Functions [2]: [partial_first(calculationDateTime#143514, false), partial_collect_list(stockQuantity#143588, 0, 0)]
Aggregate Attributes [3]: [first#144834, valueSet#144835, buf#144836]
Results [8]: [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510, first#144837, valueSet#144838, buf#144839]
(1377) ObjectHashAggregate
Input [8]: [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510, first#144837, valueSet#144838, buf#144839]
Keys [5]: [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510]
Functions [2]: [first(calculationDateTime#143514, false), collect_list(stockQuantity#143588, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#143514)()#143100, collect_list(stockQuantity#143588, 0, 0)#143101]
Results [4]: [product#143512, plant#143513, first(calculationDateTime#143514)()#143100 AS calculationDateTime#143589, collect_list(stockQuantity#143588, 0, 0)#143101 AS stockQuantities#143590]
(1378) Filter
Input [4]: [product#143512, plant#143513, calculationDateTime#143589, stockQuantities#143590]
Condition : ((size(stockQuantities#143590, true) > 0) AND isnotnull(calculationDateTime#143589))
(1379) Generate
Input [4]: [product#143512, plant#143513, calculationDateTime#143589, stockQuantities#143590]
Arguments: explode(stockQuantities#143590), [product#143512, plant#143513, calculationDateTime#143589], false, [stockQuantity#143591]
(1380) Filter
Input [4]: [product#143512, plant#143513, calculationDateTime#143589, stockQuantity#143591]
Condition : (((isnotnull(stockQuantity#143591.specialStockIndicator.code) AND isnotnull(stockQuantity#143591.stockType.code)) AND (stockQuantity#143591.specialStockIndicator.code = )) AND (stockQuantity#143591.stockType.code = 01))
(1381) Project
Output [5]: [plant#143513.internalRefUUID AS plantUuid#143593, product#143512.internalRefUUID AS productUuid#143595, calculationDateTime#143589, stockQuantity#143591.storagelocation.id AS storageLocId#143596, stockQuantity#143591.quantity.measure AS quantity#143598]
Input [4]: [product#143512, plant#143513, calculationDateTime#143589, stockQuantity#143591]
(1382) Exchange
Input [5]: [plantUuid#143593, productUuid#143595, calculationDateTime#143589, storageLocId#143596, quantity#143598]
Arguments: hashpartitioning(productUuid#143595, plantUuid#143593, 25), ENSURE_REQUIREMENTS, [plan_id=221166]
(1383) Sort
Input [5]: [plantUuid#143593, productUuid#143595, calculationDateTime#143589, storageLocId#143596, quantity#143598]
Arguments: [productUuid#143595 ASC NULLS FIRST, plantUuid#143593 ASC NULLS FIRST], false, 0
(1384) Scan parquet
Output [3]: [product#143601, plant#143602, orderDateTime#143603]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1385) Filter
Input [3]: [product#143601, plant#143602, orderDateTime#143603]
Condition : ((isnotnull(orderDateTime#143603) AND isnotnull(plant#143602)) AND isnotnull(product#143601))
(1386) Exchange
Input [3]: [product#143601, plant#143602, orderDateTime#143603]
Arguments: hashpartitioning(product#143601, plant#143602, 25), REPARTITION_BY_NUM, [plan_id=220699]
(1387) Scan parquet
Output [4]: [plant#143607, product#143608, productionAspect#143610, systemId#143605]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1388) Project
Output [4]: [plant#143607.internalRefUUID AS _extract_internalRefUUID#147922, product#143608.internalRefUUID AS _extract_internalRefUUID#147921, productionAspect#143610.productMovementPlants.unitOfIssue.code AS _extract_code#147923, productionAspect#143610.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#147924]
Input [4]: [plant#143607, product#143608, productionAspect#143610, systemId#143605]
(1389) Exchange
Input [4]: [_extract_internalRefUUID#147922, _extract_internalRefUUID#147921, _extract_code#147923, _extract_internalRefUUID#147924]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220073]
(1390) Project
Output [4]: [_extract_code#147923, _extract_internalRefUUID#147924, _extract_internalRefUUID#147921, _extract_internalRefUUID#147922]
Input [4]: [_extract_internalRefUUID#147922, _extract_internalRefUUID#147921, _extract_code#147923, _extract_internalRefUUID#147924]
(1391) BroadcastExchange
Input [4]: [_extract_code#147923, _extract_internalRefUUID#147924, _extract_internalRefUUID#147921, _extract_internalRefUUID#147922]
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=221149]
(1392) BroadcastHashJoin
Left keys [4]: [coalesce(product#143601, ), isnull(product#143601), coalesce(plant#143602, ), isnull(plant#143602)]
Right keys [4]: [coalesce(_extract_internalRefUUID#147921, ), isnull(_extract_internalRefUUID#147921), coalesce(_extract_internalRefUUID#147922, ), isnull(_extract_internalRefUUID#147922)]
Join type: LeftOuter
Join condition: None
(1393) Project
Output [5]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#147923, _extract_internalRefUUID#147924]
Input [7]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#147923, _extract_internalRefUUID#147924, _extract_internalRefUUID#147921, _extract_internalRefUUID#147922]
(1394) Scan parquet
Output [2]: [internalUUID#143615, systemId#143614]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1395) Project
Output [1]: [internalUUID#143615]
Input [2]: [internalUUID#143615, systemId#143614]
(1396) Exchange
Input [1]: [internalUUID#143615]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220079]
(1397) BroadcastExchange
Input [1]: [internalUUID#143615]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=221153]
(1398) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143602, ), isnull(plant#143602)]
Right keys [2]: [coalesce(internalUUID#143615, ), isnull(internalUUID#143615)]
Join type: LeftOuter
Join condition: None
(1399) Project
Output [5]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#147923, _extract_internalRefUUID#147924]
Input [6]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#147923, _extract_internalRefUUID#147924, internalUUID#143615]
(1400) Scan parquet
Output [4]: [internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635, systemId#143628]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1401) Filter
Input [4]: [internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635, systemId#143628]
Condition : isnotnull(internalUUID#143629)
(1402) Project
Output [3]: [internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635]
Input [4]: [internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635, systemId#143628]
(1403) Exchange
Input [3]: [internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220085]
(1404) BroadcastExchange
Input [3]: [internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221157]
(1405) BroadcastHashJoin
Left keys [1]: [product#143601]
Right keys [1]: [internalUUID#143629]
Join type: LeftOuter
Join condition: None
(1406) Project
Output [4]: [product#143601, plant#143602, orderDateTime#143603, filter(unitOfMeasureConversions#143635, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#147923) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#147924)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143633.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143633.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143640]
Input [8]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#147923, _extract_internalRefUUID#147924, internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635]
(1407) Generate
Input [4]: [product#143601, plant#143602, orderDateTime#143603, filteredUnitOfMeasureConversions#143640]
Arguments: explode(filteredUnitOfMeasureConversions#143640.quantityNumerator), [product#143601, plant#143602, orderDateTime#143603, filteredUnitOfMeasureConversions#143640], true, [quantityNumerator#143641]
(1408) Project
Output [4]: [product#143601, plant#143602, orderDateTime#143603, filteredUnitOfMeasureConversions#143640.quantityDenominator AS _extract_quantityDenominator#147592]
Input [5]: [product#143601, plant#143602, orderDateTime#143603, filteredUnitOfMeasureConversions#143640, quantityNumerator#143641]
(1409) Generate
Input [4]: [product#143601, plant#143602, orderDateTime#143603, _extract_quantityDenominator#147592]
Arguments: explode(_extract_quantityDenominator#147592), [product#143601, plant#143602, orderDateTime#143603], true, [quantityDenominator#143642]
(1410) Project
Output [3]: [product#143601, plant#143602, orderDateTime#143603]
Input [4]: [product#143601, plant#143602, orderDateTime#143603, quantityDenominator#143642]
(1411) Sort
Input [3]: [product#143601, plant#143602, orderDateTime#143603]
Arguments: [product#143601 ASC NULLS FIRST, plant#143602 ASC NULLS FIRST], false, 0
(1412) SortMergeJoin
Left keys [2]: [productUuid#143595, plantUuid#143593]
Right keys [2]: [product#143601, plant#143602]
Join type: Inner
Join condition: (calculationDateTime#143589 <= orderDateTime#143603)
(1413) Project
Output [5]: [plantUuid#143593 AS plant#143645, productUuid#143595 AS product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598]
Input [8]: [plantUuid#143593, productUuid#143595, calculationDateTime#143589, storageLocId#143596, quantity#143598, product#143601, plant#143602, orderDateTime#143603]
(1414) Exchange
Input [5]: [plant#143645, product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598]
Arguments: hashpartitioning(coalesce(plant#143645, ), isnull(plant#143645), coalesce(product#143646, ), isnull(product#143646), coalesce(storageLocId#143596, ), isnull(storageLocId#143596), coalesce(calculationDateTime#143589, 1970-01-01 00:00:00), isnull(calculationDateTime#143589), 25), ENSURE_REQUIREMENTS, [plan_id=221230]
(1415) Sort
Input [5]: [plant#143645, product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598]
Arguments: [coalesce(plant#143645, ) ASC NULLS FIRST, isnull(plant#143645) ASC NULLS FIRST, coalesce(product#143646, ) ASC NULLS FIRST, isnull(product#143646) ASC NULLS FIRST, coalesce(storageLocId#143596, ) ASC NULLS FIRST, isnull(storageLocId#143596) ASC NULLS FIRST, coalesce(calculationDateTime#143589, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#143589) ASC NULLS FIRST], false, 0
(1416) Scan parquet
Output [6]: [internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652, systemId#143647]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(1417) Filter
Input [6]: [internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652, systemId#143647]
Condition : (isnotnull(plant#143650.internalRefUUID) AND isnotnull(product#143649.internalRefUUID))
(1418) Project
Output [6]: [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652]
Input [6]: [internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652, systemId#143647]
(1419) Exchange
Input [6]: [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220097]
(1420) BroadcastExchange
Input [6]: [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652]
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=221195]
(1421) Scan parquet
Output [2]: [marketUnit#143653, distributionCenters#143659]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1422) Filter
Input [2]: [marketUnit#143653, distributionCenters#143659]
Condition : (((marketUnit#143653 <=> Daily_grocery) AND (size(distributionCenters#143659, true) > 0)) AND isnotnull(distributionCenters#143659))
(1423) Project
Output [1]: [distributionCenters#143659]
Input [2]: [marketUnit#143653, distributionCenters#143659]
(1424) Exchange
Input [1]: [distributionCenters#143659]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220101]
(1425) Generate
Input [1]: [distributionCenters#143659]
Arguments: explode(distributionCenters#143659), false, [distributionCenters#143675]
(1426) Filter
Input [1]: [distributionCenters#143675]
Condition : (((size(distributionCenters#143675.storageLocations, true) > 0) AND isnotnull(distributionCenters#143675.storageLocations)) AND isnotnull(distributionCenters#143675.internalRefUUID))
(1427) Project
Output [2]: [distributionCenters#143675.internalRefUUID AS _extract_internalRefUUID#147596, distributionCenters#143675.storageLocations AS _extract_storageLocations#147597]
Input [1]: [distributionCenters#143675]
(1428) Generate
Input [2]: [_extract_internalRefUUID#147596, _extract_storageLocations#147597]
Arguments: explode(_extract_storageLocations#147597), [_extract_internalRefUUID#147596], false, [storageLocations#143676]
(1429) Project
Output [3]: [_extract_internalRefUUID#147596 AS plantUuid#143678, storageLocations#143676.id AS storageLocId#143679, storageLocations#143676.internalRefUUID AS storageLocUuid#143680]
Input [2]: [_extract_internalRefUUID#147596, storageLocations#143676]
(1430) BroadcastExchange
Input [3]: [plantUuid#143678, storageLocId#143679, storageLocUuid#143680]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221191]
(1431) Scan parquet
Output [2]: [product#143681, plant#143682]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1432) Filter
Input [2]: [product#143681, plant#143682]
Condition : isnotnull(plant#143682)
(1433) Exchange
Input [2]: [product#143681, plant#143682]
Arguments: hashpartitioning(product#143681, plant#143682, 25), REPARTITION_BY_NUM, [plan_id=220712]
(1434) Scan parquet
Output [4]: [plant#143687, product#143688, productionAspect#143690, systemId#143685]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1435) Project
Output [4]: [plant#143687.internalRefUUID AS _extract_internalRefUUID#147928, product#143688.internalRefUUID AS _extract_internalRefUUID#147925, productionAspect#143690.productMovementPlants.unitOfIssue.code AS _extract_code#147926, productionAspect#143690.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#147927]
Input [4]: [plant#143687, product#143688, productionAspect#143690, systemId#143685]
(1436) Exchange
Input [4]: [_extract_internalRefUUID#147928, _extract_internalRefUUID#147925, _extract_code#147926, _extract_internalRefUUID#147927]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220113]
(1437) Project
Output [4]: [_extract_code#147926, _extract_internalRefUUID#147927, _extract_internalRefUUID#147925, _extract_internalRefUUID#147928]
Input [4]: [_extract_internalRefUUID#147928, _extract_internalRefUUID#147925, _extract_code#147926, _extract_internalRefUUID#147927]
(1438) BroadcastExchange
Input [4]: [_extract_code#147926, _extract_internalRefUUID#147927, _extract_internalRefUUID#147925, _extract_internalRefUUID#147928]
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=221171]
(1439) BroadcastHashJoin
Left keys [4]: [coalesce(product#143681, ), isnull(product#143681), coalesce(plant#143682, ), isnull(plant#143682)]
Right keys [4]: [coalesce(_extract_internalRefUUID#147925, ), isnull(_extract_internalRefUUID#147925), coalesce(_extract_internalRefUUID#147928, ), isnull(_extract_internalRefUUID#147928)]
Join type: LeftOuter
Join condition: None
(1440) Project
Output [4]: [product#143681, plant#143682, _extract_code#147926, _extract_internalRefUUID#147927]
Input [6]: [product#143681, plant#143682, _extract_code#147926, _extract_internalRefUUID#147927, _extract_internalRefUUID#147925, _extract_internalRefUUID#147928]
(1441) Scan parquet
Output [2]: [internalUUID#143695, systemId#143694]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1442) Project
Output [1]: [internalUUID#143695]
Input [2]: [internalUUID#143695, systemId#143694]
(1443) Exchange
Input [1]: [internalUUID#143695]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220119]
(1444) BroadcastExchange
Input [1]: [internalUUID#143695]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=221175]
(1445) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143682, ), isnull(plant#143682)]
Right keys [2]: [coalesce(internalUUID#143695, ), isnull(internalUUID#143695)]
Join type: LeftOuter
Join condition: None
(1446) Project
Output [4]: [product#143681, plant#143682, _extract_code#147926, _extract_internalRefUUID#147927]
Input [5]: [product#143681, plant#143682, _extract_code#147926, _extract_internalRefUUID#147927, internalUUID#143695]
(1447) Scan parquet
Output [4]: [internalUUID#143709, baseUnitOfMeasure#143713, unitOfMeasureConversions#143715, systemId#143708]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1448) Filter
Input [4]: [internalUUID#143709, baseUnitOfMeasure#143713, unitOfMeasureConversions#143715, systemId#143708]
Condition : isnotnull(internalUUID#143709)
(1449) Project
Output [3]: [internalUUID#143709, baseUnitOfMeasure#143713, unitOfMeasureConversions#143715]
Input [4]: [internalUUID#143709, baseUnitOfMeasure#143713, unitOfMeasureConversions#143715, systemId#143708]
(1450) Exchange
Input [3]: [internalUUID#143709, baseUnitOfMeasure#143713, unitOfMeasureConversions#143715]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220125]
(1451) BroadcastExchange
Input [3]: [internalUUID#143709, baseUnitOfMeasure#143713, unitOfMeasureConversions#143715]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221179]
(1452) BroadcastHashJoin
Left keys [1]: [product#143681]
Right keys [1]: [internalUUID#143709]
Join type: LeftOuter
Join condition: None
(1453) Project
Output [2]: [plant#143682, filter(unitOfMeasureConversions#143715, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#147926) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#147927)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143713.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143713.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143720]
Input [7]: [product#143681, plant#143682, _extract_code#147926, _extract_internalRefUUID#147927, internalUUID#143709, baseUnitOfMeasure#143713, unitOfMeasureConversions#143715]
(1454) Generate
Input [2]: [plant#143682, filteredUnitOfMeasureConversions#143720]
Arguments: explode(filteredUnitOfMeasureConversions#143720.quantityNumerator), [plant#143682, filteredUnitOfMeasureConversions#143720], true, [quantityNumerator#143721]
(1455) Project
Output [2]: [plant#143682, filteredUnitOfMeasureConversions#143720.quantityDenominator AS _extract_quantityDenominator#147598]
Input [3]: [plant#143682, filteredUnitOfMeasureConversions#143720, quantityNumerator#143721]
(1456) Generate
Input [2]: [plant#143682, _extract_quantityDenominator#147598]
Arguments: explode(_extract_quantityDenominator#147598), [plant#143682], true, [quantityDenominator#143722]
(1457) Project
Output [1]: [plant#143682]
Input [2]: [plant#143682, quantityDenominator#143722]
(1458) HashAggregate
Input [1]: [plant#143682]
Keys [1]: [plant#143682]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143682]
(1459) Exchange
Input [1]: [plant#143682]
Arguments: hashpartitioning(plant#143682, 25), ENSURE_REQUIREMENTS, [plan_id=221188]
(1460) HashAggregate
Input [1]: [plant#143682]
Keys [1]: [plant#143682]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143682]
(1461) BroadcastHashJoin
Left keys [1]: [plantUuid#143678]
Right keys [1]: [plant#143682]
Join type: Inner
Join condition: None
(1462) Project
Output [3]: [plantUuid#143678, storageLocId#143679, storageLocUuid#143680]
Input [4]: [plantUuid#143678, storageLocId#143679, storageLocUuid#143680, plant#143682]
(1463) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143650.internalRefUUID, ), isnull(plant#143650.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#143678, ), isnull(plantUuid#143678)]
Join type: Inner
Join condition: None
(1464) Generate
Input [9]: [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652, plantUuid#143678, storageLocId#143679, storageLocUuid#143680]
Arguments: explode(filter(stockQuantities#143652, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143680) AND (lambda x#143085.storageLocation.Id = storageLocId#143679)), lambda x#143085, false))), [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, plantUuid#143678], false, [stockQuantity#143725]
(1465) ObjectHashAggregate
Input [7]: [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, plantUuid#143678, stockQuantity#143725]
Keys [5]: [plantUuid#143678, internalUUID#143648, plant#143650, product#143649, systemId#143647]
Functions [2]: [partial_first(calculationDateTime#143651, false), partial_collect_list(stockQuantity#143725, 0, 0)]
Aggregate Attributes [3]: [first#144842, valueSet#144843, buf#144844]
Results [8]: [plantUuid#143678, internalUUID#143648, plant#143650, product#143649, systemId#143647, first#144845, valueSet#144846, buf#144847]
(1466) ObjectHashAggregate
Input [8]: [plantUuid#143678, internalUUID#143648, plant#143650, product#143649, systemId#143647, first#144845, valueSet#144846, buf#144847]
Keys [5]: [plantUuid#143678, internalUUID#143648, plant#143650, product#143649, systemId#143647]
Functions [2]: [first(calculationDateTime#143651, false), collect_list(stockQuantity#143725, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#143651)()#143100, collect_list(stockQuantity#143725, 0, 0)#143101]
Results [4]: [product#143649, plant#143650, first(calculationDateTime#143651)()#143100 AS calculationDateTime#143726, collect_list(stockQuantity#143725, 0, 0)#143101 AS stockQuantities#143727]
(1467) Filter
Input [4]: [product#143649, plant#143650, calculationDateTime#143726, stockQuantities#143727]
Condition : ((size(stockQuantities#143727, true) > 0) AND isnotnull(calculationDateTime#143726))
(1468) Generate
Input [4]: [product#143649, plant#143650, calculationDateTime#143726, stockQuantities#143727]
Arguments: explode(stockQuantities#143727), [product#143649, plant#143650, calculationDateTime#143726], false, [stockQuantity#143728]
(1469) Filter
Input [4]: [product#143649, plant#143650, calculationDateTime#143726, stockQuantity#143728]
Condition : (((isnotnull(stockQuantity#143728.specialStockIndicator.code) AND isnotnull(stockQuantity#143728.stockType.code)) AND (stockQuantity#143728.specialStockIndicator.code = )) AND (stockQuantity#143728.stockType.code = 01))
(1470) Project
Output [4]: [plant#143650.internalRefUUID AS plantUuid#143730, product#143649.internalRefUUID AS productUuid#143732, calculationDateTime#143726, stockQuantity#143728.storagelocation.id AS storageLocId#143733]
Input [4]: [product#143649, plant#143650, calculationDateTime#143726, stockQuantity#143728]
(1471) Exchange
Input [4]: [plantUuid#143730, productUuid#143732, calculationDateTime#143726, storageLocId#143733]
Arguments: hashpartitioning(productUuid#143732, plantUuid#143730, 25), ENSURE_REQUIREMENTS, [plan_id=221221]
(1472) Sort
Input [4]: [plantUuid#143730, productUuid#143732, calculationDateTime#143726, storageLocId#143733]
Arguments: [productUuid#143732 ASC NULLS FIRST, plantUuid#143730 ASC NULLS FIRST], false, 0
(1473) Scan parquet
Output [3]: [product#143738, plant#143739, orderDateTime#143740]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1474) Filter
Input [3]: [product#143738, plant#143739, orderDateTime#143740]
Condition : ((isnotnull(orderDateTime#143740) AND isnotnull(plant#143739)) AND isnotnull(product#143738))
(1475) Exchange
Input [3]: [product#143738, plant#143739, orderDateTime#143740]
Arguments: hashpartitioning(product#143738, plant#143739, 25), REPARTITION_BY_NUM, [plan_id=220735]
(1476) Scan parquet
Output [4]: [plant#143744, product#143745, productionAspect#143747, systemId#143742]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1477) Project
Output [4]: [plant#143744.internalRefUUID AS _extract_internalRefUUID#147930, product#143745.internalRefUUID AS _extract_internalRefUUID#147929, productionAspect#143747.productMovementPlants.unitOfIssue.code AS _extract_code#147931, productionAspect#143747.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#147932]
Input [4]: [plant#143744, product#143745, productionAspect#143747, systemId#143742]
(1478) Exchange
Input [4]: [_extract_internalRefUUID#147930, _extract_internalRefUUID#147929, _extract_code#147931, _extract_internalRefUUID#147932]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220150]
(1479) Project
Output [4]: [_extract_code#147931, _extract_internalRefUUID#147932, _extract_internalRefUUID#147929, _extract_internalRefUUID#147930]
Input [4]: [_extract_internalRefUUID#147930, _extract_internalRefUUID#147929, _extract_code#147931, _extract_internalRefUUID#147932]
(1480) BroadcastExchange
Input [4]: [_extract_code#147931, _extract_internalRefUUID#147932, _extract_internalRefUUID#147929, _extract_internalRefUUID#147930]
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=221204]
(1481) BroadcastHashJoin
Left keys [4]: [coalesce(product#143738, ), isnull(product#143738), coalesce(plant#143739, ), isnull(plant#143739)]
Right keys [4]: [coalesce(_extract_internalRefUUID#147929, ), isnull(_extract_internalRefUUID#147929), coalesce(_extract_internalRefUUID#147930, ), isnull(_extract_internalRefUUID#147930)]
Join type: LeftOuter
Join condition: None
(1482) Project
Output [5]: [product#143738, plant#143739, orderDateTime#143740, _extract_code#147931, _extract_internalRefUUID#147932]
Input [7]: [product#143738, plant#143739, orderDateTime#143740, _extract_code#147931, _extract_internalRefUUID#147932, _extract_internalRefUUID#147929, _extract_internalRefUUID#147930]
(1483) Scan parquet
Output [2]: [internalUUID#143752, systemId#143751]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1484) Project
Output [1]: [internalUUID#143752]
Input [2]: [internalUUID#143752, systemId#143751]
(1485) Exchange
Input [1]: [internalUUID#143752]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220156]
(1486) BroadcastExchange
Input [1]: [internalUUID#143752]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=221208]
(1487) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143739, ), isnull(plant#143739)]
Right keys [2]: [coalesce(internalUUID#143752, ), isnull(internalUUID#143752)]
Join type: LeftOuter
Join condition: None
(1488) Project
Output [5]: [product#143738, plant#143739, orderDateTime#143740, _extract_code#147931, _extract_internalRefUUID#147932]
Input [6]: [product#143738, plant#143739, orderDateTime#143740, _extract_code#147931, _extract_internalRefUUID#147932, internalUUID#143752]
(1489) Scan parquet
Output [4]: [internalUUID#143766, baseUnitOfMeasure#143770, unitOfMeasureConversions#143772, systemId#143765]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1490) Filter
Input [4]: [internalUUID#143766, baseUnitOfMeasure#143770, unitOfMeasureConversions#143772, systemId#143765]
Condition : isnotnull(internalUUID#143766)
(1491) Project
Output [3]: [internalUUID#143766, baseUnitOfMeasure#143770, unitOfMeasureConversions#143772]
Input [4]: [internalUUID#143766, baseUnitOfMeasure#143770, unitOfMeasureConversions#143772, systemId#143765]
(1492) Exchange
Input [3]: [internalUUID#143766, baseUnitOfMeasure#143770, unitOfMeasureConversions#143772]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220162]
(1493) BroadcastExchange
Input [3]: [internalUUID#143766, baseUnitOfMeasure#143770, unitOfMeasureConversions#143772]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221212]
(1494) BroadcastHashJoin
Left keys [1]: [product#143738]
Right keys [1]: [internalUUID#143766]
Join type: LeftOuter
Join condition: None
(1495) Project
Output [4]: [product#143738, plant#143739, orderDateTime#143740, filter(unitOfMeasureConversions#143772, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#147931) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#147932)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143770.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143770.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143777]
Input [8]: [product#143738, plant#143739, orderDateTime#143740, _extract_code#147931, _extract_internalRefUUID#147932, internalUUID#143766, baseUnitOfMeasure#143770, unitOfMeasureConversions#143772]
(1496) Generate
Input [4]: [product#143738, plant#143739, orderDateTime#143740, filteredUnitOfMeasureConversions#143777]
Arguments: explode(filteredUnitOfMeasureConversions#143777.quantityNumerator), [product#143738, plant#143739, orderDateTime#143740, filteredUnitOfMeasureConversions#143777], true, [quantityNumerator#143778]
(1497) Project
Output [4]: [product#143738, plant#143739, orderDateTime#143740, filteredUnitOfMeasureConversions#143777.quantityDenominator AS _extract_quantityDenominator#147602]
Input [5]: [product#143738, plant#143739, orderDateTime#143740, filteredUnitOfMeasureConversions#143777, quantityNumerator#143778]
(1498) Generate
Input [4]: [product#143738, plant#143739, orderDateTime#143740, _extract_quantityDenominator#147602]
Arguments: explode(_extract_quantityDenominator#147602), [product#143738, plant#143739, orderDateTime#143740], true, [quantityDenominator#143779]
(1499) Project
Output [3]: [product#143738, plant#143739, orderDateTime#143740]
Input [4]: [product#143738, plant#143739, orderDateTime#143740, quantityDenominator#143779]
(1500) Sort
Input [3]: [product#143738, plant#143739, orderDateTime#143740]
Arguments: [product#143738 ASC NULLS FIRST, plant#143739 ASC NULLS FIRST], false, 0
(1501) SortMergeJoin
Left keys [2]: [productUuid#143732, plantUuid#143730]
Right keys [2]: [product#143738, plant#143739]
Join type: Inner
Join condition: (calculationDateTime#143726 <= orderDateTime#143740)
(1502) Project
Output [4]: [plantUuid#143730 AS plant#143782, productUuid#143732 AS product#143783, storageLocId#143733, calculationDateTime#143726]
Input [7]: [plantUuid#143730, productUuid#143732, calculationDateTime#143726, storageLocId#143733, product#143738, plant#143739, orderDateTime#143740]
(1503) HashAggregate
Input [4]: [plant#143782, product#143783, storageLocId#143733, calculationDateTime#143726]
Keys [3]: [plant#143782, product#143783, storageLocId#143733]
Functions [1]: [partial_max(calculationDateTime#143726)]
Aggregate Attributes [1]: [max#144840]
Results [4]: [plant#143782, product#143783, storageLocId#143733, max#144841]
(1504) HashAggregate
Input [4]: [plant#143782, product#143783, storageLocId#143733, max#144841]
Keys [3]: [plant#143782, product#143783, storageLocId#143733]
Functions [1]: [max(calculationDateTime#143726)]
Aggregate Attributes [1]: [max(calculationDateTime#143726)#143178]
Results [4]: [plant#143782, product#143783, storageLocId#143733, max(calculationDateTime#143726)#143178 AS max_calc_datetime#143784]
(1505) Exchange
Input [4]: [plant#143782, product#143783, storageLocId#143733, max_calc_datetime#143784]
Arguments: hashpartitioning(coalesce(plant#143782, ), isnull(plant#143782), coalesce(product#143783, ), isnull(product#143783), coalesce(storageLocId#143733, ), isnull(storageLocId#143733), coalesce(max_calc_datetime#143784, 1970-01-01 00:00:00), isnull(max_calc_datetime#143784), 25), ENSURE_REQUIREMENTS, [plan_id=221231]
(1506) Sort
Input [4]: [plant#143782, product#143783, storageLocId#143733, max_calc_datetime#143784]
Arguments: [coalesce(plant#143782, ) ASC NULLS FIRST, isnull(plant#143782) ASC NULLS FIRST, coalesce(product#143783, ) ASC NULLS FIRST, isnull(product#143783) ASC NULLS FIRST, coalesce(storageLocId#143733, ) ASC NULLS FIRST, isnull(storageLocId#143733) ASC NULLS FIRST, coalesce(max_calc_datetime#143784, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#143784) ASC NULLS FIRST], false, 0
(1507) SortMergeJoin
Left keys [8]: [coalesce(plant#143645, ), isnull(plant#143645), coalesce(product#143646, ), isnull(product#143646), coalesce(storageLocId#143596, ), isnull(storageLocId#143596), coalesce(calculationDateTime#143589, 1970-01-01 00:00:00), isnull(calculationDateTime#143589)]
Right keys [8]: [coalesce(plant#143782, ), isnull(plant#143782), coalesce(product#143783, ), isnull(product#143783), coalesce(storageLocId#143733, ), isnull(storageLocId#143733), coalesce(max_calc_datetime#143784, 1970-01-01 00:00:00), isnull(max_calc_datetime#143784)]
Join type: Inner
Join condition: None
(1508) Project
Output [4]: [plant#143645, product#143646, calculationDateTime#143589, quantity#143598]
Input [9]: [plant#143645, product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598, plant#143782, product#143783, storageLocId#143733, max_calc_datetime#143784]
(1509) HashAggregate
Input [4]: [plant#143645, product#143646, calculationDateTime#143589, quantity#143598]
Keys [2]: [product#143646, plant#143645]
Functions [2]: [partial_min(calculationDateTime#143589), partial_sum(quantity#143598)]
Aggregate Attributes [2]: [min#144830, sum#144831]
Results [4]: [product#143646, plant#143645, min#144832, sum#144833]
(1510) Exchange
Input [4]: [product#143646, plant#143645, min#144832, sum#144833]
Arguments: hashpartitioning(product#143646, plant#143645, 25), ENSURE_REQUIREMENTS, [plan_id=221238]
(1511) HashAggregate
Input [4]: [product#143646, plant#143645, min#144832, sum#144833]
Keys [2]: [product#143646, plant#143645]
Functions [2]: [min(calculationDateTime#143589), sum(quantity#143598)]
Aggregate Attributes [2]: [min(calculationDateTime#143589)#143334, sum(quantity#143598)#143333]
Results [4]: [product#143646, plant#143645, min(calculationDateTime#143589)#143334 AS minCalculationDateTime#143786, round(sum(quantity#143598)#143333, 0) AS roundedQuantitySum#143787]
(1512) Sort
Input [4]: [product#143646, plant#143645, minCalculationDateTime#143786, roundedQuantitySum#143787]
Arguments: [product#143646 ASC NULLS FIRST, plant#143645 ASC NULLS FIRST], false, 0
(1513) SortMergeJoin
Left keys [2]: [product#143466, plant#143467]
Right keys [2]: [product#143646, plant#143645]
Join type: LeftOuter
Join condition: None
(1514) Project
Output [8]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, CASE WHEN isnotnull(minCalculationDateTime#143786) THEN minCalculationDateTime#143786 ELSE orderDateTime#143468 END AS stockDatetime#143788, CASE WHEN isnotnull(roundedQuantitySum#143787) THEN array(roundedQuantitySum#143787) ELSE [0.0] END AS stockBatchQuantities#143789]
Input [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, product#143646, plant#143645, minCalculationDateTime#143786, roundedQuantitySum#143787]
(1515) Filter
Input [9]: [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
Condition : (isnotnull(product#143387) AND isnotnull(plant#143388))
(1516) BroadcastExchange
Input [9]: [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=221247]
(1517) BroadcastHashJoin
Left keys [2]: [product#143466, plant#143467]
Right keys [2]: [product#143387, plant#143388]
Join type: LeftOuter
Join condition: None
(1518) Project
Output [9]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, CASE WHEN isnotnull(product#143387) THEN struct(demandChannel, demandChannel#143389, demandStream, demandStream#143390, considerVariance, considerVariance#143391, demandTimeBuckets, demandTimeBuckets#143392, demandPointInTimeStart, demandPointInTimeStart#143393, demandPointInTimeEnd, demandPointInTimeEnd#143394, demandPointInTime, demandPointInTime#143395) END AS rawDemands#143412]
Input [17]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
(1519) ObjectHashAggregate
Input [9]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, rawDemands#143412]
Keys [9]: [product#143466, plant#143467, orderDateTime#143468, knownfloatingpointnormalized(if (isnull(productPlant#143478)) null else named_struct(systemId, productPlant#143478.systemId, internalUUID, productPlant#143478.internalUUID, plant, productPlant#143478.plant, product, productPlant#143478.product, blockedForReplenishmentStartingFrom, productPlant#143478.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#143478.productionAspect)) null else named_struct(productMovementPlants, productPlant#143478.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#143478.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#143478.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#143478.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#143478.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#143478.productionAspect.productPlanningPlants.minimumLotSize)), minimumSafetyStock, knownfloatingpointnormalized(normalizenanandzero(productPlant#143478.productionAspect.productPlanningPlants.minimumSafetyStock)), logisticalRoundingProfile, productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#143478.salesPlant, listing, productPlant#143478.listing)) AS productPlant#143478, timezonecode#143492, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#143509)) AS outboundUnit#143509, stockDatetime#143788, knownfloatingpointnormalized(transform(stockBatchQuantities#143789, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#148684)), lambda arg#148684, false))) AS stockBatchQuantities#143789, [7226582400000000] AS [7226582400000000]#148683]
Functions [1]: [partial_collect_list(rawDemands#143412, 0, 0)]
Aggregate Attributes [1]: [buf#144828]
Results [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000]#148683, buf#144829]
(1520) ObjectHashAggregate
Input [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000]#148683, buf#144829]
Keys [9]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000]#148683]
Functions [1]: [collect_list(rawDemands#143412, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#143412, 0, 0)#143431]
Results [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#143790, collect_list(rawDemands#143412, 0, 0)#143431 AS rawDemands#143413]
(1521) DeserializeToObject
Input [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, stockBatchShelfLifeEndDatetimes#143790, rawDemands#143413]
Arguments: createexternalrow(invoke(product#143466.toString()), invoke(plant#143467.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#143468)), if (isnull(productPlant#143478)) null else createexternalrow(invoke(productPlant#143478.systemId.toString()), invoke(productPlant#143478.internalUUID.toString()), if (isnull(productPlant#143478.plant)) null else createexternalrow(invoke(productPlant#143478.plant.internalRefUUID.toString()), invoke(productPlant#143478.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#143478.product)) null else createexternalrow(invoke(productPlant#143478.product.internalRefUUID.toString()), invoke(productPlant#143478.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#143478.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#143478.productionAspect)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#143478.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#143478.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#143478.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#143478.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(minimumSafetyStock,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#143478.salesPlant)) null else createexternalrow(if (isnull(productPlant#143478.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#143478.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#143478.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#143478.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#143492.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#143509)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#143788)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#143789, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#143790, 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#143413, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#143452: org.apache.spark.sql.Row
(1522) MapElements
Input [1]: [obj#143452]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@2d5ca6d1, obj#143457: org.apache.spark.sql.Row
(1523) SerializeFromObject
Input [1]: [obj#143457]
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#143462, 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#143463, 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#143464, 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#143465]
(1524) Exchange
Input [4]: [product#143462, plant#143463, dayBucketDemands#143464, pointInTimeDemands#143465]
Arguments: hashpartitioning(coalesce(plant#143463, ), isnull(plant#143463), coalesce(product#143462, ), isnull(product#143462), 25), ENSURE_REQUIREMENTS, [plan_id=221258]
(1525) Sort
Input [4]: [product#143462, plant#143463, dayBucketDemands#143464, pointInTimeDemands#143465]
Arguments: [coalesce(plant#143463, ) ASC NULLS FIRST, isnull(plant#143463) ASC NULLS FIRST, coalesce(product#143462, ) ASC NULLS FIRST, isnull(product#143462) ASC NULLS FIRST], false, 0
(1526) SortMergeJoin
Left keys [4]: [coalesce(plant#142981, ), isnull(plant#142981), coalesce(product#142980, ), isnull(product#142980)]
Right keys [4]: [coalesce(plant#143463, ), isnull(plant#143463), coalesce(product#143462, ), isnull(product#143462)]
Join type: LeftOuter
Join condition: None
(1527) Project
Output [8]: [product#142980, plant#142981, _extract_minimumSafetyStock#147969, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, dayBucketDemands#143464, pointInTimeDemands#143465]
Input [10]: [product#142980, plant#142981, _extract_minimumSafetyStock#147969, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, product#143462, plant#143463, dayBucketDemands#143464, pointInTimeDemands#143465]
(1528) Exchange
Input [8]: [product#142980, plant#142981, _extract_minimumSafetyStock#147969, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, dayBucketDemands#143464, pointInTimeDemands#143465]
Arguments: hashpartitioning(product#142980, plant#142981, 25), ENSURE_REQUIREMENTS, [plan_id=221587]
(1529) Sort
Input [8]: [product#142980, plant#142981, _extract_minimumSafetyStock#147969, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, dayBucketDemands#143464, pointInTimeDemands#143465]
Arguments: [product#142980 ASC NULLS FIRST, plant#142981 ASC NULLS FIRST], false, 0
(1530) Filter
Input [3]: [product#143833, plant#143832, openGoodsMovements#145382]
Condition : (isnotnull(product#143833) AND isnotnull(plant#143832))
(1531) Scan parquet
Output [3]: [product#145705, plant#145706, orderDateTime#145707]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1532) Filter
Input [3]: [product#145705, plant#145706, orderDateTime#145707]
Condition : isnotnull(plant#145706)
(1533) Exchange
Input [3]: [product#145705, plant#145706, orderDateTime#145707]
Arguments: hashpartitioning(product#145705, plant#145706, 25), REPARTITION_BY_NUM, [plan_id=220765]
(1534) Scan parquet
Output [4]: [plant#145711, product#145712, productionAspect#145714, systemId#145709]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1535) Project
Output [4]: [plant#145711.internalRefUUID AS _extract_internalRefUUID#147934, product#145712.internalRefUUID AS _extract_internalRefUUID#147933, productionAspect#145714.productMovementPlants.unitOfIssue.code AS _extract_code#147935, productionAspect#145714.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#147936]
Input [4]: [plant#145711, product#145712, productionAspect#145714, systemId#145709]
(1536) Exchange
Input [4]: [_extract_internalRefUUID#147934, _extract_internalRefUUID#147933, _extract_code#147935, _extract_internalRefUUID#147936]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220199]
(1537) Project
Output [4]: [_extract_code#147935, _extract_internalRefUUID#147936, _extract_internalRefUUID#147933, _extract_internalRefUUID#147934]
Input [4]: [_extract_internalRefUUID#147934, _extract_internalRefUUID#147933, _extract_code#147935, _extract_internalRefUUID#147936]
(1538) BroadcastExchange
Input [4]: [_extract_code#147935, _extract_internalRefUUID#147936, _extract_internalRefUUID#147933, _extract_internalRefUUID#147934]
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=221263]
(1539) BroadcastHashJoin
Left keys [4]: [coalesce(product#145705, ), isnull(product#145705), coalesce(plant#145706, ), isnull(plant#145706)]
Right keys [4]: [coalesce(_extract_internalRefUUID#147933, ), isnull(_extract_internalRefUUID#147933), coalesce(_extract_internalRefUUID#147934, ), isnull(_extract_internalRefUUID#147934)]
Join type: LeftOuter
Join condition: None
(1540) Project
Output [5]: [product#145705, plant#145706, orderDateTime#145707, _extract_code#147935, _extract_internalRefUUID#147936]
Input [7]: [product#145705, plant#145706, orderDateTime#145707, _extract_code#147935, _extract_internalRefUUID#147936, _extract_internalRefUUID#147933, _extract_internalRefUUID#147934]
(1541) Scan parquet
Output [2]: [internalUUID#145719, systemId#145718]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1542) Project
Output [1]: [internalUUID#145719]
Input [2]: [internalUUID#145719, systemId#145718]
(1543) Exchange
Input [1]: [internalUUID#145719]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220205]
(1544) BroadcastExchange
Input [1]: [internalUUID#145719]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=221267]
(1545) BroadcastHashJoin
Left keys [2]: [coalesce(plant#145706, ), isnull(plant#145706)]
Right keys [2]: [coalesce(internalUUID#145719, ), isnull(internalUUID#145719)]
Join type: LeftOuter
Join condition: None
(1546) Project
Output [5]: [product#145705, plant#145706, orderDateTime#145707, _extract_code#147935, _extract_internalRefUUID#147936]
Input [6]: [product#145705, plant#145706, orderDateTime#145707, _extract_code#147935, _extract_internalRefUUID#147936, internalUUID#145719]
(1547) Scan parquet
Output [4]: [internalUUID#145733, baseUnitOfMeasure#145737, unitOfMeasureConversions#145739, systemId#145732]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1548) Filter
Input [4]: [internalUUID#145733, baseUnitOfMeasure#145737, unitOfMeasureConversions#145739, systemId#145732]
Condition : isnotnull(internalUUID#145733)
(1549) Project
Output [3]: [internalUUID#145733, baseUnitOfMeasure#145737, unitOfMeasureConversions#145739]
Input [4]: [internalUUID#145733, baseUnitOfMeasure#145737, unitOfMeasureConversions#145739, systemId#145732]
(1550) Exchange
Input [3]: [internalUUID#145733, baseUnitOfMeasure#145737, unitOfMeasureConversions#145739]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220211]
(1551) BroadcastExchange
Input [3]: [internalUUID#145733, baseUnitOfMeasure#145737, unitOfMeasureConversions#145739]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221271]
(1552) BroadcastHashJoin
Left keys [1]: [product#145705]
Right keys [1]: [internalUUID#145733]
Join type: LeftOuter
Join condition: None
(1553) Project
Output [4]: [product#145705, plant#145706, orderDateTime#145707, filter(unitOfMeasureConversions#145739, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#147935) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#147936)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#145737.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#145737.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#145744]
Input [8]: [product#145705, plant#145706, orderDateTime#145707, _extract_code#147935, _extract_internalRefUUID#147936, internalUUID#145733, baseUnitOfMeasure#145737, unitOfMeasureConversions#145739]
(1554) Generate
Input [4]: [product#145705, plant#145706, orderDateTime#145707, filteredUnitOfMeasureConversions#145744]
Arguments: explode(filteredUnitOfMeasureConversions#145744.quantityNumerator), [product#145705, plant#145706, orderDateTime#145707, filteredUnitOfMeasureConversions#145744], true, [quantityNumerator#145745]
(1555) Project
Output [4]: [product#145705, plant#145706, orderDateTime#145707, filteredUnitOfMeasureConversions#145744.quantityDenominator AS _extract_quantityDenominator#147606]
Input [5]: [product#145705, plant#145706, orderDateTime#145707, filteredUnitOfMeasureConversions#145744, quantityNumerator#145745]
(1556) Generate
Input [4]: [product#145705, plant#145706, orderDateTime#145707, _extract_quantityDenominator#147606]
Arguments: explode(_extract_quantityDenominator#147606), [product#145705, plant#145706, orderDateTime#145707], true, [quantityDenominator#145746]
(1557) Project
Output [3]: [product#145705, plant#145706, orderDateTime#145707]
Input [4]: [product#145705, plant#145706, orderDateTime#145707, quantityDenominator#145746]
(1558) Sort
Input [3]: [product#145705, plant#145706, orderDateTime#145707]
Arguments: [product#145705 ASC NULLS FIRST, plant#145706 ASC NULLS FIRST], false, 0
(1559) Scan parquet
Output [6]: [internalUUID#145750, product#145751, plant#145752, calculationDateTime#145753, stockQuantities#145754, systemId#145749]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(1560) Filter
Input [6]: [internalUUID#145750, product#145751, plant#145752, calculationDateTime#145753, stockQuantities#145754, systemId#145749]
Condition : (isnotnull(plant#145752.internalRefUUID) AND isnotnull(product#145751.internalRefUUID))
(1561) Project
Output [6]: [systemId#145749, internalUUID#145750, product#145751, plant#145752, calculationDateTime#145753, stockQuantities#145754]
Input [6]: [internalUUID#145750, product#145751, plant#145752, calculationDateTime#145753, stockQuantities#145754, systemId#145749]
(1562) Exchange
Input [6]: [systemId#145749, internalUUID#145750, product#145751, plant#145752, calculationDateTime#145753, stockQuantities#145754]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220221]
(1563) BroadcastExchange
Input [6]: [systemId#145749, internalUUID#145750, product#145751, plant#145752, calculationDateTime#145753, stockQuantities#145754]
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=221302]
(1564) Scan parquet
Output [2]: [marketUnit#145755, distributionCenters#145761]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1565) Filter
Input [2]: [marketUnit#145755, distributionCenters#145761]
Condition : (((marketUnit#145755 <=> Daily_grocery) AND (size(distributionCenters#145761, true) > 0)) AND isnotnull(distributionCenters#145761))
(1566) Project
Output [1]: [distributionCenters#145761]
Input [2]: [marketUnit#145755, distributionCenters#145761]
(1567) Exchange
Input [1]: [distributionCenters#145761]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220225]
(1568) Generate
Input [1]: [distributionCenters#145761]
Arguments: explode(distributionCenters#145761), false, [distributionCenters#145777]
(1569) Filter
Input [1]: [distributionCenters#145777]
Condition : (((size(distributionCenters#145777.storageLocations, true) > 0) AND isnotnull(distributionCenters#145777.storageLocations)) AND isnotnull(distributionCenters#145777.internalRefUUID))
(1570) Project
Output [2]: [distributionCenters#145777.internalRefUUID AS _extract_internalRefUUID#147610, distributionCenters#145777.storageLocations AS _extract_storageLocations#147611]
Input [1]: [distributionCenters#145777]
(1571) Generate
Input [2]: [_extract_internalRefUUID#147610, _extract_storageLocations#147611]
Arguments: explode(_extract_storageLocations#147611), [_extract_internalRefUUID#147610], false, [storageLocations#145778]
(1572) Project
Output [3]: [_extract_internalRefUUID#147610 AS plantUuid#145780, storageLocations#145778.id AS storageLocId#145781, storageLocations#145778.internalRefUUID AS storageLocUuid#145782]
Input [2]: [_extract_internalRefUUID#147610, storageLocations#145778]
(1573) BroadcastExchange
Input [3]: [plantUuid#145780, storageLocId#145781, storageLocUuid#145782]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221298]
(1574) Scan parquet
Output [2]: [product#145783, plant#145784]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1575) Filter
Input [2]: [product#145783, plant#145784]
Condition : isnotnull(plant#145784)
(1576) Exchange
Input [2]: [product#145783, plant#145784]
Arguments: hashpartitioning(product#145783, plant#145784, 25), REPARTITION_BY_NUM, [plan_id=220776]
(1577) Scan parquet
Output [4]: [plant#145789, product#145790, productionAspect#145792, systemId#145787]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1578) Project
Output [4]: [plant#145789.internalRefUUID AS _extract_internalRefUUID#147940, product#145790.internalRefUUID AS _extract_internalRefUUID#147937, productionAspect#145792.productMovementPlants.unitOfIssue.code AS _extract_code#147938, productionAspect#145792.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#147939]
Input [4]: [plant#145789, product#145790, productionAspect#145792, systemId#145787]
(1579) Exchange
Input [4]: [_extract_internalRefUUID#147940, _extract_internalRefUUID#147937, _extract_code#147938, _extract_internalRefUUID#147939]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220237]
(1580) Project
Output [4]: [_extract_code#147938, _extract_internalRefUUID#147939, _extract_internalRefUUID#147937, _extract_internalRefUUID#147940]
Input [4]: [_extract_internalRefUUID#147940, _extract_internalRefUUID#147937, _extract_code#147938, _extract_internalRefUUID#147939]
(1581) BroadcastExchange
Input [4]: [_extract_code#147938, _extract_internalRefUUID#147939, _extract_internalRefUUID#147937, _extract_internalRefUUID#147940]
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=221278]
(1582) BroadcastHashJoin
Left keys [4]: [coalesce(product#145783, ), isnull(product#145783), coalesce(plant#145784, ), isnull(plant#145784)]
Right keys [4]: [coalesce(_extract_internalRefUUID#147937, ), isnull(_extract_internalRefUUID#147937), coalesce(_extract_internalRefUUID#147940, ), isnull(_extract_internalRefUUID#147940)]
Join type: LeftOuter
Join condition: None
(1583) Project
Output [4]: [product#145783, plant#145784, _extract_code#147938, _extract_internalRefUUID#147939]
Input [6]: [product#145783, plant#145784, _extract_code#147938, _extract_internalRefUUID#147939, _extract_internalRefUUID#147937, _extract_internalRefUUID#147940]
(1584) Scan parquet
Output [2]: [internalUUID#145797, systemId#145796]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1585) Project
Output [1]: [internalUUID#145797]
Input [2]: [internalUUID#145797, systemId#145796]
(1586) Exchange
Input [1]: [internalUUID#145797]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220243]
(1587) BroadcastExchange
Input [1]: [internalUUID#145797]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=221282]
(1588) BroadcastHashJoin
Left keys [2]: [coalesce(plant#145784, ), isnull(plant#145784)]
Right keys [2]: [coalesce(internalUUID#145797, ), isnull(internalUUID#145797)]
Join type: LeftOuter
Join condition: None
(1589) Project
Output [4]: [product#145783, plant#145784, _extract_code#147938, _extract_internalRefUUID#147939]
Input [5]: [product#145783, plant#145784, _extract_code#147938, _extract_internalRefUUID#147939, internalUUID#145797]
(1590) Scan parquet
Output [4]: [internalUUID#145811, baseUnitOfMeasure#145815, unitOfMeasureConversions#145817, systemId#145810]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1591) Filter
Input [4]: [internalUUID#145811, baseUnitOfMeasure#145815, unitOfMeasureConversions#145817, systemId#145810]
Condition : isnotnull(internalUUID#145811)
(1592) Project
Output [3]: [internalUUID#145811, baseUnitOfMeasure#145815, unitOfMeasureConversions#145817]
Input [4]: [internalUUID#145811, baseUnitOfMeasure#145815, unitOfMeasureConversions#145817, systemId#145810]
(1593) Exchange
Input [3]: [internalUUID#145811, baseUnitOfMeasure#145815, unitOfMeasureConversions#145817]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220249]
(1594) BroadcastExchange
Input [3]: [internalUUID#145811, baseUnitOfMeasure#145815, unitOfMeasureConversions#145817]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221286]
(1595) BroadcastHashJoin
Left keys [1]: [product#145783]
Right keys [1]: [internalUUID#145811]
Join type: LeftOuter
Join condition: None
(1596) Project
Output [2]: [plant#145784, filter(unitOfMeasureConversions#145817, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#147938) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#147939)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#145815.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#145815.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#145822]
Input [7]: [product#145783, plant#145784, _extract_code#147938, _extract_internalRefUUID#147939, internalUUID#145811, baseUnitOfMeasure#145815, unitOfMeasureConversions#145817]
(1597) Generate
Input [2]: [plant#145784, filteredUnitOfMeasureConversions#145822]
Arguments: explode(filteredUnitOfMeasureConversions#145822.quantityNumerator), [plant#145784, filteredUnitOfMeasureConversions#145822], true, [quantityNumerator#145823]
(1598) Project
Output [2]: [plant#145784, filteredUnitOfMeasureConversions#145822.quantityDenominator AS _extract_quantityDenominator#147612]
Input [3]: [plant#145784, filteredUnitOfMeasureConversions#145822, quantityNumerator#145823]
(1599) Generate
Input [2]: [plant#145784, _extract_quantityDenominator#147612]
Arguments: explode(_extract_quantityDenominator#147612), [plant#145784], true, [quantityDenominator#145824]
(1600) Project
Output [1]: [plant#145784]
Input [2]: [plant#145784, quantityDenominator#145824]
(1601) HashAggregate
Input [1]: [plant#145784]
Keys [1]: [plant#145784]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#145784]
(1602) Exchange
Input [1]: [plant#145784]
Arguments: hashpartitioning(plant#145784, 25), ENSURE_REQUIREMENTS, [plan_id=221295]
(1603) HashAggregate
Input [1]: [plant#145784]
Keys [1]: [plant#145784]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#145784]
(1604) BroadcastHashJoin
Left keys [1]: [plantUuid#145780]
Right keys [1]: [plant#145784]
Join type: Inner
Join condition: None
(1605) Project
Output [3]: [plantUuid#145780, storageLocId#145781, storageLocUuid#145782]
Input [4]: [plantUuid#145780, storageLocId#145781, storageLocUuid#145782, plant#145784]
(1606) BroadcastHashJoin
Left keys [2]: [coalesce(plant#145752.internalRefUUID, ), isnull(plant#145752.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#145780, ), isnull(plantUuid#145780)]
Join type: Inner
Join condition: None
(1607) Generate
Input [9]: [systemId#145749, internalUUID#145750, product#145751, plant#145752, calculationDateTime#145753, stockQuantities#145754, plantUuid#145780, storageLocId#145781, storageLocUuid#145782]
Arguments: explode(filter(stockQuantities#145754, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#145782) AND (lambda x#143085.storageLocation.Id = storageLocId#145781)), lambda x#143085, false))), [systemId#145749, internalUUID#145750, product#145751, plant#145752, calculationDateTime#145753, plantUuid#145780], false, [stockQuantity#145827]
(1608) ObjectHashAggregate
Input [7]: [systemId#145749, internalUUID#145750, product#145751, plant#145752, calculationDateTime#145753, plantUuid#145780, stockQuantity#145827]
Keys [5]: [plantUuid#145780, internalUUID#145750, plant#145752, product#145751, systemId#145749]
Functions [2]: [partial_first(calculationDateTime#145753, false), partial_collect_list(stockQuantity#145827, 0, 0)]
Aggregate Attributes [3]: [first#148691, valueSet#148692, buf#148693]
Results [8]: [plantUuid#145780, internalUUID#145750, plant#145752, product#145751, systemId#145749, first#148694, valueSet#148695, buf#148696]
(1609) ObjectHashAggregate
Input [8]: [plantUuid#145780, internalUUID#145750, plant#145752, product#145751, systemId#145749, first#148694, valueSet#148695, buf#148696]
Keys [5]: [plantUuid#145780, internalUUID#145750, plant#145752, product#145751, systemId#145749]
Functions [2]: [first(calculationDateTime#145753, false), collect_list(stockQuantity#145827, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#145753)()#143100, collect_list(stockQuantity#145827, 0, 0)#143101]
Results [4]: [product#145751, plant#145752, first(calculationDateTime#145753)()#143100 AS calculationDateTime#145828, collect_list(stockQuantity#145827, 0, 0)#143101 AS stockQuantities#145829]
(1610) Filter
Input [4]: [product#145751, plant#145752, calculationDateTime#145828, stockQuantities#145829]
Condition : ((size(stockQuantities#145829, true) > 0) AND isnotnull(calculationDateTime#145828))
(1611) Generate
Input [4]: [product#145751, plant#145752, calculationDateTime#145828, stockQuantities#145829]
Arguments: explode(stockQuantities#145829), [product#145751, plant#145752, calculationDateTime#145828], false, [stockQuantity#145830]
(1612) Filter
Input [4]: [product#145751, plant#145752, calculationDateTime#145828, stockQuantity#145830]
Condition : (((isnotnull(stockQuantity#145830.specialStockIndicator.code) AND isnotnull(stockQuantity#145830.stockType.code)) AND (stockQuantity#145830.specialStockIndicator.code = )) AND (stockQuantity#145830.stockType.code = 01))
(1613) Project
Output [4]: [plant#145752.internalRefUUID AS plantUuid#145832, product#145751.internalRefUUID AS productUuid#145834, calculationDateTime#145828, stockQuantity#145830.storagelocation.id AS storageLocId#145835]
Input [4]: [product#145751, plant#145752, calculationDateTime#145828, stockQuantity#145830]
(1614) Exchange
Input [4]: [plantUuid#145832, productUuid#145834, calculationDateTime#145828, storageLocId#145835]
Arguments: hashpartitioning(productUuid#145834, plantUuid#145832, 25), ENSURE_REQUIREMENTS, [plan_id=221328]
(1615) Sort
Input [4]: [plantUuid#145832, productUuid#145834, calculationDateTime#145828, storageLocId#145835]
Arguments: [productUuid#145834 ASC NULLS FIRST, plantUuid#145832 ASC NULLS FIRST], false, 0
(1616) Scan parquet
Output [3]: [product#145840, plant#145841, orderDateTime#145842]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1617) Filter
Input [3]: [product#145840, plant#145841, orderDateTime#145842]
Condition : ((isnotnull(orderDateTime#145842) AND isnotnull(plant#145841)) AND isnotnull(product#145840))
(1618) Exchange
Input [3]: [product#145840, plant#145841, orderDateTime#145842]
Arguments: hashpartitioning(product#145840, plant#145841, 25), REPARTITION_BY_NUM, [plan_id=220799]
(1619) Scan parquet
Output [4]: [plant#145846, product#145847, productionAspect#145849, systemId#145844]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1620) Project
Output [4]: [plant#145846.internalRefUUID AS _extract_internalRefUUID#147941, product#145847.internalRefUUID AS _extract_internalRefUUID#147944, productionAspect#145849.productMovementPlants.unitOfIssue.code AS _extract_code#147942, productionAspect#145849.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#147943]
Input [4]: [plant#145846, product#145847, productionAspect#145849, systemId#145844]
(1621) Exchange
Input [4]: [_extract_internalRefUUID#147941, _extract_internalRefUUID#147944, _extract_code#147942, _extract_internalRefUUID#147943]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220274]
(1622) Project
Output [4]: [_extract_code#147942, _extract_internalRefUUID#147943, _extract_internalRefUUID#147944, _extract_internalRefUUID#147941]
Input [4]: [_extract_internalRefUUID#147941, _extract_internalRefUUID#147944, _extract_code#147942, _extract_internalRefUUID#147943]
(1623) BroadcastExchange
Input [4]: [_extract_code#147942, _extract_internalRefUUID#147943, _extract_internalRefUUID#147944, _extract_internalRefUUID#147941]
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=221311]
(1624) BroadcastHashJoin
Left keys [4]: [coalesce(product#145840, ), isnull(product#145840), coalesce(plant#145841, ), isnull(plant#145841)]
Right keys [4]: [coalesce(_extract_internalRefUUID#147944, ), isnull(_extract_internalRefUUID#147944), coalesce(_extract_internalRefUUID#147941, ), isnull(_extract_internalRefUUID#147941)]
Join type: LeftOuter
Join condition: None
(1625) Project
Output [5]: [product#145840, plant#145841, orderDateTime#145842, _extract_code#147942, _extract_internalRefUUID#147943]
Input [7]: [product#145840, plant#145841, orderDateTime#145842, _extract_code#147942, _extract_internalRefUUID#147943, _extract_internalRefUUID#147944, _extract_internalRefUUID#147941]
(1626) Scan parquet
Output [2]: [internalUUID#145854, systemId#145853]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1627) Project
Output [1]: [internalUUID#145854]
Input [2]: [internalUUID#145854, systemId#145853]
(1628) Exchange
Input [1]: [internalUUID#145854]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220280]
(1629) BroadcastExchange
Input [1]: [internalUUID#145854]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=221315]
(1630) BroadcastHashJoin
Left keys [2]: [coalesce(plant#145841, ), isnull(plant#145841)]
Right keys [2]: [coalesce(internalUUID#145854, ), isnull(internalUUID#145854)]
Join type: LeftOuter
Join condition: None
(1631) Project
Output [5]: [product#145840, plant#145841, orderDateTime#145842, _extract_code#147942, _extract_internalRefUUID#147943]
Input [6]: [product#145840, plant#145841, orderDateTime#145842, _extract_code#147942, _extract_internalRefUUID#147943, internalUUID#145854]
(1632) Scan parquet
Output [4]: [internalUUID#145868, baseUnitOfMeasure#145872, unitOfMeasureConversions#145874, systemId#145867]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1633) Filter
Input [4]: [internalUUID#145868, baseUnitOfMeasure#145872, unitOfMeasureConversions#145874, systemId#145867]
Condition : isnotnull(internalUUID#145868)
(1634) Project
Output [3]: [internalUUID#145868, baseUnitOfMeasure#145872, unitOfMeasureConversions#145874]
Input [4]: [internalUUID#145868, baseUnitOfMeasure#145872, unitOfMeasureConversions#145874, systemId#145867]
(1635) Exchange
Input [3]: [internalUUID#145868, baseUnitOfMeasure#145872, unitOfMeasureConversions#145874]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220286]
(1636) BroadcastExchange
Input [3]: [internalUUID#145868, baseUnitOfMeasure#145872, unitOfMeasureConversions#145874]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221319]
(1637) BroadcastHashJoin
Left keys [1]: [product#145840]
Right keys [1]: [internalUUID#145868]
Join type: LeftOuter
Join condition: None
(1638) Project
Output [4]: [product#145840, plant#145841, orderDateTime#145842, filter(unitOfMeasureConversions#145874, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#147942) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#147943)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#145872.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#145872.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#145879]
Input [8]: [product#145840, plant#145841, orderDateTime#145842, _extract_code#147942, _extract_internalRefUUID#147943, internalUUID#145868, baseUnitOfMeasure#145872, unitOfMeasureConversions#145874]
(1639) Generate
Input [4]: [product#145840, plant#145841, orderDateTime#145842, filteredUnitOfMeasureConversions#145879]
Arguments: explode(filteredUnitOfMeasureConversions#145879.quantityNumerator), [product#145840, plant#145841, orderDateTime#145842, filteredUnitOfMeasureConversions#145879], true, [quantityNumerator#145880]
(1640) Project
Output [4]: [product#145840, plant#145841, orderDateTime#145842, filteredUnitOfMeasureConversions#145879.quantityDenominator AS _extract_quantityDenominator#147616]
Input [5]: [product#145840, plant#145841, orderDateTime#145842, filteredUnitOfMeasureConversions#145879, quantityNumerator#145880]
(1641) Generate
Input [4]: [product#145840, plant#145841, orderDateTime#145842, _extract_quantityDenominator#147616]
Arguments: explode(_extract_quantityDenominator#147616), [product#145840, plant#145841, orderDateTime#145842], true, [quantityDenominator#145881]
(1642) Project
Output [3]: [product#145840, plant#145841, orderDateTime#145842]
Input [4]: [product#145840, plant#145841, orderDateTime#145842, quantityDenominator#145881]
(1643) Sort
Input [3]: [product#145840, plant#145841, orderDateTime#145842]
Arguments: [product#145840 ASC NULLS FIRST, plant#145841 ASC NULLS FIRST], false, 0
(1644) SortMergeJoin
Left keys [2]: [productUuid#145834, plantUuid#145832]
Right keys [2]: [product#145840, plant#145841]
Join type: Inner
Join condition: (calculationDateTime#145828 <= orderDateTime#145842)
(1645) Project
Output [4]: [plantUuid#145832 AS plant#145884, productUuid#145834 AS product#145885, storageLocId#145835, calculationDateTime#145828]
Input [7]: [plantUuid#145832, productUuid#145834, calculationDateTime#145828, storageLocId#145835, product#145840, plant#145841, orderDateTime#145842]
(1646) Exchange
Input [4]: [plant#145884, product#145885, storageLocId#145835, calculationDateTime#145828]
Arguments: hashpartitioning(coalesce(plant#145884, ), isnull(plant#145884), coalesce(product#145885, ), isnull(product#145885), coalesce(storageLocId#145835, ), isnull(storageLocId#145835), coalesce(calculationDateTime#145828, 1970-01-01 00:00:00), isnull(calculationDateTime#145828), 25), ENSURE_REQUIREMENTS, [plan_id=221392]
(1647) Sort
Input [4]: [plant#145884, product#145885, storageLocId#145835, calculationDateTime#145828]
Arguments: [coalesce(plant#145884, ) ASC NULLS FIRST, isnull(plant#145884) ASC NULLS FIRST, coalesce(product#145885, ) ASC NULLS FIRST, isnull(product#145885) ASC NULLS FIRST, coalesce(storageLocId#145835, ) ASC NULLS FIRST, isnull(storageLocId#145835) ASC NULLS FIRST, coalesce(calculationDateTime#145828, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#145828) ASC NULLS FIRST], false, 0
(1648) Scan parquet
Output [6]: [internalUUID#145887, product#145888, plant#145889, calculationDateTime#145890, stockQuantities#145891, systemId#145886]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(1649) Filter
Input [6]: [internalUUID#145887, product#145888, plant#145889, calculationDateTime#145890, stockQuantities#145891, systemId#145886]
Condition : (isnotnull(plant#145889.internalRefUUID) AND isnotnull(product#145888.internalRefUUID))
(1650) Project
Output [6]: [systemId#145886, internalUUID#145887, product#145888, plant#145889, calculationDateTime#145890, stockQuantities#145891]
Input [6]: [internalUUID#145887, product#145888, plant#145889, calculationDateTime#145890, stockQuantities#145891, systemId#145886]
(1651) Exchange
Input [6]: [systemId#145886, internalUUID#145887, product#145888, plant#145889, calculationDateTime#145890, stockQuantities#145891]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220298]
(1652) BroadcastExchange
Input [6]: [systemId#145886, internalUUID#145887, product#145888, plant#145889, calculationDateTime#145890, stockQuantities#145891]
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=221357]
(1653) Scan parquet
Output [2]: [marketUnit#145892, distributionCenters#145898]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1654) Filter
Input [2]: [marketUnit#145892, distributionCenters#145898]
Condition : (((marketUnit#145892 <=> Daily_grocery) AND (size(distributionCenters#145898, true) > 0)) AND isnotnull(distributionCenters#145898))
(1655) Project
Output [1]: [distributionCenters#145898]
Input [2]: [marketUnit#145892, distributionCenters#145898]
(1656) Exchange
Input [1]: [distributionCenters#145898]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220302]
(1657) Generate
Input [1]: [distributionCenters#145898]
Arguments: explode(distributionCenters#145898), false, [distributionCenters#145914]
(1658) Filter
Input [1]: [distributionCenters#145914]
Condition : (((size(distributionCenters#145914.storageLocations, true) > 0) AND isnotnull(distributionCenters#145914.storageLocations)) AND isnotnull(distributionCenters#145914.internalRefUUID))
(1659) Project
Output [2]: [distributionCenters#145914.internalRefUUID AS _extract_internalRefUUID#147620, distributionCenters#145914.storageLocations AS _extract_storageLocations#147621]
Input [1]: [distributionCenters#145914]
(1660) Generate
Input [2]: [_extract_internalRefUUID#147620, _extract_storageLocations#147621]
Arguments: explode(_extract_storageLocations#147621), [_extract_internalRefUUID#147620], false, [storageLocations#145915]
(1661) Project
Output [3]: [_extract_internalRefUUID#147620 AS plantUuid#145917, storageLocations#145915.id AS storageLocId#145918, storageLocations#145915.internalRefUUID AS storageLocUuid#145919]
Input [2]: [_extract_internalRefUUID#147620, storageLocations#145915]
(1662) BroadcastExchange
Input [3]: [plantUuid#145917, storageLocId#145918, storageLocUuid#145919]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221353]
(1663) Scan parquet
Output [2]: [product#145920, plant#145921]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1664) Filter
Input [2]: [product#145920, plant#145921]
Condition : isnotnull(plant#145921)
(1665) Exchange
Input [2]: [product#145920, plant#145921]
Arguments: hashpartitioning(product#145920, plant#145921, 25), REPARTITION_BY_NUM, [plan_id=220812]
(1666) Scan parquet
Output [4]: [plant#145926, product#145927, productionAspect#145929, systemId#145924]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1667) Project
Output [4]: [plant#145926.internalRefUUID AS _extract_internalRefUUID#147948, product#145927.internalRefUUID AS _extract_internalRefUUID#147947, productionAspect#145929.productMovementPlants.unitOfIssue.code AS _extract_code#147945, productionAspect#145929.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#147946]
Input [4]: [plant#145926, product#145927, productionAspect#145929, systemId#145924]
(1668) Exchange
Input [4]: [_extract_internalRefUUID#147948, _extract_internalRefUUID#147947, _extract_code#147945, _extract_internalRefUUID#147946]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220314]
(1669) Project
Output [4]: [_extract_code#147945, _extract_internalRefUUID#147946, _extract_internalRefUUID#147947, _extract_internalRefUUID#147948]
Input [4]: [_extract_internalRefUUID#147948, _extract_internalRefUUID#147947, _extract_code#147945, _extract_internalRefUUID#147946]
(1670) BroadcastExchange
Input [4]: [_extract_code#147945, _extract_internalRefUUID#147946, _extract_internalRefUUID#147947, _extract_internalRefUUID#147948]
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=221333]
(1671) BroadcastHashJoin
Left keys [4]: [coalesce(product#145920, ), isnull(product#145920), coalesce(plant#145921, ), isnull(plant#145921)]
Right keys [4]: [coalesce(_extract_internalRefUUID#147947, ), isnull(_extract_internalRefUUID#147947), coalesce(_extract_internalRefUUID#147948, ), isnull(_extract_internalRefUUID#147948)]
Join type: LeftOuter
Join condition: None
(1672) Project
Output [4]: [product#145920, plant#145921, _extract_code#147945, _extract_internalRefUUID#147946]
Input [6]: [product#145920, plant#145921, _extract_code#147945, _extract_internalRefUUID#147946, _extract_internalRefUUID#147947, _extract_internalRefUUID#147948]
(1673) Scan parquet
Output [2]: [internalUUID#145934, systemId#145933]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1674) Project
Output [1]: [internalUUID#145934]
Input [2]: [internalUUID#145934, systemId#145933]
(1675) Exchange
Input [1]: [internalUUID#145934]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220320]
(1676) BroadcastExchange
Input [1]: [internalUUID#145934]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=221337]
(1677) BroadcastHashJoin
Left keys [2]: [coalesce(plant#145921, ), isnull(plant#145921)]
Right keys [2]: [coalesce(internalUUID#145934, ), isnull(internalUUID#145934)]
Join type: LeftOuter
Join condition: None
(1678) Project
Output [4]: [product#145920, plant#145921, _extract_code#147945, _extract_internalRefUUID#147946]
Input [5]: [product#145920, plant#145921, _extract_code#147945, _extract_internalRefUUID#147946, internalUUID#145934]
(1679) Scan parquet
Output [4]: [internalUUID#145948, baseUnitOfMeasure#145952, unitOfMeasureConversions#145954, systemId#145947]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1680) Filter
Input [4]: [internalUUID#145948, baseUnitOfMeasure#145952, unitOfMeasureConversions#145954, systemId#145947]
Condition : isnotnull(internalUUID#145948)
(1681) Project
Output [3]: [internalUUID#145948, baseUnitOfMeasure#145952, unitOfMeasureConversions#145954]
Input [4]: [internalUUID#145948, baseUnitOfMeasure#145952, unitOfMeasureConversions#145954, systemId#145947]
(1682) Exchange
Input [3]: [internalUUID#145948, baseUnitOfMeasure#145952, unitOfMeasureConversions#145954]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220326]
(1683) BroadcastExchange
Input [3]: [internalUUID#145948, baseUnitOfMeasure#145952, unitOfMeasureConversions#145954]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221341]
(1684) BroadcastHashJoin
Left keys [1]: [product#145920]
Right keys [1]: [internalUUID#145948]
Join type: LeftOuter
Join condition: None
(1685) Project
Output [2]: [plant#145921, filter(unitOfMeasureConversions#145954, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#147945) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#147946)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#145952.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#145952.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#145959]
Input [7]: [product#145920, plant#145921, _extract_code#147945, _extract_internalRefUUID#147946, internalUUID#145948, baseUnitOfMeasure#145952, unitOfMeasureConversions#145954]
(1686) Generate
Input [2]: [plant#145921, filteredUnitOfMeasureConversions#145959]
Arguments: explode(filteredUnitOfMeasureConversions#145959.quantityNumerator), [plant#145921, filteredUnitOfMeasureConversions#145959], true, [quantityNumerator#145960]
(1687) Project
Output [2]: [plant#145921, filteredUnitOfMeasureConversions#145959.quantityDenominator AS _extract_quantityDenominator#147622]
Input [3]: [plant#145921, filteredUnitOfMeasureConversions#145959, quantityNumerator#145960]
(1688) Generate
Input [2]: [plant#145921, _extract_quantityDenominator#147622]
Arguments: explode(_extract_quantityDenominator#147622), [plant#145921], true, [quantityDenominator#145961]
(1689) Project
Output [1]: [plant#145921]
Input [2]: [plant#145921, quantityDenominator#145961]
(1690) HashAggregate
Input [1]: [plant#145921]
Keys [1]: [plant#145921]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#145921]
(1691) Exchange
Input [1]: [plant#145921]
Arguments: hashpartitioning(plant#145921, 25), ENSURE_REQUIREMENTS, [plan_id=221350]
(1692) HashAggregate
Input [1]: [plant#145921]
Keys [1]: [plant#145921]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#145921]
(1693) BroadcastHashJoin
Left keys [1]: [plantUuid#145917]
Right keys [1]: [plant#145921]
Join type: Inner
Join condition: None
(1694) Project
Output [3]: [plantUuid#145917, storageLocId#145918, storageLocUuid#145919]
Input [4]: [plantUuid#145917, storageLocId#145918, storageLocUuid#145919, plant#145921]
(1695) BroadcastHashJoin
Left keys [2]: [coalesce(plant#145889.internalRefUUID, ), isnull(plant#145889.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#145917, ), isnull(plantUuid#145917)]
Join type: Inner
Join condition: None
(1696) Generate
Input [9]: [systemId#145886, internalUUID#145887, product#145888, plant#145889, calculationDateTime#145890, stockQuantities#145891, plantUuid#145917, storageLocId#145918, storageLocUuid#145919]
Arguments: explode(filter(stockQuantities#145891, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#145919) AND (lambda x#143085.storageLocation.Id = storageLocId#145918)), lambda x#143085, false))), [systemId#145886, internalUUID#145887, product#145888, plant#145889, calculationDateTime#145890, plantUuid#145917], false, [stockQuantity#145964]
(1697) ObjectHashAggregate
Input [7]: [systemId#145886, internalUUID#145887, product#145888, plant#145889, calculationDateTime#145890, plantUuid#145917, stockQuantity#145964]
Keys [5]: [plantUuid#145917, internalUUID#145887, plant#145889, product#145888, systemId#145886]
Functions [2]: [partial_first(calculationDateTime#145890, false), partial_collect_list(stockQuantity#145964, 0, 0)]
Aggregate Attributes [3]: [first#148699, valueSet#148700, buf#148701]
Results [8]: [plantUuid#145917, internalUUID#145887, plant#145889, product#145888, systemId#145886, first#148702, valueSet#148703, buf#148704]
(1698) ObjectHashAggregate
Input [8]: [plantUuid#145917, internalUUID#145887, plant#145889, product#145888, systemId#145886, first#148702, valueSet#148703, buf#148704]
Keys [5]: [plantUuid#145917, internalUUID#145887, plant#145889, product#145888, systemId#145886]
Functions [2]: [first(calculationDateTime#145890, false), collect_list(stockQuantity#145964, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#145890)()#143100, collect_list(stockQuantity#145964, 0, 0)#143101]
Results [4]: [product#145888, plant#145889, first(calculationDateTime#145890)()#143100 AS calculationDateTime#145965, collect_list(stockQuantity#145964, 0, 0)#143101 AS stockQuantities#145966]
(1699) Filter
Input [4]: [product#145888, plant#145889, calculationDateTime#145965, stockQuantities#145966]
Condition : ((size(stockQuantities#145966, true) > 0) AND isnotnull(calculationDateTime#145965))
(1700) Generate
Input [4]: [product#145888, plant#145889, calculationDateTime#145965, stockQuantities#145966]
Arguments: explode(stockQuantities#145966), [product#145888, plant#145889, calculationDateTime#145965], false, [stockQuantity#145967]
(1701) Filter
Input [4]: [product#145888, plant#145889, calculationDateTime#145965, stockQuantity#145967]
Condition : (((isnotnull(stockQuantity#145967.specialStockIndicator.code) AND isnotnull(stockQuantity#145967.stockType.code)) AND (stockQuantity#145967.specialStockIndicator.code = )) AND (stockQuantity#145967.stockType.code = 01))
(1702) Project
Output [4]: [plant#145889.internalRefUUID AS plantUuid#145969, product#145888.internalRefUUID AS productUuid#145971, calculationDateTime#145965, stockQuantity#145967.storagelocation.id AS storageLocId#145972]
Input [4]: [product#145888, plant#145889, calculationDateTime#145965, stockQuantity#145967]
(1703) Exchange
Input [4]: [plantUuid#145969, productUuid#145971, calculationDateTime#145965, storageLocId#145972]
Arguments: hashpartitioning(productUuid#145971, plantUuid#145969, 25), ENSURE_REQUIREMENTS, [plan_id=221383]
(1704) Sort
Input [4]: [plantUuid#145969, productUuid#145971, calculationDateTime#145965, storageLocId#145972]
Arguments: [productUuid#145971 ASC NULLS FIRST, plantUuid#145969 ASC NULLS FIRST], false, 0
(1705) Scan parquet
Output [3]: [product#145977, plant#145978, orderDateTime#145979]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1706) Filter
Input [3]: [product#145977, plant#145978, orderDateTime#145979]
Condition : ((isnotnull(orderDateTime#145979) AND isnotnull(plant#145978)) AND isnotnull(product#145977))
(1707) Exchange
Input [3]: [product#145977, plant#145978, orderDateTime#145979]
Arguments: hashpartitioning(product#145977, plant#145978, 25), REPARTITION_BY_NUM, [plan_id=220835]
(1708) Scan parquet
Output [4]: [plant#145983, product#145984, productionAspect#145986, systemId#145981]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1709) Project
Output [4]: [plant#145983.internalRefUUID AS _extract_internalRefUUID#147951, product#145984.internalRefUUID AS _extract_internalRefUUID#147952, productionAspect#145986.productMovementPlants.unitOfIssue.code AS _extract_code#147949, productionAspect#145986.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#147950]
Input [4]: [plant#145983, product#145984, productionAspect#145986, systemId#145981]
(1710) Exchange
Input [4]: [_extract_internalRefUUID#147951, _extract_internalRefUUID#147952, _extract_code#147949, _extract_internalRefUUID#147950]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220351]
(1711) Project
Output [4]: [_extract_code#147949, _extract_internalRefUUID#147950, _extract_internalRefUUID#147952, _extract_internalRefUUID#147951]
Input [4]: [_extract_internalRefUUID#147951, _extract_internalRefUUID#147952, _extract_code#147949, _extract_internalRefUUID#147950]
(1712) BroadcastExchange
Input [4]: [_extract_code#147949, _extract_internalRefUUID#147950, _extract_internalRefUUID#147952, _extract_internalRefUUID#147951]
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=221366]
(1713) BroadcastHashJoin
Left keys [4]: [coalesce(product#145977, ), isnull(product#145977), coalesce(plant#145978, ), isnull(plant#145978)]
Right keys [4]: [coalesce(_extract_internalRefUUID#147952, ), isnull(_extract_internalRefUUID#147952), coalesce(_extract_internalRefUUID#147951, ), isnull(_extract_internalRefUUID#147951)]
Join type: LeftOuter
Join condition: None
(1714) Project
Output [5]: [product#145977, plant#145978, orderDateTime#145979, _extract_code#147949, _extract_internalRefUUID#147950]
Input [7]: [product#145977, plant#145978, orderDateTime#145979, _extract_code#147949, _extract_internalRefUUID#147950, _extract_internalRefUUID#147952, _extract_internalRefUUID#147951]
(1715) Scan parquet
Output [2]: [internalUUID#145991, systemId#145990]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1716) Project
Output [1]: [internalUUID#145991]
Input [2]: [internalUUID#145991, systemId#145990]
(1717) Exchange
Input [1]: [internalUUID#145991]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220357]
(1718) BroadcastExchange
Input [1]: [internalUUID#145991]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=221370]
(1719) BroadcastHashJoin
Left keys [2]: [coalesce(plant#145978, ), isnull(plant#145978)]
Right keys [2]: [coalesce(internalUUID#145991, ), isnull(internalUUID#145991)]
Join type: LeftOuter
Join condition: None
(1720) Project
Output [5]: [product#145977, plant#145978, orderDateTime#145979, _extract_code#147949, _extract_internalRefUUID#147950]
Input [6]: [product#145977, plant#145978, orderDateTime#145979, _extract_code#147949, _extract_internalRefUUID#147950, internalUUID#145991]
(1721) Scan parquet
Output [4]: [internalUUID#146005, baseUnitOfMeasure#146009, unitOfMeasureConversions#146011, systemId#146004]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1722) Filter
Input [4]: [internalUUID#146005, baseUnitOfMeasure#146009, unitOfMeasureConversions#146011, systemId#146004]
Condition : isnotnull(internalUUID#146005)
(1723) Project
Output [3]: [internalUUID#146005, baseUnitOfMeasure#146009, unitOfMeasureConversions#146011]
Input [4]: [internalUUID#146005, baseUnitOfMeasure#146009, unitOfMeasureConversions#146011, systemId#146004]
(1724) Exchange
Input [3]: [internalUUID#146005, baseUnitOfMeasure#146009, unitOfMeasureConversions#146011]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220363]
(1725) BroadcastExchange
Input [3]: [internalUUID#146005, baseUnitOfMeasure#146009, unitOfMeasureConversions#146011]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221374]
(1726) BroadcastHashJoin
Left keys [1]: [product#145977]
Right keys [1]: [internalUUID#146005]
Join type: LeftOuter
Join condition: None
(1727) Project
Output [4]: [product#145977, plant#145978, orderDateTime#145979, filter(unitOfMeasureConversions#146011, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#147949) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#147950)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#146009.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#146009.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#146016]
Input [8]: [product#145977, plant#145978, orderDateTime#145979, _extract_code#147949, _extract_internalRefUUID#147950, internalUUID#146005, baseUnitOfMeasure#146009, unitOfMeasureConversions#146011]
(1728) Generate
Input [4]: [product#145977, plant#145978, orderDateTime#145979, filteredUnitOfMeasureConversions#146016]
Arguments: explode(filteredUnitOfMeasureConversions#146016.quantityNumerator), [product#145977, plant#145978, orderDateTime#145979, filteredUnitOfMeasureConversions#146016], true, [quantityNumerator#146017]
(1729) Project
Output [4]: [product#145977, plant#145978, orderDateTime#145979, filteredUnitOfMeasureConversions#146016.quantityDenominator AS _extract_quantityDenominator#147626]
Input [5]: [product#145977, plant#145978, orderDateTime#145979, filteredUnitOfMeasureConversions#146016, quantityNumerator#146017]
(1730) Generate
Input [4]: [product#145977, plant#145978, orderDateTime#145979, _extract_quantityDenominator#147626]
Arguments: explode(_extract_quantityDenominator#147626), [product#145977, plant#145978, orderDateTime#145979], true, [quantityDenominator#146018]
(1731) Project
Output [3]: [product#145977, plant#145978, orderDateTime#145979]
Input [4]: [product#145977, plant#145978, orderDateTime#145979, quantityDenominator#146018]
(1732) Sort
Input [3]: [product#145977, plant#145978, orderDateTime#145979]
Arguments: [product#145977 ASC NULLS FIRST, plant#145978 ASC NULLS FIRST], false, 0
(1733) SortMergeJoin
Left keys [2]: [productUuid#145971, plantUuid#145969]
Right keys [2]: [product#145977, plant#145978]
Join type: Inner
Join condition: (calculationDateTime#145965 <= orderDateTime#145979)
(1734) Project
Output [4]: [plantUuid#145969 AS plant#146021, productUuid#145971 AS product#146022, storageLocId#145972, calculationDateTime#145965]
Input [7]: [plantUuid#145969, productUuid#145971, calculationDateTime#145965, storageLocId#145972, product#145977, plant#145978, orderDateTime#145979]
(1735) HashAggregate
Input [4]: [plant#146021, product#146022, storageLocId#145972, calculationDateTime#145965]
Keys [3]: [plant#146021, product#146022, storageLocId#145972]
Functions [1]: [partial_max(calculationDateTime#145965)]
Aggregate Attributes [1]: [max#148697]
Results [4]: [plant#146021, product#146022, storageLocId#145972, max#148698]
(1736) HashAggregate
Input [4]: [plant#146021, product#146022, storageLocId#145972, max#148698]
Keys [3]: [plant#146021, product#146022, storageLocId#145972]
Functions [1]: [max(calculationDateTime#145965)]
Aggregate Attributes [1]: [max(calculationDateTime#145965)#143178]
Results [4]: [plant#146021, product#146022, storageLocId#145972, max(calculationDateTime#145965)#143178 AS max_calc_datetime#146023]
(1737) Exchange
Input [4]: [plant#146021, product#146022, storageLocId#145972, max_calc_datetime#146023]
Arguments: hashpartitioning(coalesce(plant#146021, ), isnull(plant#146021), coalesce(product#146022, ), isnull(product#146022), coalesce(storageLocId#145972, ), isnull(storageLocId#145972), coalesce(max_calc_datetime#146023, 1970-01-01 00:00:00), isnull(max_calc_datetime#146023), 25), ENSURE_REQUIREMENTS, [plan_id=221393]
(1738) Sort
Input [4]: [plant#146021, product#146022, storageLocId#145972, max_calc_datetime#146023]
Arguments: [coalesce(plant#146021, ) ASC NULLS FIRST, isnull(plant#146021) ASC NULLS FIRST, coalesce(product#146022, ) ASC NULLS FIRST, isnull(product#146022) ASC NULLS FIRST, coalesce(storageLocId#145972, ) ASC NULLS FIRST, isnull(storageLocId#145972) ASC NULLS FIRST, coalesce(max_calc_datetime#146023, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#146023) ASC NULLS FIRST], false, 0
(1739) SortMergeJoin
Left keys [8]: [coalesce(plant#145884, ), isnull(plant#145884), coalesce(product#145885, ), isnull(product#145885), coalesce(storageLocId#145835, ), isnull(storageLocId#145835), coalesce(calculationDateTime#145828, 1970-01-01 00:00:00), isnull(calculationDateTime#145828)]
Right keys [8]: [coalesce(plant#146021, ), isnull(plant#146021), coalesce(product#146022, ), isnull(product#146022), coalesce(storageLocId#145972, ), isnull(storageLocId#145972), coalesce(max_calc_datetime#146023, 1970-01-01 00:00:00), isnull(max_calc_datetime#146023)]
Join type: Inner
Join condition: None
(1740) Project
Output [3]: [plant#145884, product#145885, calculationDateTime#145828]
Input [8]: [plant#145884, product#145885, storageLocId#145835, calculationDateTime#145828, plant#146021, product#146022, storageLocId#145972, max_calc_datetime#146023]
(1741) HashAggregate
Input [3]: [plant#145884, product#145885, calculationDateTime#145828]
Keys [2]: [product#145885, plant#145884]
Functions [1]: [partial_min(calculationDateTime#145828)]
Aggregate Attributes [1]: [min#148689]
Results [3]: [product#145885, plant#145884, min#148690]
(1742) Exchange
Input [3]: [product#145885, plant#145884, min#148690]
Arguments: hashpartitioning(product#145885, plant#145884, 25), ENSURE_REQUIREMENTS, [plan_id=221400]
(1743) HashAggregate
Input [3]: [product#145885, plant#145884, min#148690]
Keys [2]: [product#145885, plant#145884]
Functions [1]: [min(calculationDateTime#145828)]
Aggregate Attributes [1]: [min(calculationDateTime#145828)#143334]
Results [3]: [product#145885, plant#145884, min(calculationDateTime#145828)#143334 AS minCalculationDateTime#146025]
(1744) Sort
Input [3]: [product#145885, plant#145884, minCalculationDateTime#146025]
Arguments: [product#145885 ASC NULLS FIRST, plant#145884 ASC NULLS FIRST], false, 0
(1745) SortMergeJoin
Left keys [2]: [product#145705, plant#145706]
Right keys [2]: [product#145885, plant#145884]
Join type: LeftOuter
Join condition: None
(1746) Project
Output [3]: [product#145705, plant#145706, CASE WHEN isnotnull(minCalculationDateTime#146025) THEN minCalculationDateTime#146025 ELSE orderDateTime#145707 END AS stockDatetime#146027]
Input [6]: [product#145705, plant#145706, orderDateTime#145707, product#145885, plant#145884, minCalculationDateTime#146025]
(1747) Exchange
Input [3]: [product#145705, plant#145706, stockDatetime#146027]
Arguments: hashpartitioning(coalesce(plant#145706, ), isnull(plant#145706), coalesce(product#145705, ), isnull(product#145705), 25), ENSURE_REQUIREMENTS, [plan_id=221564]
(1748) Sort
Input [3]: [product#145705, plant#145706, stockDatetime#146027]
Arguments: [coalesce(plant#145706, ) ASC NULLS FIRST, isnull(plant#145706) ASC NULLS FIRST, coalesce(product#145705, ) ASC NULLS FIRST, isnull(product#145705) ASC NULLS FIRST], false, 0
(1749) Scan parquet
Output [3]: [product#146030, plant#146031, orderDateTime#146032]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1750) Exchange
Input [3]: [product#146030, plant#146031, orderDateTime#146032]
Arguments: hashpartitioning(product#146030, plant#146031, 25), REPARTITION_BY_NUM, [plan_id=220381]
(1751) Scan parquet
Output [8]: [internalUUID#146035, plant#146036, product#146037, blockedForReplenishmentStartingFrom#146038, productionAspect#146039, salesPlant#146040, listing#146041, systemId#146034]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>
(1752) Project
Output [8]: [systemId#146034, internalUUID#146035, plant#146036, product#146037, blockedForReplenishmentStartingFrom#146038, productionAspect#146039, salesPlant#146040, listing#146041]
Input [8]: [internalUUID#146035, plant#146036, product#146037, blockedForReplenishmentStartingFrom#146038, productionAspect#146039, salesPlant#146040, listing#146041, systemId#146034]
(1753) Exchange
Input [8]: [systemId#146034, internalUUID#146035, plant#146036, product#146037, blockedForReplenishmentStartingFrom#146038, productionAspect#146039, salesPlant#146040, listing#146041]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220384]
(1754) Project
Output [1]: [struct(systemId, systemId#146034, internalUUID, internalUUID#146035, plant, plant#146036, product, product#146037, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#146038, productionAspect, productionAspect#146039, salesPlant, salesPlant#146040, listing, listing#146041) AS productPlant#146042]
Input [8]: [systemId#146034, internalUUID#146035, plant#146036, product#146037, blockedForReplenishmentStartingFrom#146038, productionAspect#146039, salesPlant#146040, listing#146041]
(1755) BroadcastExchange
Input [1]: [productPlant#146042]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=221408]
(1756) BroadcastHashJoin
Left keys [4]: [coalesce(product#146030, ), isnull(product#146030), coalesce(plant#146031, ), isnull(plant#146031)]
Right keys [4]: [coalesce(productPlant#146042.product.internalRefUUID, ), isnull(productPlant#146042.product.internalRefUUID), coalesce(productPlant#146042.plant.internalRefUUID, ), isnull(productPlant#146042.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1757) Scan parquet
Output [3]: [internalUUID#146044, address#146050, systemId#146043]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string,address:struct<timeZone:struct<code:string>>>
(1758) Project
Output [2]: [internalUUID#146044, address#146050.timeZone.code AS timezonecode#146055]
Input [3]: [internalUUID#146044, address#146050, systemId#146043]
(1759) Exchange
Input [2]: [internalUUID#146044, timezonecode#146055]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220389]
(1760) BroadcastExchange
Input [2]: [internalUUID#146044, timezonecode#146055]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=221411]
(1761) BroadcastHashJoin
Left keys [2]: [coalesce(plant#146031, ), isnull(plant#146031)]
Right keys [2]: [coalesce(internalUUID#146044, ), isnull(internalUUID#146044)]
Join type: LeftOuter
Join condition: None
(1762) Project
Output [5]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, CASE WHEN isnotnull(timezonecode#146055) THEN timezonecode#146055 ELSE UTC END AS timezonecode#146056]
Input [6]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, internalUUID#146044, timezonecode#146055]
(1763) Scan parquet
Output [4]: [internalUUID#146058, baseUnitOfMeasure#146062, unitOfMeasureConversions#146064, systemId#146057]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1764) Filter
Input [4]: [internalUUID#146058, baseUnitOfMeasure#146062, unitOfMeasureConversions#146064, systemId#146057]
Condition : isnotnull(internalUUID#146058)
(1765) Project
Output [3]: [internalUUID#146058, baseUnitOfMeasure#146062, unitOfMeasureConversions#146064]
Input [4]: [internalUUID#146058, baseUnitOfMeasure#146062, unitOfMeasureConversions#146064, systemId#146057]
(1766) Exchange
Input [3]: [internalUUID#146058, baseUnitOfMeasure#146062, unitOfMeasureConversions#146064]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220395]
(1767) BroadcastExchange
Input [3]: [internalUUID#146058, baseUnitOfMeasure#146062, unitOfMeasureConversions#146064]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221415]
(1768) BroadcastHashJoin
Left keys [1]: [product#146030]
Right keys [1]: [internalUUID#146058]
Join type: LeftOuter
Join condition: None
(1769) Project
Output [6]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, filter(unitOfMeasureConversions#146064, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#146042.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#146042.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#146062.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#146062.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#146069]
Input [8]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, internalUUID#146058, baseUnitOfMeasure#146062, unitOfMeasureConversions#146064]
(1770) Project
Output [7]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, filteredUnitOfMeasureConversions#146069.quantityDenominator AS _extract_quantityDenominator#147738, filteredUnitOfMeasureConversions#146069.quantityNumerator AS _extract_quantityNumerator#147739]
Input [6]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, filteredUnitOfMeasureConversions#146069]
(1771) Generate
Input [7]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, _extract_quantityDenominator#147738, _extract_quantityNumerator#147739]
Arguments: explode(_extract_quantityNumerator#147739), [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, _extract_quantityDenominator#147738], true, [quantityNumerator#146070]
(1772) Generate
Input [7]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, _extract_quantityDenominator#147738, quantityNumerator#146070]
Arguments: explode(_extract_quantityDenominator#147738), [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, quantityNumerator#146070], true, [quantityDenominator#146071]
(1773) Project
Output [6]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, (cast(quantityNumerator#146070 as double) / cast(quantityDenominator#146071 as double)) AS outboundUnit#146072]
Input [7]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, quantityNumerator#146070, quantityDenominator#146071]
(1774) Project
Output [6]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, CASE WHEN (isnull(outboundUnit#146072) OR (outboundUnit#146072 <= 0.0)) THEN 1.0 ELSE outboundUnit#146072 END AS outboundUnit#146073]
Input [6]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146072]
(1775) Sort
Input [6]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146073]
Arguments: [product#146030 ASC NULLS FIRST, plant#146031 ASC NULLS FIRST], false, 0
(1776) Scan parquet
Output [6]: [internalUUID#146075, product#146076, plant#146077, calculationDateTime#146078, stockQuantities#146079, systemId#146074]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(1777) Filter
Input [6]: [internalUUID#146075, product#146076, plant#146077, calculationDateTime#146078, stockQuantities#146079, systemId#146074]
Condition : (isnotnull(plant#146077.internalRefUUID) AND isnotnull(product#146076.internalRefUUID))
(1778) Project
Output [6]: [systemId#146074, internalUUID#146075, product#146076, plant#146077, calculationDateTime#146078, stockQuantities#146079]
Input [6]: [internalUUID#146075, product#146076, plant#146077, calculationDateTime#146078, stockQuantities#146079, systemId#146074]
(1779) Exchange
Input [6]: [systemId#146074, internalUUID#146075, product#146076, plant#146077, calculationDateTime#146078, stockQuantities#146079]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220406]
(1780) BroadcastExchange
Input [6]: [systemId#146074, internalUUID#146075, product#146076, plant#146077, calculationDateTime#146078, stockQuantities#146079]
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=221447]
(1781) Scan parquet
Output [2]: [marketUnit#146080, distributionCenters#146086]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1782) Filter
Input [2]: [marketUnit#146080, distributionCenters#146086]
Condition : (((marketUnit#146080 <=> Daily_grocery) AND (size(distributionCenters#146086, true) > 0)) AND isnotnull(distributionCenters#146086))
(1783) Project
Output [1]: [distributionCenters#146086]
Input [2]: [marketUnit#146080, distributionCenters#146086]
(1784) Exchange
Input [1]: [distributionCenters#146086]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220410]
(1785) Generate
Input [1]: [distributionCenters#146086]
Arguments: explode(distributionCenters#146086), false, [distributionCenters#146102]
(1786) Filter
Input [1]: [distributionCenters#146102]
Condition : (((size(distributionCenters#146102.storageLocations, true) > 0) AND isnotnull(distributionCenters#146102.storageLocations)) AND isnotnull(distributionCenters#146102.internalRefUUID))
(1787) Project
Output [2]: [distributionCenters#146102.internalRefUUID AS _extract_internalRefUUID#147632, distributionCenters#146102.storageLocations AS _extract_storageLocations#147633]
Input [1]: [distributionCenters#146102]
(1788) Generate
Input [2]: [_extract_internalRefUUID#147632, _extract_storageLocations#147633]
Arguments: explode(_extract_storageLocations#147633), [_extract_internalRefUUID#147632], false, [storageLocations#146103]
(1789) Project
Output [3]: [_extract_internalRefUUID#147632 AS plantUuid#146105, storageLocations#146103.id AS storageLocId#146106, storageLocations#146103.internalRefUUID AS storageLocUuid#146107]
Input [2]: [_extract_internalRefUUID#147632, storageLocations#146103]
(1790) BroadcastExchange
Input [3]: [plantUuid#146105, storageLocId#146106, storageLocUuid#146107]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221443]
(1791) Scan parquet
Output [2]: [product#146108, plant#146109]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1792) Filter
Input [2]: [product#146108, plant#146109]
Condition : isnotnull(plant#146109)
(1793) Exchange
Input [2]: [product#146108, plant#146109]
Arguments: hashpartitioning(product#146108, plant#146109, 25), REPARTITION_BY_NUM, [plan_id=220856]
(1794) Scan parquet
Output [4]: [plant#146114, product#146115, productionAspect#146117, systemId#146112]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1795) Project
Output [4]: [plant#146114.internalRefUUID AS _extract_internalRefUUID#147955, product#146115.internalRefUUID AS _extract_internalRefUUID#147956, productionAspect#146117.productMovementPlants.unitOfIssue.code AS _extract_code#147953, productionAspect#146117.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#147954]
Input [4]: [plant#146114, product#146115, productionAspect#146117, systemId#146112]
(1796) Exchange
Input [4]: [_extract_internalRefUUID#147955, _extract_internalRefUUID#147956, _extract_code#147953, _extract_internalRefUUID#147954]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220422]
(1797) Project
Output [4]: [_extract_code#147953, _extract_internalRefUUID#147954, _extract_internalRefUUID#147956, _extract_internalRefUUID#147955]
Input [4]: [_extract_internalRefUUID#147955, _extract_internalRefUUID#147956, _extract_code#147953, _extract_internalRefUUID#147954]
(1798) BroadcastExchange
Input [4]: [_extract_code#147953, _extract_internalRefUUID#147954, _extract_internalRefUUID#147956, _extract_internalRefUUID#147955]
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=221423]
(1799) BroadcastHashJoin
Left keys [4]: [coalesce(product#146108, ), isnull(product#146108), coalesce(plant#146109, ), isnull(plant#146109)]
Right keys [4]: [coalesce(_extract_internalRefUUID#147956, ), isnull(_extract_internalRefUUID#147956), coalesce(_extract_internalRefUUID#147955, ), isnull(_extract_internalRefUUID#147955)]
Join type: LeftOuter
Join condition: None
(1800) Project
Output [4]: [product#146108, plant#146109, _extract_code#147953, _extract_internalRefUUID#147954]
Input [6]: [product#146108, plant#146109, _extract_code#147953, _extract_internalRefUUID#147954, _extract_internalRefUUID#147956, _extract_internalRefUUID#147955]
(1801) Scan parquet
Output [2]: [internalUUID#146122, systemId#146121]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1802) Project
Output [1]: [internalUUID#146122]
Input [2]: [internalUUID#146122, systemId#146121]
(1803) Exchange
Input [1]: [internalUUID#146122]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220428]
(1804) BroadcastExchange
Input [1]: [internalUUID#146122]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=221427]
(1805) BroadcastHashJoin
Left keys [2]: [coalesce(plant#146109, ), isnull(plant#146109)]
Right keys [2]: [coalesce(internalUUID#146122, ), isnull(internalUUID#146122)]
Join type: LeftOuter
Join condition: None
(1806) Project
Output [4]: [product#146108, plant#146109, _extract_code#147953, _extract_internalRefUUID#147954]
Input [5]: [product#146108, plant#146109, _extract_code#147953, _extract_internalRefUUID#147954, internalUUID#146122]
(1807) Scan parquet
Output [4]: [internalUUID#146136, baseUnitOfMeasure#146140, unitOfMeasureConversions#146142, systemId#146135]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1808) Filter
Input [4]: [internalUUID#146136, baseUnitOfMeasure#146140, unitOfMeasureConversions#146142, systemId#146135]
Condition : isnotnull(internalUUID#146136)
(1809) Project
Output [3]: [internalUUID#146136, baseUnitOfMeasure#146140, unitOfMeasureConversions#146142]
Input [4]: [internalUUID#146136, baseUnitOfMeasure#146140, unitOfMeasureConversions#146142, systemId#146135]
(1810) Exchange
Input [3]: [internalUUID#146136, baseUnitOfMeasure#146140, unitOfMeasureConversions#146142]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220434]
(1811) BroadcastExchange
Input [3]: [internalUUID#146136, baseUnitOfMeasure#146140, unitOfMeasureConversions#146142]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221431]
(1812) BroadcastHashJoin
Left keys [1]: [product#146108]
Right keys [1]: [internalUUID#146136]
Join type: LeftOuter
Join condition: None
(1813) Project
Output [2]: [plant#146109, filter(unitOfMeasureConversions#146142, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#147953) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#147954)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#146140.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#146140.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#146147]
Input [7]: [product#146108, plant#146109, _extract_code#147953, _extract_internalRefUUID#147954, internalUUID#146136, baseUnitOfMeasure#146140, unitOfMeasureConversions#146142]
(1814) Generate
Input [2]: [plant#146109, filteredUnitOfMeasureConversions#146147]
Arguments: explode(filteredUnitOfMeasureConversions#146147.quantityNumerator), [plant#146109, filteredUnitOfMeasureConversions#146147], true, [quantityNumerator#146148]
(1815) Project
Output [2]: [plant#146109, filteredUnitOfMeasureConversions#146147.quantityDenominator AS _extract_quantityDenominator#147634]
Input [3]: [plant#146109, filteredUnitOfMeasureConversions#146147, quantityNumerator#146148]
(1816) Generate
Input [2]: [plant#146109, _extract_quantityDenominator#147634]
Arguments: explode(_extract_quantityDenominator#147634), [plant#146109], true, [quantityDenominator#146149]
(1817) Project
Output [1]: [plant#146109]
Input [2]: [plant#146109, quantityDenominator#146149]
(1818) HashAggregate
Input [1]: [plant#146109]
Keys [1]: [plant#146109]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#146109]
(1819) Exchange
Input [1]: [plant#146109]
Arguments: hashpartitioning(plant#146109, 25), ENSURE_REQUIREMENTS, [plan_id=221440]
(1820) HashAggregate
Input [1]: [plant#146109]
Keys [1]: [plant#146109]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#146109]
(1821) BroadcastHashJoin
Left keys [1]: [plantUuid#146105]
Right keys [1]: [plant#146109]
Join type: Inner
Join condition: None
(1822) Project
Output [3]: [plantUuid#146105, storageLocId#146106, storageLocUuid#146107]
Input [4]: [plantUuid#146105, storageLocId#146106, storageLocUuid#146107, plant#146109]
(1823) BroadcastHashJoin
Left keys [2]: [coalesce(plant#146077.internalRefUUID, ), isnull(plant#146077.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#146105, ), isnull(plantUuid#146105)]
Join type: Inner
Join condition: None
(1824) Generate
Input [9]: [systemId#146074, internalUUID#146075, product#146076, plant#146077, calculationDateTime#146078, stockQuantities#146079, plantUuid#146105, storageLocId#146106, storageLocUuid#146107]
Arguments: explode(filter(stockQuantities#146079, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#146107) AND (lambda x#143085.storageLocation.Id = storageLocId#146106)), lambda x#143085, false))), [systemId#146074, internalUUID#146075, product#146076, plant#146077, calculationDateTime#146078, plantUuid#146105], false, [stockQuantity#146152]
(1825) ObjectHashAggregate
Input [7]: [systemId#146074, internalUUID#146075, product#146076, plant#146077, calculationDateTime#146078, plantUuid#146105, stockQuantity#146152]
Keys [5]: [plantUuid#146105, internalUUID#146075, plant#146077, product#146076, systemId#146074]
Functions [2]: [partial_first(calculationDateTime#146078, false), partial_collect_list(stockQuantity#146152, 0, 0)]
Aggregate Attributes [3]: [first#148713, valueSet#148714, buf#148715]
Results [8]: [plantUuid#146105, internalUUID#146075, plant#146077, product#146076, systemId#146074, first#148716, valueSet#148717, buf#148718]
(1826) ObjectHashAggregate
Input [8]: [plantUuid#146105, internalUUID#146075, plant#146077, product#146076, systemId#146074, first#148716, valueSet#148717, buf#148718]
Keys [5]: [plantUuid#146105, internalUUID#146075, plant#146077, product#146076, systemId#146074]
Functions [2]: [first(calculationDateTime#146078, false), collect_list(stockQuantity#146152, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#146078)()#143100, collect_list(stockQuantity#146152, 0, 0)#143101]
Results [4]: [product#146076, plant#146077, first(calculationDateTime#146078)()#143100 AS calculationDateTime#146153, collect_list(stockQuantity#146152, 0, 0)#143101 AS stockQuantities#146154]
(1827) Filter
Input [4]: [product#146076, plant#146077, calculationDateTime#146153, stockQuantities#146154]
Condition : ((size(stockQuantities#146154, true) > 0) AND isnotnull(calculationDateTime#146153))
(1828) Generate
Input [4]: [product#146076, plant#146077, calculationDateTime#146153, stockQuantities#146154]
Arguments: explode(stockQuantities#146154), [product#146076, plant#146077, calculationDateTime#146153], false, [stockQuantity#146155]
(1829) Filter
Input [4]: [product#146076, plant#146077, calculationDateTime#146153, stockQuantity#146155]
Condition : (((isnotnull(stockQuantity#146155.specialStockIndicator.code) AND isnotnull(stockQuantity#146155.stockType.code)) AND (stockQuantity#146155.specialStockIndicator.code = )) AND (stockQuantity#146155.stockType.code = 01))
(1830) Project
Output [5]: [plant#146077.internalRefUUID AS plantUuid#146157, product#146076.internalRefUUID AS productUuid#146159, calculationDateTime#146153, stockQuantity#146155.storagelocation.id AS storageLocId#146160, stockQuantity#146155.quantity.measure AS quantity#146162]
Input [4]: [product#146076, plant#146077, calculationDateTime#146153, stockQuantity#146155]
(1831) Exchange
Input [5]: [plantUuid#146157, productUuid#146159, calculationDateTime#146153, storageLocId#146160, quantity#146162]
Arguments: hashpartitioning(productUuid#146159, plantUuid#146157, 25), ENSURE_REQUIREMENTS, [plan_id=221473]
(1832) Sort
Input [5]: [plantUuid#146157, productUuid#146159, calculationDateTime#146153, storageLocId#146160, quantity#146162]
Arguments: [productUuid#146159 ASC NULLS FIRST, plantUuid#146157 ASC NULLS FIRST], false, 0
(1833) Scan parquet
Output [3]: [product#146165, plant#146166, orderDateTime#146167]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1834) Filter
Input [3]: [product#146165, plant#146166, orderDateTime#146167]
Condition : ((isnotnull(orderDateTime#146167) AND isnotnull(plant#146166)) AND isnotnull(product#146165))
(1835) Exchange
Input [3]: [product#146165, plant#146166, orderDateTime#146167]
Arguments: hashpartitioning(product#146165, plant#146166, 25), REPARTITION_BY_NUM, [plan_id=220879]
(1836) Scan parquet
Output [4]: [plant#146171, product#146172, productionAspect#146174, systemId#146169]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1837) Project
Output [4]: [plant#146171.internalRefUUID AS _extract_internalRefUUID#147957, product#146172.internalRefUUID AS _extract_internalRefUUID#147960, productionAspect#146174.productMovementPlants.unitOfIssue.code AS _extract_code#147958, productionAspect#146174.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#147959]
Input [4]: [plant#146171, product#146172, productionAspect#146174, systemId#146169]
(1838) Exchange
Input [4]: [_extract_internalRefUUID#147957, _extract_internalRefUUID#147960, _extract_code#147958, _extract_internalRefUUID#147959]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220459]
(1839) Project
Output [4]: [_extract_code#147958, _extract_internalRefUUID#147959, _extract_internalRefUUID#147960, _extract_internalRefUUID#147957]
Input [4]: [_extract_internalRefUUID#147957, _extract_internalRefUUID#147960, _extract_code#147958, _extract_internalRefUUID#147959]
(1840) BroadcastExchange
Input [4]: [_extract_code#147958, _extract_internalRefUUID#147959, _extract_internalRefUUID#147960, _extract_internalRefUUID#147957]
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=221456]
(1841) BroadcastHashJoin
Left keys [4]: [coalesce(product#146165, ), isnull(product#146165), coalesce(plant#146166, ), isnull(plant#146166)]
Right keys [4]: [coalesce(_extract_internalRefUUID#147960, ), isnull(_extract_internalRefUUID#147960), coalesce(_extract_internalRefUUID#147957, ), isnull(_extract_internalRefUUID#147957)]
Join type: LeftOuter
Join condition: None
(1842) Project
Output [5]: [product#146165, plant#146166, orderDateTime#146167, _extract_code#147958, _extract_internalRefUUID#147959]
Input [7]: [product#146165, plant#146166, orderDateTime#146167, _extract_code#147958, _extract_internalRefUUID#147959, _extract_internalRefUUID#147960, _extract_internalRefUUID#147957]
(1843) Scan parquet
Output [2]: [internalUUID#146179, systemId#146178]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1844) Project
Output [1]: [internalUUID#146179]
Input [2]: [internalUUID#146179, systemId#146178]
(1845) Exchange
Input [1]: [internalUUID#146179]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220465]
(1846) BroadcastExchange
Input [1]: [internalUUID#146179]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=221460]
(1847) BroadcastHashJoin
Left keys [2]: [coalesce(plant#146166, ), isnull(plant#146166)]
Right keys [2]: [coalesce(internalUUID#146179, ), isnull(internalUUID#146179)]
Join type: LeftOuter
Join condition: None
(1848) Project
Output [5]: [product#146165, plant#146166, orderDateTime#146167, _extract_code#147958, _extract_internalRefUUID#147959]
Input [6]: [product#146165, plant#146166, orderDateTime#146167, _extract_code#147958, _extract_internalRefUUID#147959, internalUUID#146179]
(1849) Scan parquet
Output [4]: [internalUUID#146193, baseUnitOfMeasure#146197, unitOfMeasureConversions#146199, systemId#146192]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1850) Filter
Input [4]: [internalUUID#146193, baseUnitOfMeasure#146197, unitOfMeasureConversions#146199, systemId#146192]
Condition : isnotnull(internalUUID#146193)
(1851) Project
Output [3]: [internalUUID#146193, baseUnitOfMeasure#146197, unitOfMeasureConversions#146199]
Input [4]: [internalUUID#146193, baseUnitOfMeasure#146197, unitOfMeasureConversions#146199, systemId#146192]
(1852) Exchange
Input [3]: [internalUUID#146193, baseUnitOfMeasure#146197, unitOfMeasureConversions#146199]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220471]
(1853) BroadcastExchange
Input [3]: [internalUUID#146193, baseUnitOfMeasure#146197, unitOfMeasureConversions#146199]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221464]
(1854) BroadcastHashJoin
Left keys [1]: [product#146165]
Right keys [1]: [internalUUID#146193]
Join type: LeftOuter
Join condition: None
(1855) Project
Output [4]: [product#146165, plant#146166, orderDateTime#146167, filter(unitOfMeasureConversions#146199, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#147958) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#147959)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#146197.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#146197.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#146204]
Input [8]: [product#146165, plant#146166, orderDateTime#146167, _extract_code#147958, _extract_internalRefUUID#147959, internalUUID#146193, baseUnitOfMeasure#146197, unitOfMeasureConversions#146199]
(1856) Generate
Input [4]: [product#146165, plant#146166, orderDateTime#146167, filteredUnitOfMeasureConversions#146204]
Arguments: explode(filteredUnitOfMeasureConversions#146204.quantityNumerator), [product#146165, plant#146166, orderDateTime#146167, filteredUnitOfMeasureConversions#146204], true, [quantityNumerator#146205]
(1857) Project
Output [4]: [product#146165, plant#146166, orderDateTime#146167, filteredUnitOfMeasureConversions#146204.quantityDenominator AS _extract_quantityDenominator#147638]
Input [5]: [product#146165, plant#146166, orderDateTime#146167, filteredUnitOfMeasureConversions#146204, quantityNumerator#146205]
(1858) Generate
Input [4]: [product#146165, plant#146166, orderDateTime#146167, _extract_quantityDenominator#147638]
Arguments: explode(_extract_quantityDenominator#147638), [product#146165, plant#146166, orderDateTime#146167], true, [quantityDenominator#146206]
(1859) Project
Output [3]: [product#146165, plant#146166, orderDateTime#146167]
Input [4]: [product#146165, plant#146166, orderDateTime#146167, quantityDenominator#146206]
(1860) Sort
Input [3]: [product#146165, plant#146166, orderDateTime#146167]
Arguments: [product#146165 ASC NULLS FIRST, plant#146166 ASC NULLS FIRST], false, 0
(1861) SortMergeJoin
Left keys [2]: [productUuid#146159, plantUuid#146157]
Right keys [2]: [product#146165, plant#146166]
Join type: Inner
Join condition: (calculationDateTime#146153 <= orderDateTime#146167)
(1862) Project
Output [5]: [plantUuid#146157 AS plant#146209, productUuid#146159 AS product#146210, storageLocId#146160, calculationDateTime#146153, quantity#146162]
Input [8]: [plantUuid#146157, productUuid#146159, calculationDateTime#146153, storageLocId#146160, quantity#146162, product#146165, plant#146166, orderDateTime#146167]
(1863) Exchange
Input [5]: [plant#146209, product#146210, storageLocId#146160, calculationDateTime#146153, quantity#146162]
Arguments: hashpartitioning(coalesce(plant#146209, ), isnull(plant#146209), coalesce(product#146210, ), isnull(product#146210), coalesce(storageLocId#146160, ), isnull(storageLocId#146160), coalesce(calculationDateTime#146153, 1970-01-01 00:00:00), isnull(calculationDateTime#146153), 25), ENSURE_REQUIREMENTS, [plan_id=221537]
(1864) Sort
Input [5]: [plant#146209, product#146210, storageLocId#146160, calculationDateTime#146153, quantity#146162]
Arguments: [coalesce(plant#146209, ) ASC NULLS FIRST, isnull(plant#146209) ASC NULLS FIRST, coalesce(product#146210, ) ASC NULLS FIRST, isnull(product#146210) ASC NULLS FIRST, coalesce(storageLocId#146160, ) ASC NULLS FIRST, isnull(storageLocId#146160) ASC NULLS FIRST, coalesce(calculationDateTime#146153, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#146153) ASC NULLS FIRST], false, 0
(1865) Scan parquet
Output [6]: [internalUUID#146212, product#146213, plant#146214, calculationDateTime#146215, stockQuantities#146216, systemId#146211]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(1866) Filter
Input [6]: [internalUUID#146212, product#146213, plant#146214, calculationDateTime#146215, stockQuantities#146216, systemId#146211]
Condition : (isnotnull(plant#146214.internalRefUUID) AND isnotnull(product#146213.internalRefUUID))
(1867) Project
Output [6]: [systemId#146211, internalUUID#146212, product#146213, plant#146214, calculationDateTime#146215, stockQuantities#146216]
Input [6]: [internalUUID#146212, product#146213, plant#146214, calculationDateTime#146215, stockQuantities#146216, systemId#146211]
(1868) Exchange
Input [6]: [systemId#146211, internalUUID#146212, product#146213, plant#146214, calculationDateTime#146215, stockQuantities#146216]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220483]
(1869) BroadcastExchange
Input [6]: [systemId#146211, internalUUID#146212, product#146213, plant#146214, calculationDateTime#146215, stockQuantities#146216]
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=221502]
(1870) Scan parquet
Output [2]: [marketUnit#146217, distributionCenters#146223]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1871) Filter
Input [2]: [marketUnit#146217, distributionCenters#146223]
Condition : (((marketUnit#146217 <=> Daily_grocery) AND (size(distributionCenters#146223, true) > 0)) AND isnotnull(distributionCenters#146223))
(1872) Project
Output [1]: [distributionCenters#146223]
Input [2]: [marketUnit#146217, distributionCenters#146223]
(1873) Exchange
Input [1]: [distributionCenters#146223]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220487]
(1874) Generate
Input [1]: [distributionCenters#146223]
Arguments: explode(distributionCenters#146223), false, [distributionCenters#146239]
(1875) Filter
Input [1]: [distributionCenters#146239]
Condition : (((size(distributionCenters#146239.storageLocations, true) > 0) AND isnotnull(distributionCenters#146239.storageLocations)) AND isnotnull(distributionCenters#146239.internalRefUUID))
(1876) Project
Output [2]: [distributionCenters#146239.internalRefUUID AS _extract_internalRefUUID#147642, distributionCenters#146239.storageLocations AS _extract_storageLocations#147643]
Input [1]: [distributionCenters#146239]
(1877) Generate
Input [2]: [_extract_internalRefUUID#147642, _extract_storageLocations#147643]
Arguments: explode(_extract_storageLocations#147643), [_extract_internalRefUUID#147642], false, [storageLocations#146240]
(1878) Project
Output [3]: [_extract_internalRefUUID#147642 AS plantUuid#146242, storageLocations#146240.id AS storageLocId#146243, storageLocations#146240.internalRefUUID AS storageLocUuid#146244]
Input [2]: [_extract_internalRefUUID#147642, storageLocations#146240]
(1879) BroadcastExchange
Input [3]: [plantUuid#146242, storageLocId#146243, storageLocUuid#146244]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221498]
(1880) Scan parquet
Output [2]: [product#146245, plant#146246]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1881) Filter
Input [2]: [product#146245, plant#146246]
Condition : isnotnull(plant#146246)
(1882) Exchange
Input [2]: [product#146245, plant#146246]
Arguments: hashpartitioning(product#146245, plant#146246, 25), REPARTITION_BY_NUM, [plan_id=220892]
(1883) Scan parquet
Output [4]: [plant#146251, product#146252, productionAspect#146254, systemId#146249]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1884) Project
Output [4]: [plant#146251.internalRefUUID AS _extract_internalRefUUID#147962, product#146252.internalRefUUID AS _extract_internalRefUUID#147961, productionAspect#146254.productMovementPlants.unitOfIssue.code AS _extract_code#147963, productionAspect#146254.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#147964]
Input [4]: [plant#146251, product#146252, productionAspect#146254, systemId#146249]
(1885) Exchange
Input [4]: [_extract_internalRefUUID#147962, _extract_internalRefUUID#147961, _extract_code#147963, _extract_internalRefUUID#147964]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220499]
(1886) Project
Output [4]: [_extract_code#147963, _extract_internalRefUUID#147964, _extract_internalRefUUID#147961, _extract_internalRefUUID#147962]
Input [4]: [_extract_internalRefUUID#147962, _extract_internalRefUUID#147961, _extract_code#147963, _extract_internalRefUUID#147964]
(1887) BroadcastExchange
Input [4]: [_extract_code#147963, _extract_internalRefUUID#147964, _extract_internalRefUUID#147961, _extract_internalRefUUID#147962]
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=221478]
(1888) BroadcastHashJoin
Left keys [4]: [coalesce(product#146245, ), isnull(product#146245), coalesce(plant#146246, ), isnull(plant#146246)]
Right keys [4]: [coalesce(_extract_internalRefUUID#147961, ), isnull(_extract_internalRefUUID#147961), coalesce(_extract_internalRefUUID#147962, ), isnull(_extract_internalRefUUID#147962)]
Join type: LeftOuter
Join condition: None
(1889) Project
Output [4]: [product#146245, plant#146246, _extract_code#147963, _extract_internalRefUUID#147964]
Input [6]: [product#146245, plant#146246, _extract_code#147963, _extract_internalRefUUID#147964, _extract_internalRefUUID#147961, _extract_internalRefUUID#147962]
(1890) Scan parquet
Output [2]: [internalUUID#146259, systemId#146258]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1891) Project
Output [1]: [internalUUID#146259]
Input [2]: [internalUUID#146259, systemId#146258]
(1892) Exchange
Input [1]: [internalUUID#146259]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220505]
(1893) BroadcastExchange
Input [1]: [internalUUID#146259]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=221482]
(1894) BroadcastHashJoin
Left keys [2]: [coalesce(plant#146246, ), isnull(plant#146246)]
Right keys [2]: [coalesce(internalUUID#146259, ), isnull(internalUUID#146259)]
Join type: LeftOuter
Join condition: None
(1895) Project
Output [4]: [product#146245, plant#146246, _extract_code#147963, _extract_internalRefUUID#147964]
Input [5]: [product#146245, plant#146246, _extract_code#147963, _extract_internalRefUUID#147964, internalUUID#146259]
(1896) Scan parquet
Output [4]: [internalUUID#146273, baseUnitOfMeasure#146277, unitOfMeasureConversions#146279, systemId#146272]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1897) Filter
Input [4]: [internalUUID#146273, baseUnitOfMeasure#146277, unitOfMeasureConversions#146279, systemId#146272]
Condition : isnotnull(internalUUID#146273)
(1898) Project
Output [3]: [internalUUID#146273, baseUnitOfMeasure#146277, unitOfMeasureConversions#146279]
Input [4]: [internalUUID#146273, baseUnitOfMeasure#146277, unitOfMeasureConversions#146279, systemId#146272]
(1899) Exchange
Input [3]: [internalUUID#146273, baseUnitOfMeasure#146277, unitOfMeasureConversions#146279]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220511]
(1900) BroadcastExchange
Input [3]: [internalUUID#146273, baseUnitOfMeasure#146277, unitOfMeasureConversions#146279]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221486]
(1901) BroadcastHashJoin
Left keys [1]: [product#146245]
Right keys [1]: [internalUUID#146273]
Join type: LeftOuter
Join condition: None
(1902) Project
Output [2]: [plant#146246, filter(unitOfMeasureConversions#146279, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#147963) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#147964)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#146277.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#146277.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#146284]
Input [7]: [product#146245, plant#146246, _extract_code#147963, _extract_internalRefUUID#147964, internalUUID#146273, baseUnitOfMeasure#146277, unitOfMeasureConversions#146279]
(1903) Generate
Input [2]: [plant#146246, filteredUnitOfMeasureConversions#146284]
Arguments: explode(filteredUnitOfMeasureConversions#146284.quantityNumerator), [plant#146246, filteredUnitOfMeasureConversions#146284], true, [quantityNumerator#146285]
(1904) Project
Output [2]: [plant#146246, filteredUnitOfMeasureConversions#146284.quantityDenominator AS _extract_quantityDenominator#147644]
Input [3]: [plant#146246, filteredUnitOfMeasureConversions#146284, quantityNumerator#146285]
(1905) Generate
Input [2]: [plant#146246, _extract_quantityDenominator#147644]
Arguments: explode(_extract_quantityDenominator#147644), [plant#146246], true, [quantityDenominator#146286]
(1906) Project
Output [1]: [plant#146246]
Input [2]: [plant#146246, quantityDenominator#146286]
(1907) HashAggregate
Input [1]: [plant#146246]
Keys [1]: [plant#146246]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#146246]
(1908) Exchange
Input [1]: [plant#146246]
Arguments: hashpartitioning(plant#146246, 25), ENSURE_REQUIREMENTS, [plan_id=221495]
(1909) HashAggregate
Input [1]: [plant#146246]
Keys [1]: [plant#146246]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#146246]
(1910) BroadcastHashJoin
Left keys [1]: [plantUuid#146242]
Right keys [1]: [plant#146246]
Join type: Inner
Join condition: None
(1911) Project
Output [3]: [plantUuid#146242, storageLocId#146243, storageLocUuid#146244]
Input [4]: [plantUuid#146242, storageLocId#146243, storageLocUuid#146244, plant#146246]
(1912) BroadcastHashJoin
Left keys [2]: [coalesce(plant#146214.internalRefUUID, ), isnull(plant#146214.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#146242, ), isnull(plantUuid#146242)]
Join type: Inner
Join condition: None
(1913) Generate
Input [9]: [systemId#146211, internalUUID#146212, product#146213, plant#146214, calculationDateTime#146215, stockQuantities#146216, plantUuid#146242, storageLocId#146243, storageLocUuid#146244]
Arguments: explode(filter(stockQuantities#146216, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#146244) AND (lambda x#143085.storageLocation.Id = storageLocId#146243)), lambda x#143085, false))), [systemId#146211, internalUUID#146212, product#146213, plant#146214, calculationDateTime#146215, plantUuid#146242], false, [stockQuantity#146289]
(1914) ObjectHashAggregate
Input [7]: [systemId#146211, internalUUID#146212, product#146213, plant#146214, calculationDateTime#146215, plantUuid#146242, stockQuantity#146289]
Keys [5]: [plantUuid#146242, internalUUID#146212, plant#146214, product#146213, systemId#146211]
Functions [2]: [partial_first(calculationDateTime#146215, false), partial_collect_list(stockQuantity#146289, 0, 0)]
Aggregate Attributes [3]: [first#148721, valueSet#148722, buf#148723]
Results [8]: [plantUuid#146242, internalUUID#146212, plant#146214, product#146213, systemId#146211, first#148724, valueSet#148725, buf#148726]
(1915) ObjectHashAggregate
Input [8]: [plantUuid#146242, internalUUID#146212, plant#146214, product#146213, systemId#146211, first#148724, valueSet#148725, buf#148726]
Keys [5]: [plantUuid#146242, internalUUID#146212, plant#146214, product#146213, systemId#146211]
Functions [2]: [first(calculationDateTime#146215, false), collect_list(stockQuantity#146289, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#146215)()#143100, collect_list(stockQuantity#146289, 0, 0)#143101]
Results [4]: [product#146213, plant#146214, first(calculationDateTime#146215)()#143100 AS calculationDateTime#146290, collect_list(stockQuantity#146289, 0, 0)#143101 AS stockQuantities#146291]
(1916) Filter
Input [4]: [product#146213, plant#146214, calculationDateTime#146290, stockQuantities#146291]
Condition : ((size(stockQuantities#146291, true) > 0) AND isnotnull(calculationDateTime#146290))
(1917) Generate
Input [4]: [product#146213, plant#146214, calculationDateTime#146290, stockQuantities#146291]
Arguments: explode(stockQuantities#146291), [product#146213, plant#146214, calculationDateTime#146290], false, [stockQuantity#146292]
(1918) Filter
Input [4]: [product#146213, plant#146214, calculationDateTime#146290, stockQuantity#146292]
Condition : (((isnotnull(stockQuantity#146292.specialStockIndicator.code) AND isnotnull(stockQuantity#146292.stockType.code)) AND (stockQuantity#146292.specialStockIndicator.code = )) AND (stockQuantity#146292.stockType.code = 01))
(1919) Project
Output [4]: [plant#146214.internalRefUUID AS plantUuid#146294, product#146213.internalRefUUID AS productUuid#146296, calculationDateTime#146290, stockQuantity#146292.storagelocation.id AS storageLocId#146297]
Input [4]: [product#146213, plant#146214, calculationDateTime#146290, stockQuantity#146292]
(1920) Exchange
Input [4]: [plantUuid#146294, productUuid#146296, calculationDateTime#146290, storageLocId#146297]
Arguments: hashpartitioning(productUuid#146296, plantUuid#146294, 25), ENSURE_REQUIREMENTS, [plan_id=221528]
(1921) Sort
Input [4]: [plantUuid#146294, productUuid#146296, calculationDateTime#146290, storageLocId#146297]
Arguments: [productUuid#146296 ASC NULLS FIRST, plantUuid#146294 ASC NULLS FIRST], false, 0
(1922) Scan parquet
Output [3]: [product#146302, plant#146303, orderDateTime#146304]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1923) Filter
Input [3]: [product#146302, plant#146303, orderDateTime#146304]
Condition : ((isnotnull(orderDateTime#146304) AND isnotnull(plant#146303)) AND isnotnull(product#146302))
(1924) Exchange
Input [3]: [product#146302, plant#146303, orderDateTime#146304]
Arguments: hashpartitioning(product#146302, plant#146303, 25), REPARTITION_BY_NUM, [plan_id=220915]
(1925) Scan parquet
Output [4]: [plant#146308, product#146309, productionAspect#146311, systemId#146306]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1926) Project
Output [4]: [plant#146308.internalRefUUID AS _extract_internalRefUUID#147968, product#146309.internalRefUUID AS _extract_internalRefUUID#147965, productionAspect#146311.productMovementPlants.unitOfIssue.code AS _extract_code#147966, productionAspect#146311.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#147967]
Input [4]: [plant#146308, product#146309, productionAspect#146311, systemId#146306]
(1927) Exchange
Input [4]: [_extract_internalRefUUID#147968, _extract_internalRefUUID#147965, _extract_code#147966, _extract_internalRefUUID#147967]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220536]
(1928) Project
Output [4]: [_extract_code#147966, _extract_internalRefUUID#147967, _extract_internalRefUUID#147965, _extract_internalRefUUID#147968]
Input [4]: [_extract_internalRefUUID#147968, _extract_internalRefUUID#147965, _extract_code#147966, _extract_internalRefUUID#147967]
(1929) BroadcastExchange
Input [4]: [_extract_code#147966, _extract_internalRefUUID#147967, _extract_internalRefUUID#147965, _extract_internalRefUUID#147968]
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=221511]
(1930) BroadcastHashJoin
Left keys [4]: [coalesce(product#146302, ), isnull(product#146302), coalesce(plant#146303, ), isnull(plant#146303)]
Right keys [4]: [coalesce(_extract_internalRefUUID#147965, ), isnull(_extract_internalRefUUID#147965), coalesce(_extract_internalRefUUID#147968, ), isnull(_extract_internalRefUUID#147968)]
Join type: LeftOuter
Join condition: None
(1931) Project
Output [5]: [product#146302, plant#146303, orderDateTime#146304, _extract_code#147966, _extract_internalRefUUID#147967]
Input [7]: [product#146302, plant#146303, orderDateTime#146304, _extract_code#147966, _extract_internalRefUUID#147967, _extract_internalRefUUID#147965, _extract_internalRefUUID#147968]
(1932) Scan parquet
Output [2]: [internalUUID#146316, systemId#146315]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1933) Project
Output [1]: [internalUUID#146316]
Input [2]: [internalUUID#146316, systemId#146315]
(1934) Exchange
Input [1]: [internalUUID#146316]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220542]
(1935) BroadcastExchange
Input [1]: [internalUUID#146316]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=221515]
(1936) BroadcastHashJoin
Left keys [2]: [coalesce(plant#146303, ), isnull(plant#146303)]
Right keys [2]: [coalesce(internalUUID#146316, ), isnull(internalUUID#146316)]
Join type: LeftOuter
Join condition: None
(1937) Project
Output [5]: [product#146302, plant#146303, orderDateTime#146304, _extract_code#147966, _extract_internalRefUUID#147967]
Input [6]: [product#146302, plant#146303, orderDateTime#146304, _extract_code#147966, _extract_internalRefUUID#147967, internalUUID#146316]
(1938) Scan parquet
Output [4]: [internalUUID#146330, baseUnitOfMeasure#146334, unitOfMeasureConversions#146336, systemId#146329]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1939) Filter
Input [4]: [internalUUID#146330, baseUnitOfMeasure#146334, unitOfMeasureConversions#146336, systemId#146329]
Condition : isnotnull(internalUUID#146330)
(1940) Project
Output [3]: [internalUUID#146330, baseUnitOfMeasure#146334, unitOfMeasureConversions#146336]
Input [4]: [internalUUID#146330, baseUnitOfMeasure#146334, unitOfMeasureConversions#146336, systemId#146329]
(1941) Exchange
Input [3]: [internalUUID#146330, baseUnitOfMeasure#146334, unitOfMeasureConversions#146336]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220548]
(1942) BroadcastExchange
Input [3]: [internalUUID#146330, baseUnitOfMeasure#146334, unitOfMeasureConversions#146336]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=221519]
(1943) BroadcastHashJoin
Left keys [1]: [product#146302]
Right keys [1]: [internalUUID#146330]
Join type: LeftOuter
Join condition: None
(1944) Project
Output [4]: [product#146302, plant#146303, orderDateTime#146304, filter(unitOfMeasureConversions#146336, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#147966) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#147967)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#146334.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#146334.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#146341]
Input [8]: [product#146302, plant#146303, orderDateTime#146304, _extract_code#147966, _extract_internalRefUUID#147967, internalUUID#146330, baseUnitOfMeasure#146334, unitOfMeasureConversions#146336]
(1945) Generate
Input [4]: [product#146302, plant#146303, orderDateTime#146304, filteredUnitOfMeasureConversions#146341]
Arguments: explode(filteredUnitOfMeasureConversions#146341.quantityNumerator), [product#146302, plant#146303, orderDateTime#146304, filteredUnitOfMeasureConversions#146341], true, [quantityNumerator#146342]
(1946) Project
Output [4]: [product#146302, plant#146303, orderDateTime#146304, filteredUnitOfMeasureConversions#146341.quantityDenominator AS _extract_quantityDenominator#147648]
Input [5]: [product#146302, plant#146303, orderDateTime#146304, filteredUnitOfMeasureConversions#146341, quantityNumerator#146342]
(1947) Generate
Input [4]: [product#146302, plant#146303, orderDateTime#146304, _extract_quantityDenominator#147648]
Arguments: explode(_extract_quantityDenominator#147648), [product#146302, plant#146303, orderDateTime#146304], true, [quantityDenominator#146343]
(1948) Project
Output [3]: [product#146302, plant#146303, orderDateTime#146304]
Input [4]: [product#146302, plant#146303, orderDateTime#146304, quantityDenominator#146343]
(1949) Sort
Input [3]: [product#146302, plant#146303, orderDateTime#146304]
Arguments: [product#146302 ASC NULLS FIRST, plant#146303 ASC NULLS FIRST], false, 0
(1950) SortMergeJoin
Left keys [2]: [productUuid#146296, plantUuid#146294]
Right keys [2]: [product#146302, plant#146303]
Join type: Inner
Join condition: (calculationDateTime#146290 <= orderDateTime#146304)
(1951) Project
Output [4]: [plantUuid#146294 AS plant#146346, productUuid#146296 AS product#146347, storageLocId#146297, calculationDateTime#146290]
Input [7]: [plantUuid#146294, productUuid#146296, calculationDateTime#146290, storageLocId#146297, product#146302, plant#146303, orderDateTime#146304]
(1952) HashAggregate
Input [4]: [plant#146346, product#146347, storageLocId#146297, calculationDateTime#146290]
Keys [3]: [plant#146346, product#146347, storageLocId#146297]
Functions [1]: [partial_max(calculationDateTime#146290)]
Aggregate Attributes [1]: [max#148719]
Results [4]: [plant#146346, product#146347, storageLocId#146297, max#148720]
(1953) HashAggregate
Input [4]: [plant#146346, product#146347, storageLocId#146297, max#148720]
Keys [3]: [plant#146346, product#146347, storageLocId#146297]
Functions [1]: [max(calculationDateTime#146290)]
Aggregate Attributes [1]: [max(calculationDateTime#146290)#143178]
Results [4]: [plant#146346, product#146347, storageLocId#146297, max(calculationDateTime#146290)#143178 AS max_calc_datetime#146348]
(1954) Exchange
Input [4]: [plant#146346, product#146347, storageLocId#146297, max_calc_datetime#146348]
Arguments: hashpartitioning(coalesce(plant#146346, ), isnull(plant#146346), coalesce(product#146347, ), isnull(product#146347), coalesce(storageLocId#146297, ), isnull(storageLocId#146297), coalesce(max_calc_datetime#146348, 1970-01-01 00:00:00), isnull(max_calc_datetime#146348), 25), ENSURE_REQUIREMENTS, [plan_id=221538]
(1955) Sort
Input [4]: [plant#146346, product#146347, storageLocId#146297, max_calc_datetime#146348]
Arguments: [coalesce(plant#146346, ) ASC NULLS FIRST, isnull(plant#146346) ASC NULLS FIRST, coalesce(product#146347, ) ASC NULLS FIRST, isnull(product#146347) ASC NULLS FIRST, coalesce(storageLocId#146297, ) ASC NULLS FIRST, isnull(storageLocId#146297) ASC NULLS FIRST, coalesce(max_calc_datetime#146348, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#146348) ASC NULLS FIRST], false, 0
(1956) SortMergeJoin
Left keys [8]: [coalesce(plant#146209, ), isnull(plant#146209), coalesce(product#146210, ), isnull(product#146210), coalesce(storageLocId#146160, ), isnull(storageLocId#146160), coalesce(calculationDateTime#146153, 1970-01-01 00:00:00), isnull(calculationDateTime#146153)]
Right keys [8]: [coalesce(plant#146346, ), isnull(plant#146346), coalesce(product#146347, ), isnull(product#146347), coalesce(storageLocId#146297, ), isnull(storageLocId#146297), coalesce(max_calc_datetime#146348, 1970-01-01 00:00:00), isnull(max_calc_datetime#146348)]
Join type: Inner
Join condition: None
(1957) Project
Output [4]: [plant#146209, product#146210, calculationDateTime#146153, quantity#146162]
Input [9]: [plant#146209, product#146210, storageLocId#146160, calculationDateTime#146153, quantity#146162, plant#146346, product#146347, storageLocId#146297, max_calc_datetime#146348]
(1958) HashAggregate
Input [4]: [plant#146209, product#146210, calculationDateTime#146153, quantity#146162]
Keys [2]: [product#146210, plant#146209]
Functions [2]: [partial_min(calculationDateTime#146153), partial_sum(quantity#146162)]
Aggregate Attributes [2]: [min#148709, sum#148710]
Results [4]: [product#146210, plant#146209, min#148711, sum#148712]
(1959) Exchange
Input [4]: [product#146210, plant#146209, min#148711, sum#148712]
Arguments: hashpartitioning(product#146210, plant#146209, 25), ENSURE_REQUIREMENTS, [plan_id=221545]
(1960) HashAggregate
Input [4]: [product#146210, plant#146209, min#148711, sum#148712]
Keys [2]: [product#146210, plant#146209]
Functions [2]: [min(calculationDateTime#146153), sum(quantity#146162)]
Aggregate Attributes [2]: [min(calculationDateTime#146153)#143334, sum(quantity#146162)#143333]
Results [4]: [product#146210, plant#146209, min(calculationDateTime#146153)#143334 AS minCalculationDateTime#146350, round(sum(quantity#146162)#143333, 0) AS roundedQuantitySum#146351]
(1961) Sort
Input [4]: [product#146210, plant#146209, minCalculationDateTime#146350, roundedQuantitySum#146351]
Arguments: [product#146210 ASC NULLS FIRST, plant#146209 ASC NULLS FIRST], false, 0
(1962) SortMergeJoin
Left keys [2]: [product#146030, plant#146031]
Right keys [2]: [product#146210, plant#146209]
Join type: LeftOuter
Join condition: None
(1963) Project
Output [8]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146073, CASE WHEN isnotnull(minCalculationDateTime#146350) THEN minCalculationDateTime#146350 ELSE orderDateTime#146032 END AS stockDatetime#146352, CASE WHEN isnotnull(roundedQuantitySum#146351) THEN array(roundedQuantitySum#146351) ELSE [0.0] END AS stockBatchQuantities#146353]
Input [10]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146073, product#146210, plant#146209, minCalculationDateTime#146350, roundedQuantitySum#146351]
(1964) Scan parquet
Output [9]: [product#146355, plant#146356, demandChannel#146357, demandStream#146358, considerVariance#146359, demandTimeBuckets#146360, demandPointInTimeStart#146361, demandPointInTimeEnd#146362, demandPointInTime#146363]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000002108/0_1_10000002108]
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>>>
(1965) Filter
Input [9]: [product#146355, plant#146356, demandChannel#146357, demandStream#146358, considerVariance#146359, demandTimeBuckets#146360, demandPointInTimeStart#146361, demandPointInTimeEnd#146362, demandPointInTime#146363]
Condition : (isnotnull(product#146355) AND isnotnull(plant#146356))
(1966) BroadcastExchange
Input [9]: [product#146355, plant#146356, demandChannel#146357, demandStream#146358, considerVariance#146359, demandTimeBuckets#146360, demandPointInTimeStart#146361, demandPointInTimeEnd#146362, demandPointInTime#146363]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=221554]
(1967) BroadcastHashJoin
Left keys [2]: [product#146030, plant#146031]
Right keys [2]: [product#146355, plant#146356]
Join type: LeftOuter
Join condition: None
(1968) Project
Output [9]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146073, stockDatetime#146352, stockBatchQuantities#146353, CASE WHEN isnotnull(product#146355) THEN struct(demandChannel, demandChannel#146357, demandStream, demandStream#146358, considerVariance, considerVariance#146359, demandTimeBuckets, demandTimeBuckets#146360, demandPointInTimeStart, demandPointInTimeStart#146361, demandPointInTimeEnd, demandPointInTimeEnd#146362, demandPointInTime, demandPointInTime#146363) END AS rawDemands#146364]
Input [17]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146073, stockDatetime#146352, stockBatchQuantities#146353, product#146355, plant#146356, demandChannel#146357, demandStream#146358, considerVariance#146359, demandTimeBuckets#146360, demandPointInTimeStart#146361, demandPointInTimeEnd#146362, demandPointInTime#146363]
(1969) ObjectHashAggregate
Input [9]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146073, stockDatetime#146352, stockBatchQuantities#146353, rawDemands#146364]
Keys [9]: [product#146030, plant#146031, orderDateTime#146032, knownfloatingpointnormalized(if (isnull(productPlant#146042)) null else named_struct(systemId, productPlant#146042.systemId, internalUUID, productPlant#146042.internalUUID, plant, productPlant#146042.plant, product, productPlant#146042.product, blockedForReplenishmentStartingFrom, productPlant#146042.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#146042.productionAspect)) null else named_struct(productMovementPlants, productPlant#146042.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#146042.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#146042.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#146042.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#146042.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#146042.productionAspect.productPlanningPlants.minimumLotSize)), minimumSafetyStock, knownfloatingpointnormalized(normalizenanandzero(productPlant#146042.productionAspect.productPlanningPlants.minimumSafetyStock)), logisticalRoundingProfile, productPlant#146042.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#146042.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#146042.salesPlant, listing, productPlant#146042.listing)) AS productPlant#146042, timezonecode#146056, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#146073)) AS outboundUnit#146073, stockDatetime#146352, knownfloatingpointnormalized(transform(stockBatchQuantities#146353, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#148706)), lambda arg#148706, false))) AS stockBatchQuantities#146353, [7226582400000000] AS [7226582400000000]#148705]
Functions [1]: [partial_collect_list(rawDemands#146364, 0, 0)]
Aggregate Attributes [1]: [buf#148707]
Results [10]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146073, stockDatetime#146352, stockBatchQuantities#146353, [7226582400000000]#148705, buf#148708]
(1970) ObjectHashAggregate
Input [10]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146073, stockDatetime#146352, stockBatchQuantities#146353, [7226582400000000]#148705, buf#148708]
Keys [9]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146073, stockDatetime#146352, stockBatchQuantities#146353, [7226582400000000]#148705]
Functions [1]: [collect_list(rawDemands#146364, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#146364, 0, 0)#143431]
Results [10]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146073, stockDatetime#146352, stockBatchQuantities#146353, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#146354, collect_list(rawDemands#146364, 0, 0)#143431 AS rawDemands#146365]
(1971) DeserializeToObject
Input [10]: [product#146030, plant#146031, orderDateTime#146032, productPlant#146042, timezonecode#146056, outboundUnit#146073, stockDatetime#146352, stockBatchQuantities#146353, stockBatchShelfLifeEndDatetimes#146354, rawDemands#146365]
Arguments: createexternalrow(invoke(product#146030.toString()), invoke(plant#146031.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#146032)), if (isnull(productPlant#146042)) null else createexternalrow(invoke(productPlant#146042.systemId.toString()), invoke(productPlant#146042.internalUUID.toString()), if (isnull(productPlant#146042.plant)) null else createexternalrow(invoke(productPlant#146042.plant.internalRefUUID.toString()), invoke(productPlant#146042.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#146042.product)) null else createexternalrow(invoke(productPlant#146042.product.internalRefUUID.toString()), invoke(productPlant#146042.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#146042.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#146042.productionAspect)) null else createexternalrow(if (isnull(productPlant#146042.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#146042.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#146042.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#146042.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#146042.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#146042.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#146042.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#146042.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#146042.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#146042.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#146042.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#146042.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#146042.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#146042.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#146042.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#146042.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#146042.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#146042.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#146042.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#146042.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#146042.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#146042.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(minimumSafetyStock,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#146042.salesPlant)) null else createexternalrow(if (isnull(productPlant#146042.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#146042.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#146042.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#146042.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#146056.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#146073)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#146352)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#146353, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#146354, 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#146365, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#143452: org.apache.spark.sql.Row
(1972) MapElements
Input [1]: [obj#143452]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@2d5ca6d1, obj#143457: org.apache.spark.sql.Row
(1973) SerializeFromObject
Input [1]: [obj#143457]
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#146366, 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#146367]
(1974) Exchange
Input [2]: [product#146366, plant#146367]
Arguments: hashpartitioning(coalesce(plant#146367, ), isnull(plant#146367), coalesce(product#146366, ), isnull(product#146366), 25), ENSURE_REQUIREMENTS, [plan_id=221565]
(1975) Sort
Input [2]: [product#146366, plant#146367]
Arguments: [coalesce(plant#146367, ) ASC NULLS FIRST, isnull(plant#146367) ASC NULLS FIRST, coalesce(product#146366, ) ASC NULLS FIRST, isnull(product#146366) ASC NULLS FIRST], false, 0
(1976) SortMergeJoin
Left keys [4]: [coalesce(plant#145706, ), isnull(plant#145706), coalesce(product#145705, ), isnull(product#145705)]
Right keys [4]: [coalesce(plant#146367, ), isnull(plant#146367), coalesce(product#146366, ), isnull(product#146366)]
Join type: LeftOuter
Join condition: None
(1977) Project
Output [3]: [product#145705, plant#145706, stockDatetime#146027]
Input [5]: [product#145705, plant#145706, stockDatetime#146027, product#146366, plant#146367]
(1978) Scan parquet
Output [6]: [internalUUID#146371, id#146372, supplier#146374, isMarkedForDeletion#146377, items#146378, systemId#146370]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-procurement-purchaseorder]
PushedFilters: [IsNotNull(isMarkedForDeletion), Not(EqualTo(isMarkedForDeletion,true)), IsNotNull(items)]
ReadSchema: struct<internalUUID:string,id:string,supplier:struct<internalRefUUID:string,id:string>,isMarkedForDeletion:boolean,items:array<struct<number:string,completeIndicator:boolean,returnIndicator:boolean,deletionIndicator:boolean,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:double,quantityUnit:struct<internalRefUUID:string,code:string>,quantityNumerator:double,quantityDenominator:double,scheduleLines:array<struct<number:string,deliveryAt:timestamp,quantity:double,quantityUnit:struct<internalRefUUID:string,code:string>,receivedQuantity:double,deliveredQuantity:double,productAvailabilityDateTime:timestamp>>,confirmations:array<struct<number:string,confirmationCategory:struct<internalRefUUID:string,code:string>,confirmationDeliveryDate:date,confirmedDeliveryAt:timestamp,confirmedQuantity:double,mrpRelevantQuantity:double,confirmationCreationCategory:string,deletionIndicator:boolean,isRelevantForConfirmation:boolean,delivery:struct<internalRefUUID:string,id:string>,deliveryItemNumber:string>>>>>
(1979) Filter
Input [6]: [internalUUID#146371, id#146372, supplier#146374, isMarkedForDeletion#146377, items#146378, systemId#146370]
Condition : (((isnotnull(isMarkedForDeletion#146377) AND NOT isMarkedForDeletion#146377) AND (size(items#146378, true) > 0)) AND isnotnull(items#146378))
(1980) Project
Output [4]: [internalUUID#146371, id#146372, supplier#146374, items#146378]
Input [6]: [internalUUID#146371, id#146372, supplier#146374, isMarkedForDeletion#146377, items#146378, systemId#146370]
(1981) Exchange
Input [4]: [internalUUID#146371, id#146372, supplier#146374, items#146378]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=220580]
(1982) Generate
Input [4]: [internalUUID#146371, id#146372, supplier#146374, items#146378]
Arguments: explode(items#146378), [internalUUID#146371, id#146372, supplier#146374], false, [item#146379]
(1983) Filter
Input [4]: [internalUUID#146371, id#146372, supplier#146374, item#146379]
Condition : ((((isnotnull(item#146379.deletionIndicator) AND isnotnull(item#146379.completeIndicator)) AND isnotnull(item#146379.returnIndicator)) AND ((NOT item#146379.deletionIndicator AND NOT item#146379.completeIndicator) AND NOT item#146379.returnIndicator)) AND isnotnull(item#146379.product.internalRefUUID))
(1984) Project
Output [9]: [id#146372, internalUUID#146371, supplier#146374.internalRefUUID AS supplierUuid#146380, item#146379.product.internalRefUUID AS product#146382, item#146379.quantityUnit.code AS quantityUom#146386, item#146379.quantityUnit.internalRefUUID AS quantityUomUuid#146387, item#146379.quantityNumerator AS quantityNumerator#146388, item#146379.quantityDenominator AS quantityDenominator#146389, item#146379.scheduleLines AS scheduleLines#146390]
Input [4]: [internalUUID#146371, id#146372, supplier#146374, item#146379]
(1985) BroadcastExchange
Input [9]: [id#146372, internalUUID#146371, supplierUuid#146380, product#146382, quantityUom#146386, quantityUomUuid#146387, quantityNumerator#146388, quantityDenominator#146389, scheduleLines#146390]
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=221571]
(1986) BroadcastHashJoin
Left keys [4]: [coalesce(product#145705, ), isnull(product#145705), coalesce(plant#145706, ), isnull(plant#145706)]
Right keys [4]: [coalesce(product#146382, ), isnull(product#146382), coalesce(supplierUuid#146380, ), isnull(supplierUuid#146380)]
Join type: Inner
Join condition: None
(1987) Project
Output [3]: [product#146382, plant#145706, filter(transform(filter(transform(scheduleLines#146390, lambdafunction(struct(openQty, (greatest((lambda x_38#145683.quantity - coalesce(lambda x_38#145683.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_38#145683.productAvailabilityDateTime, lambda x_38#145683.deliveryAt)), lambda x_38#145683, false)), lambdafunction((lambda x_39#145684.availabilityDatetime < stockDatetime#146027), lambda x_39#145684, false)), lambdafunction(struct(documentId, id#146372, documentUuid, internalUUID#146371, openQty, lambda x_40#145685.openQty, openQtyInBaseUnit, ((lambda x_40#145685.openQty * quantityNumerator#146388) / quantityDenominator#146389), qtyUom, quantityUom#146386, qtyUomUuid, quantityUomUuid#146387, availabilityDatetime, lambda x_40#145685.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_40#145685, false)), lambdafunction(NOT (lambda x_41#145686.openQty = 0.0), lambda x_41#145686, false)) AS openGoodsMovements#145682]
Input [12]: [product#145705, plant#145706, stockDatetime#146027, id#146372, internalUUID#146371, supplierUuid#146380, product#146382, quantityUom#146386, quantityUomUuid#146387, quantityNumerator#146388, quantityDenominator#146389, scheduleLines#146390]
(1988) ObjectHashAggregate
Input [3]: [product#146382, plant#145706, openGoodsMovements#145682]
Keys [2]: [product#146382, plant#145706]
Functions [1]: [partial_collect_list(openGoodsMovements#145682, 0, 0)]
Aggregate Attributes [1]: [buf#148687]
Results [3]: [product#146382, plant#145706, buf#148688]
(1989) Exchange
Input [3]: [product#146382, plant#145706, buf#148688]
Arguments: hashpartitioning(product#146382, plant#145706, 25), ENSURE_REQUIREMENTS, [plan_id=221576]
(1990) ObjectHashAggregate
Input [3]: [product#146382, plant#145706, buf#148688]
Keys [2]: [product#146382, plant#145706]
Functions [1]: [collect_list(openGoodsMovements#145682, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#145682, 0, 0)#145704]
Results [3]: [product#146382, plant#145706, flatten(collect_list(openGoodsMovements#145682, 0, 0)#145704) AS openGoodsMovements#145687]
(1991) Filter
Input [3]: [product#146382, plant#145706, openGoodsMovements#145687]
Condition : (size(openGoodsMovements#145687, false) > 0)
(1992) Union
(1993) ObjectHashAggregate
Input [3]: [product#143833, plant#143832, openGoodsMovements#145382]
Keys [2]: [product#143833, plant#143832]
Functions [1]: [partial_collect_list(openGoodsMovements#145382, 0, 0)]
Aggregate Attributes [1]: [buf#148685]
Results [3]: [product#143833, plant#143832, buf#148686]
(1994) Exchange
Input [3]: [product#143833, plant#143832, buf#148686]
Arguments: hashpartitioning(product#143833, plant#143832, 25), ENSURE_REQUIREMENTS, [plan_id=221582]
(1995) ObjectHashAggregate
Input [3]: [product#143833, plant#143832, buf#148686]
Keys [2]: [product#143833, plant#143832]
Functions [1]: [collect_list(openGoodsMovements#145382, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#145382, 0, 0)#146446]
Results [3]: [product#143833, plant#143832, flatten(collect_list(openGoodsMovements#145382, 0, 0)#146446) AS openGoodsMovements#146442]
(1996) Project
Output [5]: [product#143833, plant#143832, openGoodsMovements#146442.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#147652, openGoodsMovements#146442.availabilityDatetime AS _extract_availabilityDatetime#147653, openGoodsMovements#146442.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#147654]
Input [3]: [product#143833, plant#143832, openGoodsMovements#146442]
(1997) Sort
Input [5]: [product#143833, plant#143832, _extract_openQtyInBaseUnit#147652, _extract_availabilityDatetime#147653, _extract_shelfLifeEndDatetime#147654]
Arguments: [product#143833 ASC NULLS FIRST, plant#143832 ASC NULLS FIRST], false, 0
(1998) SortMergeJoin
Left keys [2]: [product#142980, plant#142981]
Right keys [2]: [product#143833, plant#143832]
Join type: LeftOuter
Join condition: None
(1999) Project
Output [16]: [product#142980, plant#142981, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#143386, dayBucketDemands#143464, pointInTimeDemands#143465, coalesce(_extract_openQtyInBaseUnit#147652, []) AS openGoodsMovementQuantities#147161, coalesce(_extract_availabilityDatetime#147653, []) AS openGoodsMovementAvailabilityDatetimes#147162, coalesce(_extract_shelfLifeEndDatetime#147654, []) AS openGoodsMovementShelfLifeEndDatetimes#147163, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#147264, concat([ListingPeriod], CASE WHEN isnotnull(_extract_minimumSafetyStock#147969) THEN [MinStock] ELSE [] END) AS timeDependentSettingsName#147407, concat([-2208988800000000], CASE WHEN isnotnull(_extract_minimumSafetyStock#147969) THEN [-2208988800000000] ELSE [] END) AS timeDependentSettingsStartDatetime#147409, concat([7226582400000000], CASE WHEN isnotnull(_extract_minimumSafetyStock#147969) THEN [7226582400000000] ELSE [] END) AS timeDependentSettingsEndDatetime#147411, concat([1.0], CASE WHEN isnotnull(_extract_minimumSafetyStock#147969) THEN array(_extract_minimumSafetyStock#147969) ELSE [] END) AS timeDependentSettingsValue#147413]
Input [13]: [product#142980, plant#142981, _extract_minimumSafetyStock#147969, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, dayBucketDemands#143464, pointInTimeDemands#143465, product#143833, plant#143832, _extract_openQtyInBaseUnit#147652, _extract_availabilityDatetime#147653, _extract_shelfLifeEndDatetime#147654]
(2000) AdaptiveSparkPlan
Output [16]: [product#142980, plant#142981, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386, dayBucketDemands#143464, pointInTimeDemands#143465, openGoodsMovementQuantities#147161, openGoodsMovementAvailabilityDatetimes#147162, openGoodsMovementShelfLifeEndDatetimes#147163, configuration#147264, timeDependentSettingsName#147407, timeDependentSettingsStartDatetime#147409, timeDependentSettingsEndDatetime#147411, timeDependentSettingsValue#147413]
Arguments: isFinalPlan=false