== Physical Plan ==
AdaptiveSparkPlan (1997)
+- == Current Plan ==
ResultQueryStage (1089)
+- * Project (1088)
+- * BroadcastHashJoin LeftOuter BuildRight (1087)
:- * 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 (1086), Statistics(sizeInBytes=2.0 MiB, rowCount=41)
+- BroadcastExchange (1085)
+- * Project (1084)
+- ObjectHashAggregate (1083)
+- ObjectHashAggregate (1082)
+- * Filter (1081)
+- TableCacheQueryStage (1080), Statistics(sizeInBytes=10.6 KiB, rowCount=41)
+- InMemoryTableScan (242)
+- InMemoryRelation (243)
+- AdaptiveSparkPlan (1079)
+- == Final Plan ==
ResultQueryStage (1069)
+- * Filter (1068)
+- ObjectHashAggregate (1067)
+- ShuffleQueryStage (1066), Statistics(sizeInBytes=13.0 KiB, rowCount=41)
+- Exchange (1065)
+- ObjectHashAggregate (1064)
+- Project (1063)
+- Window (1062)
+- * Sort (1061)
+- AQEShuffleRead (1060)
+- ShuffleQueryStage (1059), Statistics(sizeInBytes=17.7 KiB, rowCount=41)
+- Exchange (1058)
+- * Project (1057)
+- TableCacheQueryStage (1056), Statistics(sizeInBytes=21.9 KiB, rowCount=41)
+- InMemoryTableScan (244)
+- InMemoryRelation (245)
+- AdaptiveSparkPlan (1055)
+- == Final Plan ==
ResultQueryStage (562)
+- Project (561)
+- * BroadcastHashJoin Inner BuildRight (560)
:- * Project (548)
: +- * BroadcastHashJoin Inner BuildLeft (547)
: :- BroadcastQueryStage (531), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (530)
: : +- AQEShuffleRead (529)
: : +- ShuffleQueryStage (528), Statistics(sizeInBytes=114.8 KiB, rowCount=980)
: : +- Exchange (527)
: : +- * Project (526)
: : +- * BroadcastHashJoin LeftOuter BuildRight (525)
: : :- AQEShuffleRead (419)
: : : +- ShuffleQueryStage (418), Statistics(sizeInBytes=114.8 KiB, rowCount=980)
: : : +- Exchange (417)
: : : +- * Project (416)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (415)
: : : :- * Project (283)
: : : : +- * Generate (282)
: : : : +- * Project (281)
: : : : +- * Generate (280)
: : : : +- Project (279)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (278)
: : : : :- * Project (269)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (268)
: : : : : :- * Project (260)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (259)
: : : : : : :- ShuffleQueryStage (250), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (249)
: : : : : : : +- * Filter (248)
: : : : : : : +- * ColumnarToRow (247)
: : : : : : : +- Scan parquet (246)
: : : : : : +- BroadcastQueryStage (258), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (257)
: : : : : : +- * Project (256)
: : : : : : +- ShuffleQueryStage (255), Statistics(sizeInBytes=339.5 KiB, rowCount=2.75E+3)
: : : : : : +- Exchange (254)
: : : : : : +- * Project (253)
: : : : : : +- * ColumnarToRow (252)
: : : : : : +- Scan parquet (251)
: : : : : +- BroadcastQueryStage (267), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- BroadcastExchange (266)
: : : : : +- ShuffleQueryStage (265), Statistics(sizeInBytes=4.4 KiB, rowCount=62)
: : : : : +- Exchange (264)
: : : : : +- * Project (263)
: : : : : +- * ColumnarToRow (262)
: : : : : +- Scan parquet (261)
: : : : +- BroadcastQueryStage (277), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- BroadcastExchange (276)
: : : : +- ShuffleQueryStage (275), Statistics(sizeInBytes=92.7 KiB, rowCount=159)
: : : : +- Exchange (274)
: : : : +- * Project (273)
: : : : +- * Filter (272)
: : : : +- * ColumnarToRow (271)
: : : : +- Scan parquet (270)
: : : +- BroadcastQueryStage (414), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (413)
: : : +- * HashAggregate (412)
: : : +- AQEShuffleRead (411)
: : : +- ShuffleQueryStage (410), Statistics(sizeInBytes=27.7 KiB, rowCount=295)
: : : +- Exchange (409)
: : : +- * HashAggregate (408)
: : : +- * Project (407)
: : : +- * BroadcastHashJoin Inner BuildLeft (406)
: : : :- BroadcastQueryStage (378), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : : +- BroadcastExchange (377)
: : : : +- AQEShuffleRead (376)
: : : : +- ShuffleQueryStage (375), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : : +- Exchange (374)
: : : : +- * Project (373)
: : : : +- * BroadcastHashJoin Inner BuildLeft (372)
: : : : :- BroadcastQueryStage (350), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : : +- BroadcastExchange (349)
: : : : : +- AQEShuffleRead (348)
: : : : : +- ShuffleQueryStage (347), Statistics(sizeInBytes=43.1 KiB, rowCount=394)
: : : : : +- Exchange (346)
: : : : : +- * Project (345)
: : : : : +- * Filter (344)
: : : : : +- * Generate (343)
: : : : : +- * Filter (342)
: : : : : +- ObjectHashAggregate (341)
: : : : : +- ObjectHashAggregate (340)
: : : : : +- Generate (339)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (338)
: : : : : :- BroadcastQueryStage (291), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- BroadcastExchange (290)
: : : : : : +- ShuffleQueryStage (289), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : : : +- Exchange (288)
: : : : : : +- * Project (287)
: : : : : : +- * Filter (286)
: : : : : : +- * ColumnarToRow (285)
: : : : : : +- Scan parquet (284)
: : : : : +- * Project (337)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (336)
: : : : : :- BroadcastQueryStage (304), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- BroadcastExchange (303)
: : : : : : +- * Project (302)
: : : : : : +- * Generate (301)
: : : : : : +- * Project (300)
: : : : : : +- * Filter (299)
: : : : : : +- * Generate (298)
: : : : : : +- ShuffleQueryStage (297), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : : : : : +- Exchange (296)
: : : : : : +- * Project (295)
: : : : : : +- * Filter (294)
: : : : : : +- * ColumnarToRow (293)
: : : : : : +- Scan parquet (292)
: : : : : +- * HashAggregate (335)
: : : : : +- AQEShuffleRead (334)
: : : : : +- ShuffleQueryStage (333), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: : : : : +- Exchange (332)
: : : : : +- * HashAggregate (331)
: : : : : +- * Project (330)
: : : : : +- * Generate (329)
: : : : : +- * Project (328)
: : : : : +- * Generate (327)
: : : : : +- Project (326)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (325)
: : : : : :- * Project (322)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (321)
: : : : : : :- * Project (313)
: : : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (312)
: : : : : : : :- ShuffleQueryStage (309), Statistics(sizeInBytes=84.2 KiB, rowCount=980)
: : : : : : : : +- Exchange (308)
: : : : : : : : +- * Filter (307)
: : : : : : : : +- * ColumnarToRow (306)
: : : : : : : : +- Scan parquet (305)
: : : : : : : +- BroadcastQueryStage (311), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : : +- ReusedExchange (310)
: : : : : : +- BroadcastQueryStage (320), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : : +- BroadcastExchange (319)
: : : : : : +- ShuffleQueryStage (318), Statistics(sizeInBytes=2.9 KiB, rowCount=62)
: : : : : : +- Exchange (317)
: : : : : : +- * Project (316)
: : : : : : +- * ColumnarToRow (315)
: : : : : : +- Scan parquet (314)
: : : : : +- BroadcastQueryStage (324), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : : +- ReusedExchange (323)
: : : : +- * Project (371)
: : : : +- * Generate (370)
: : : : +- * Project (369)
: : : : +- * Generate (368)
: : : : +- Project (367)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (366)
: : : : :- * Project (363)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (362)
: : : : : :- * Project (359)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (358)
: : : : : : :- ShuffleQueryStage (355), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (354)
: : : : : : : +- * Filter (353)
: : : : : : : +- * ColumnarToRow (352)
: : : : : : : +- Scan parquet (351)
: : : : : : +- BroadcastQueryStage (357), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- ReusedExchange (356)
: : : : : +- BroadcastQueryStage (361), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (360)
: : : : +- BroadcastQueryStage (365), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (364)
: : : +- AQEShuffleRead (405)
: : : +- ShuffleQueryStage (404), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : +- Exchange (403)
: : : +- * HashAggregate (402)
: : : +- * HashAggregate (401)
: : : +- * Project (400)
: : : +- * BroadcastHashJoin Inner BuildLeft (399)
: : : :- BroadcastQueryStage (380), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : +- ReusedExchange (379)
: : : +- * Project (398)
: : : +- * Generate (397)
: : : +- * Project (396)
: : : +- * Generate (395)
: : : +- Project (394)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (393)
: : : :- * Project (390)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (389)
: : : : :- * Project (386)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (385)
: : : : : :- ShuffleQueryStage (382), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : +- ReusedExchange (381)
: : : : : +- BroadcastQueryStage (384), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : +- ReusedExchange (383)
: : : : +- BroadcastQueryStage (388), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : +- ReusedExchange (387)
: : : +- BroadcastQueryStage (392), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : +- ReusedExchange (391)
: : +- BroadcastQueryStage (524), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (523)
: : +- AQEShuffleRead (522)
: : +- ShuffleQueryStage (521), Statistics(sizeInBytes=84.2 KiB, rowCount=980)
: : +- Exchange (520)
: : +- * SerializeFromObject (519)
: : +- * MapElements (518)
: : +- * DeserializeToObject (517)
: : +- ObjectHashAggregate (516)
: : +- ObjectHashAggregate (515)
: : +- * Project (514)
: : +- * BroadcastHashJoin LeftOuter BuildRight (513)
: : :- * Project (507)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (506)
: : : :- * Project (445)
: : : : +- * Project (444)
: : : : +- * Generate (443)
: : : : +- * Generate (442)
: : : : +- * Project (441)
: : : : +- Project (440)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (439)
: : : : :- * Project (436)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (435)
: : : : : :- * BroadcastHashJoin LeftOuter BuildRight (432)
: : : : : : :- ShuffleQueryStage (423), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (422)
: : : : : : : +- * ColumnarToRow (421)
: : : : : : : +- Scan parquet (420)
: : : : : : +- BroadcastQueryStage (431), Statistics(sizeInBytes=4.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (430)
: : : : : : +- * Project (429)
: : : : : : +- ShuffleQueryStage (428), Statistics(sizeInBytes=2.0 MiB, rowCount=2.75E+3)
: : : : : : +- Exchange (427)
: : : : : : +- * Project (426)
: : : : : : +- * ColumnarToRow (425)
: : : : : : +- Scan parquet (424)
: : : : : +- BroadcastQueryStage (434), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (433)
: : : : +- BroadcastQueryStage (438), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (437)
: : : +- BroadcastQueryStage (505), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (504)
: : : +- * HashAggregate (503)
: : : +- AQEShuffleRead (502)
: : : +- ShuffleQueryStage (501), Statistics(sizeInBytes=30.0 KiB, rowCount=295)
: : : +- Exchange (500)
: : : +- * HashAggregate (499)
: : : +- * Project (498)
: : : +- * BroadcastHashJoin Inner BuildLeft (497)
: : : :- BroadcastQueryStage (493), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : : +- BroadcastExchange (492)
: : : : +- AQEShuffleRead (491)
: : : : +- ShuffleQueryStage (490), Statistics(sizeInBytes=34.6 KiB, rowCount=295)
: : : : +- Exchange (489)
: : : : +- * Project (488)
: : : : +- * BroadcastHashJoin Inner BuildLeft (487)
: : : : :- BroadcastQueryStage (468), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : : +- BroadcastExchange (467)
: : : : : +- AQEShuffleRead (466)
: : : : : +- ShuffleQueryStage (465), Statistics(sizeInBytes=46.2 KiB, rowCount=394)
: : : : : +- Exchange (464)
: : : : : +- * Project (463)
: : : : : +- * Filter (462)
: : : : : +- * Generate (461)
: : : : : +- * Filter (460)
: : : : : +- ObjectHashAggregate (459)
: : : : : +- ObjectHashAggregate (458)
: : : : : +- Generate (457)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (456)
: : : : : :- BroadcastQueryStage (447), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- ReusedExchange (446)
: : : : : +- * Project (455)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (454)
: : : : : :- BroadcastQueryStage (449), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- ReusedExchange (448)
: : : : : +- * HashAggregate (453)
: : : : : +- AQEShuffleRead (452)
: : : : : +- ShuffleQueryStage (451), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: : : : : +- ReusedExchange (450)
: : : : +- * Project (486)
: : : : +- * Generate (485)
: : : : +- * Project (484)
: : : : +- * Generate (483)
: : : : +- Project (482)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (481)
: : : : :- * Project (478)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (477)
: : : : : :- * Project (474)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (473)
: : : : : : :- ShuffleQueryStage (470), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- ReusedExchange (469)
: : : : : : +- BroadcastQueryStage (472), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- ReusedExchange (471)
: : : : : +- BroadcastQueryStage (476), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (475)
: : : : +- BroadcastQueryStage (480), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (479)
: : : +- AQEShuffleRead (496)
: : : +- ShuffleQueryStage (495), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : +- ReusedExchange (494)
: : +- BroadcastQueryStage (512), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (511)
: : +- * Filter (510)
: : +- * ColumnarToRow (509)
: : +- Scan parquet (508)
: +- * Project (546)
: +- * BroadcastHashJoin Inner BuildLeft (545)
: :- BroadcastQueryStage (541), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : +- BroadcastExchange (540)
: : +- * Project (539)
: : +- * Filter (538)
: : +- * Generate (537)
: : +- * Project (536)
: : +- * Filter (535)
: : +- * Generate (534)
: : +- ShuffleQueryStage (533), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : +- ReusedExchange (532)
: +- * HashAggregate (544)
: +- ShuffleQueryStage (543), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: +- ReusedExchange (542)
+- BroadcastQueryStage (559), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
+- BroadcastExchange (558)
+- * Project (557)
+- * Filter (556)
+- * Generate (555)
+- ShuffleQueryStage (554), Statistics(sizeInBytes=29.9 KiB, rowCount=9)
+- Exchange (553)
+- * Project (552)
+- * Filter (551)
+- * ColumnarToRow (550)
+- Scan parquet (549)
+- == Initial Plan ==
Project (1054)
+- BroadcastHashJoin Inner BuildRight (1053)
:- Project (1045)
: +- SortMergeJoin Inner (1044)
: :- Sort (999)
: : +- Exchange (998)
: : +- Project (997)
: : +- SortMergeJoin LeftOuter (996)
: : :- Sort (771)
: : : +- Exchange (770)
: : : +- Project (769)
: : : +- SortMergeJoin LeftOuter (768)
: : : :- Sort (586)
: : : : +- Project (585)
: : : : +- Generate (584)
: : : : +- Project (583)
: : : : +- Generate (582)
: : : : +- Project (581)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (580)
: : : : :- Project (575)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (574)
: : : : : :- Project (570)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (569)
: : : : : : :- Exchange (564)
: : : : : : : +- Filter (563)
: : : : : : : +- Scan parquet (246)
: : : : : : +- BroadcastExchange (568)
: : : : : : +- Project (567)
: : : : : : +- Exchange (566)
: : : : : : +- Project (565)
: : : : : : +- Scan parquet (251)
: : : : : +- BroadcastExchange (573)
: : : : : +- Exchange (572)
: : : : : +- Project (571)
: : : : : +- Scan parquet (261)
: : : : +- BroadcastExchange (579)
: : : : +- Exchange (578)
: : : : +- Project (577)
: : : : +- Filter (576)
: : : : +- Scan parquet (270)
: : : +- Sort (767)
: : : +- HashAggregate (766)
: : : +- Exchange (765)
: : : +- HashAggregate (764)
: : : +- Project (763)
: : : +- SortMergeJoin Inner (762)
: : : :- Sort (670)
: : : : +- Exchange (669)
: : : : +- Project (668)
: : : : +- SortMergeJoin Inner (667)
: : : : :- Sort (639)
: : : : : +- Exchange (638)
: : : : : +- Project (637)
: : : : : +- Filter (636)
: : : : : +- Generate (635)
: : : : : +- Filter (634)
: : : : : +- ObjectHashAggregate (633)
: : : : : +- ObjectHashAggregate (632)
: : : : : +- Generate (631)
: : : : : +- BroadcastHashJoin Inner BuildLeft (630)
: : : : : :- BroadcastExchange (590)
: : : : : : +- Exchange (589)
: : : : : : +- Project (588)
: : : : : : +- Filter (587)
: : : : : : +- Scan parquet (284)
: : : : : +- Project (629)
: : : : : +- BroadcastHashJoin Inner BuildLeft (628)
: : : : : :- BroadcastExchange (599)
: : : : : : +- Project (598)
: : : : : : +- Generate (597)
: : : : : : +- Project (596)
: : : : : : +- Filter (595)
: : : : : : +- Generate (594)
: : : : : : +- Exchange (593)
: : : : : : +- Project (592)
: : : : : : +- Filter (591)
: : : : : : +- Scan parquet (292)
: : : : : +- HashAggregate (627)
: : : : : +- Exchange (626)
: : : : : +- HashAggregate (625)
: : : : : +- Project (624)
: : : : : +- Generate (623)
: : : : : +- Project (622)
: : : : : +- Generate (621)
: : : : : +- Project (620)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (619)
: : : : : :- Project (613)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (612)
: : : : : : :- Project (608)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (607)
: : : : : : : :- Exchange (601)
: : : : : : : : +- Filter (600)
: : : : : : : : +- Scan parquet (305)
: : : : : : : +- BroadcastExchange (606)
: : : : : : : +- Project (605)
: : : : : : : +- Exchange (604)
: : : : : : : +- Project (603)
: : : : : : : +- Scan parquet (602)
: : : : : : +- BroadcastExchange (611)
: : : : : : +- Exchange (610)
: : : : : : +- Project (609)
: : : : : : +- Scan parquet (314)
: : : : : +- BroadcastExchange (618)
: : : : : +- Exchange (617)
: : : : : +- Project (616)
: : : : : +- Filter (615)
: : : : : +- Scan parquet (614)
: : : : +- Sort (666)
: : : : +- Project (665)
: : : : +- Generate (664)
: : : : +- Project (663)
: : : : +- Generate (662)
: : : : +- Project (661)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (660)
: : : : :- Project (654)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (653)
: : : : : :- Project (648)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (647)
: : : : : : :- Exchange (641)
: : : : : : : +- Filter (640)
: : : : : : : +- Scan parquet (351)
: : : : : : +- BroadcastExchange (646)
: : : : : : +- Project (645)
: : : : : : +- Exchange (644)
: : : : : : +- Project (643)
: : : : : : +- Scan parquet (642)
: : : : : +- BroadcastExchange (652)
: : : : : +- Exchange (651)
: : : : : +- Project (650)
: : : : : +- Scan parquet (649)
: : : : +- BroadcastExchange (659)
: : : : +- Exchange (658)
: : : : +- Project (657)
: : : : +- Filter (656)
: : : : +- Scan parquet (655)
: : : +- Sort (761)
: : : +- Exchange (760)
: : : +- HashAggregate (759)
: : : +- HashAggregate (758)
: : : +- Project (757)
: : : +- SortMergeJoin Inner (756)
: : : :- Sort (727)
: : : : +- Exchange (726)
: : : : +- Project (725)
: : : : +- Filter (724)
: : : : +- Generate (723)
: : : : +- Filter (722)
: : : : +- ObjectHashAggregate (721)
: : : : +- ObjectHashAggregate (720)
: : : : +- Generate (719)
: : : : +- BroadcastHashJoin Inner BuildLeft (718)
: : : : :- BroadcastExchange (675)
: : : : : +- Exchange (674)
: : : : : +- Project (673)
: : : : : +- Filter (672)
: : : : : +- Scan parquet (671)
: : : : +- Project (717)
: : : : +- BroadcastHashJoin Inner BuildLeft (716)
: : : : :- BroadcastExchange (685)
: : : : : +- Project (684)
: : : : : +- Generate (683)
: : : : : +- Project (682)
: : : : : +- Filter (681)
: : : : : +- Generate (680)
: : : : : +- Exchange (679)
: : : : : +- Project (678)
: : : : : +- Filter (677)
: : : : : +- Scan parquet (676)
: : : : +- HashAggregate (715)
: : : : +- Exchange (714)
: : : : +- HashAggregate (713)
: : : : +- Project (712)
: : : : +- Generate (711)
: : : : +- Project (710)
: : : : +- Generate (709)
: : : : +- Project (708)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (707)
: : : : :- Project (701)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (700)
: : : : : :- Project (695)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (694)
: : : : : : :- Exchange (688)
: : : : : : : +- Filter (687)
: : : : : : : +- Scan parquet (686)
: : : : : : +- BroadcastExchange (693)
: : : : : : +- Project (692)
: : : : : : +- Exchange (691)
: : : : : : +- Project (690)
: : : : : : +- Scan parquet (689)
: : : : : +- BroadcastExchange (699)
: : : : : +- Exchange (698)
: : : : : +- Project (697)
: : : : : +- Scan parquet (696)
: : : : +- BroadcastExchange (706)
: : : : +- Exchange (705)
: : : : +- Project (704)
: : : : +- Filter (703)
: : : : +- Scan parquet (702)
: : : +- Sort (755)
: : : +- Project (754)
: : : +- Generate (753)
: : : +- Project (752)
: : : +- Generate (751)
: : : +- Project (750)
: : : +- BroadcastHashJoin LeftOuter BuildRight (749)
: : : :- Project (743)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (742)
: : : : :- Project (737)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (736)
: : : : : :- Exchange (730)
: : : : : : +- Filter (729)
: : : : : : +- Scan parquet (728)
: : : : : +- BroadcastExchange (735)
: : : : : +- Project (734)
: : : : : +- Exchange (733)
: : : : : +- Project (732)
: : : : : +- Scan parquet (731)
: : : : +- BroadcastExchange (741)
: : : : +- Exchange (740)
: : : : +- Project (739)
: : : : +- Scan parquet (738)
: : : +- BroadcastExchange (748)
: : : +- Exchange (747)
: : : +- Project (746)
: : : +- Filter (745)
: : : +- Scan parquet (744)
: : +- Sort (995)
: : +- Exchange (994)
: : +- SerializeFromObject (993)
: : +- MapElements (992)
: : +- DeserializeToObject (991)
: : +- ObjectHashAggregate (990)
: : +- ObjectHashAggregate (989)
: : +- Project (988)
: : +- BroadcastHashJoin LeftOuter BuildRight (987)
: : :- Project (984)
: : : +- SortMergeJoin LeftOuter (983)
: : : :- Sort (796)
: : : : +- Project (795)
: : : : +- Project (794)
: : : : +- Generate (793)
: : : : +- Generate (792)
: : : : +- Project (791)
: : : : +- Project (790)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (789)
: : : : :- Project (783)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (782)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (777)
: : : : : : :- Exchange (772)
: : : : : : : +- Scan parquet (420)
: : : : : : +- BroadcastExchange (776)
: : : : : : +- Project (775)
: : : : : : +- Exchange (774)
: : : : : : +- Project (773)
: : : : : : +- Scan parquet (424)
: : : : : +- BroadcastExchange (781)
: : : : : +- Exchange (780)
: : : : : +- Project (779)
: : : : : +- Scan parquet (778)
: : : : +- BroadcastExchange (788)
: : : : +- Exchange (787)
: : : : +- Project (786)
: : : : +- Filter (785)
: : : : +- Scan parquet (784)
: : : +- Sort (982)
: : : +- HashAggregate (981)
: : : +- Exchange (980)
: : : +- HashAggregate (979)
: : : +- Project (978)
: : : +- SortMergeJoin Inner (977)
: : : :- Sort (885)
: : : : +- Exchange (884)
: : : : +- Project (883)
: : : : +- SortMergeJoin Inner (882)
: : : : :- Sort (853)
: : : : : +- Exchange (852)
: : : : : +- Project (851)
: : : : : +- Filter (850)
: : : : : +- Generate (849)
: : : : : +- Filter (848)
: : : : : +- ObjectHashAggregate (847)
: : : : : +- ObjectHashAggregate (846)
: : : : : +- Generate (845)
: : : : : +- BroadcastHashJoin Inner BuildLeft (844)
: : : : : :- BroadcastExchange (801)
: : : : : : +- Exchange (800)
: : : : : : +- Project (799)
: : : : : : +- Filter (798)
: : : : : : +- Scan parquet (797)
: : : : : +- Project (843)
: : : : : +- BroadcastHashJoin Inner BuildLeft (842)
: : : : : :- BroadcastExchange (811)
: : : : : : +- Project (810)
: : : : : : +- Generate (809)
: : : : : : +- Project (808)
: : : : : : +- Filter (807)
: : : : : : +- Generate (806)
: : : : : : +- Exchange (805)
: : : : : : +- Project (804)
: : : : : : +- Filter (803)
: : : : : : +- Scan parquet (802)
: : : : : +- HashAggregate (841)
: : : : : +- Exchange (840)
: : : : : +- HashAggregate (839)
: : : : : +- Project (838)
: : : : : +- Generate (837)
: : : : : +- Project (836)
: : : : : +- Generate (835)
: : : : : +- Project (834)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (833)
: : : : : :- Project (827)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (826)
: : : : : : :- Project (821)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (820)
: : : : : : : :- Exchange (814)
: : : : : : : : +- Filter (813)
: : : : : : : : +- Scan parquet (812)
: : : : : : : +- BroadcastExchange (819)
: : : : : : : +- Project (818)
: : : : : : : +- Exchange (817)
: : : : : : : +- Project (816)
: : : : : : : +- Scan parquet (815)
: : : : : : +- BroadcastExchange (825)
: : : : : : +- Exchange (824)
: : : : : : +- Project (823)
: : : : : : +- Scan parquet (822)
: : : : : +- BroadcastExchange (832)
: : : : : +- Exchange (831)
: : : : : +- Project (830)
: : : : : +- Filter (829)
: : : : : +- Scan parquet (828)
: : : : +- Sort (881)
: : : : +- Project (880)
: : : : +- Generate (879)
: : : : +- Project (878)
: : : : +- Generate (877)
: : : : +- Project (876)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (875)
: : : : :- Project (869)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (868)
: : : : : :- Project (863)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (862)
: : : : : : :- Exchange (856)
: : : : : : : +- Filter (855)
: : : : : : : +- Scan parquet (854)
: : : : : : +- BroadcastExchange (861)
: : : : : : +- Project (860)
: : : : : : +- Exchange (859)
: : : : : : +- Project (858)
: : : : : : +- Scan parquet (857)
: : : : : +- BroadcastExchange (867)
: : : : : +- Exchange (866)
: : : : : +- Project (865)
: : : : : +- Scan parquet (864)
: : : : +- BroadcastExchange (874)
: : : : +- Exchange (873)
: : : : +- Project (872)
: : : : +- Filter (871)
: : : : +- Scan parquet (870)
: : : +- Sort (976)
: : : +- Exchange (975)
: : : +- HashAggregate (974)
: : : +- HashAggregate (973)
: : : +- Project (972)
: : : +- SortMergeJoin Inner (971)
: : : :- Sort (942)
: : : : +- Exchange (941)
: : : : +- Project (940)
: : : : +- Filter (939)
: : : : +- Generate (938)
: : : : +- Filter (937)
: : : : +- ObjectHashAggregate (936)
: : : : +- ObjectHashAggregate (935)
: : : : +- Generate (934)
: : : : +- BroadcastHashJoin Inner BuildLeft (933)
: : : : :- BroadcastExchange (890)
: : : : : +- Exchange (889)
: : : : : +- Project (888)
: : : : : +- Filter (887)
: : : : : +- Scan parquet (886)
: : : : +- Project (932)
: : : : +- BroadcastHashJoin Inner BuildLeft (931)
: : : : :- BroadcastExchange (900)
: : : : : +- Project (899)
: : : : : +- Generate (898)
: : : : : +- Project (897)
: : : : : +- Filter (896)
: : : : : +- Generate (895)
: : : : : +- Exchange (894)
: : : : : +- Project (893)
: : : : : +- Filter (892)
: : : : : +- Scan parquet (891)
: : : : +- HashAggregate (930)
: : : : +- Exchange (929)
: : : : +- HashAggregate (928)
: : : : +- Project (927)
: : : : +- Generate (926)
: : : : +- Project (925)
: : : : +- Generate (924)
: : : : +- Project (923)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (922)
: : : : :- Project (916)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (915)
: : : : : :- Project (910)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (909)
: : : : : : :- Exchange (903)
: : : : : : : +- Filter (902)
: : : : : : : +- Scan parquet (901)
: : : : : : +- BroadcastExchange (908)
: : : : : : +- Project (907)
: : : : : : +- Exchange (906)
: : : : : : +- Project (905)
: : : : : : +- Scan parquet (904)
: : : : : +- BroadcastExchange (914)
: : : : : +- Exchange (913)
: : : : : +- Project (912)
: : : : : +- Scan parquet (911)
: : : : +- BroadcastExchange (921)
: : : : +- Exchange (920)
: : : : +- Project (919)
: : : : +- Filter (918)
: : : : +- Scan parquet (917)
: : : +- Sort (970)
: : : +- Project (969)
: : : +- Generate (968)
: : : +- Project (967)
: : : +- Generate (966)
: : : +- Project (965)
: : : +- BroadcastHashJoin LeftOuter BuildRight (964)
: : : :- Project (958)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (957)
: : : : :- Project (952)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (951)
: : : : : :- Exchange (945)
: : : : : : +- Filter (944)
: : : : : : +- Scan parquet (943)
: : : : : +- BroadcastExchange (950)
: : : : : +- Project (949)
: : : : : +- Exchange (948)
: : : : : +- Project (947)
: : : : : +- Scan parquet (946)
: : : : +- BroadcastExchange (956)
: : : : +- Exchange (955)
: : : : +- Project (954)
: : : : +- Scan parquet (953)
: : : +- BroadcastExchange (963)
: : : +- Exchange (962)
: : : +- Project (961)
: : : +- Filter (960)
: : : +- Scan parquet (959)
: : +- BroadcastExchange (986)
: : +- Filter (985)
: : +- Scan parquet (508)
: +- Sort (1043)
: +- Project (1042)
: +- BroadcastHashJoin Inner BuildLeft (1041)
: :- BroadcastExchange (1010)
: : +- Project (1009)
: : +- Filter (1008)
: : +- Generate (1007)
: : +- Project (1006)
: : +- Filter (1005)
: : +- Generate (1004)
: : +- Exchange (1003)
: : +- Project (1002)
: : +- Filter (1001)
: : +- Scan parquet (1000)
: +- HashAggregate (1040)
: +- Exchange (1039)
: +- HashAggregate (1038)
: +- Project (1037)
: +- Generate (1036)
: +- Project (1035)
: +- Generate (1034)
: +- Project (1033)
: +- BroadcastHashJoin LeftOuter BuildRight (1032)
: :- Project (1026)
: : +- BroadcastHashJoin LeftOuter BuildRight (1025)
: : :- Project (1020)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1019)
: : : :- Exchange (1013)
: : : : +- Filter (1012)
: : : : +- Scan parquet (1011)
: : : +- BroadcastExchange (1018)
: : : +- Project (1017)
: : : +- Exchange (1016)
: : : +- Project (1015)
: : : +- Scan parquet (1014)
: : +- BroadcastExchange (1024)
: : +- Exchange (1023)
: : +- Project (1022)
: : +- Scan parquet (1021)
: +- BroadcastExchange (1031)
: +- Exchange (1030)
: +- Project (1029)
: +- Filter (1028)
: +- Scan parquet (1027)
+- BroadcastExchange (1052)
+- Project (1051)
+- Filter (1050)
+- Generate (1049)
+- Exchange (1048)
+- Project (1047)
+- Filter (1046)
+- Scan parquet (549)
+- == Initial Plan ==
Filter (1078)
+- ObjectHashAggregate (1077)
+- Exchange (1076)
+- ObjectHashAggregate (1075)
+- Project (1074)
+- Window (1073)
+- Sort (1072)
+- Exchange (1071)
+- Project (1070)
+- InMemoryTableScan (244)
+- InMemoryRelation (245)
+- AdaptiveSparkPlan (1055)
+- == Final Plan ==
ResultQueryStage (562)
+- Project (561)
+- * BroadcastHashJoin Inner BuildRight (560)
:- * Project (548)
: +- * BroadcastHashJoin Inner BuildLeft (547)
: :- BroadcastQueryStage (531), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (530)
: : +- AQEShuffleRead (529)
: : +- ShuffleQueryStage (528), Statistics(sizeInBytes=114.8 KiB, rowCount=980)
: : +- Exchange (527)
: : +- * Project (526)
: : +- * BroadcastHashJoin LeftOuter BuildRight (525)
: : :- AQEShuffleRead (419)
: : : +- ShuffleQueryStage (418), Statistics(sizeInBytes=114.8 KiB, rowCount=980)
: : : +- Exchange (417)
: : : +- * Project (416)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (415)
: : : :- * Project (283)
: : : : +- * Generate (282)
: : : : +- * Project (281)
: : : : +- * Generate (280)
: : : : +- Project (279)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (278)
: : : : :- * Project (269)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (268)
: : : : : :- * Project (260)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (259)
: : : : : : :- ShuffleQueryStage (250), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (249)
: : : : : : : +- * Filter (248)
: : : : : : : +- * ColumnarToRow (247)
: : : : : : : +- Scan parquet (246)
: : : : : : +- BroadcastQueryStage (258), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (257)
: : : : : : +- * Project (256)
: : : : : : +- ShuffleQueryStage (255), Statistics(sizeInBytes=339.5 KiB, rowCount=2.75E+3)
: : : : : : +- Exchange (254)
: : : : : : +- * Project (253)
: : : : : : +- * ColumnarToRow (252)
: : : : : : +- Scan parquet (251)
: : : : : +- BroadcastQueryStage (267), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- BroadcastExchange (266)
: : : : : +- ShuffleQueryStage (265), Statistics(sizeInBytes=4.4 KiB, rowCount=62)
: : : : : +- Exchange (264)
: : : : : +- * Project (263)
: : : : : +- * ColumnarToRow (262)
: : : : : +- Scan parquet (261)
: : : : +- BroadcastQueryStage (277), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- BroadcastExchange (276)
: : : : +- ShuffleQueryStage (275), Statistics(sizeInBytes=92.7 KiB, rowCount=159)
: : : : +- Exchange (274)
: : : : +- * Project (273)
: : : : +- * Filter (272)
: : : : +- * ColumnarToRow (271)
: : : : +- Scan parquet (270)
: : : +- BroadcastQueryStage (414), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (413)
: : : +- * HashAggregate (412)
: : : +- AQEShuffleRead (411)
: : : +- ShuffleQueryStage (410), Statistics(sizeInBytes=27.7 KiB, rowCount=295)
: : : +- Exchange (409)
: : : +- * HashAggregate (408)
: : : +- * Project (407)
: : : +- * BroadcastHashJoin Inner BuildLeft (406)
: : : :- BroadcastQueryStage (378), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : : +- BroadcastExchange (377)
: : : : +- AQEShuffleRead (376)
: : : : +- ShuffleQueryStage (375), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : : +- Exchange (374)
: : : : +- * Project (373)
: : : : +- * BroadcastHashJoin Inner BuildLeft (372)
: : : : :- BroadcastQueryStage (350), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : : +- BroadcastExchange (349)
: : : : : +- AQEShuffleRead (348)
: : : : : +- ShuffleQueryStage (347), Statistics(sizeInBytes=43.1 KiB, rowCount=394)
: : : : : +- Exchange (346)
: : : : : +- * Project (345)
: : : : : +- * Filter (344)
: : : : : +- * Generate (343)
: : : : : +- * Filter (342)
: : : : : +- ObjectHashAggregate (341)
: : : : : +- ObjectHashAggregate (340)
: : : : : +- Generate (339)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (338)
: : : : : :- BroadcastQueryStage (291), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- BroadcastExchange (290)
: : : : : : +- ShuffleQueryStage (289), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : : : +- Exchange (288)
: : : : : : +- * Project (287)
: : : : : : +- * Filter (286)
: : : : : : +- * ColumnarToRow (285)
: : : : : : +- Scan parquet (284)
: : : : : +- * Project (337)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (336)
: : : : : :- BroadcastQueryStage (304), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- BroadcastExchange (303)
: : : : : : +- * Project (302)
: : : : : : +- * Generate (301)
: : : : : : +- * Project (300)
: : : : : : +- * Filter (299)
: : : : : : +- * Generate (298)
: : : : : : +- ShuffleQueryStage (297), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : : : : : +- Exchange (296)
: : : : : : +- * Project (295)
: : : : : : +- * Filter (294)
: : : : : : +- * ColumnarToRow (293)
: : : : : : +- Scan parquet (292)
: : : : : +- * HashAggregate (335)
: : : : : +- AQEShuffleRead (334)
: : : : : +- ShuffleQueryStage (333), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: : : : : +- Exchange (332)
: : : : : +- * HashAggregate (331)
: : : : : +- * Project (330)
: : : : : +- * Generate (329)
: : : : : +- * Project (328)
: : : : : +- * Generate (327)
: : : : : +- Project (326)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (325)
: : : : : :- * Project (322)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (321)
: : : : : : :- * Project (313)
: : : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (312)
: : : : : : : :- ShuffleQueryStage (309), Statistics(sizeInBytes=84.2 KiB, rowCount=980)
: : : : : : : : +- Exchange (308)
: : : : : : : : +- * Filter (307)
: : : : : : : : +- * ColumnarToRow (306)
: : : : : : : : +- Scan parquet (305)
: : : : : : : +- BroadcastQueryStage (311), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : : +- ReusedExchange (310)
: : : : : : +- BroadcastQueryStage (320), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : : +- BroadcastExchange (319)
: : : : : : +- ShuffleQueryStage (318), Statistics(sizeInBytes=2.9 KiB, rowCount=62)
: : : : : : +- Exchange (317)
: : : : : : +- * Project (316)
: : : : : : +- * ColumnarToRow (315)
: : : : : : +- Scan parquet (314)
: : : : : +- BroadcastQueryStage (324), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : : +- ReusedExchange (323)
: : : : +- * Project (371)
: : : : +- * Generate (370)
: : : : +- * Project (369)
: : : : +- * Generate (368)
: : : : +- Project (367)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (366)
: : : : :- * Project (363)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (362)
: : : : : :- * Project (359)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (358)
: : : : : : :- ShuffleQueryStage (355), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (354)
: : : : : : : +- * Filter (353)
: : : : : : : +- * ColumnarToRow (352)
: : : : : : : +- Scan parquet (351)
: : : : : : +- BroadcastQueryStage (357), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- ReusedExchange (356)
: : : : : +- BroadcastQueryStage (361), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (360)
: : : : +- BroadcastQueryStage (365), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (364)
: : : +- AQEShuffleRead (405)
: : : +- ShuffleQueryStage (404), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : +- Exchange (403)
: : : +- * HashAggregate (402)
: : : +- * HashAggregate (401)
: : : +- * Project (400)
: : : +- * BroadcastHashJoin Inner BuildLeft (399)
: : : :- BroadcastQueryStage (380), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : +- ReusedExchange (379)
: : : +- * Project (398)
: : : +- * Generate (397)
: : : +- * Project (396)
: : : +- * Generate (395)
: : : +- Project (394)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (393)
: : : :- * Project (390)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (389)
: : : : :- * Project (386)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (385)
: : : : : :- ShuffleQueryStage (382), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : +- ReusedExchange (381)
: : : : : +- BroadcastQueryStage (384), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : +- ReusedExchange (383)
: : : : +- BroadcastQueryStage (388), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : +- ReusedExchange (387)
: : : +- BroadcastQueryStage (392), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : +- ReusedExchange (391)
: : +- BroadcastQueryStage (524), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (523)
: : +- AQEShuffleRead (522)
: : +- ShuffleQueryStage (521), Statistics(sizeInBytes=84.2 KiB, rowCount=980)
: : +- Exchange (520)
: : +- * SerializeFromObject (519)
: : +- * MapElements (518)
: : +- * DeserializeToObject (517)
: : +- ObjectHashAggregate (516)
: : +- ObjectHashAggregate (515)
: : +- * Project (514)
: : +- * BroadcastHashJoin LeftOuter BuildRight (513)
: : :- * Project (507)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (506)
: : : :- * Project (445)
: : : : +- * Project (444)
: : : : +- * Generate (443)
: : : : +- * Generate (442)
: : : : +- * Project (441)
: : : : +- Project (440)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (439)
: : : : :- * Project (436)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (435)
: : : : : :- * BroadcastHashJoin LeftOuter BuildRight (432)
: : : : : : :- ShuffleQueryStage (423), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (422)
: : : : : : : +- * ColumnarToRow (421)
: : : : : : : +- Scan parquet (420)
: : : : : : +- BroadcastQueryStage (431), Statistics(sizeInBytes=4.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (430)
: : : : : : +- * Project (429)
: : : : : : +- ShuffleQueryStage (428), Statistics(sizeInBytes=2.0 MiB, rowCount=2.75E+3)
: : : : : : +- Exchange (427)
: : : : : : +- * Project (426)
: : : : : : +- * ColumnarToRow (425)
: : : : : : +- Scan parquet (424)
: : : : : +- BroadcastQueryStage (434), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (433)
: : : : +- BroadcastQueryStage (438), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (437)
: : : +- BroadcastQueryStage (505), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (504)
: : : +- * HashAggregate (503)
: : : +- AQEShuffleRead (502)
: : : +- ShuffleQueryStage (501), Statistics(sizeInBytes=30.0 KiB, rowCount=295)
: : : +- Exchange (500)
: : : +- * HashAggregate (499)
: : : +- * Project (498)
: : : +- * BroadcastHashJoin Inner BuildLeft (497)
: : : :- BroadcastQueryStage (493), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : : +- BroadcastExchange (492)
: : : : +- AQEShuffleRead (491)
: : : : +- ShuffleQueryStage (490), Statistics(sizeInBytes=34.6 KiB, rowCount=295)
: : : : +- Exchange (489)
: : : : +- * Project (488)
: : : : +- * BroadcastHashJoin Inner BuildLeft (487)
: : : : :- BroadcastQueryStage (468), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : : +- BroadcastExchange (467)
: : : : : +- AQEShuffleRead (466)
: : : : : +- ShuffleQueryStage (465), Statistics(sizeInBytes=46.2 KiB, rowCount=394)
: : : : : +- Exchange (464)
: : : : : +- * Project (463)
: : : : : +- * Filter (462)
: : : : : +- * Generate (461)
: : : : : +- * Filter (460)
: : : : : +- ObjectHashAggregate (459)
: : : : : +- ObjectHashAggregate (458)
: : : : : +- Generate (457)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (456)
: : : : : :- BroadcastQueryStage (447), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- ReusedExchange (446)
: : : : : +- * Project (455)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (454)
: : : : : :- BroadcastQueryStage (449), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- ReusedExchange (448)
: : : : : +- * HashAggregate (453)
: : : : : +- AQEShuffleRead (452)
: : : : : +- ShuffleQueryStage (451), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: : : : : +- ReusedExchange (450)
: : : : +- * Project (486)
: : : : +- * Generate (485)
: : : : +- * Project (484)
: : : : +- * Generate (483)
: : : : +- Project (482)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (481)
: : : : :- * Project (478)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (477)
: : : : : :- * Project (474)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (473)
: : : : : : :- ShuffleQueryStage (470), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- ReusedExchange (469)
: : : : : : +- BroadcastQueryStage (472), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- ReusedExchange (471)
: : : : : +- BroadcastQueryStage (476), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (475)
: : : : +- BroadcastQueryStage (480), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (479)
: : : +- AQEShuffleRead (496)
: : : +- ShuffleQueryStage (495), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : +- ReusedExchange (494)
: : +- BroadcastQueryStage (512), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (511)
: : +- * Filter (510)
: : +- * ColumnarToRow (509)
: : +- Scan parquet (508)
: +- * Project (546)
: +- * BroadcastHashJoin Inner BuildLeft (545)
: :- BroadcastQueryStage (541), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : +- BroadcastExchange (540)
: : +- * Project (539)
: : +- * Filter (538)
: : +- * Generate (537)
: : +- * Project (536)
: : +- * Filter (535)
: : +- * Generate (534)
: : +- ShuffleQueryStage (533), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : +- ReusedExchange (532)
: +- * HashAggregate (544)
: +- ShuffleQueryStage (543), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: +- ReusedExchange (542)
+- BroadcastQueryStage (559), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
+- BroadcastExchange (558)
+- * Project (557)
+- * Filter (556)
+- * Generate (555)
+- ShuffleQueryStage (554), Statistics(sizeInBytes=29.9 KiB, rowCount=9)
+- Exchange (553)
+- * Project (552)
+- * Filter (551)
+- * ColumnarToRow (550)
+- Scan parquet (549)
+- == Initial Plan ==
Project (1054)
+- BroadcastHashJoin Inner BuildRight (1053)
:- Project (1045)
: +- SortMergeJoin Inner (1044)
: :- Sort (999)
: : +- Exchange (998)
: : +- Project (997)
: : +- SortMergeJoin LeftOuter (996)
: : :- Sort (771)
: : : +- Exchange (770)
: : : +- Project (769)
: : : +- SortMergeJoin LeftOuter (768)
: : : :- Sort (586)
: : : : +- Project (585)
: : : : +- Generate (584)
: : : : +- Project (583)
: : : : +- Generate (582)
: : : : +- Project (581)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (580)
: : : : :- Project (575)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (574)
: : : : : :- Project (570)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (569)
: : : : : : :- Exchange (564)
: : : : : : : +- Filter (563)
: : : : : : : +- Scan parquet (246)
: : : : : : +- BroadcastExchange (568)
: : : : : : +- Project (567)
: : : : : : +- Exchange (566)
: : : : : : +- Project (565)
: : : : : : +- Scan parquet (251)
: : : : : +- BroadcastExchange (573)
: : : : : +- Exchange (572)
: : : : : +- Project (571)
: : : : : +- Scan parquet (261)
: : : : +- BroadcastExchange (579)
: : : : +- Exchange (578)
: : : : +- Project (577)
: : : : +- Filter (576)
: : : : +- Scan parquet (270)
: : : +- Sort (767)
: : : +- HashAggregate (766)
: : : +- Exchange (765)
: : : +- HashAggregate (764)
: : : +- Project (763)
: : : +- SortMergeJoin Inner (762)
: : : :- Sort (670)
: : : : +- Exchange (669)
: : : : +- Project (668)
: : : : +- SortMergeJoin Inner (667)
: : : : :- Sort (639)
: : : : : +- Exchange (638)
: : : : : +- Project (637)
: : : : : +- Filter (636)
: : : : : +- Generate (635)
: : : : : +- Filter (634)
: : : : : +- ObjectHashAggregate (633)
: : : : : +- ObjectHashAggregate (632)
: : : : : +- Generate (631)
: : : : : +- BroadcastHashJoin Inner BuildLeft (630)
: : : : : :- BroadcastExchange (590)
: : : : : : +- Exchange (589)
: : : : : : +- Project (588)
: : : : : : +- Filter (587)
: : : : : : +- Scan parquet (284)
: : : : : +- Project (629)
: : : : : +- BroadcastHashJoin Inner BuildLeft (628)
: : : : : :- BroadcastExchange (599)
: : : : : : +- Project (598)
: : : : : : +- Generate (597)
: : : : : : +- Project (596)
: : : : : : +- Filter (595)
: : : : : : +- Generate (594)
: : : : : : +- Exchange (593)
: : : : : : +- Project (592)
: : : : : : +- Filter (591)
: : : : : : +- Scan parquet (292)
: : : : : +- HashAggregate (627)
: : : : : +- Exchange (626)
: : : : : +- HashAggregate (625)
: : : : : +- Project (624)
: : : : : +- Generate (623)
: : : : : +- Project (622)
: : : : : +- Generate (621)
: : : : : +- Project (620)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (619)
: : : : : :- Project (613)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (612)
: : : : : : :- Project (608)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (607)
: : : : : : : :- Exchange (601)
: : : : : : : : +- Filter (600)
: : : : : : : : +- Scan parquet (305)
: : : : : : : +- BroadcastExchange (606)
: : : : : : : +- Project (605)
: : : : : : : +- Exchange (604)
: : : : : : : +- Project (603)
: : : : : : : +- Scan parquet (602)
: : : : : : +- BroadcastExchange (611)
: : : : : : +- Exchange (610)
: : : : : : +- Project (609)
: : : : : : +- Scan parquet (314)
: : : : : +- BroadcastExchange (618)
: : : : : +- Exchange (617)
: : : : : +- Project (616)
: : : : : +- Filter (615)
: : : : : +- Scan parquet (614)
: : : : +- Sort (666)
: : : : +- Project (665)
: : : : +- Generate (664)
: : : : +- Project (663)
: : : : +- Generate (662)
: : : : +- Project (661)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (660)
: : : : :- Project (654)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (653)
: : : : : :- Project (648)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (647)
: : : : : : :- Exchange (641)
: : : : : : : +- Filter (640)
: : : : : : : +- Scan parquet (351)
: : : : : : +- BroadcastExchange (646)
: : : : : : +- Project (645)
: : : : : : +- Exchange (644)
: : : : : : +- Project (643)
: : : : : : +- Scan parquet (642)
: : : : : +- BroadcastExchange (652)
: : : : : +- Exchange (651)
: : : : : +- Project (650)
: : : : : +- Scan parquet (649)
: : : : +- BroadcastExchange (659)
: : : : +- Exchange (658)
: : : : +- Project (657)
: : : : +- Filter (656)
: : : : +- Scan parquet (655)
: : : +- Sort (761)
: : : +- Exchange (760)
: : : +- HashAggregate (759)
: : : +- HashAggregate (758)
: : : +- Project (757)
: : : +- SortMergeJoin Inner (756)
: : : :- Sort (727)
: : : : +- Exchange (726)
: : : : +- Project (725)
: : : : +- Filter (724)
: : : : +- Generate (723)
: : : : +- Filter (722)
: : : : +- ObjectHashAggregate (721)
: : : : +- ObjectHashAggregate (720)
: : : : +- Generate (719)
: : : : +- BroadcastHashJoin Inner BuildLeft (718)
: : : : :- BroadcastExchange (675)
: : : : : +- Exchange (674)
: : : : : +- Project (673)
: : : : : +- Filter (672)
: : : : : +- Scan parquet (671)
: : : : +- Project (717)
: : : : +- BroadcastHashJoin Inner BuildLeft (716)
: : : : :- BroadcastExchange (685)
: : : : : +- Project (684)
: : : : : +- Generate (683)
: : : : : +- Project (682)
: : : : : +- Filter (681)
: : : : : +- Generate (680)
: : : : : +- Exchange (679)
: : : : : +- Project (678)
: : : : : +- Filter (677)
: : : : : +- Scan parquet (676)
: : : : +- HashAggregate (715)
: : : : +- Exchange (714)
: : : : +- HashAggregate (713)
: : : : +- Project (712)
: : : : +- Generate (711)
: : : : +- Project (710)
: : : : +- Generate (709)
: : : : +- Project (708)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (707)
: : : : :- Project (701)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (700)
: : : : : :- Project (695)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (694)
: : : : : : :- Exchange (688)
: : : : : : : +- Filter (687)
: : : : : : : +- Scan parquet (686)
: : : : : : +- BroadcastExchange (693)
: : : : : : +- Project (692)
: : : : : : +- Exchange (691)
: : : : : : +- Project (690)
: : : : : : +- Scan parquet (689)
: : : : : +- BroadcastExchange (699)
: : : : : +- Exchange (698)
: : : : : +- Project (697)
: : : : : +- Scan parquet (696)
: : : : +- BroadcastExchange (706)
: : : : +- Exchange (705)
: : : : +- Project (704)
: : : : +- Filter (703)
: : : : +- Scan parquet (702)
: : : +- Sort (755)
: : : +- Project (754)
: : : +- Generate (753)
: : : +- Project (752)
: : : +- Generate (751)
: : : +- Project (750)
: : : +- BroadcastHashJoin LeftOuter BuildRight (749)
: : : :- Project (743)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (742)
: : : : :- Project (737)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (736)
: : : : : :- Exchange (730)
: : : : : : +- Filter (729)
: : : : : : +- Scan parquet (728)
: : : : : +- BroadcastExchange (735)
: : : : : +- Project (734)
: : : : : +- Exchange (733)
: : : : : +- Project (732)
: : : : : +- Scan parquet (731)
: : : : +- BroadcastExchange (741)
: : : : +- Exchange (740)
: : : : +- Project (739)
: : : : +- Scan parquet (738)
: : : +- BroadcastExchange (748)
: : : +- Exchange (747)
: : : +- Project (746)
: : : +- Filter (745)
: : : +- Scan parquet (744)
: : +- Sort (995)
: : +- Exchange (994)
: : +- SerializeFromObject (993)
: : +- MapElements (992)
: : +- DeserializeToObject (991)
: : +- ObjectHashAggregate (990)
: : +- ObjectHashAggregate (989)
: : +- Project (988)
: : +- BroadcastHashJoin LeftOuter BuildRight (987)
: : :- Project (984)
: : : +- SortMergeJoin LeftOuter (983)
: : : :- Sort (796)
: : : : +- Project (795)
: : : : +- Project (794)
: : : : +- Generate (793)
: : : : +- Generate (792)
: : : : +- Project (791)
: : : : +- Project (790)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (789)
: : : : :- Project (783)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (782)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (777)
: : : : : : :- Exchange (772)
: : : : : : : +- Scan parquet (420)
: : : : : : +- BroadcastExchange (776)
: : : : : : +- Project (775)
: : : : : : +- Exchange (774)
: : : : : : +- Project (773)
: : : : : : +- Scan parquet (424)
: : : : : +- BroadcastExchange (781)
: : : : : +- Exchange (780)
: : : : : +- Project (779)
: : : : : +- Scan parquet (778)
: : : : +- BroadcastExchange (788)
: : : : +- Exchange (787)
: : : : +- Project (786)
: : : : +- Filter (785)
: : : : +- Scan parquet (784)
: : : +- Sort (982)
: : : +- HashAggregate (981)
: : : +- Exchange (980)
: : : +- HashAggregate (979)
: : : +- Project (978)
: : : +- SortMergeJoin Inner (977)
: : : :- Sort (885)
: : : : +- Exchange (884)
: : : : +- Project (883)
: : : : +- SortMergeJoin Inner (882)
: : : : :- Sort (853)
: : : : : +- Exchange (852)
: : : : : +- Project (851)
: : : : : +- Filter (850)
: : : : : +- Generate (849)
: : : : : +- Filter (848)
: : : : : +- ObjectHashAggregate (847)
: : : : : +- ObjectHashAggregate (846)
: : : : : +- Generate (845)
: : : : : +- BroadcastHashJoin Inner BuildLeft (844)
: : : : : :- BroadcastExchange (801)
: : : : : : +- Exchange (800)
: : : : : : +- Project (799)
: : : : : : +- Filter (798)
: : : : : : +- Scan parquet (797)
: : : : : +- Project (843)
: : : : : +- BroadcastHashJoin Inner BuildLeft (842)
: : : : : :- BroadcastExchange (811)
: : : : : : +- Project (810)
: : : : : : +- Generate (809)
: : : : : : +- Project (808)
: : : : : : +- Filter (807)
: : : : : : +- Generate (806)
: : : : : : +- Exchange (805)
: : : : : : +- Project (804)
: : : : : : +- Filter (803)
: : : : : : +- Scan parquet (802)
: : : : : +- HashAggregate (841)
: : : : : +- Exchange (840)
: : : : : +- HashAggregate (839)
: : : : : +- Project (838)
: : : : : +- Generate (837)
: : : : : +- Project (836)
: : : : : +- Generate (835)
: : : : : +- Project (834)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (833)
: : : : : :- Project (827)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (826)
: : : : : : :- Project (821)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (820)
: : : : : : : :- Exchange (814)
: : : : : : : : +- Filter (813)
: : : : : : : : +- Scan parquet (812)
: : : : : : : +- BroadcastExchange (819)
: : : : : : : +- Project (818)
: : : : : : : +- Exchange (817)
: : : : : : : +- Project (816)
: : : : : : : +- Scan parquet (815)
: : : : : : +- BroadcastExchange (825)
: : : : : : +- Exchange (824)
: : : : : : +- Project (823)
: : : : : : +- Scan parquet (822)
: : : : : +- BroadcastExchange (832)
: : : : : +- Exchange (831)
: : : : : +- Project (830)
: : : : : +- Filter (829)
: : : : : +- Scan parquet (828)
: : : : +- Sort (881)
: : : : +- Project (880)
: : : : +- Generate (879)
: : : : +- Project (878)
: : : : +- Generate (877)
: : : : +- Project (876)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (875)
: : : : :- Project (869)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (868)
: : : : : :- Project (863)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (862)
: : : : : : :- Exchange (856)
: : : : : : : +- Filter (855)
: : : : : : : +- Scan parquet (854)
: : : : : : +- BroadcastExchange (861)
: : : : : : +- Project (860)
: : : : : : +- Exchange (859)
: : : : : : +- Project (858)
: : : : : : +- Scan parquet (857)
: : : : : +- BroadcastExchange (867)
: : : : : +- Exchange (866)
: : : : : +- Project (865)
: : : : : +- Scan parquet (864)
: : : : +- BroadcastExchange (874)
: : : : +- Exchange (873)
: : : : +- Project (872)
: : : : +- Filter (871)
: : : : +- Scan parquet (870)
: : : +- Sort (976)
: : : +- Exchange (975)
: : : +- HashAggregate (974)
: : : +- HashAggregate (973)
: : : +- Project (972)
: : : +- SortMergeJoin Inner (971)
: : : :- Sort (942)
: : : : +- Exchange (941)
: : : : +- Project (940)
: : : : +- Filter (939)
: : : : +- Generate (938)
: : : : +- Filter (937)
: : : : +- ObjectHashAggregate (936)
: : : : +- ObjectHashAggregate (935)
: : : : +- Generate (934)
: : : : +- BroadcastHashJoin Inner BuildLeft (933)
: : : : :- BroadcastExchange (890)
: : : : : +- Exchange (889)
: : : : : +- Project (888)
: : : : : +- Filter (887)
: : : : : +- Scan parquet (886)
: : : : +- Project (932)
: : : : +- BroadcastHashJoin Inner BuildLeft (931)
: : : : :- BroadcastExchange (900)
: : : : : +- Project (899)
: : : : : +- Generate (898)
: : : : : +- Project (897)
: : : : : +- Filter (896)
: : : : : +- Generate (895)
: : : : : +- Exchange (894)
: : : : : +- Project (893)
: : : : : +- Filter (892)
: : : : : +- Scan parquet (891)
: : : : +- HashAggregate (930)
: : : : +- Exchange (929)
: : : : +- HashAggregate (928)
: : : : +- Project (927)
: : : : +- Generate (926)
: : : : +- Project (925)
: : : : +- Generate (924)
: : : : +- Project (923)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (922)
: : : : :- Project (916)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (915)
: : : : : :- Project (910)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (909)
: : : : : : :- Exchange (903)
: : : : : : : +- Filter (902)
: : : : : : : +- Scan parquet (901)
: : : : : : +- BroadcastExchange (908)
: : : : : : +- Project (907)
: : : : : : +- Exchange (906)
: : : : : : +- Project (905)
: : : : : : +- Scan parquet (904)
: : : : : +- BroadcastExchange (914)
: : : : : +- Exchange (913)
: : : : : +- Project (912)
: : : : : +- Scan parquet (911)
: : : : +- BroadcastExchange (921)
: : : : +- Exchange (920)
: : : : +- Project (919)
: : : : +- Filter (918)
: : : : +- Scan parquet (917)
: : : +- Sort (970)
: : : +- Project (969)
: : : +- Generate (968)
: : : +- Project (967)
: : : +- Generate (966)
: : : +- Project (965)
: : : +- BroadcastHashJoin LeftOuter BuildRight (964)
: : : :- Project (958)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (957)
: : : : :- Project (952)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (951)
: : : : : :- Exchange (945)
: : : : : : +- Filter (944)
: : : : : : +- Scan parquet (943)
: : : : : +- BroadcastExchange (950)
: : : : : +- Project (949)
: : : : : +- Exchange (948)
: : : : : +- Project (947)
: : : : : +- Scan parquet (946)
: : : : +- BroadcastExchange (956)
: : : : +- Exchange (955)
: : : : +- Project (954)
: : : : +- Scan parquet (953)
: : : +- BroadcastExchange (963)
: : : +- Exchange (962)
: : : +- Project (961)
: : : +- Filter (960)
: : : +- Scan parquet (959)
: : +- BroadcastExchange (986)
: : +- Filter (985)
: : +- Scan parquet (508)
: +- Sort (1043)
: +- Project (1042)
: +- BroadcastHashJoin Inner BuildLeft (1041)
: :- BroadcastExchange (1010)
: : +- Project (1009)
: : +- Filter (1008)
: : +- Generate (1007)
: : +- Project (1006)
: : +- Filter (1005)
: : +- Generate (1004)
: : +- Exchange (1003)
: : +- Project (1002)
: : +- Filter (1001)
: : +- Scan parquet (1000)
: +- HashAggregate (1040)
: +- Exchange (1039)
: +- HashAggregate (1038)
: +- Project (1037)
: +- Generate (1036)
: +- Project (1035)
: +- Generate (1034)
: +- Project (1033)
: +- BroadcastHashJoin LeftOuter BuildRight (1032)
: :- Project (1026)
: : +- BroadcastHashJoin LeftOuter BuildRight (1025)
: : :- Project (1020)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1019)
: : : :- Exchange (1013)
: : : : +- Filter (1012)
: : : : +- Scan parquet (1011)
: : : +- BroadcastExchange (1018)
: : : +- Project (1017)
: : : +- Exchange (1016)
: : : +- Project (1015)
: : : +- Scan parquet (1014)
: : +- BroadcastExchange (1024)
: : +- Exchange (1023)
: : +- Project (1022)
: : +- Scan parquet (1021)
: +- BroadcastExchange (1031)
: +- Exchange (1030)
: +- Project (1029)
: +- Filter (1028)
: +- Scan parquet (1027)
+- BroadcastExchange (1052)
+- Project (1051)
+- Filter (1050)
+- Generate (1049)
+- Exchange (1048)
+- Project (1047)
+- Filter (1046)
+- Scan parquet (549)
+- == Initial Plan ==
Project (1996)
+- SortMergeJoin LeftOuter (1995)
:- Sort (1526)
: +- Exchange (1525)
: +- Project (1524)
: +- SortMergeJoin LeftOuter (1523)
: :- Sort (1297)
: : +- Exchange (1296)
: : +- Project (1295)
: : +- SortMergeJoin LeftOuter (1294)
: : :- Sort (1112)
: : : +- Project (1111)
: : : +- Project (1110)
: : : +- Generate (1109)
: : : +- Generate (1108)
: : : +- Project (1107)
: : : +- Project (1106)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1105)
: : : :- Project (1100)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1099)
: : : : :- BroadcastHashJoin LeftOuter BuildRight (1095)
: : : : : :- Exchange (1090)
: : : : : : +- Scan parquet (1)
: : : : : +- BroadcastExchange (1094)
: : : : : +- Project (1093)
: : : : : +- Exchange (1092)
: : : : : +- Project (1091)
: : : : : +- Scan parquet (5)
: : : : +- BroadcastExchange (1098)
: : : : +- Exchange (1097)
: : : : +- Project (1096)
: : : : +- Scan parquet (14)
: : : +- BroadcastExchange (1104)
: : : +- Exchange (1103)
: : : +- Project (1102)
: : : +- Filter (1101)
: : : +- Scan parquet (23)
: : +- Sort (1293)
: : +- HashAggregate (1292)
: : +- Exchange (1291)
: : +- HashAggregate (1290)
: : +- Project (1289)
: : +- SortMergeJoin Inner (1288)
: : :- Sort (1196)
: : : +- Exchange (1195)
: : : +- Project (1194)
: : : +- SortMergeJoin Inner (1193)
: : : :- Sort (1165)
: : : : +- Exchange (1164)
: : : : +- Project (1163)
: : : : +- Filter (1162)
: : : : +- Generate (1161)
: : : : +- Filter (1160)
: : : : +- ObjectHashAggregate (1159)
: : : : +- ObjectHashAggregate (1158)
: : : : +- Generate (1157)
: : : : +- BroadcastHashJoin Inner BuildLeft (1156)
: : : : :- BroadcastExchange (1116)
: : : : : +- Exchange (1115)
: : : : : +- Project (1114)
: : : : : +- Filter (1113)
: : : : : +- Scan parquet (38)
: : : : +- Project (1155)
: : : : +- BroadcastHashJoin Inner BuildLeft (1154)
: : : : :- BroadcastExchange (1125)
: : : : : +- Project (1124)
: : : : : +- Generate (1123)
: : : : : +- Project (1122)
: : : : : +- Filter (1121)
: : : : : +- Generate (1120)
: : : : : +- Exchange (1119)
: : : : : +- Project (1118)
: : : : : +- Filter (1117)
: : : : : +- Scan parquet (46)
: : : : +- HashAggregate (1153)
: : : : +- Exchange (1152)
: : : : +- HashAggregate (1151)
: : : : +- Project (1150)
: : : : +- Generate (1149)
: : : : +- Project (1148)
: : : : +- Generate (1147)
: : : : +- Project (1146)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1145)
: : : : :- Project (1139)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1138)
: : : : : :- Project (1133)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1132)
: : : : : : :- Exchange (1127)
: : : : : : : +- Filter (1126)
: : : : : : : +- Scan parquet (59)
: : : : : : +- BroadcastExchange (1131)
: : : : : : +- Project (1130)
: : : : : : +- Exchange (1129)
: : : : : : +- Project (1128)
: : : : : : +- Scan parquet (64)
: : : : : +- BroadcastExchange (1137)
: : : : : +- Exchange (1136)
: : : : : +- Project (1135)
: : : : : +- Scan parquet (1134)
: : : : +- BroadcastExchange (1144)
: : : : +- Exchange (1143)
: : : : +- Project (1142)
: : : : +- Filter (1141)
: : : : +- Scan parquet (1140)
: : : +- Sort (1192)
: : : +- Project (1191)
: : : +- Generate (1190)
: : : +- Project (1189)
: : : +- Generate (1188)
: : : +- Project (1187)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1186)
: : : :- Project (1180)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1179)
: : : : :- Project (1174)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1173)
: : : : : :- Exchange (1167)
: : : : : : +- Filter (1166)
: : : : : : +- Scan parquet (106)
: : : : : +- BroadcastExchange (1172)
: : : : : +- Project (1171)
: : : : : +- Exchange (1170)
: : : : : +- Project (1169)
: : : : : +- Scan parquet (1168)
: : : : +- BroadcastExchange (1178)
: : : : +- Exchange (1177)
: : : : +- Project (1176)
: : : : +- Scan parquet (1175)
: : : +- BroadcastExchange (1185)
: : : +- Exchange (1184)
: : : +- Project (1183)
: : : +- Filter (1182)
: : : +- Scan parquet (1181)
: : +- Sort (1287)
: : +- Exchange (1286)
: : +- HashAggregate (1285)
: : +- HashAggregate (1284)
: : +- Project (1283)
: : +- SortMergeJoin Inner (1282)
: : :- Sort (1253)
: : : +- Exchange (1252)
: : : +- Project (1251)
: : : +- Filter (1250)
: : : +- Generate (1249)
: : : +- Filter (1248)
: : : +- ObjectHashAggregate (1247)
: : : +- ObjectHashAggregate (1246)
: : : +- Generate (1245)
: : : +- BroadcastHashJoin Inner BuildLeft (1244)
: : : :- BroadcastExchange (1201)
: : : : +- Exchange (1200)
: : : : +- Project (1199)
: : : : +- Filter (1198)
: : : : +- Scan parquet (1197)
: : : +- Project (1243)
: : : +- BroadcastHashJoin Inner BuildLeft (1242)
: : : :- BroadcastExchange (1211)
: : : : +- Project (1210)
: : : : +- Generate (1209)
: : : : +- Project (1208)
: : : : +- Filter (1207)
: : : : +- Generate (1206)
: : : : +- Exchange (1205)
: : : : +- Project (1204)
: : : : +- Filter (1203)
: : : : +- Scan parquet (1202)
: : : +- HashAggregate (1241)
: : : +- Exchange (1240)
: : : +- HashAggregate (1239)
: : : +- Project (1238)
: : : +- Generate (1237)
: : : +- Project (1236)
: : : +- Generate (1235)
: : : +- Project (1234)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1233)
: : : :- Project (1227)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1226)
: : : : :- Project (1221)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1220)
: : : : : :- Exchange (1214)
: : : : : : +- Filter (1213)
: : : : : : +- Scan parquet (1212)
: : : : : +- BroadcastExchange (1219)
: : : : : +- Project (1218)
: : : : : +- Exchange (1217)
: : : : : +- Project (1216)
: : : : : +- Scan parquet (1215)
: : : : +- BroadcastExchange (1225)
: : : : +- Exchange (1224)
: : : : +- Project (1223)
: : : : +- Scan parquet (1222)
: : : +- BroadcastExchange (1232)
: : : +- Exchange (1231)
: : : +- Project (1230)
: : : +- Filter (1229)
: : : +- Scan parquet (1228)
: : +- Sort (1281)
: : +- Project (1280)
: : +- Generate (1279)
: : +- Project (1278)
: : +- Generate (1277)
: : +- Project (1276)
: : +- BroadcastHashJoin LeftOuter BuildRight (1275)
: : :- Project (1269)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1268)
: : : :- Project (1263)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1262)
: : : : :- Exchange (1256)
: : : : : +- Filter (1255)
: : : : : +- Scan parquet (1254)
: : : : +- BroadcastExchange (1261)
: : : : +- Project (1260)
: : : : +- Exchange (1259)
: : : : +- Project (1258)
: : : : +- Scan parquet (1257)
: : : +- BroadcastExchange (1267)
: : : +- Exchange (1266)
: : : +- Project (1265)
: : : +- Scan parquet (1264)
: : +- BroadcastExchange (1274)
: : +- Exchange (1273)
: : +- Project (1272)
: : +- Filter (1271)
: : +- Scan parquet (1270)
: +- Sort (1522)
: +- Exchange (1521)
: +- SerializeFromObject (1520)
: +- MapElements (1519)
: +- DeserializeToObject (1518)
: +- ObjectHashAggregate (1517)
: +- ObjectHashAggregate (1516)
: +- Project (1515)
: +- BroadcastHashJoin LeftOuter BuildRight (1514)
: :- Project (1511)
: : +- SortMergeJoin LeftOuter (1510)
: : :- Sort (1323)
: : : +- Project (1322)
: : : +- Project (1321)
: : : +- Generate (1320)
: : : +- Generate (1319)
: : : +- Project (1318)
: : : +- Project (1317)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1316)
: : : :- Project (1310)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1309)
: : : : :- BroadcastHashJoin LeftOuter BuildRight (1305)
: : : : : :- Exchange (1299)
: : : : : : +- Scan parquet (1298)
: : : : : +- BroadcastExchange (1304)
: : : : : +- Project (1303)
: : : : : +- Exchange (1302)
: : : : : +- Project (1301)
: : : : : +- Scan parquet (1300)
: : : : +- BroadcastExchange (1308)
: : : : +- Exchange (1307)
: : : : +- Project (1306)
: : : : +- Scan parquet (201)
: : : +- BroadcastExchange (1315)
: : : +- Exchange (1314)
: : : +- Project (1313)
: : : +- Filter (1312)
: : : +- Scan parquet (1311)
: : +- Sort (1509)
: : +- HashAggregate (1508)
: : +- Exchange (1507)
: : +- HashAggregate (1506)
: : +- Project (1505)
: : +- SortMergeJoin Inner (1504)
: : :- Sort (1412)
: : : +- Exchange (1411)
: : : +- Project (1410)
: : : +- SortMergeJoin Inner (1409)
: : : :- Sort (1380)
: : : : +- Exchange (1379)
: : : : +- Project (1378)
: : : : +- Filter (1377)
: : : : +- Generate (1376)
: : : : +- Filter (1375)
: : : : +- ObjectHashAggregate (1374)
: : : : +- ObjectHashAggregate (1373)
: : : : +- Generate (1372)
: : : : +- BroadcastHashJoin Inner BuildLeft (1371)
: : : : :- BroadcastExchange (1328)
: : : : : +- Exchange (1327)
: : : : : +- Project (1326)
: : : : : +- Filter (1325)
: : : : : +- Scan parquet (1324)
: : : : +- Project (1370)
: : : : +- BroadcastHashJoin Inner BuildLeft (1369)
: : : : :- BroadcastExchange (1338)
: : : : : +- Project (1337)
: : : : : +- Generate (1336)
: : : : : +- Project (1335)
: : : : : +- Filter (1334)
: : : : : +- Generate (1333)
: : : : : +- Exchange (1332)
: : : : : +- Project (1331)
: : : : : +- Filter (1330)
: : : : : +- Scan parquet (1329)
: : : : +- HashAggregate (1368)
: : : : +- Exchange (1367)
: : : : +- HashAggregate (1366)
: : : : +- Project (1365)
: : : : +- Generate (1364)
: : : : +- Project (1363)
: : : : +- Generate (1362)
: : : : +- Project (1361)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1360)
: : : : :- Project (1354)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1353)
: : : : : :- Project (1348)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1347)
: : : : : : :- Exchange (1341)
: : : : : : : +- Filter (1340)
: : : : : : : +- Scan parquet (1339)
: : : : : : +- BroadcastExchange (1346)
: : : : : : +- Project (1345)
: : : : : : +- Exchange (1344)
: : : : : : +- Project (1343)
: : : : : : +- Scan parquet (1342)
: : : : : +- BroadcastExchange (1352)
: : : : : +- Exchange (1351)
: : : : : +- Project (1350)
: : : : : +- Scan parquet (1349)
: : : : +- BroadcastExchange (1359)
: : : : +- Exchange (1358)
: : : : +- Project (1357)
: : : : +- Filter (1356)
: : : : +- Scan parquet (1355)
: : : +- Sort (1408)
: : : +- Project (1407)
: : : +- Generate (1406)
: : : +- Project (1405)
: : : +- Generate (1404)
: : : +- Project (1403)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1402)
: : : :- Project (1396)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1395)
: : : : :- Project (1390)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1389)
: : : : : :- Exchange (1383)
: : : : : : +- Filter (1382)
: : : : : : +- Scan parquet (1381)
: : : : : +- BroadcastExchange (1388)
: : : : : +- Project (1387)
: : : : : +- Exchange (1386)
: : : : : +- Project (1385)
: : : : : +- Scan parquet (1384)
: : : : +- BroadcastExchange (1394)
: : : : +- Exchange (1393)
: : : : +- Project (1392)
: : : : +- Scan parquet (1391)
: : : +- BroadcastExchange (1401)
: : : +- Exchange (1400)
: : : +- Project (1399)
: : : +- Filter (1398)
: : : +- Scan parquet (1397)
: : +- Sort (1503)
: : +- Exchange (1502)
: : +- HashAggregate (1501)
: : +- HashAggregate (1500)
: : +- Project (1499)
: : +- SortMergeJoin Inner (1498)
: : :- Sort (1469)
: : : +- Exchange (1468)
: : : +- Project (1467)
: : : +- Filter (1466)
: : : +- Generate (1465)
: : : +- Filter (1464)
: : : +- ObjectHashAggregate (1463)
: : : +- ObjectHashAggregate (1462)
: : : +- Generate (1461)
: : : +- BroadcastHashJoin Inner BuildLeft (1460)
: : : :- BroadcastExchange (1417)
: : : : +- Exchange (1416)
: : : : +- Project (1415)
: : : : +- Filter (1414)
: : : : +- Scan parquet (1413)
: : : +- Project (1459)
: : : +- BroadcastHashJoin Inner BuildLeft (1458)
: : : :- BroadcastExchange (1427)
: : : : +- Project (1426)
: : : : +- Generate (1425)
: : : : +- Project (1424)
: : : : +- Filter (1423)
: : : : +- Generate (1422)
: : : : +- Exchange (1421)
: : : : +- Project (1420)
: : : : +- Filter (1419)
: : : : +- Scan parquet (1418)
: : : +- HashAggregate (1457)
: : : +- Exchange (1456)
: : : +- HashAggregate (1455)
: : : +- Project (1454)
: : : +- Generate (1453)
: : : +- Project (1452)
: : : +- Generate (1451)
: : : +- Project (1450)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1449)
: : : :- Project (1443)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1442)
: : : : :- Project (1437)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1436)
: : : : : :- Exchange (1430)
: : : : : : +- Filter (1429)
: : : : : : +- Scan parquet (1428)
: : : : : +- BroadcastExchange (1435)
: : : : : +- Project (1434)
: : : : : +- Exchange (1433)
: : : : : +- Project (1432)
: : : : : +- Scan parquet (1431)
: : : : +- BroadcastExchange (1441)
: : : : +- Exchange (1440)
: : : : +- Project (1439)
: : : : +- Scan parquet (1438)
: : : +- BroadcastExchange (1448)
: : : +- Exchange (1447)
: : : +- Project (1446)
: : : +- Filter (1445)
: : : +- Scan parquet (1444)
: : +- Sort (1497)
: : +- Project (1496)
: : +- Generate (1495)
: : +- Project (1494)
: : +- Generate (1493)
: : +- Project (1492)
: : +- BroadcastHashJoin LeftOuter BuildRight (1491)
: : :- Project (1485)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1484)
: : : :- Project (1479)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1478)
: : : : :- Exchange (1472)
: : : : : +- Filter (1471)
: : : : : +- Scan parquet (1470)
: : : : +- BroadcastExchange (1477)
: : : : +- Project (1476)
: : : : +- Exchange (1475)
: : : : +- Project (1474)
: : : : +- Scan parquet (1473)
: : : +- BroadcastExchange (1483)
: : : +- Exchange (1482)
: : : +- Project (1481)
: : : +- Scan parquet (1480)
: : +- BroadcastExchange (1490)
: : +- Exchange (1489)
: : +- Project (1488)
: : +- Filter (1487)
: : +- Scan parquet (1486)
: +- BroadcastExchange (1513)
: +- Filter (1512)
: +- Scan parquet (223)
+- Sort (1994)
+- Project (1993)
+- ObjectHashAggregate (1992)
+- Exchange (1991)
+- ObjectHashAggregate (1990)
+- Union (1989)
:- Filter (1527)
: +- InMemoryTableScan (242)
: +- InMemoryRelation (243)
: +- AdaptiveSparkPlan (1079)
+- == Final Plan ==
ResultQueryStage (1069)
+- * Filter (1068)
+- ObjectHashAggregate (1067)
+- ShuffleQueryStage (1066), Statistics(sizeInBytes=13.0 KiB, rowCount=41)
+- Exchange (1065)
+- ObjectHashAggregate (1064)
+- Project (1063)
+- Window (1062)
+- * Sort (1061)
+- AQEShuffleRead (1060)
+- ShuffleQueryStage (1059), Statistics(sizeInBytes=17.7 KiB, rowCount=41)
+- Exchange (1058)
+- * Project (1057)
+- TableCacheQueryStage (1056), Statistics(sizeInBytes=21.9 KiB, rowCount=41)
+- InMemoryTableScan (244)
+- InMemoryRelation (245)
+- AdaptiveSparkPlan (1055)
+- == Final Plan ==
ResultQueryStage (562)
+- Project (561)
+- * BroadcastHashJoin Inner BuildRight (560)
:- * Project (548)
: +- * BroadcastHashJoin Inner BuildLeft (547)
: :- BroadcastQueryStage (531), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (530)
: : +- AQEShuffleRead (529)
: : +- ShuffleQueryStage (528), Statistics(sizeInBytes=114.8 KiB, rowCount=980)
: : +- Exchange (527)
: : +- * Project (526)
: : +- * BroadcastHashJoin LeftOuter BuildRight (525)
: : :- AQEShuffleRead (419)
: : : +- ShuffleQueryStage (418), Statistics(sizeInBytes=114.8 KiB, rowCount=980)
: : : +- Exchange (417)
: : : +- * Project (416)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (415)
: : : :- * Project (283)
: : : : +- * Generate (282)
: : : : +- * Project (281)
: : : : +- * Generate (280)
: : : : +- Project (279)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (278)
: : : : :- * Project (269)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (268)
: : : : : :- * Project (260)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (259)
: : : : : : :- ShuffleQueryStage (250), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (249)
: : : : : : : +- * Filter (248)
: : : : : : : +- * ColumnarToRow (247)
: : : : : : : +- Scan parquet (246)
: : : : : : +- BroadcastQueryStage (258), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (257)
: : : : : : +- * Project (256)
: : : : : : +- ShuffleQueryStage (255), Statistics(sizeInBytes=339.5 KiB, rowCount=2.75E+3)
: : : : : : +- Exchange (254)
: : : : : : +- * Project (253)
: : : : : : +- * ColumnarToRow (252)
: : : : : : +- Scan parquet (251)
: : : : : +- BroadcastQueryStage (267), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- BroadcastExchange (266)
: : : : : +- ShuffleQueryStage (265), Statistics(sizeInBytes=4.4 KiB, rowCount=62)
: : : : : +- Exchange (264)
: : : : : +- * Project (263)
: : : : : +- * ColumnarToRow (262)
: : : : : +- Scan parquet (261)
: : : : +- BroadcastQueryStage (277), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- BroadcastExchange (276)
: : : : +- ShuffleQueryStage (275), Statistics(sizeInBytes=92.7 KiB, rowCount=159)
: : : : +- Exchange (274)
: : : : +- * Project (273)
: : : : +- * Filter (272)
: : : : +- * ColumnarToRow (271)
: : : : +- Scan parquet (270)
: : : +- BroadcastQueryStage (414), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (413)
: : : +- * HashAggregate (412)
: : : +- AQEShuffleRead (411)
: : : +- ShuffleQueryStage (410), Statistics(sizeInBytes=27.7 KiB, rowCount=295)
: : : +- Exchange (409)
: : : +- * HashAggregate (408)
: : : +- * Project (407)
: : : +- * BroadcastHashJoin Inner BuildLeft (406)
: : : :- BroadcastQueryStage (378), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : : +- BroadcastExchange (377)
: : : : +- AQEShuffleRead (376)
: : : : +- ShuffleQueryStage (375), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : : +- Exchange (374)
: : : : +- * Project (373)
: : : : +- * BroadcastHashJoin Inner BuildLeft (372)
: : : : :- BroadcastQueryStage (350), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : : +- BroadcastExchange (349)
: : : : : +- AQEShuffleRead (348)
: : : : : +- ShuffleQueryStage (347), Statistics(sizeInBytes=43.1 KiB, rowCount=394)
: : : : : +- Exchange (346)
: : : : : +- * Project (345)
: : : : : +- * Filter (344)
: : : : : +- * Generate (343)
: : : : : +- * Filter (342)
: : : : : +- ObjectHashAggregate (341)
: : : : : +- ObjectHashAggregate (340)
: : : : : +- Generate (339)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (338)
: : : : : :- BroadcastQueryStage (291), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- BroadcastExchange (290)
: : : : : : +- ShuffleQueryStage (289), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : : : +- Exchange (288)
: : : : : : +- * Project (287)
: : : : : : +- * Filter (286)
: : : : : : +- * ColumnarToRow (285)
: : : : : : +- Scan parquet (284)
: : : : : +- * Project (337)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (336)
: : : : : :- BroadcastQueryStage (304), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- BroadcastExchange (303)
: : : : : : +- * Project (302)
: : : : : : +- * Generate (301)
: : : : : : +- * Project (300)
: : : : : : +- * Filter (299)
: : : : : : +- * Generate (298)
: : : : : : +- ShuffleQueryStage (297), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : : : : : +- Exchange (296)
: : : : : : +- * Project (295)
: : : : : : +- * Filter (294)
: : : : : : +- * ColumnarToRow (293)
: : : : : : +- Scan parquet (292)
: : : : : +- * HashAggregate (335)
: : : : : +- AQEShuffleRead (334)
: : : : : +- ShuffleQueryStage (333), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: : : : : +- Exchange (332)
: : : : : +- * HashAggregate (331)
: : : : : +- * Project (330)
: : : : : +- * Generate (329)
: : : : : +- * Project (328)
: : : : : +- * Generate (327)
: : : : : +- Project (326)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (325)
: : : : : :- * Project (322)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (321)
: : : : : : :- * Project (313)
: : : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (312)
: : : : : : : :- ShuffleQueryStage (309), Statistics(sizeInBytes=84.2 KiB, rowCount=980)
: : : : : : : : +- Exchange (308)
: : : : : : : : +- * Filter (307)
: : : : : : : : +- * ColumnarToRow (306)
: : : : : : : : +- Scan parquet (305)
: : : : : : : +- BroadcastQueryStage (311), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : : +- ReusedExchange (310)
: : : : : : +- BroadcastQueryStage (320), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : : +- BroadcastExchange (319)
: : : : : : +- ShuffleQueryStage (318), Statistics(sizeInBytes=2.9 KiB, rowCount=62)
: : : : : : +- Exchange (317)
: : : : : : +- * Project (316)
: : : : : : +- * ColumnarToRow (315)
: : : : : : +- Scan parquet (314)
: : : : : +- BroadcastQueryStage (324), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : : +- ReusedExchange (323)
: : : : +- * Project (371)
: : : : +- * Generate (370)
: : : : +- * Project (369)
: : : : +- * Generate (368)
: : : : +- Project (367)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (366)
: : : : :- * Project (363)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (362)
: : : : : :- * Project (359)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (358)
: : : : : : :- ShuffleQueryStage (355), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (354)
: : : : : : : +- * Filter (353)
: : : : : : : +- * ColumnarToRow (352)
: : : : : : : +- Scan parquet (351)
: : : : : : +- BroadcastQueryStage (357), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- ReusedExchange (356)
: : : : : +- BroadcastQueryStage (361), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (360)
: : : : +- BroadcastQueryStage (365), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (364)
: : : +- AQEShuffleRead (405)
: : : +- ShuffleQueryStage (404), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : +- Exchange (403)
: : : +- * HashAggregate (402)
: : : +- * HashAggregate (401)
: : : +- * Project (400)
: : : +- * BroadcastHashJoin Inner BuildLeft (399)
: : : :- BroadcastQueryStage (380), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : +- ReusedExchange (379)
: : : +- * Project (398)
: : : +- * Generate (397)
: : : +- * Project (396)
: : : +- * Generate (395)
: : : +- Project (394)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (393)
: : : :- * Project (390)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (389)
: : : : :- * Project (386)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (385)
: : : : : :- ShuffleQueryStage (382), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : +- ReusedExchange (381)
: : : : : +- BroadcastQueryStage (384), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : +- ReusedExchange (383)
: : : : +- BroadcastQueryStage (388), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : +- ReusedExchange (387)
: : : +- BroadcastQueryStage (392), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : +- ReusedExchange (391)
: : +- BroadcastQueryStage (524), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (523)
: : +- AQEShuffleRead (522)
: : +- ShuffleQueryStage (521), Statistics(sizeInBytes=84.2 KiB, rowCount=980)
: : +- Exchange (520)
: : +- * SerializeFromObject (519)
: : +- * MapElements (518)
: : +- * DeserializeToObject (517)
: : +- ObjectHashAggregate (516)
: : +- ObjectHashAggregate (515)
: : +- * Project (514)
: : +- * BroadcastHashJoin LeftOuter BuildRight (513)
: : :- * Project (507)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (506)
: : : :- * Project (445)
: : : : +- * Project (444)
: : : : +- * Generate (443)
: : : : +- * Generate (442)
: : : : +- * Project (441)
: : : : +- Project (440)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (439)
: : : : :- * Project (436)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (435)
: : : : : :- * BroadcastHashJoin LeftOuter BuildRight (432)
: : : : : : :- ShuffleQueryStage (423), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (422)
: : : : : : : +- * ColumnarToRow (421)
: : : : : : : +- Scan parquet (420)
: : : : : : +- BroadcastQueryStage (431), Statistics(sizeInBytes=4.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (430)
: : : : : : +- * Project (429)
: : : : : : +- ShuffleQueryStage (428), Statistics(sizeInBytes=2.0 MiB, rowCount=2.75E+3)
: : : : : : +- Exchange (427)
: : : : : : +- * Project (426)
: : : : : : +- * ColumnarToRow (425)
: : : : : : +- Scan parquet (424)
: : : : : +- BroadcastQueryStage (434), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (433)
: : : : +- BroadcastQueryStage (438), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (437)
: : : +- BroadcastQueryStage (505), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (504)
: : : +- * HashAggregate (503)
: : : +- AQEShuffleRead (502)
: : : +- ShuffleQueryStage (501), Statistics(sizeInBytes=30.0 KiB, rowCount=295)
: : : +- Exchange (500)
: : : +- * HashAggregate (499)
: : : +- * Project (498)
: : : +- * BroadcastHashJoin Inner BuildLeft (497)
: : : :- BroadcastQueryStage (493), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : : +- BroadcastExchange (492)
: : : : +- AQEShuffleRead (491)
: : : : +- ShuffleQueryStage (490), Statistics(sizeInBytes=34.6 KiB, rowCount=295)
: : : : +- Exchange (489)
: : : : +- * Project (488)
: : : : +- * BroadcastHashJoin Inner BuildLeft (487)
: : : : :- BroadcastQueryStage (468), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : : +- BroadcastExchange (467)
: : : : : +- AQEShuffleRead (466)
: : : : : +- ShuffleQueryStage (465), Statistics(sizeInBytes=46.2 KiB, rowCount=394)
: : : : : +- Exchange (464)
: : : : : +- * Project (463)
: : : : : +- * Filter (462)
: : : : : +- * Generate (461)
: : : : : +- * Filter (460)
: : : : : +- ObjectHashAggregate (459)
: : : : : +- ObjectHashAggregate (458)
: : : : : +- Generate (457)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (456)
: : : : : :- BroadcastQueryStage (447), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- ReusedExchange (446)
: : : : : +- * Project (455)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (454)
: : : : : :- BroadcastQueryStage (449), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- ReusedExchange (448)
: : : : : +- * HashAggregate (453)
: : : : : +- AQEShuffleRead (452)
: : : : : +- ShuffleQueryStage (451), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: : : : : +- ReusedExchange (450)
: : : : +- * Project (486)
: : : : +- * Generate (485)
: : : : +- * Project (484)
: : : : +- * Generate (483)
: : : : +- Project (482)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (481)
: : : : :- * Project (478)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (477)
: : : : : :- * Project (474)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (473)
: : : : : : :- ShuffleQueryStage (470), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- ReusedExchange (469)
: : : : : : +- BroadcastQueryStage (472), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- ReusedExchange (471)
: : : : : +- BroadcastQueryStage (476), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (475)
: : : : +- BroadcastQueryStage (480), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (479)
: : : +- AQEShuffleRead (496)
: : : +- ShuffleQueryStage (495), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : +- ReusedExchange (494)
: : +- BroadcastQueryStage (512), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (511)
: : +- * Filter (510)
: : +- * ColumnarToRow (509)
: : +- Scan parquet (508)
: +- * Project (546)
: +- * BroadcastHashJoin Inner BuildLeft (545)
: :- BroadcastQueryStage (541), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : +- BroadcastExchange (540)
: : +- * Project (539)
: : +- * Filter (538)
: : +- * Generate (537)
: : +- * Project (536)
: : +- * Filter (535)
: : +- * Generate (534)
: : +- ShuffleQueryStage (533), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : +- ReusedExchange (532)
: +- * HashAggregate (544)
: +- ShuffleQueryStage (543), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: +- ReusedExchange (542)
+- BroadcastQueryStage (559), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
+- BroadcastExchange (558)
+- * Project (557)
+- * Filter (556)
+- * Generate (555)
+- ShuffleQueryStage (554), Statistics(sizeInBytes=29.9 KiB, rowCount=9)
+- Exchange (553)
+- * Project (552)
+- * Filter (551)
+- * ColumnarToRow (550)
+- Scan parquet (549)
+- == Initial Plan ==
Project (1054)
+- BroadcastHashJoin Inner BuildRight (1053)
:- Project (1045)
: +- SortMergeJoin Inner (1044)
: :- Sort (999)
: : +- Exchange (998)
: : +- Project (997)
: : +- SortMergeJoin LeftOuter (996)
: : :- Sort (771)
: : : +- Exchange (770)
: : : +- Project (769)
: : : +- SortMergeJoin LeftOuter (768)
: : : :- Sort (586)
: : : : +- Project (585)
: : : : +- Generate (584)
: : : : +- Project (583)
: : : : +- Generate (582)
: : : : +- Project (581)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (580)
: : : : :- Project (575)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (574)
: : : : : :- Project (570)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (569)
: : : : : : :- Exchange (564)
: : : : : : : +- Filter (563)
: : : : : : : +- Scan parquet (246)
: : : : : : +- BroadcastExchange (568)
: : : : : : +- Project (567)
: : : : : : +- Exchange (566)
: : : : : : +- Project (565)
: : : : : : +- Scan parquet (251)
: : : : : +- BroadcastExchange (573)
: : : : : +- Exchange (572)
: : : : : +- Project (571)
: : : : : +- Scan parquet (261)
: : : : +- BroadcastExchange (579)
: : : : +- Exchange (578)
: : : : +- Project (577)
: : : : +- Filter (576)
: : : : +- Scan parquet (270)
: : : +- Sort (767)
: : : +- HashAggregate (766)
: : : +- Exchange (765)
: : : +- HashAggregate (764)
: : : +- Project (763)
: : : +- SortMergeJoin Inner (762)
: : : :- Sort (670)
: : : : +- Exchange (669)
: : : : +- Project (668)
: : : : +- SortMergeJoin Inner (667)
: : : : :- Sort (639)
: : : : : +- Exchange (638)
: : : : : +- Project (637)
: : : : : +- Filter (636)
: : : : : +- Generate (635)
: : : : : +- Filter (634)
: : : : : +- ObjectHashAggregate (633)
: : : : : +- ObjectHashAggregate (632)
: : : : : +- Generate (631)
: : : : : +- BroadcastHashJoin Inner BuildLeft (630)
: : : : : :- BroadcastExchange (590)
: : : : : : +- Exchange (589)
: : : : : : +- Project (588)
: : : : : : +- Filter (587)
: : : : : : +- Scan parquet (284)
: : : : : +- Project (629)
: : : : : +- BroadcastHashJoin Inner BuildLeft (628)
: : : : : :- BroadcastExchange (599)
: : : : : : +- Project (598)
: : : : : : +- Generate (597)
: : : : : : +- Project (596)
: : : : : : +- Filter (595)
: : : : : : +- Generate (594)
: : : : : : +- Exchange (593)
: : : : : : +- Project (592)
: : : : : : +- Filter (591)
: : : : : : +- Scan parquet (292)
: : : : : +- HashAggregate (627)
: : : : : +- Exchange (626)
: : : : : +- HashAggregate (625)
: : : : : +- Project (624)
: : : : : +- Generate (623)
: : : : : +- Project (622)
: : : : : +- Generate (621)
: : : : : +- Project (620)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (619)
: : : : : :- Project (613)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (612)
: : : : : : :- Project (608)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (607)
: : : : : : : :- Exchange (601)
: : : : : : : : +- Filter (600)
: : : : : : : : +- Scan parquet (305)
: : : : : : : +- BroadcastExchange (606)
: : : : : : : +- Project (605)
: : : : : : : +- Exchange (604)
: : : : : : : +- Project (603)
: : : : : : : +- Scan parquet (602)
: : : : : : +- BroadcastExchange (611)
: : : : : : +- Exchange (610)
: : : : : : +- Project (609)
: : : : : : +- Scan parquet (314)
: : : : : +- BroadcastExchange (618)
: : : : : +- Exchange (617)
: : : : : +- Project (616)
: : : : : +- Filter (615)
: : : : : +- Scan parquet (614)
: : : : +- Sort (666)
: : : : +- Project (665)
: : : : +- Generate (664)
: : : : +- Project (663)
: : : : +- Generate (662)
: : : : +- Project (661)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (660)
: : : : :- Project (654)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (653)
: : : : : :- Project (648)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (647)
: : : : : : :- Exchange (641)
: : : : : : : +- Filter (640)
: : : : : : : +- Scan parquet (351)
: : : : : : +- BroadcastExchange (646)
: : : : : : +- Project (645)
: : : : : : +- Exchange (644)
: : : : : : +- Project (643)
: : : : : : +- Scan parquet (642)
: : : : : +- BroadcastExchange (652)
: : : : : +- Exchange (651)
: : : : : +- Project (650)
: : : : : +- Scan parquet (649)
: : : : +- BroadcastExchange (659)
: : : : +- Exchange (658)
: : : : +- Project (657)
: : : : +- Filter (656)
: : : : +- Scan parquet (655)
: : : +- Sort (761)
: : : +- Exchange (760)
: : : +- HashAggregate (759)
: : : +- HashAggregate (758)
: : : +- Project (757)
: : : +- SortMergeJoin Inner (756)
: : : :- Sort (727)
: : : : +- Exchange (726)
: : : : +- Project (725)
: : : : +- Filter (724)
: : : : +- Generate (723)
: : : : +- Filter (722)
: : : : +- ObjectHashAggregate (721)
: : : : +- ObjectHashAggregate (720)
: : : : +- Generate (719)
: : : : +- BroadcastHashJoin Inner BuildLeft (718)
: : : : :- BroadcastExchange (675)
: : : : : +- Exchange (674)
: : : : : +- Project (673)
: : : : : +- Filter (672)
: : : : : +- Scan parquet (671)
: : : : +- Project (717)
: : : : +- BroadcastHashJoin Inner BuildLeft (716)
: : : : :- BroadcastExchange (685)
: : : : : +- Project (684)
: : : : : +- Generate (683)
: : : : : +- Project (682)
: : : : : +- Filter (681)
: : : : : +- Generate (680)
: : : : : +- Exchange (679)
: : : : : +- Project (678)
: : : : : +- Filter (677)
: : : : : +- Scan parquet (676)
: : : : +- HashAggregate (715)
: : : : +- Exchange (714)
: : : : +- HashAggregate (713)
: : : : +- Project (712)
: : : : +- Generate (711)
: : : : +- Project (710)
: : : : +- Generate (709)
: : : : +- Project (708)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (707)
: : : : :- Project (701)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (700)
: : : : : :- Project (695)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (694)
: : : : : : :- Exchange (688)
: : : : : : : +- Filter (687)
: : : : : : : +- Scan parquet (686)
: : : : : : +- BroadcastExchange (693)
: : : : : : +- Project (692)
: : : : : : +- Exchange (691)
: : : : : : +- Project (690)
: : : : : : +- Scan parquet (689)
: : : : : +- BroadcastExchange (699)
: : : : : +- Exchange (698)
: : : : : +- Project (697)
: : : : : +- Scan parquet (696)
: : : : +- BroadcastExchange (706)
: : : : +- Exchange (705)
: : : : +- Project (704)
: : : : +- Filter (703)
: : : : +- Scan parquet (702)
: : : +- Sort (755)
: : : +- Project (754)
: : : +- Generate (753)
: : : +- Project (752)
: : : +- Generate (751)
: : : +- Project (750)
: : : +- BroadcastHashJoin LeftOuter BuildRight (749)
: : : :- Project (743)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (742)
: : : : :- Project (737)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (736)
: : : : : :- Exchange (730)
: : : : : : +- Filter (729)
: : : : : : +- Scan parquet (728)
: : : : : +- BroadcastExchange (735)
: : : : : +- Project (734)
: : : : : +- Exchange (733)
: : : : : +- Project (732)
: : : : : +- Scan parquet (731)
: : : : +- BroadcastExchange (741)
: : : : +- Exchange (740)
: : : : +- Project (739)
: : : : +- Scan parquet (738)
: : : +- BroadcastExchange (748)
: : : +- Exchange (747)
: : : +- Project (746)
: : : +- Filter (745)
: : : +- Scan parquet (744)
: : +- Sort (995)
: : +- Exchange (994)
: : +- SerializeFromObject (993)
: : +- MapElements (992)
: : +- DeserializeToObject (991)
: : +- ObjectHashAggregate (990)
: : +- ObjectHashAggregate (989)
: : +- Project (988)
: : +- BroadcastHashJoin LeftOuter BuildRight (987)
: : :- Project (984)
: : : +- SortMergeJoin LeftOuter (983)
: : : :- Sort (796)
: : : : +- Project (795)
: : : : +- Project (794)
: : : : +- Generate (793)
: : : : +- Generate (792)
: : : : +- Project (791)
: : : : +- Project (790)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (789)
: : : : :- Project (783)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (782)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (777)
: : : : : : :- Exchange (772)
: : : : : : : +- Scan parquet (420)
: : : : : : +- BroadcastExchange (776)
: : : : : : +- Project (775)
: : : : : : +- Exchange (774)
: : : : : : +- Project (773)
: : : : : : +- Scan parquet (424)
: : : : : +- BroadcastExchange (781)
: : : : : +- Exchange (780)
: : : : : +- Project (779)
: : : : : +- Scan parquet (778)
: : : : +- BroadcastExchange (788)
: : : : +- Exchange (787)
: : : : +- Project (786)
: : : : +- Filter (785)
: : : : +- Scan parquet (784)
: : : +- Sort (982)
: : : +- HashAggregate (981)
: : : +- Exchange (980)
: : : +- HashAggregate (979)
: : : +- Project (978)
: : : +- SortMergeJoin Inner (977)
: : : :- Sort (885)
: : : : +- Exchange (884)
: : : : +- Project (883)
: : : : +- SortMergeJoin Inner (882)
: : : : :- Sort (853)
: : : : : +- Exchange (852)
: : : : : +- Project (851)
: : : : : +- Filter (850)
: : : : : +- Generate (849)
: : : : : +- Filter (848)
: : : : : +- ObjectHashAggregate (847)
: : : : : +- ObjectHashAggregate (846)
: : : : : +- Generate (845)
: : : : : +- BroadcastHashJoin Inner BuildLeft (844)
: : : : : :- BroadcastExchange (801)
: : : : : : +- Exchange (800)
: : : : : : +- Project (799)
: : : : : : +- Filter (798)
: : : : : : +- Scan parquet (797)
: : : : : +- Project (843)
: : : : : +- BroadcastHashJoin Inner BuildLeft (842)
: : : : : :- BroadcastExchange (811)
: : : : : : +- Project (810)
: : : : : : +- Generate (809)
: : : : : : +- Project (808)
: : : : : : +- Filter (807)
: : : : : : +- Generate (806)
: : : : : : +- Exchange (805)
: : : : : : +- Project (804)
: : : : : : +- Filter (803)
: : : : : : +- Scan parquet (802)
: : : : : +- HashAggregate (841)
: : : : : +- Exchange (840)
: : : : : +- HashAggregate (839)
: : : : : +- Project (838)
: : : : : +- Generate (837)
: : : : : +- Project (836)
: : : : : +- Generate (835)
: : : : : +- Project (834)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (833)
: : : : : :- Project (827)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (826)
: : : : : : :- Project (821)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (820)
: : : : : : : :- Exchange (814)
: : : : : : : : +- Filter (813)
: : : : : : : : +- Scan parquet (812)
: : : : : : : +- BroadcastExchange (819)
: : : : : : : +- Project (818)
: : : : : : : +- Exchange (817)
: : : : : : : +- Project (816)
: : : : : : : +- Scan parquet (815)
: : : : : : +- BroadcastExchange (825)
: : : : : : +- Exchange (824)
: : : : : : +- Project (823)
: : : : : : +- Scan parquet (822)
: : : : : +- BroadcastExchange (832)
: : : : : +- Exchange (831)
: : : : : +- Project (830)
: : : : : +- Filter (829)
: : : : : +- Scan parquet (828)
: : : : +- Sort (881)
: : : : +- Project (880)
: : : : +- Generate (879)
: : : : +- Project (878)
: : : : +- Generate (877)
: : : : +- Project (876)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (875)
: : : : :- Project (869)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (868)
: : : : : :- Project (863)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (862)
: : : : : : :- Exchange (856)
: : : : : : : +- Filter (855)
: : : : : : : +- Scan parquet (854)
: : : : : : +- BroadcastExchange (861)
: : : : : : +- Project (860)
: : : : : : +- Exchange (859)
: : : : : : +- Project (858)
: : : : : : +- Scan parquet (857)
: : : : : +- BroadcastExchange (867)
: : : : : +- Exchange (866)
: : : : : +- Project (865)
: : : : : +- Scan parquet (864)
: : : : +- BroadcastExchange (874)
: : : : +- Exchange (873)
: : : : +- Project (872)
: : : : +- Filter (871)
: : : : +- Scan parquet (870)
: : : +- Sort (976)
: : : +- Exchange (975)
: : : +- HashAggregate (974)
: : : +- HashAggregate (973)
: : : +- Project (972)
: : : +- SortMergeJoin Inner (971)
: : : :- Sort (942)
: : : : +- Exchange (941)
: : : : +- Project (940)
: : : : +- Filter (939)
: : : : +- Generate (938)
: : : : +- Filter (937)
: : : : +- ObjectHashAggregate (936)
: : : : +- ObjectHashAggregate (935)
: : : : +- Generate (934)
: : : : +- BroadcastHashJoin Inner BuildLeft (933)
: : : : :- BroadcastExchange (890)
: : : : : +- Exchange (889)
: : : : : +- Project (888)
: : : : : +- Filter (887)
: : : : : +- Scan parquet (886)
: : : : +- Project (932)
: : : : +- BroadcastHashJoin Inner BuildLeft (931)
: : : : :- BroadcastExchange (900)
: : : : : +- Project (899)
: : : : : +- Generate (898)
: : : : : +- Project (897)
: : : : : +- Filter (896)
: : : : : +- Generate (895)
: : : : : +- Exchange (894)
: : : : : +- Project (893)
: : : : : +- Filter (892)
: : : : : +- Scan parquet (891)
: : : : +- HashAggregate (930)
: : : : +- Exchange (929)
: : : : +- HashAggregate (928)
: : : : +- Project (927)
: : : : +- Generate (926)
: : : : +- Project (925)
: : : : +- Generate (924)
: : : : +- Project (923)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (922)
: : : : :- Project (916)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (915)
: : : : : :- Project (910)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (909)
: : : : : : :- Exchange (903)
: : : : : : : +- Filter (902)
: : : : : : : +- Scan parquet (901)
: : : : : : +- BroadcastExchange (908)
: : : : : : +- Project (907)
: : : : : : +- Exchange (906)
: : : : : : +- Project (905)
: : : : : : +- Scan parquet (904)
: : : : : +- BroadcastExchange (914)
: : : : : +- Exchange (913)
: : : : : +- Project (912)
: : : : : +- Scan parquet (911)
: : : : +- BroadcastExchange (921)
: : : : +- Exchange (920)
: : : : +- Project (919)
: : : : +- Filter (918)
: : : : +- Scan parquet (917)
: : : +- Sort (970)
: : : +- Project (969)
: : : +- Generate (968)
: : : +- Project (967)
: : : +- Generate (966)
: : : +- Project (965)
: : : +- BroadcastHashJoin LeftOuter BuildRight (964)
: : : :- Project (958)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (957)
: : : : :- Project (952)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (951)
: : : : : :- Exchange (945)
: : : : : : +- Filter (944)
: : : : : : +- Scan parquet (943)
: : : : : +- BroadcastExchange (950)
: : : : : +- Project (949)
: : : : : +- Exchange (948)
: : : : : +- Project (947)
: : : : : +- Scan parquet (946)
: : : : +- BroadcastExchange (956)
: : : : +- Exchange (955)
: : : : +- Project (954)
: : : : +- Scan parquet (953)
: : : +- BroadcastExchange (963)
: : : +- Exchange (962)
: : : +- Project (961)
: : : +- Filter (960)
: : : +- Scan parquet (959)
: : +- BroadcastExchange (986)
: : +- Filter (985)
: : +- Scan parquet (508)
: +- Sort (1043)
: +- Project (1042)
: +- BroadcastHashJoin Inner BuildLeft (1041)
: :- BroadcastExchange (1010)
: : +- Project (1009)
: : +- Filter (1008)
: : +- Generate (1007)
: : +- Project (1006)
: : +- Filter (1005)
: : +- Generate (1004)
: : +- Exchange (1003)
: : +- Project (1002)
: : +- Filter (1001)
: : +- Scan parquet (1000)
: +- HashAggregate (1040)
: +- Exchange (1039)
: +- HashAggregate (1038)
: +- Project (1037)
: +- Generate (1036)
: +- Project (1035)
: +- Generate (1034)
: +- Project (1033)
: +- BroadcastHashJoin LeftOuter BuildRight (1032)
: :- Project (1026)
: : +- BroadcastHashJoin LeftOuter BuildRight (1025)
: : :- Project (1020)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1019)
: : : :- Exchange (1013)
: : : : +- Filter (1012)
: : : : +- Scan parquet (1011)
: : : +- BroadcastExchange (1018)
: : : +- Project (1017)
: : : +- Exchange (1016)
: : : +- Project (1015)
: : : +- Scan parquet (1014)
: : +- BroadcastExchange (1024)
: : +- Exchange (1023)
: : +- Project (1022)
: : +- Scan parquet (1021)
: +- BroadcastExchange (1031)
: +- Exchange (1030)
: +- Project (1029)
: +- Filter (1028)
: +- Scan parquet (1027)
+- BroadcastExchange (1052)
+- Project (1051)
+- Filter (1050)
+- Generate (1049)
+- Exchange (1048)
+- Project (1047)
+- Filter (1046)
+- Scan parquet (549)
+- == Initial Plan ==
Filter (1078)
+- ObjectHashAggregate (1077)
+- Exchange (1076)
+- ObjectHashAggregate (1075)
+- Project (1074)
+- Window (1073)
+- Sort (1072)
+- Exchange (1071)
+- Project (1070)
+- InMemoryTableScan (244)
+- InMemoryRelation (245)
+- AdaptiveSparkPlan (1055)
+- == Final Plan ==
ResultQueryStage (562)
+- Project (561)
+- * BroadcastHashJoin Inner BuildRight (560)
:- * Project (548)
: +- * BroadcastHashJoin Inner BuildLeft (547)
: :- BroadcastQueryStage (531), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (530)
: : +- AQEShuffleRead (529)
: : +- ShuffleQueryStage (528), Statistics(sizeInBytes=114.8 KiB, rowCount=980)
: : +- Exchange (527)
: : +- * Project (526)
: : +- * BroadcastHashJoin LeftOuter BuildRight (525)
: : :- AQEShuffleRead (419)
: : : +- ShuffleQueryStage (418), Statistics(sizeInBytes=114.8 KiB, rowCount=980)
: : : +- Exchange (417)
: : : +- * Project (416)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (415)
: : : :- * Project (283)
: : : : +- * Generate (282)
: : : : +- * Project (281)
: : : : +- * Generate (280)
: : : : +- Project (279)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (278)
: : : : :- * Project (269)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (268)
: : : : : :- * Project (260)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (259)
: : : : : : :- ShuffleQueryStage (250), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (249)
: : : : : : : +- * Filter (248)
: : : : : : : +- * ColumnarToRow (247)
: : : : : : : +- Scan parquet (246)
: : : : : : +- BroadcastQueryStage (258), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (257)
: : : : : : +- * Project (256)
: : : : : : +- ShuffleQueryStage (255), Statistics(sizeInBytes=339.5 KiB, rowCount=2.75E+3)
: : : : : : +- Exchange (254)
: : : : : : +- * Project (253)
: : : : : : +- * ColumnarToRow (252)
: : : : : : +- Scan parquet (251)
: : : : : +- BroadcastQueryStage (267), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- BroadcastExchange (266)
: : : : : +- ShuffleQueryStage (265), Statistics(sizeInBytes=4.4 KiB, rowCount=62)
: : : : : +- Exchange (264)
: : : : : +- * Project (263)
: : : : : +- * ColumnarToRow (262)
: : : : : +- Scan parquet (261)
: : : : +- BroadcastQueryStage (277), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- BroadcastExchange (276)
: : : : +- ShuffleQueryStage (275), Statistics(sizeInBytes=92.7 KiB, rowCount=159)
: : : : +- Exchange (274)
: : : : +- * Project (273)
: : : : +- * Filter (272)
: : : : +- * ColumnarToRow (271)
: : : : +- Scan parquet (270)
: : : +- BroadcastQueryStage (414), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (413)
: : : +- * HashAggregate (412)
: : : +- AQEShuffleRead (411)
: : : +- ShuffleQueryStage (410), Statistics(sizeInBytes=27.7 KiB, rowCount=295)
: : : +- Exchange (409)
: : : +- * HashAggregate (408)
: : : +- * Project (407)
: : : +- * BroadcastHashJoin Inner BuildLeft (406)
: : : :- BroadcastQueryStage (378), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : : +- BroadcastExchange (377)
: : : : +- AQEShuffleRead (376)
: : : : +- ShuffleQueryStage (375), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : : +- Exchange (374)
: : : : +- * Project (373)
: : : : +- * BroadcastHashJoin Inner BuildLeft (372)
: : : : :- BroadcastQueryStage (350), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : : +- BroadcastExchange (349)
: : : : : +- AQEShuffleRead (348)
: : : : : +- ShuffleQueryStage (347), Statistics(sizeInBytes=43.1 KiB, rowCount=394)
: : : : : +- Exchange (346)
: : : : : +- * Project (345)
: : : : : +- * Filter (344)
: : : : : +- * Generate (343)
: : : : : +- * Filter (342)
: : : : : +- ObjectHashAggregate (341)
: : : : : +- ObjectHashAggregate (340)
: : : : : +- Generate (339)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (338)
: : : : : :- BroadcastQueryStage (291), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- BroadcastExchange (290)
: : : : : : +- ShuffleQueryStage (289), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : : : +- Exchange (288)
: : : : : : +- * Project (287)
: : : : : : +- * Filter (286)
: : : : : : +- * ColumnarToRow (285)
: : : : : : +- Scan parquet (284)
: : : : : +- * Project (337)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (336)
: : : : : :- BroadcastQueryStage (304), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- BroadcastExchange (303)
: : : : : : +- * Project (302)
: : : : : : +- * Generate (301)
: : : : : : +- * Project (300)
: : : : : : +- * Filter (299)
: : : : : : +- * Generate (298)
: : : : : : +- ShuffleQueryStage (297), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : : : : : +- Exchange (296)
: : : : : : +- * Project (295)
: : : : : : +- * Filter (294)
: : : : : : +- * ColumnarToRow (293)
: : : : : : +- Scan parquet (292)
: : : : : +- * HashAggregate (335)
: : : : : +- AQEShuffleRead (334)
: : : : : +- ShuffleQueryStage (333), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: : : : : +- Exchange (332)
: : : : : +- * HashAggregate (331)
: : : : : +- * Project (330)
: : : : : +- * Generate (329)
: : : : : +- * Project (328)
: : : : : +- * Generate (327)
: : : : : +- Project (326)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (325)
: : : : : :- * Project (322)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (321)
: : : : : : :- * Project (313)
: : : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (312)
: : : : : : : :- ShuffleQueryStage (309), Statistics(sizeInBytes=84.2 KiB, rowCount=980)
: : : : : : : : +- Exchange (308)
: : : : : : : : +- * Filter (307)
: : : : : : : : +- * ColumnarToRow (306)
: : : : : : : : +- Scan parquet (305)
: : : : : : : +- BroadcastQueryStage (311), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : : +- ReusedExchange (310)
: : : : : : +- BroadcastQueryStage (320), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : : +- BroadcastExchange (319)
: : : : : : +- ShuffleQueryStage (318), Statistics(sizeInBytes=2.9 KiB, rowCount=62)
: : : : : : +- Exchange (317)
: : : : : : +- * Project (316)
: : : : : : +- * ColumnarToRow (315)
: : : : : : +- Scan parquet (314)
: : : : : +- BroadcastQueryStage (324), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : : +- ReusedExchange (323)
: : : : +- * Project (371)
: : : : +- * Generate (370)
: : : : +- * Project (369)
: : : : +- * Generate (368)
: : : : +- Project (367)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (366)
: : : : :- * Project (363)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (362)
: : : : : :- * Project (359)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (358)
: : : : : : :- ShuffleQueryStage (355), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (354)
: : : : : : : +- * Filter (353)
: : : : : : : +- * ColumnarToRow (352)
: : : : : : : +- Scan parquet (351)
: : : : : : +- BroadcastQueryStage (357), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- ReusedExchange (356)
: : : : : +- BroadcastQueryStage (361), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (360)
: : : : +- BroadcastQueryStage (365), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (364)
: : : +- AQEShuffleRead (405)
: : : +- ShuffleQueryStage (404), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : +- Exchange (403)
: : : +- * HashAggregate (402)
: : : +- * HashAggregate (401)
: : : +- * Project (400)
: : : +- * BroadcastHashJoin Inner BuildLeft (399)
: : : :- BroadcastQueryStage (380), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : +- ReusedExchange (379)
: : : +- * Project (398)
: : : +- * Generate (397)
: : : +- * Project (396)
: : : +- * Generate (395)
: : : +- Project (394)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (393)
: : : :- * Project (390)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (389)
: : : : :- * Project (386)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (385)
: : : : : :- ShuffleQueryStage (382), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : +- ReusedExchange (381)
: : : : : +- BroadcastQueryStage (384), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : +- ReusedExchange (383)
: : : : +- BroadcastQueryStage (388), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : +- ReusedExchange (387)
: : : +- BroadcastQueryStage (392), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : +- ReusedExchange (391)
: : +- BroadcastQueryStage (524), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (523)
: : +- AQEShuffleRead (522)
: : +- ShuffleQueryStage (521), Statistics(sizeInBytes=84.2 KiB, rowCount=980)
: : +- Exchange (520)
: : +- * SerializeFromObject (519)
: : +- * MapElements (518)
: : +- * DeserializeToObject (517)
: : +- ObjectHashAggregate (516)
: : +- ObjectHashAggregate (515)
: : +- * Project (514)
: : +- * BroadcastHashJoin LeftOuter BuildRight (513)
: : :- * Project (507)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (506)
: : : :- * Project (445)
: : : : +- * Project (444)
: : : : +- * Generate (443)
: : : : +- * Generate (442)
: : : : +- * Project (441)
: : : : +- Project (440)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (439)
: : : : :- * Project (436)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (435)
: : : : : :- * BroadcastHashJoin LeftOuter BuildRight (432)
: : : : : : :- ShuffleQueryStage (423), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- Exchange (422)
: : : : : : : +- * ColumnarToRow (421)
: : : : : : : +- Scan parquet (420)
: : : : : : +- BroadcastQueryStage (431), Statistics(sizeInBytes=4.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (430)
: : : : : : +- * Project (429)
: : : : : : +- ShuffleQueryStage (428), Statistics(sizeInBytes=2.0 MiB, rowCount=2.75E+3)
: : : : : : +- Exchange (427)
: : : : : : +- * Project (426)
: : : : : : +- * ColumnarToRow (425)
: : : : : : +- Scan parquet (424)
: : : : : +- BroadcastQueryStage (434), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (433)
: : : : +- BroadcastQueryStage (438), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (437)
: : : +- BroadcastQueryStage (505), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (504)
: : : +- * HashAggregate (503)
: : : +- AQEShuffleRead (502)
: : : +- ShuffleQueryStage (501), Statistics(sizeInBytes=30.0 KiB, rowCount=295)
: : : +- Exchange (500)
: : : +- * HashAggregate (499)
: : : +- * Project (498)
: : : +- * BroadcastHashJoin Inner BuildLeft (497)
: : : :- BroadcastQueryStage (493), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : : +- BroadcastExchange (492)
: : : : +- AQEShuffleRead (491)
: : : : +- ShuffleQueryStage (490), Statistics(sizeInBytes=34.6 KiB, rowCount=295)
: : : : +- Exchange (489)
: : : : +- * Project (488)
: : : : +- * BroadcastHashJoin Inner BuildLeft (487)
: : : : :- BroadcastQueryStage (468), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : : +- BroadcastExchange (467)
: : : : : +- AQEShuffleRead (466)
: : : : : +- ShuffleQueryStage (465), Statistics(sizeInBytes=46.2 KiB, rowCount=394)
: : : : : +- Exchange (464)
: : : : : +- * Project (463)
: : : : : +- * Filter (462)
: : : : : +- * Generate (461)
: : : : : +- * Filter (460)
: : : : : +- ObjectHashAggregate (459)
: : : : : +- ObjectHashAggregate (458)
: : : : : +- Generate (457)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (456)
: : : : : :- BroadcastQueryStage (447), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- ReusedExchange (446)
: : : : : +- * Project (455)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (454)
: : : : : :- BroadcastQueryStage (449), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- ReusedExchange (448)
: : : : : +- * HashAggregate (453)
: : : : : +- AQEShuffleRead (452)
: : : : : +- ShuffleQueryStage (451), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: : : : : +- ReusedExchange (450)
: : : : +- * Project (486)
: : : : +- * Generate (485)
: : : : +- * Project (484)
: : : : +- * Generate (483)
: : : : +- Project (482)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (481)
: : : : :- * Project (478)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (477)
: : : : : :- * Project (474)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (473)
: : : : : : :- ShuffleQueryStage (470), Statistics(sizeInBytes=91.9 KiB, rowCount=980)
: : : : : : : +- ReusedExchange (469)
: : : : : : +- BroadcastQueryStage (472), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- ReusedExchange (471)
: : : : : +- BroadcastQueryStage (476), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (475)
: : : : +- BroadcastQueryStage (480), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (479)
: : : +- AQEShuffleRead (496)
: : : +- ShuffleQueryStage (495), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : +- ReusedExchange (494)
: : +- BroadcastQueryStage (512), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- BroadcastExchange (511)
: : +- * Filter (510)
: : +- * ColumnarToRow (509)
: : +- Scan parquet (508)
: +- * Project (546)
: +- * BroadcastHashJoin Inner BuildLeft (545)
: :- BroadcastQueryStage (541), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : +- BroadcastExchange (540)
: : +- * Project (539)
: : +- * Filter (538)
: : +- * Generate (537)
: : +- * Project (536)
: : +- * Filter (535)
: : +- * Generate (534)
: : +- ShuffleQueryStage (533), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : +- ReusedExchange (532)
: +- * HashAggregate (544)
: +- ShuffleQueryStage (543), Statistics(sizeInBytes=11.5 KiB, rowCount=245)
: +- ReusedExchange (542)
+- BroadcastQueryStage (559), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
+- BroadcastExchange (558)
+- * Project (557)
+- * Filter (556)
+- * Generate (555)
+- ShuffleQueryStage (554), Statistics(sizeInBytes=29.9 KiB, rowCount=9)
+- Exchange (553)
+- * Project (552)
+- * Filter (551)
+- * ColumnarToRow (550)
+- Scan parquet (549)
+- == Initial Plan ==
Project (1054)
+- BroadcastHashJoin Inner BuildRight (1053)
:- Project (1045)
: +- SortMergeJoin Inner (1044)
: :- Sort (999)
: : +- Exchange (998)
: : +- Project (997)
: : +- SortMergeJoin LeftOuter (996)
: : :- Sort (771)
: : : +- Exchange (770)
: : : +- Project (769)
: : : +- SortMergeJoin LeftOuter (768)
: : : :- Sort (586)
: : : : +- Project (585)
: : : : +- Generate (584)
: : : : +- Project (583)
: : : : +- Generate (582)
: : : : +- Project (581)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (580)
: : : : :- Project (575)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (574)
: : : : : :- Project (570)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (569)
: : : : : : :- Exchange (564)
: : : : : : : +- Filter (563)
: : : : : : : +- Scan parquet (246)
: : : : : : +- BroadcastExchange (568)
: : : : : : +- Project (567)
: : : : : : +- Exchange (566)
: : : : : : +- Project (565)
: : : : : : +- Scan parquet (251)
: : : : : +- BroadcastExchange (573)
: : : : : +- Exchange (572)
: : : : : +- Project (571)
: : : : : +- Scan parquet (261)
: : : : +- BroadcastExchange (579)
: : : : +- Exchange (578)
: : : : +- Project (577)
: : : : +- Filter (576)
: : : : +- Scan parquet (270)
: : : +- Sort (767)
: : : +- HashAggregate (766)
: : : +- Exchange (765)
: : : +- HashAggregate (764)
: : : +- Project (763)
: : : +- SortMergeJoin Inner (762)
: : : :- Sort (670)
: : : : +- Exchange (669)
: : : : +- Project (668)
: : : : +- SortMergeJoin Inner (667)
: : : : :- Sort (639)
: : : : : +- Exchange (638)
: : : : : +- Project (637)
: : : : : +- Filter (636)
: : : : : +- Generate (635)
: : : : : +- Filter (634)
: : : : : +- ObjectHashAggregate (633)
: : : : : +- ObjectHashAggregate (632)
: : : : : +- Generate (631)
: : : : : +- BroadcastHashJoin Inner BuildLeft (630)
: : : : : :- BroadcastExchange (590)
: : : : : : +- Exchange (589)
: : : : : : +- Project (588)
: : : : : : +- Filter (587)
: : : : : : +- Scan parquet (284)
: : : : : +- Project (629)
: : : : : +- BroadcastHashJoin Inner BuildLeft (628)
: : : : : :- BroadcastExchange (599)
: : : : : : +- Project (598)
: : : : : : +- Generate (597)
: : : : : : +- Project (596)
: : : : : : +- Filter (595)
: : : : : : +- Generate (594)
: : : : : : +- Exchange (593)
: : : : : : +- Project (592)
: : : : : : +- Filter (591)
: : : : : : +- Scan parquet (292)
: : : : : +- HashAggregate (627)
: : : : : +- Exchange (626)
: : : : : +- HashAggregate (625)
: : : : : +- Project (624)
: : : : : +- Generate (623)
: : : : : +- Project (622)
: : : : : +- Generate (621)
: : : : : +- Project (620)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (619)
: : : : : :- Project (613)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (612)
: : : : : : :- Project (608)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (607)
: : : : : : : :- Exchange (601)
: : : : : : : : +- Filter (600)
: : : : : : : : +- Scan parquet (305)
: : : : : : : +- BroadcastExchange (606)
: : : : : : : +- Project (605)
: : : : : : : +- Exchange (604)
: : : : : : : +- Project (603)
: : : : : : : +- Scan parquet (602)
: : : : : : +- BroadcastExchange (611)
: : : : : : +- Exchange (610)
: : : : : : +- Project (609)
: : : : : : +- Scan parquet (314)
: : : : : +- BroadcastExchange (618)
: : : : : +- Exchange (617)
: : : : : +- Project (616)
: : : : : +- Filter (615)
: : : : : +- Scan parquet (614)
: : : : +- Sort (666)
: : : : +- Project (665)
: : : : +- Generate (664)
: : : : +- Project (663)
: : : : +- Generate (662)
: : : : +- Project (661)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (660)
: : : : :- Project (654)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (653)
: : : : : :- Project (648)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (647)
: : : : : : :- Exchange (641)
: : : : : : : +- Filter (640)
: : : : : : : +- Scan parquet (351)
: : : : : : +- BroadcastExchange (646)
: : : : : : +- Project (645)
: : : : : : +- Exchange (644)
: : : : : : +- Project (643)
: : : : : : +- Scan parquet (642)
: : : : : +- BroadcastExchange (652)
: : : : : +- Exchange (651)
: : : : : +- Project (650)
: : : : : +- Scan parquet (649)
: : : : +- BroadcastExchange (659)
: : : : +- Exchange (658)
: : : : +- Project (657)
: : : : +- Filter (656)
: : : : +- Scan parquet (655)
: : : +- Sort (761)
: : : +- Exchange (760)
: : : +- HashAggregate (759)
: : : +- HashAggregate (758)
: : : +- Project (757)
: : : +- SortMergeJoin Inner (756)
: : : :- Sort (727)
: : : : +- Exchange (726)
: : : : +- Project (725)
: : : : +- Filter (724)
: : : : +- Generate (723)
: : : : +- Filter (722)
: : : : +- ObjectHashAggregate (721)
: : : : +- ObjectHashAggregate (720)
: : : : +- Generate (719)
: : : : +- BroadcastHashJoin Inner BuildLeft (718)
: : : : :- BroadcastExchange (675)
: : : : : +- Exchange (674)
: : : : : +- Project (673)
: : : : : +- Filter (672)
: : : : : +- Scan parquet (671)
: : : : +- Project (717)
: : : : +- BroadcastHashJoin Inner BuildLeft (716)
: : : : :- BroadcastExchange (685)
: : : : : +- Project (684)
: : : : : +- Generate (683)
: : : : : +- Project (682)
: : : : : +- Filter (681)
: : : : : +- Generate (680)
: : : : : +- Exchange (679)
: : : : : +- Project (678)
: : : : : +- Filter (677)
: : : : : +- Scan parquet (676)
: : : : +- HashAggregate (715)
: : : : +- Exchange (714)
: : : : +- HashAggregate (713)
: : : : +- Project (712)
: : : : +- Generate (711)
: : : : +- Project (710)
: : : : +- Generate (709)
: : : : +- Project (708)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (707)
: : : : :- Project (701)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (700)
: : : : : :- Project (695)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (694)
: : : : : : :- Exchange (688)
: : : : : : : +- Filter (687)
: : : : : : : +- Scan parquet (686)
: : : : : : +- BroadcastExchange (693)
: : : : : : +- Project (692)
: : : : : : +- Exchange (691)
: : : : : : +- Project (690)
: : : : : : +- Scan parquet (689)
: : : : : +- BroadcastExchange (699)
: : : : : +- Exchange (698)
: : : : : +- Project (697)
: : : : : +- Scan parquet (696)
: : : : +- BroadcastExchange (706)
: : : : +- Exchange (705)
: : : : +- Project (704)
: : : : +- Filter (703)
: : : : +- Scan parquet (702)
: : : +- Sort (755)
: : : +- Project (754)
: : : +- Generate (753)
: : : +- Project (752)
: : : +- Generate (751)
: : : +- Project (750)
: : : +- BroadcastHashJoin LeftOuter BuildRight (749)
: : : :- Project (743)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (742)
: : : : :- Project (737)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (736)
: : : : : :- Exchange (730)
: : : : : : +- Filter (729)
: : : : : : +- Scan parquet (728)
: : : : : +- BroadcastExchange (735)
: : : : : +- Project (734)
: : : : : +- Exchange (733)
: : : : : +- Project (732)
: : : : : +- Scan parquet (731)
: : : : +- BroadcastExchange (741)
: : : : +- Exchange (740)
: : : : +- Project (739)
: : : : +- Scan parquet (738)
: : : +- BroadcastExchange (748)
: : : +- Exchange (747)
: : : +- Project (746)
: : : +- Filter (745)
: : : +- Scan parquet (744)
: : +- Sort (995)
: : +- Exchange (994)
: : +- SerializeFromObject (993)
: : +- MapElements (992)
: : +- DeserializeToObject (991)
: : +- ObjectHashAggregate (990)
: : +- ObjectHashAggregate (989)
: : +- Project (988)
: : +- BroadcastHashJoin LeftOuter BuildRight (987)
: : :- Project (984)
: : : +- SortMergeJoin LeftOuter (983)
: : : :- Sort (796)
: : : : +- Project (795)
: : : : +- Project (794)
: : : : +- Generate (793)
: : : : +- Generate (792)
: : : : +- Project (791)
: : : : +- Project (790)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (789)
: : : : :- Project (783)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (782)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (777)
: : : : : : :- Exchange (772)
: : : : : : : +- Scan parquet (420)
: : : : : : +- BroadcastExchange (776)
: : : : : : +- Project (775)
: : : : : : +- Exchange (774)
: : : : : : +- Project (773)
: : : : : : +- Scan parquet (424)
: : : : : +- BroadcastExchange (781)
: : : : : +- Exchange (780)
: : : : : +- Project (779)
: : : : : +- Scan parquet (778)
: : : : +- BroadcastExchange (788)
: : : : +- Exchange (787)
: : : : +- Project (786)
: : : : +- Filter (785)
: : : : +- Scan parquet (784)
: : : +- Sort (982)
: : : +- HashAggregate (981)
: : : +- Exchange (980)
: : : +- HashAggregate (979)
: : : +- Project (978)
: : : +- SortMergeJoin Inner (977)
: : : :- Sort (885)
: : : : +- Exchange (884)
: : : : +- Project (883)
: : : : +- SortMergeJoin Inner (882)
: : : : :- Sort (853)
: : : : : +- Exchange (852)
: : : : : +- Project (851)
: : : : : +- Filter (850)
: : : : : +- Generate (849)
: : : : : +- Filter (848)
: : : : : +- ObjectHashAggregate (847)
: : : : : +- ObjectHashAggregate (846)
: : : : : +- Generate (845)
: : : : : +- BroadcastHashJoin Inner BuildLeft (844)
: : : : : :- BroadcastExchange (801)
: : : : : : +- Exchange (800)
: : : : : : +- Project (799)
: : : : : : +- Filter (798)
: : : : : : +- Scan parquet (797)
: : : : : +- Project (843)
: : : : : +- BroadcastHashJoin Inner BuildLeft (842)
: : : : : :- BroadcastExchange (811)
: : : : : : +- Project (810)
: : : : : : +- Generate (809)
: : : : : : +- Project (808)
: : : : : : +- Filter (807)
: : : : : : +- Generate (806)
: : : : : : +- Exchange (805)
: : : : : : +- Project (804)
: : : : : : +- Filter (803)
: : : : : : +- Scan parquet (802)
: : : : : +- HashAggregate (841)
: : : : : +- Exchange (840)
: : : : : +- HashAggregate (839)
: : : : : +- Project (838)
: : : : : +- Generate (837)
: : : : : +- Project (836)
: : : : : +- Generate (835)
: : : : : +- Project (834)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (833)
: : : : : :- Project (827)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (826)
: : : : : : :- Project (821)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (820)
: : : : : : : :- Exchange (814)
: : : : : : : : +- Filter (813)
: : : : : : : : +- Scan parquet (812)
: : : : : : : +- BroadcastExchange (819)
: : : : : : : +- Project (818)
: : : : : : : +- Exchange (817)
: : : : : : : +- Project (816)
: : : : : : : +- Scan parquet (815)
: : : : : : +- BroadcastExchange (825)
: : : : : : +- Exchange (824)
: : : : : : +- Project (823)
: : : : : : +- Scan parquet (822)
: : : : : +- BroadcastExchange (832)
: : : : : +- Exchange (831)
: : : : : +- Project (830)
: : : : : +- Filter (829)
: : : : : +- Scan parquet (828)
: : : : +- Sort (881)
: : : : +- Project (880)
: : : : +- Generate (879)
: : : : +- Project (878)
: : : : +- Generate (877)
: : : : +- Project (876)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (875)
: : : : :- Project (869)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (868)
: : : : : :- Project (863)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (862)
: : : : : : :- Exchange (856)
: : : : : : : +- Filter (855)
: : : : : : : +- Scan parquet (854)
: : : : : : +- BroadcastExchange (861)
: : : : : : +- Project (860)
: : : : : : +- Exchange (859)
: : : : : : +- Project (858)
: : : : : : +- Scan parquet (857)
: : : : : +- BroadcastExchange (867)
: : : : : +- Exchange (866)
: : : : : +- Project (865)
: : : : : +- Scan parquet (864)
: : : : +- BroadcastExchange (874)
: : : : +- Exchange (873)
: : : : +- Project (872)
: : : : +- Filter (871)
: : : : +- Scan parquet (870)
: : : +- Sort (976)
: : : +- Exchange (975)
: : : +- HashAggregate (974)
: : : +- HashAggregate (973)
: : : +- Project (972)
: : : +- SortMergeJoin Inner (971)
: : : :- Sort (942)
: : : : +- Exchange (941)
: : : : +- Project (940)
: : : : +- Filter (939)
: : : : +- Generate (938)
: : : : +- Filter (937)
: : : : +- ObjectHashAggregate (936)
: : : : +- ObjectHashAggregate (935)
: : : : +- Generate (934)
: : : : +- BroadcastHashJoin Inner BuildLeft (933)
: : : : :- BroadcastExchange (890)
: : : : : +- Exchange (889)
: : : : : +- Project (888)
: : : : : +- Filter (887)
: : : : : +- Scan parquet (886)
: : : : +- Project (932)
: : : : +- BroadcastHashJoin Inner BuildLeft (931)
: : : : :- BroadcastExchange (900)
: : : : : +- Project (899)
: : : : : +- Generate (898)
: : : : : +- Project (897)
: : : : : +- Filter (896)
: : : : : +- Generate (895)
: : : : : +- Exchange (894)
: : : : : +- Project (893)
: : : : : +- Filter (892)
: : : : : +- Scan parquet (891)
: : : : +- HashAggregate (930)
: : : : +- Exchange (929)
: : : : +- HashAggregate (928)
: : : : +- Project (927)
: : : : +- Generate (926)
: : : : +- Project (925)
: : : : +- Generate (924)
: : : : +- Project (923)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (922)
: : : : :- Project (916)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (915)
: : : : : :- Project (910)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (909)
: : : : : : :- Exchange (903)
: : : : : : : +- Filter (902)
: : : : : : : +- Scan parquet (901)
: : : : : : +- BroadcastExchange (908)
: : : : : : +- Project (907)
: : : : : : +- Exchange (906)
: : : : : : +- Project (905)
: : : : : : +- Scan parquet (904)
: : : : : +- BroadcastExchange (914)
: : : : : +- Exchange (913)
: : : : : +- Project (912)
: : : : : +- Scan parquet (911)
: : : : +- BroadcastExchange (921)
: : : : +- Exchange (920)
: : : : +- Project (919)
: : : : +- Filter (918)
: : : : +- Scan parquet (917)
: : : +- Sort (970)
: : : +- Project (969)
: : : +- Generate (968)
: : : +- Project (967)
: : : +- Generate (966)
: : : +- Project (965)
: : : +- BroadcastHashJoin LeftOuter BuildRight (964)
: : : :- Project (958)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (957)
: : : : :- Project (952)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (951)
: : : : : :- Exchange (945)
: : : : : : +- Filter (944)
: : : : : : +- Scan parquet (943)
: : : : : +- BroadcastExchange (950)
: : : : : +- Project (949)
: : : : : +- Exchange (948)
: : : : : +- Project (947)
: : : : : +- Scan parquet (946)
: : : : +- BroadcastExchange (956)
: : : : +- Exchange (955)
: : : : +- Project (954)
: : : : +- Scan parquet (953)
: : : +- BroadcastExchange (963)
: : : +- Exchange (962)
: : : +- Project (961)
: : : +- Filter (960)
: : : +- Scan parquet (959)
: : +- BroadcastExchange (986)
: : +- Filter (985)
: : +- Scan parquet (508)
: +- Sort (1043)
: +- Project (1042)
: +- BroadcastHashJoin Inner BuildLeft (1041)
: :- BroadcastExchange (1010)
: : +- Project (1009)
: : +- Filter (1008)
: : +- Generate (1007)
: : +- Project (1006)
: : +- Filter (1005)
: : +- Generate (1004)
: : +- Exchange (1003)
: : +- Project (1002)
: : +- Filter (1001)
: : +- Scan parquet (1000)
: +- HashAggregate (1040)
: +- Exchange (1039)
: +- HashAggregate (1038)
: +- Project (1037)
: +- Generate (1036)
: +- Project (1035)
: +- Generate (1034)
: +- Project (1033)
: +- BroadcastHashJoin LeftOuter BuildRight (1032)
: :- Project (1026)
: : +- BroadcastHashJoin LeftOuter BuildRight (1025)
: : :- Project (1020)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1019)
: : : :- Exchange (1013)
: : : : +- Filter (1012)
: : : : +- Scan parquet (1011)
: : : +- BroadcastExchange (1018)
: : : +- Project (1017)
: : : +- Exchange (1016)
: : : +- Project (1015)
: : : +- Scan parquet (1014)
: : +- BroadcastExchange (1024)
: : +- Exchange (1023)
: : +- Project (1022)
: : +- Scan parquet (1021)
: +- BroadcastExchange (1031)
: +- Exchange (1030)
: +- Project (1029)
: +- Filter (1028)
: +- Scan parquet (1027)
+- BroadcastExchange (1052)
+- Project (1051)
+- Filter (1050)
+- Generate (1049)
+- Exchange (1048)
+- Project (1047)
+- Filter (1046)
+- Scan parquet (549)
+- Filter (1988)
+- ObjectHashAggregate (1987)
+- Exchange (1986)
+- ObjectHashAggregate (1985)
+- Project (1984)
+- BroadcastHashJoin Inner BuildRight (1983)
:- Project (1974)
: +- SortMergeJoin LeftOuter (1973)
: :- Sort (1745)
: : +- Exchange (1744)
: : +- Project (1743)
: : +- SortMergeJoin LeftOuter (1742)
: : :- Sort (1555)
: : : +- Project (1554)
: : : +- Generate (1553)
: : : +- Project (1552)
: : : +- Generate (1551)
: : : +- Project (1550)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1549)
: : : :- Project (1543)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1542)
: : : : :- Project (1537)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1536)
: : : : : :- Exchange (1530)
: : : : : : +- Filter (1529)
: : : : : : +- Scan parquet (1528)
: : : : : +- BroadcastExchange (1535)
: : : : : +- Project (1534)
: : : : : +- Exchange (1533)
: : : : : +- Project (1532)
: : : : : +- Scan parquet (1531)
: : : : +- BroadcastExchange (1541)
: : : : +- Exchange (1540)
: : : : +- Project (1539)
: : : : +- Scan parquet (1538)
: : : +- BroadcastExchange (1548)
: : : +- Exchange (1547)
: : : +- Project (1546)
: : : +- Filter (1545)
: : : +- Scan parquet (1544)
: : +- Sort (1741)
: : +- HashAggregate (1740)
: : +- Exchange (1739)
: : +- HashAggregate (1738)
: : +- Project (1737)
: : +- SortMergeJoin Inner (1736)
: : :- Sort (1644)
: : : +- Exchange (1643)
: : : +- Project (1642)
: : : +- SortMergeJoin Inner (1641)
: : : :- Sort (1612)
: : : : +- Exchange (1611)
: : : : +- Project (1610)
: : : : +- Filter (1609)
: : : : +- Generate (1608)
: : : : +- Filter (1607)
: : : : +- ObjectHashAggregate (1606)
: : : : +- ObjectHashAggregate (1605)
: : : : +- Generate (1604)
: : : : +- BroadcastHashJoin Inner BuildLeft (1603)
: : : : :- BroadcastExchange (1560)
: : : : : +- Exchange (1559)
: : : : : +- Project (1558)
: : : : : +- Filter (1557)
: : : : : +- Scan parquet (1556)
: : : : +- Project (1602)
: : : : +- BroadcastHashJoin Inner BuildLeft (1601)
: : : : :- BroadcastExchange (1570)
: : : : : +- Project (1569)
: : : : : +- Generate (1568)
: : : : : +- Project (1567)
: : : : : +- Filter (1566)
: : : : : +- Generate (1565)
: : : : : +- Exchange (1564)
: : : : : +- Project (1563)
: : : : : +- Filter (1562)
: : : : : +- Scan parquet (1561)
: : : : +- HashAggregate (1600)
: : : : +- Exchange (1599)
: : : : +- HashAggregate (1598)
: : : : +- Project (1597)
: : : : +- Generate (1596)
: : : : +- Project (1595)
: : : : +- Generate (1594)
: : : : +- Project (1593)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1592)
: : : : :- Project (1586)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1585)
: : : : : :- Project (1580)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1579)
: : : : : : :- Exchange (1573)
: : : : : : : +- Filter (1572)
: : : : : : : +- Scan parquet (1571)
: : : : : : +- BroadcastExchange (1578)
: : : : : : +- Project (1577)
: : : : : : +- Exchange (1576)
: : : : : : +- Project (1575)
: : : : : : +- Scan parquet (1574)
: : : : : +- BroadcastExchange (1584)
: : : : : +- Exchange (1583)
: : : : : +- Project (1582)
: : : : : +- Scan parquet (1581)
: : : : +- BroadcastExchange (1591)
: : : : +- Exchange (1590)
: : : : +- Project (1589)
: : : : +- Filter (1588)
: : : : +- Scan parquet (1587)
: : : +- Sort (1640)
: : : +- Project (1639)
: : : +- Generate (1638)
: : : +- Project (1637)
: : : +- Generate (1636)
: : : +- Project (1635)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1634)
: : : :- Project (1628)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1627)
: : : : :- Project (1622)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1621)
: : : : : :- Exchange (1615)
: : : : : : +- Filter (1614)
: : : : : : +- Scan parquet (1613)
: : : : : +- BroadcastExchange (1620)
: : : : : +- Project (1619)
: : : : : +- Exchange (1618)
: : : : : +- Project (1617)
: : : : : +- Scan parquet (1616)
: : : : +- BroadcastExchange (1626)
: : : : +- Exchange (1625)
: : : : +- Project (1624)
: : : : +- Scan parquet (1623)
: : : +- BroadcastExchange (1633)
: : : +- Exchange (1632)
: : : +- Project (1631)
: : : +- Filter (1630)
: : : +- Scan parquet (1629)
: : +- Sort (1735)
: : +- Exchange (1734)
: : +- HashAggregate (1733)
: : +- HashAggregate (1732)
: : +- Project (1731)
: : +- SortMergeJoin Inner (1730)
: : :- Sort (1701)
: : : +- Exchange (1700)
: : : +- Project (1699)
: : : +- Filter (1698)
: : : +- Generate (1697)
: : : +- Filter (1696)
: : : +- ObjectHashAggregate (1695)
: : : +- ObjectHashAggregate (1694)
: : : +- Generate (1693)
: : : +- BroadcastHashJoin Inner BuildLeft (1692)
: : : :- BroadcastExchange (1649)
: : : : +- Exchange (1648)
: : : : +- Project (1647)
: : : : +- Filter (1646)
: : : : +- Scan parquet (1645)
: : : +- Project (1691)
: : : +- BroadcastHashJoin Inner BuildLeft (1690)
: : : :- BroadcastExchange (1659)
: : : : +- Project (1658)
: : : : +- Generate (1657)
: : : : +- Project (1656)
: : : : +- Filter (1655)
: : : : +- Generate (1654)
: : : : +- Exchange (1653)
: : : : +- Project (1652)
: : : : +- Filter (1651)
: : : : +- Scan parquet (1650)
: : : +- HashAggregate (1689)
: : : +- Exchange (1688)
: : : +- HashAggregate (1687)
: : : +- Project (1686)
: : : +- Generate (1685)
: : : +- Project (1684)
: : : +- Generate (1683)
: : : +- Project (1682)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1681)
: : : :- Project (1675)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1674)
: : : : :- Project (1669)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1668)
: : : : : :- Exchange (1662)
: : : : : : +- Filter (1661)
: : : : : : +- Scan parquet (1660)
: : : : : +- BroadcastExchange (1667)
: : : : : +- Project (1666)
: : : : : +- Exchange (1665)
: : : : : +- Project (1664)
: : : : : +- Scan parquet (1663)
: : : : +- BroadcastExchange (1673)
: : : : +- Exchange (1672)
: : : : +- Project (1671)
: : : : +- Scan parquet (1670)
: : : +- BroadcastExchange (1680)
: : : +- Exchange (1679)
: : : +- Project (1678)
: : : +- Filter (1677)
: : : +- Scan parquet (1676)
: : +- Sort (1729)
: : +- Project (1728)
: : +- Generate (1727)
: : +- Project (1726)
: : +- Generate (1725)
: : +- Project (1724)
: : +- BroadcastHashJoin LeftOuter BuildRight (1723)
: : :- Project (1717)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1716)
: : : :- Project (1711)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1710)
: : : : :- Exchange (1704)
: : : : : +- Filter (1703)
: : : : : +- Scan parquet (1702)
: : : : +- BroadcastExchange (1709)
: : : : +- Project (1708)
: : : : +- Exchange (1707)
: : : : +- Project (1706)
: : : : +- Scan parquet (1705)
: : : +- BroadcastExchange (1715)
: : : +- Exchange (1714)
: : : +- Project (1713)
: : : +- Scan parquet (1712)
: : +- BroadcastExchange (1722)
: : +- Exchange (1721)
: : +- Project (1720)
: : +- Filter (1719)
: : +- Scan parquet (1718)
: +- Sort (1972)
: +- Exchange (1971)
: +- SerializeFromObject (1970)
: +- MapElements (1969)
: +- DeserializeToObject (1968)
: +- ObjectHashAggregate (1967)
: +- ObjectHashAggregate (1966)
: +- Project (1965)
: +- BroadcastHashJoin LeftOuter BuildRight (1964)
: :- Project (1960)
: : +- SortMergeJoin LeftOuter (1959)
: : :- Sort (1772)
: : : +- Project (1771)
: : : +- Project (1770)
: : : +- Generate (1769)
: : : +- Generate (1768)
: : : +- Project (1767)
: : : +- Project (1766)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1765)
: : : :- Project (1759)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1758)
: : : : :- BroadcastHashJoin LeftOuter BuildRight (1753)
: : : : : :- Exchange (1747)
: : : : : : +- Scan parquet (1746)
: : : : : +- BroadcastExchange (1752)
: : : : : +- Project (1751)
: : : : : +- Exchange (1750)
: : : : : +- Project (1749)
: : : : : +- Scan parquet (1748)
: : : : +- BroadcastExchange (1757)
: : : : +- Exchange (1756)
: : : : +- Project (1755)
: : : : +- Scan parquet (1754)
: : : +- BroadcastExchange (1764)
: : : +- Exchange (1763)
: : : +- Project (1762)
: : : +- Filter (1761)
: : : +- Scan parquet (1760)
: : +- Sort (1958)
: : +- HashAggregate (1957)
: : +- Exchange (1956)
: : +- HashAggregate (1955)
: : +- Project (1954)
: : +- SortMergeJoin Inner (1953)
: : :- Sort (1861)
: : : +- Exchange (1860)
: : : +- Project (1859)
: : : +- SortMergeJoin Inner (1858)
: : : :- Sort (1829)
: : : : +- Exchange (1828)
: : : : +- Project (1827)
: : : : +- Filter (1826)
: : : : +- Generate (1825)
: : : : +- Filter (1824)
: : : : +- ObjectHashAggregate (1823)
: : : : +- ObjectHashAggregate (1822)
: : : : +- Generate (1821)
: : : : +- BroadcastHashJoin Inner BuildLeft (1820)
: : : : :- BroadcastExchange (1777)
: : : : : +- Exchange (1776)
: : : : : +- Project (1775)
: : : : : +- Filter (1774)
: : : : : +- Scan parquet (1773)
: : : : +- Project (1819)
: : : : +- BroadcastHashJoin Inner BuildLeft (1818)
: : : : :- BroadcastExchange (1787)
: : : : : +- Project (1786)
: : : : : +- Generate (1785)
: : : : : +- Project (1784)
: : : : : +- Filter (1783)
: : : : : +- Generate (1782)
: : : : : +- Exchange (1781)
: : : : : +- Project (1780)
: : : : : +- Filter (1779)
: : : : : +- Scan parquet (1778)
: : : : +- HashAggregate (1817)
: : : : +- Exchange (1816)
: : : : +- HashAggregate (1815)
: : : : +- Project (1814)
: : : : +- Generate (1813)
: : : : +- Project (1812)
: : : : +- Generate (1811)
: : : : +- Project (1810)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1809)
: : : : :- Project (1803)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1802)
: : : : : :- Project (1797)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1796)
: : : : : : :- Exchange (1790)
: : : : : : : +- Filter (1789)
: : : : : : : +- Scan parquet (1788)
: : : : : : +- BroadcastExchange (1795)
: : : : : : +- Project (1794)
: : : : : : +- Exchange (1793)
: : : : : : +- Project (1792)
: : : : : : +- Scan parquet (1791)
: : : : : +- BroadcastExchange (1801)
: : : : : +- Exchange (1800)
: : : : : +- Project (1799)
: : : : : +- Scan parquet (1798)
: : : : +- BroadcastExchange (1808)
: : : : +- Exchange (1807)
: : : : +- Project (1806)
: : : : +- Filter (1805)
: : : : +- Scan parquet (1804)
: : : +- Sort (1857)
: : : +- Project (1856)
: : : +- Generate (1855)
: : : +- Project (1854)
: : : +- Generate (1853)
: : : +- Project (1852)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1851)
: : : :- Project (1845)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1844)
: : : : :- Project (1839)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1838)
: : : : : :- Exchange (1832)
: : : : : : +- Filter (1831)
: : : : : : +- Scan parquet (1830)
: : : : : +- BroadcastExchange (1837)
: : : : : +- Project (1836)
: : : : : +- Exchange (1835)
: : : : : +- Project (1834)
: : : : : +- Scan parquet (1833)
: : : : +- BroadcastExchange (1843)
: : : : +- Exchange (1842)
: : : : +- Project (1841)
: : : : +- Scan parquet (1840)
: : : +- BroadcastExchange (1850)
: : : +- Exchange (1849)
: : : +- Project (1848)
: : : +- Filter (1847)
: : : +- Scan parquet (1846)
: : +- Sort (1952)
: : +- Exchange (1951)
: : +- HashAggregate (1950)
: : +- HashAggregate (1949)
: : +- Project (1948)
: : +- SortMergeJoin Inner (1947)
: : :- Sort (1918)
: : : +- Exchange (1917)
: : : +- Project (1916)
: : : +- Filter (1915)
: : : +- Generate (1914)
: : : +- Filter (1913)
: : : +- ObjectHashAggregate (1912)
: : : +- ObjectHashAggregate (1911)
: : : +- Generate (1910)
: : : +- BroadcastHashJoin Inner BuildLeft (1909)
: : : :- BroadcastExchange (1866)
: : : : +- Exchange (1865)
: : : : +- Project (1864)
: : : : +- Filter (1863)
: : : : +- Scan parquet (1862)
: : : +- Project (1908)
: : : +- BroadcastHashJoin Inner BuildLeft (1907)
: : : :- BroadcastExchange (1876)
: : : : +- Project (1875)
: : : : +- Generate (1874)
: : : : +- Project (1873)
: : : : +- Filter (1872)
: : : : +- Generate (1871)
: : : : +- Exchange (1870)
: : : : +- Project (1869)
: : : : +- Filter (1868)
: : : : +- Scan parquet (1867)
: : : +- HashAggregate (1906)
: : : +- Exchange (1905)
: : : +- HashAggregate (1904)
: : : +- Project (1903)
: : : +- Generate (1902)
: : : +- Project (1901)
: : : +- Generate (1900)
: : : +- Project (1899)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1898)
: : : :- Project (1892)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1891)
: : : : :- Project (1886)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1885)
: : : : : :- Exchange (1879)
: : : : : : +- Filter (1878)
: : : : : : +- Scan parquet (1877)
: : : : : +- BroadcastExchange (1884)
: : : : : +- Project (1883)
: : : : : +- Exchange (1882)
: : : : : +- Project (1881)
: : : : : +- Scan parquet (1880)
: : : : +- BroadcastExchange (1890)
: : : : +- Exchange (1889)
: : : : +- Project (1888)
: : : : +- Scan parquet (1887)
: : : +- BroadcastExchange (1897)
: : : +- Exchange (1896)
: : : +- Project (1895)
: : : +- Filter (1894)
: : : +- Scan parquet (1893)
: : +- Sort (1946)
: : +- Project (1945)
: : +- Generate (1944)
: : +- Project (1943)
: : +- Generate (1942)
: : +- Project (1941)
: : +- BroadcastHashJoin LeftOuter BuildRight (1940)
: : :- Project (1934)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1933)
: : : :- Project (1928)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1927)
: : : : :- Exchange (1921)
: : : : : +- Filter (1920)
: : : : : +- Scan parquet (1919)
: : : : +- BroadcastExchange (1926)
: : : : +- Project (1925)
: : : : +- Exchange (1924)
: : : : +- Project (1923)
: : : : +- Scan parquet (1922)
: : : +- BroadcastExchange (1932)
: : : +- Exchange (1931)
: : : +- Project (1930)
: : : +- Scan parquet (1929)
: : +- BroadcastExchange (1939)
: : +- Exchange (1938)
: : +- Project (1937)
: : +- Filter (1936)
: : +- Scan parquet (1935)
: +- BroadcastExchange (1963)
: +- Filter (1962)
: +- Scan parquet (1961)
+- BroadcastExchange (1982)
+- Project (1981)
+- Filter (1980)
+- Generate (1979)
+- Exchange (1978)
+- Project (1977)
+- Filter (1976)
+- Scan parquet (1975)
(1) Scan parquet
Output [3]: [product#69019, plant#69020, orderDateTime#69021]
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/10000002106/shardId=0_1_10000002106]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2) ColumnarToRow [codegen id : 1]
Input [3]: [product#69019, plant#69020, orderDateTime#69021]
(3) Exchange
Input [3]: [product#69019, plant#69020, orderDateTime#69021]
Arguments: hashpartitioning(product#69019, plant#69020, 25), REPARTITION_BY_NUM, [plan_id=47872]
(4) ShuffleQueryStage
Output [3]: [product#69019, plant#69020, orderDateTime#69021]
Arguments: 0
(5) Scan parquet
Output [8]: [internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040, systemId#69025]
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#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040, systemId#69025]
(7) Project [codegen id : 2]
Output [8]: [systemId#69025, internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040]
Input [8]: [internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040, systemId#69025]
(8) Exchange
Input [8]: [systemId#69025, internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=47886]
(9) ShuffleQueryStage
Output [8]: [systemId#69025, internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040]
Arguments: 1
(10) Project [codegen id : 100]
Output [1]: [struct(systemId, systemId#69025, internalUUID, internalUUID#69027, plant, plant#69029, product, product#69031, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69034, productionAspect, productionAspect#69036, salesPlant, salesPlant#69038, listing, listing#69040) AS productPlant#69044]
Input [8]: [systemId#69025, internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040]
(11) BroadcastExchange
Input [1]: [productPlant#69044]
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=133822]
(12) BroadcastQueryStage
Output [1]: [productPlant#69044]
Arguments: 186
(13) BroadcastHashJoin [codegen id : 185]
Left keys [4]: [coalesce(product#69019, ), isnull(product#69019), coalesce(plant#69020, ), isnull(plant#69020)]
Right keys [4]: [coalesce(productPlant#69044.product.internalRefUUID, ), isnull(productPlant#69044.product.internalRefUUID), coalesce(productPlant#69044.plant.internalRefUUID, ), isnull(productPlant#69044.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(14) Scan parquet
Output [2]: [internalUUID#69062, systemId#69061]
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#69062, systemId#69061]
(16) Project [codegen id : 3]
Output [1]: [internalUUID#69062]
Input [2]: [internalUUID#69062, systemId#69061]
(17) Exchange
Input [1]: [internalUUID#69062]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=47904]
(18) ShuffleQueryStage
Output [1]: [internalUUID#69062]
Arguments: 2
(19) BroadcastExchange
Input [1]: [internalUUID#69062]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=47912]
(20) BroadcastQueryStage
Output [1]: [internalUUID#69062]
Arguments: 187
(21) BroadcastHashJoin [codegen id : 185]
Left keys [2]: [coalesce(plant#69020, ), isnull(plant#69020)]
Right keys [2]: [coalesce(internalUUID#69062, ), isnull(internalUUID#69062)]
Join type: LeftOuter
Join condition: None
(22) Project [codegen id : 185]
Output [4]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044]
Input [5]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, internalUUID#69062]
(23) Scan parquet
Output [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
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#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
(25) Filter [codegen id : 4]
Input [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
Condition : isnotnull(internalUUID#69094)
(26) Project [codegen id : 4]
Output [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Input [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
(27) Exchange
Input [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=47924]
(28) ShuffleQueryStage
Output [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: 3
(29) BroadcastExchange
Input [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=47934]
(30) BroadcastQueryStage
Output [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: 188
(31) BroadcastHashJoin [codegen id : 185]
Left keys [1]: [product#69019]
Right keys [1]: [internalUUID#69094]
Join type: LeftOuter
Join condition: None
(32) Project
Output [5]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, filter(unitOfMeasureConversions#69100, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#69044.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#69044.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69098.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69098.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69107]
Input [7]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
(33) Project [codegen id : 186]
Output [6]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, filteredUnitOfMeasureConversions#69107.quantityDenominator AS _extract_quantityDenominator#79912, filteredUnitOfMeasureConversions#69107.quantityNumerator AS _extract_quantityNumerator#79913]
Input [5]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, filteredUnitOfMeasureConversions#69107]
(34) Generate [codegen id : 186]
Input [6]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, _extract_quantityDenominator#79912, _extract_quantityNumerator#79913]
Arguments: explode(_extract_quantityNumerator#79913), [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, _extract_quantityDenominator#79912], true, [quantityNumerator#69124]
(35) Generate [codegen id : 186]
Input [6]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, _extract_quantityDenominator#79912, quantityNumerator#69124]
Arguments: explode(_extract_quantityDenominator#79912), [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, quantityNumerator#69124], true, [quantityDenominator#69129]
(36) Project [codegen id : 186]
Output [5]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, (cast(quantityNumerator#69124 as double) / cast(quantityDenominator#69129 as double)) AS outboundUnit#69131]
Input [6]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, quantityNumerator#69124, quantityDenominator#69129]
(37) Project [codegen id : 186]
Output [5]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044.productionAspect.productPlanningPlants.minimumSafetyStock AS _extract_minimumSafetyStock#80225, CASE WHEN (isnull(outboundUnit#69131) OR (outboundUnit#69131 <= 0.0)) THEN 1.0 ELSE outboundUnit#69131 END AS outboundUnit#69134]
Input [5]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, outboundUnit#69131]
(38) Scan parquet
Output [6]: [internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, systemId#69257]
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#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, systemId#69257]
(40) Filter [codegen id : 5]
Input [6]: [internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, systemId#69257]
Condition : (isnotnull(plant#69260.internalRefUUID) AND isnotnull(product#69259.internalRefUUID))
(41) Project [codegen id : 5]
Output [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
Input [6]: [internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, systemId#69257]
(42) Exchange
Input [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=47952]
(43) ShuffleQueryStage
Output [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
Arguments: 4
(44) BroadcastExchange
Input [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
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=47962]
(45) BroadcastQueryStage
Output [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
Arguments: 189
(46) Scan parquet
Output [2]: [marketUnit#69135, distributionCenters#69141]
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#69135, distributionCenters#69141]
(48) Filter [codegen id : 6]
Input [2]: [marketUnit#69135, distributionCenters#69141]
Condition : (((marketUnit#69135 <=> Daily_grocery) AND (size(distributionCenters#69141, true) > 0)) AND isnotnull(distributionCenters#69141))
(49) Project [codegen id : 6]
Output [1]: [distributionCenters#69141]
Input [2]: [marketUnit#69135, distributionCenters#69141]
(50) Exchange
Input [1]: [distributionCenters#69141]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=47972]
(51) ShuffleQueryStage
Output [1]: [distributionCenters#69141]
Arguments: 5
(52) Generate [codegen id : 101]
Input [1]: [distributionCenters#69141]
Arguments: explode(distributionCenters#69141), false, [distributionCenters#69183]
(53) Filter [codegen id : 101]
Input [1]: [distributionCenters#69183]
Condition : (((size(distributionCenters#69183.storageLocations, true) > 0) AND isnotnull(distributionCenters#69183.storageLocations)) AND isnotnull(distributionCenters#69183.internalRefUUID))
(54) Project [codegen id : 101]
Output [2]: [distributionCenters#69183.internalRefUUID AS _extract_internalRefUUID#79820, distributionCenters#69183.storageLocations AS _extract_storageLocations#79821]
Input [1]: [distributionCenters#69183]
(55) Generate [codegen id : 101]
Input [2]: [_extract_internalRefUUID#79820, _extract_storageLocations#79821]
Arguments: explode(_extract_storageLocations#79821), [_extract_internalRefUUID#79820], false, [storageLocations#69197]
(56) Project [codegen id : 101]
Output [3]: [_extract_internalRefUUID#79820 AS plantUuid#69186, storageLocations#69197.id AS storageLocId#69199, storageLocations#69197.internalRefUUID AS storageLocUuid#69200]
Input [2]: [_extract_internalRefUUID#79820, storageLocations#69197]
(57) BroadcastExchange
Input [3]: [plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=133859]
(58) BroadcastQueryStage
Output [3]: [plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
Arguments: 190
(59) Scan parquet
Output [2]: [product#69771, plant#69772]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(60) ColumnarToRow [codegen id : 7]
Input [2]: [product#69771, plant#69772]
(61) Filter [codegen id : 7]
Input [2]: [product#69771, plant#69772]
Condition : isnotnull(plant#69772)
(62) Exchange
Input [2]: [product#69771, plant#69772]
Arguments: hashpartitioning(product#69771, plant#69772, 25), REPARTITION_BY_NUM, [plan_id=47995]
(63) ShuffleQueryStage
Output [2]: [product#69771, plant#69772]
Arguments: 6
(64) Scan parquet
Output [4]: [plant#69777, product#69778, productionAspect#69780, systemId#69775]
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#69777, product#69778, productionAspect#69780, systemId#69775]
(66) Project [codegen id : 8]
Output [4]: [plant#69777.internalRefUUID AS _extract_internalRefUUID#80158, product#69778.internalRefUUID AS _extract_internalRefUUID#80157, productionAspect#69780.productMovementPlants.unitOfIssue.code AS _extract_code#80159, productionAspect#69780.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#80160]
Input [4]: [plant#69777, product#69778, productionAspect#69780, systemId#69775]
(67) Exchange
Input [4]: [_extract_internalRefUUID#80158, _extract_internalRefUUID#80157, _extract_code#80159, _extract_internalRefUUID#80160]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=48011]
(68) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#80158, _extract_internalRefUUID#80157, _extract_code#80159, _extract_internalRefUUID#80160]
Arguments: 7
(69) Project [codegen id : 102]
Output [4]: [_extract_code#80159, _extract_internalRefUUID#80160, _extract_internalRefUUID#80157, _extract_internalRefUUID#80158]
Input [4]: [_extract_internalRefUUID#80158, _extract_internalRefUUID#80157, _extract_code#80159, _extract_internalRefUUID#80160]
(70) BroadcastExchange
Input [4]: [_extract_code#80159, _extract_internalRefUUID#80160, _extract_internalRefUUID#80157, _extract_internalRefUUID#80158]
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=133885]
(71) BroadcastQueryStage
Output [4]: [_extract_code#80159, _extract_internalRefUUID#80160, _extract_internalRefUUID#80157, _extract_internalRefUUID#80158]
Arguments: 191
(72) BroadcastHashJoin [codegen id : 129]
Left keys [4]: [coalesce(product#69771, ), isnull(product#69771), coalesce(plant#69772, ), isnull(plant#69772)]
Right keys [4]: [coalesce(_extract_internalRefUUID#80157, ), isnull(_extract_internalRefUUID#80157), coalesce(_extract_internalRefUUID#80158, ), isnull(_extract_internalRefUUID#80158)]
Join type: LeftOuter
Join condition: None
(73) Project [codegen id : 129]
Output [4]: [product#69771, plant#69772, _extract_code#80159, _extract_internalRefUUID#80160]
Input [6]: [product#69771, plant#69772, _extract_code#80159, _extract_internalRefUUID#80160, _extract_internalRefUUID#80157, _extract_internalRefUUID#80158]
(74) ReusedExchange [Reuses operator id: 19]
Output [1]: [internalUUID#69798]
(75) BroadcastQueryStage
Output [1]: [internalUUID#69798]
Arguments: 192
(76) BroadcastHashJoin [codegen id : 129]
Left keys [2]: [coalesce(plant#69772, ), isnull(plant#69772)]
Right keys [2]: [coalesce(internalUUID#69798, ), isnull(internalUUID#69798)]
Join type: LeftOuter
Join condition: None
(77) Project [codegen id : 129]
Output [4]: [product#69771, plant#69772, _extract_code#80159, _extract_internalRefUUID#80160]
Input [5]: [product#69771, plant#69772, _extract_code#80159, _extract_internalRefUUID#80160, internalUUID#69798]
(78) ReusedExchange [Reuses operator id: 29]
Output [3]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832]
(79) BroadcastQueryStage
Output [3]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832]
Arguments: 193
(80) BroadcastHashJoin [codegen id : 129]
Left keys [1]: [product#69771]
Right keys [1]: [internalUUID#69826]
Join type: LeftOuter
Join condition: None
(81) Project
Output [2]: [plant#69772, filter(unitOfMeasureConversions#69832, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#80159) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#80160)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69830.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69830.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69849]
Input [7]: [product#69771, plant#69772, _extract_code#80159, _extract_internalRefUUID#80160, internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832]
(82) Generate [codegen id : 130]
Input [2]: [plant#69772, filteredUnitOfMeasureConversions#69849]
Arguments: explode(filteredUnitOfMeasureConversions#69849.quantityNumerator), [plant#69772, filteredUnitOfMeasureConversions#69849], true, [quantityNumerator#69851]
(83) Project [codegen id : 130]
Output [2]: [plant#69772, filteredUnitOfMeasureConversions#69849.quantityDenominator AS _extract_quantityDenominator#79822]
Input [3]: [plant#69772, filteredUnitOfMeasureConversions#69849, quantityNumerator#69851]
(84) Generate [codegen id : 130]
Input [2]: [plant#69772, _extract_quantityDenominator#79822]
Arguments: explode(_extract_quantityDenominator#79822), [plant#69772], true, [quantityDenominator#69854]
(85) Project [codegen id : 130]
Output [1]: [plant#69772]
Input [2]: [plant#69772, quantityDenominator#69854]
(86) HashAggregate [codegen id : 130]
Input [1]: [plant#69772]
Keys [1]: [plant#69772]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69772]
(87) Exchange
Input [1]: [plant#69772]
Arguments: hashpartitioning(plant#69772, 25), ENSURE_REQUIREMENTS, [plan_id=146734]
(88) ShuffleQueryStage
Output [1]: [plant#69772]
Arguments: 288
(89) AQEShuffleRead
Input [1]: [plant#69772]
Arguments: coalesced
(90) HashAggregate
Input [1]: [plant#69772]
Keys [1]: [plant#69772]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69772]
(91) BroadcastHashJoin
Left keys [1]: [plantUuid#69186]
Right keys [1]: [plant#69772]
Join type: Inner
Join condition: None
(92) Project
Output [3]: [plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
Input [4]: [plantUuid#69186, storageLocId#69199, storageLocUuid#69200, plant#69772]
(93) BroadcastHashJoin [codegen id : 145]
Left keys [2]: [coalesce(plant#69260.internalRefUUID, ), isnull(plant#69260.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#69186, ), isnull(plantUuid#69186)]
Join type: Inner
Join condition: None
(94) Generate
Input [9]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
Arguments: explode(filter(stockQuantities#69262, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#69200) AND (lambda x#69269.storageLocation.Id = storageLocId#69199)), lambda x#69269, false))), [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, plantUuid#69186], false, [stockQuantity#69272]
(95) ObjectHashAggregate
Input [7]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, plantUuid#69186, stockQuantity#69272]
Keys [5]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257]
Functions [2]: [partial_first(calculationDateTime#69261, false), partial_collect_list(stockQuantity#69272, 0, 0)]
Aggregate Attributes [3]: [first#73924, valueSet#73925, buf#73926]
Results [8]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257, first#73927, valueSet#73928, buf#73929]
(96) ObjectHashAggregate
Input [8]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257, first#73927, valueSet#73928, buf#73929]
Keys [5]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257]
Functions [2]: [first(calculationDateTime#69261, false), collect_list(stockQuantity#69272, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#69261)()#69286, collect_list(stockQuantity#69272, 0, 0)#69287]
Results [4]: [product#69259, plant#69260, first(calculationDateTime#69261)()#69286 AS calculationDateTime#69273, collect_list(stockQuantity#69272, 0, 0)#69287 AS stockQuantities#69274]
(97) Filter [codegen id : 146]
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantities#69274]
Condition : ((size(stockQuantities#69274, true) > 0) AND isnotnull(calculationDateTime#69273))
(98) Generate [codegen id : 146]
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantities#69274]
Arguments: explode(stockQuantities#69274), [product#69259, plant#69260, calculationDateTime#69273], false, [stockQuantity#69289]
(99) Filter [codegen id : 146]
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantity#69289]
Condition : (((isnotnull(stockQuantity#69289.specialStockIndicator.code) AND isnotnull(stockQuantity#69289.stockType.code)) AND (stockQuantity#69289.specialStockIndicator.code = )) AND (stockQuantity#69289.stockType.code = 01))
(100) Project [codegen id : 146]
Output [5]: [plant#69260.internalRefUUID AS plantUuid#69291, product#69259.internalRefUUID AS productUuid#69293, calculationDateTime#69273, stockQuantity#69289.storagelocation.id AS storageLocId#69294, stockQuantity#69289.quantity.measure AS quantity#69296]
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantity#69289]
(101) Exchange
Input [5]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294, quantity#69296]
Arguments: hashpartitioning(productUuid#69293, plantUuid#69291, 25), ENSURE_REQUIREMENTS, [plan_id=162744]
(102) ShuffleQueryStage
Output [5]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294, quantity#69296]
Arguments: 303
(103) AQEShuffleRead
Input [5]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294, quantity#69296]
Arguments: local
(104) BroadcastExchange
Input [5]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294, quantity#69296]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=167242]
(105) BroadcastQueryStage
Output [5]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294, quantity#69296]
Arguments: 317
(106) Scan parquet
Output [3]: [product#69323, plant#69324, orderDateTime#69325]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(107) ColumnarToRow [codegen id : 11]
Input [3]: [product#69323, plant#69324, orderDateTime#69325]
(108) Filter [codegen id : 11]
Input [3]: [product#69323, plant#69324, orderDateTime#69325]
Condition : ((isnotnull(orderDateTime#69325) AND isnotnull(plant#69324)) AND isnotnull(product#69323))
(109) Exchange
Input [3]: [product#69323, plant#69324, orderDateTime#69325]
Arguments: hashpartitioning(product#69323, plant#69324, 25), REPARTITION_BY_NUM, [plan_id=48093]
(110) ShuffleQueryStage
Output [3]: [product#69323, plant#69324, orderDateTime#69325]
Arguments: 12
(111) ReusedExchange [Reuses operator id: 70]
Output [4]: [_extract_code#80161, _extract_internalRefUUID#80162, _extract_internalRefUUID#80164, _extract_internalRefUUID#80163]
(112) BroadcastQueryStage
Output [4]: [_extract_code#80161, _extract_internalRefUUID#80162, _extract_internalRefUUID#80164, _extract_internalRefUUID#80163]
Arguments: 195
(113) BroadcastHashJoin [codegen id : 161]
Left keys [4]: [coalesce(product#69323, ), isnull(product#69323), coalesce(plant#69324, ), isnull(plant#69324)]
Right keys [4]: [coalesce(_extract_internalRefUUID#80164, ), isnull(_extract_internalRefUUID#80164), coalesce(_extract_internalRefUUID#80163, ), isnull(_extract_internalRefUUID#80163)]
Join type: LeftOuter
Join condition: None
(114) Project [codegen id : 161]
Output [5]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#80161, _extract_internalRefUUID#80162]
Input [7]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#80161, _extract_internalRefUUID#80162, _extract_internalRefUUID#80164, _extract_internalRefUUID#80163]
(115) ReusedExchange [Reuses operator id: 19]
Output [1]: [internalUUID#69338]
(116) BroadcastQueryStage
Output [1]: [internalUUID#69338]
Arguments: 196
(117) BroadcastHashJoin [codegen id : 161]
Left keys [2]: [coalesce(plant#69324, ), isnull(plant#69324)]
Right keys [2]: [coalesce(internalUUID#69338, ), isnull(internalUUID#69338)]
Join type: LeftOuter
Join condition: None
(118) Project [codegen id : 161]
Output [5]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#80161, _extract_internalRefUUID#80162]
Input [6]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#80161, _extract_internalRefUUID#80162, internalUUID#69338]
(119) ReusedExchange [Reuses operator id: 29]
Output [3]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358]
(120) BroadcastQueryStage
Output [3]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358]
Arguments: 197
(121) BroadcastHashJoin [codegen id : 161]
Left keys [1]: [product#69323]
Right keys [1]: [internalUUID#69352]
Join type: LeftOuter
Join condition: None
(122) Project
Output [4]: [product#69323, plant#69324, orderDateTime#69325, filter(unitOfMeasureConversions#69358, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#80161) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#80162)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69356.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69356.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69363]
Input [8]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#80161, _extract_internalRefUUID#80162, internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358]
(123) Generate
Input [4]: [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363]
Arguments: explode(filteredUnitOfMeasureConversions#69363.quantityNumerator), [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363], true, [quantityNumerator#69364]
(124) Project
Output [4]: [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363.quantityDenominator AS _extract_quantityDenominator#79826]
Input [5]: [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363, quantityNumerator#69364]
(125) Generate
Input [4]: [product#69323, plant#69324, orderDateTime#69325, _extract_quantityDenominator#79826]
Arguments: explode(_extract_quantityDenominator#79826), [product#69323, plant#69324, orderDateTime#69325], true, [quantityDenominator#69365]
(126) Project
Output [3]: [product#69323, plant#69324, orderDateTime#69325]
Input [4]: [product#69323, plant#69324, orderDateTime#69325, quantityDenominator#69365]
(127) BroadcastHashJoin [codegen id : 162]
Left keys [2]: [plantUuid#69291, productUuid#69293]
Right keys [2]: [plant#69324, product#69323]
Join type: Inner
Join condition: (calculationDateTime#69273 <= orderDateTime#69325)
(128) Project [codegen id : 162]
Output [5]: [plantUuid#69291 AS plant#69435, productUuid#69293 AS product#69436, storageLocId#69294, calculationDateTime#69273, quantity#69296]
Input [8]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294, quantity#69296, product#69323, plant#69324, orderDateTime#69325]
(129) Exchange
Input [5]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273, quantity#69296]
Arguments: hashpartitioning(coalesce(plant#69435, ), isnull(plant#69435), coalesce(product#69436, ), isnull(product#69436), coalesce(storageLocId#69294, ), isnull(storageLocId#69294), coalesce(calculationDateTime#69273, 1970-01-01 00:00:00), isnull(calculationDateTime#69273), 25), ENSURE_REQUIREMENTS, [plan_id=170102]
(130) ShuffleQueryStage
Output [5]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273, quantity#69296]
Arguments: 331
(131) AQEShuffleRead
Input [5]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273, quantity#69296]
Arguments: local
(132) BroadcastExchange
Input [5]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273, quantity#69296]
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=176490]
(133) BroadcastQueryStage
Output [5]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273, quantity#69296]
Arguments: 344
(134) ReusedExchange [Reuses operator id: 44]
Output [6]: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462]
(135) BroadcastQueryStage
Output [6]: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462]
Arguments: 198
(136) ReusedExchange [Reuses operator id: 57]
Output [3]: [plantUuid#69488, storageLocId#69489, storageLocUuid#69490]
(137) BroadcastQueryStage
Output [3]: [plantUuid#69488, storageLocId#69489, storageLocUuid#69490]
Arguments: 200
(138) ReusedExchange [Reuses operator id: 87]
Output [1]: [plant#69492]
(139) ShuffleQueryStage
Output [1]: [plant#69492]
Arguments: 290
(140) AQEShuffleRead
Input [1]: [plant#69492]
Arguments: coalesced
(141) HashAggregate
Input [1]: [plant#69492]
Keys [1]: [plant#69492]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69492]
(142) BroadcastHashJoin
Left keys [1]: [plantUuid#69488]
Right keys [1]: [plant#69492]
Join type: Inner
Join condition: None
(143) Project
Output [3]: [plantUuid#69488, storageLocId#69489, storageLocUuid#69490]
Input [4]: [plantUuid#69488, storageLocId#69489, storageLocUuid#69490, plant#69492]
(144) BroadcastHashJoin [codegen id : 147]
Left keys [2]: [coalesce(plant#69460.internalRefUUID, ), isnull(plant#69460.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#69488, ), isnull(plantUuid#69488)]
Join type: Inner
Join condition: None
(145) Generate
Input [9]: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462, plantUuid#69488, storageLocId#69489, storageLocUuid#69490]
Arguments: explode(filter(stockQuantities#69462, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#69490) AND (lambda x#69269.storageLocation.Id = storageLocId#69489)), lambda x#69269, false))), [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, plantUuid#69488], false, [stockQuantity#69535]
(146) ObjectHashAggregate
Input [7]: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, plantUuid#69488, stockQuantity#69535]
Keys [5]: [plantUuid#69488, internalUUID#69458, plant#69460, product#69459, systemId#69457]
Functions [2]: [partial_first(calculationDateTime#69461, false), partial_collect_list(stockQuantity#69535, 0, 0)]
Aggregate Attributes [3]: [first#73934, valueSet#73935, buf#73936]
Results [8]: [plantUuid#69488, internalUUID#69458, plant#69460, product#69459, systemId#69457, first#73937, valueSet#73938, buf#73939]
(147) ObjectHashAggregate
Input [8]: [plantUuid#69488, internalUUID#69458, plant#69460, product#69459, systemId#69457, first#73937, valueSet#73938, buf#73939]
Keys [5]: [plantUuid#69488, internalUUID#69458, plant#69460, product#69459, systemId#69457]
Functions [2]: [first(calculationDateTime#69461, false), collect_list(stockQuantity#69535, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#69461)()#69286, collect_list(stockQuantity#69535, 0, 0)#69287]
Results [4]: [product#69459, plant#69460, first(calculationDateTime#69461)()#69286 AS calculationDateTime#69536, collect_list(stockQuantity#69535, 0, 0)#69287 AS stockQuantities#69537]
(148) Filter [codegen id : 148]
Input [4]: [product#69459, plant#69460, calculationDateTime#69536, stockQuantities#69537]
Condition : ((size(stockQuantities#69537, true) > 0) AND isnotnull(calculationDateTime#69536))
(149) Generate [codegen id : 148]
Input [4]: [product#69459, plant#69460, calculationDateTime#69536, stockQuantities#69537]
Arguments: explode(stockQuantities#69537), [product#69459, plant#69460, calculationDateTime#69536], false, [stockQuantity#69538]
(150) Filter [codegen id : 148]
Input [4]: [product#69459, plant#69460, calculationDateTime#69536, stockQuantity#69538]
Condition : (((isnotnull(stockQuantity#69538.specialStockIndicator.code) AND isnotnull(stockQuantity#69538.stockType.code)) AND (stockQuantity#69538.specialStockIndicator.code = )) AND (stockQuantity#69538.stockType.code = 01))
(151) Project [codegen id : 148]
Output [4]: [plant#69460.internalRefUUID AS plantUuid#69540, product#69459.internalRefUUID AS productUuid#69542, calculationDateTime#69536, stockQuantity#69538.storagelocation.id AS storageLocId#69543]
Input [4]: [product#69459, plant#69460, calculationDateTime#69536, stockQuantity#69538]
(152) Exchange
Input [4]: [plantUuid#69540, productUuid#69542, calculationDateTime#69536, storageLocId#69543]
Arguments: hashpartitioning(productUuid#69542, plantUuid#69540, 25), ENSURE_REQUIREMENTS, [plan_id=162812]
(153) ShuffleQueryStage
Output [4]: [plantUuid#69540, productUuid#69542, calculationDateTime#69536, storageLocId#69543]
Arguments: 304
(154) AQEShuffleRead
Input [4]: [plantUuid#69540, productUuid#69542, calculationDateTime#69536, storageLocId#69543]
Arguments: local
(155) BroadcastExchange
Input [4]: [plantUuid#69540, productUuid#69542, calculationDateTime#69536, storageLocId#69543]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=168661]
(156) BroadcastQueryStage
Output [4]: [plantUuid#69540, productUuid#69542, calculationDateTime#69536, storageLocId#69543]
Arguments: 322
(157) ReusedExchange [Reuses operator id: 109]
Output [3]: [product#69548, plant#69549, orderDateTime#69550]
(158) ShuffleQueryStage
Output [3]: [product#69548, plant#69549, orderDateTime#69550]
Arguments: 32
(159) ReusedExchange [Reuses operator id: 70]
Output [4]: [_extract_code#80171, _extract_internalRefUUID#80172, _extract_internalRefUUID#80169, _extract_internalRefUUID#80170]
(160) BroadcastQueryStage
Output [4]: [_extract_code#80171, _extract_internalRefUUID#80172, _extract_internalRefUUID#80169, _extract_internalRefUUID#80170]
Arguments: 206
(161) BroadcastHashJoin [codegen id : 167]
Left keys [4]: [coalesce(product#69548, ), isnull(product#69548), coalesce(plant#69549, ), isnull(plant#69549)]
Right keys [4]: [coalesce(_extract_internalRefUUID#80169, ), isnull(_extract_internalRefUUID#80169), coalesce(_extract_internalRefUUID#80170, ), isnull(_extract_internalRefUUID#80170)]
Join type: LeftOuter
Join condition: None
(162) Project [codegen id : 167]
Output [5]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#80171, _extract_internalRefUUID#80172]
Input [7]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#80171, _extract_internalRefUUID#80172, _extract_internalRefUUID#80169, _extract_internalRefUUID#80170]
(163) ReusedExchange [Reuses operator id: 19]
Output [1]: [internalUUID#69562]
(164) BroadcastQueryStage
Output [1]: [internalUUID#69562]
Arguments: 207
(165) BroadcastHashJoin [codegen id : 167]
Left keys [2]: [coalesce(plant#69549, ), isnull(plant#69549)]
Right keys [2]: [coalesce(internalUUID#69562, ), isnull(internalUUID#69562)]
Join type: LeftOuter
Join condition: None
(166) Project [codegen id : 167]
Output [5]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#80171, _extract_internalRefUUID#80172]
Input [6]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#80171, _extract_internalRefUUID#80172, internalUUID#69562]
(167) ReusedExchange [Reuses operator id: 29]
Output [3]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582]
(168) BroadcastQueryStage
Output [3]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582]
Arguments: 208
(169) BroadcastHashJoin [codegen id : 167]
Left keys [1]: [product#69548]
Right keys [1]: [internalUUID#69576]
Join type: LeftOuter
Join condition: None
(170) Project
Output [4]: [product#69548, plant#69549, orderDateTime#69550, filter(unitOfMeasureConversions#69582, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#80171) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#80172)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69580.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69580.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69587]
Input [8]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#80171, _extract_internalRefUUID#80172, internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582]
(171) Generate
Input [4]: [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587]
Arguments: explode(filteredUnitOfMeasureConversions#69587.quantityNumerator), [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587], true, [quantityNumerator#69588]
(172) Project
Output [4]: [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587.quantityDenominator AS _extract_quantityDenominator#79836]
Input [5]: [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587, quantityNumerator#69588]
(173) Generate
Input [4]: [product#69548, plant#69549, orderDateTime#69550, _extract_quantityDenominator#79836]
Arguments: explode(_extract_quantityDenominator#79836), [product#69548, plant#69549, orderDateTime#69550], true, [quantityDenominator#69589]
(174) Project
Output [3]: [product#69548, plant#69549, orderDateTime#69550]
Input [4]: [product#69548, plant#69549, orderDateTime#69550, quantityDenominator#69589]
(175) BroadcastHashJoin [codegen id : 168]
Left keys [2]: [plantUuid#69540, productUuid#69542]
Right keys [2]: [plant#69549, product#69548]
Join type: Inner
Join condition: (calculationDateTime#69536 <= orderDateTime#69550)
(176) Project [codegen id : 168]
Output [4]: [plantUuid#69540 AS plant#69620, productUuid#69542 AS product#69621, storageLocId#69543, calculationDateTime#69536]
Input [7]: [plantUuid#69540, productUuid#69542, calculationDateTime#69536, storageLocId#69543, product#69548, plant#69549, orderDateTime#69550]
(177) HashAggregate [codegen id : 168]
Input [4]: [plant#69620, product#69621, storageLocId#69543, calculationDateTime#69536]
Keys [3]: [plant#69620, product#69621, storageLocId#69543]
Functions [1]: [partial_max(calculationDateTime#69536)]
Aggregate Attributes [1]: [max#73930]
Results [4]: [plant#69620, product#69621, storageLocId#69543, max#73931]
(178) HashAggregate [codegen id : 168]
Input [4]: [plant#69620, product#69621, storageLocId#69543, max#73931]
Keys [3]: [plant#69620, product#69621, storageLocId#69543]
Functions [1]: [max(calculationDateTime#69536)]
Aggregate Attributes [1]: [max(calculationDateTime#69536)#69447]
Results [4]: [plant#69620, product#69621, storageLocId#69543, max(calculationDateTime#69536)#69447 AS max_calc_datetime#69441]
(179) Exchange
Input [4]: [plant#69620, product#69621, storageLocId#69543, max_calc_datetime#69441]
Arguments: hashpartitioning(coalesce(plant#69620, ), isnull(plant#69620), coalesce(product#69621, ), isnull(product#69621), coalesce(storageLocId#69543, ), isnull(storageLocId#69543), coalesce(max_calc_datetime#69441, 1970-01-01 00:00:00), isnull(max_calc_datetime#69441), 25), ENSURE_REQUIREMENTS, [plan_id=172880]
(180) ShuffleQueryStage
Output [4]: [plant#69620, product#69621, storageLocId#69543, max_calc_datetime#69441]
Arguments: 336
(181) AQEShuffleRead
Input [4]: [plant#69620, product#69621, storageLocId#69543, max_calc_datetime#69441]
Arguments: local
(182) BroadcastHashJoin [codegen id : 177]
Left keys [8]: [coalesce(plant#69435, ), isnull(plant#69435), coalesce(product#69436, ), isnull(product#69436), coalesce(storageLocId#69294, ), isnull(storageLocId#69294), coalesce(calculationDateTime#69273, 1970-01-01 00:00:00), isnull(calculationDateTime#69273)]
Right keys [8]: [coalesce(plant#69620, ), isnull(plant#69620), coalesce(product#69621, ), isnull(product#69621), coalesce(storageLocId#69543, ), isnull(storageLocId#69543), coalesce(max_calc_datetime#69441, 1970-01-01 00:00:00), isnull(max_calc_datetime#69441)]
Join type: Inner
Join condition: None
(183) Project [codegen id : 177]
Output [4]: [plant#69435, product#69436, calculationDateTime#69273, quantity#69296]
Input [9]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273, quantity#69296, plant#69620, product#69621, storageLocId#69543, max_calc_datetime#69441]
(184) HashAggregate [codegen id : 177]
Input [4]: [plant#69435, product#69436, calculationDateTime#69273, quantity#69296]
Keys [2]: [product#69436, plant#69435]
Functions [2]: [partial_min(calculationDateTime#69273), partial_sum(quantity#69296)]
Aggregate Attributes [2]: [min#73914, sum#81824]
Results [4]: [product#69436, plant#69435, min#73915, sum#81825]
(185) Exchange
Input [4]: [product#69436, plant#69435, min#73915, sum#81825]
Arguments: hashpartitioning(product#69436, plant#69435, 25), ENSURE_REQUIREMENTS, [plan_id=180702]
(186) ShuffleQueryStage
Output [4]: [product#69436, plant#69435, min#73915, sum#81825]
Arguments: 350
(187) AQEShuffleRead
Input [4]: [product#69436, plant#69435, min#73915, sum#81825]
Arguments: coalesced
(188) HashAggregate [codegen id : 181]
Input [4]: [product#69436, plant#69435, min#73915, sum#81825]
Keys [2]: [product#69436, plant#69435]
Functions [2]: [min(calculationDateTime#69273), sum(quantity#69296)]
Aggregate Attributes [2]: [min(calculationDateTime#69273)#69766, sum(quantity#69296)#69765]
Results [4]: [product#69436, plant#69435, min(calculationDateTime#69273)#69766 AS minCalculationDateTime#69752, round(sum(quantity#69296)#69765, 0) AS roundedQuantitySum#69769]
(189) BroadcastExchange
Input [4]: [product#69436, plant#69435, minCalculationDateTime#69752, roundedQuantitySum#69769]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=184546]
(190) BroadcastQueryStage
Output [4]: [product#69436, plant#69435, minCalculationDateTime#69752, roundedQuantitySum#69769]
Arguments: 356
(191) BroadcastHashJoin [codegen id : 186]
Left keys [2]: [plant#69020, product#69019]
Right keys [2]: [plant#69435, product#69436]
Join type: LeftOuter
Join condition: None
(192) Project [codegen id : 186]
Output [6]: [product#69019, plant#69020, _extract_minimumSafetyStock#80225, outboundUnit#69134, CASE WHEN isnotnull(minCalculationDateTime#69752) THEN minCalculationDateTime#69752 ELSE orderDateTime#69021 END AS stockDatetime#69868, CASE WHEN isnotnull(roundedQuantitySum#69769) THEN array(roundedQuantitySum#69769) ELSE [0.0] END AS stockBatchQuantities#69869]
Input [9]: [product#69019, plant#69020, orderDateTime#69021, _extract_minimumSafetyStock#80225, outboundUnit#69134, product#69436, plant#69435, minCalculationDateTime#69752, roundedQuantitySum#69769]
(193) Exchange
Input [6]: [product#69019, plant#69020, _extract_minimumSafetyStock#80225, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869]
Arguments: hashpartitioning(coalesce(plant#69020, ), isnull(plant#69020), coalesce(product#69019, ), isnull(product#69019), 25), ENSURE_REQUIREMENTS, [plan_id=186254]
(194) ShuffleQueryStage
Output [6]: [product#69019, plant#69020, _extract_minimumSafetyStock#80225, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869]
Arguments: 362
(195) AQEShuffleRead
Input [6]: [product#69019, plant#69020, _extract_minimumSafetyStock#80225, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869]
Arguments: local
(196) ReusedExchange [Reuses operator id: 3]
Output [3]: [product#69978, plant#69979, orderDateTime#69980]
(197) ShuffleQueryStage
Output [3]: [product#69978, plant#69979, orderDateTime#69980]
Arguments: 40
(198) ReusedExchange [Reuses operator id: 11]
Output [1]: [productPlant#69990]
(199) BroadcastQueryStage
Output [1]: [productPlant#69990]
Arguments: 210
(200) BroadcastHashJoin [codegen id : 187]
Left keys [4]: [coalesce(product#69978, ), isnull(product#69978), coalesce(plant#69979, ), isnull(plant#69979)]
Right keys [4]: [coalesce(productPlant#69990.product.internalRefUUID, ), isnull(productPlant#69990.product.internalRefUUID), coalesce(productPlant#69990.plant.internalRefUUID, ), isnull(productPlant#69990.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(201) Scan parquet
Output [3]: [internalUUID#69992, address#69998, systemId#69991]
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#69992, address#69998, systemId#69991]
(203) Project [codegen id : 27]
Output [2]: [internalUUID#69992, address#69998.timeZone.code AS timezonecode#70003]
Input [3]: [internalUUID#69992, address#69998, systemId#69991]
(204) Exchange
Input [2]: [internalUUID#69992, timezonecode#70003]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=48472]
(205) ShuffleQueryStage
Output [2]: [internalUUID#69992, timezonecode#70003]
Arguments: 43
(206) BroadcastExchange
Input [2]: [internalUUID#69992, timezonecode#70003]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=48480]
(207) BroadcastQueryStage
Output [2]: [internalUUID#69992, timezonecode#70003]
Arguments: 211
(208) BroadcastHashJoin [codegen id : 187]
Left keys [2]: [coalesce(plant#69979, ), isnull(plant#69979)]
Right keys [2]: [coalesce(internalUUID#69992, ), isnull(internalUUID#69992)]
Join type: LeftOuter
Join condition: None
(209) Project [codegen id : 187]
Output [5]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, CASE WHEN isnotnull(timezonecode#70003) THEN timezonecode#70003 ELSE UTC END AS timezonecode#70005]
Input [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, internalUUID#69992, timezonecode#70003]
(210) ReusedExchange [Reuses operator id: 29]
Output [3]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013]
(211) BroadcastQueryStage
Output [3]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013]
Arguments: 212
(212) BroadcastHashJoin [codegen id : 187]
Left keys [1]: [product#69978]
Right keys [1]: [internalUUID#70007]
Join type: LeftOuter
Join condition: None
(213) Project
Output [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, filter(unitOfMeasureConversions#70013, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70011.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70011.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70018]
Input [8]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013]
(214) Project [codegen id : 188]
Output [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, filteredUnitOfMeasureConversions#70018.quantityDenominator AS _extract_quantityDenominator#79938, filteredUnitOfMeasureConversions#70018.quantityNumerator AS _extract_quantityNumerator#79939]
Input [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, filteredUnitOfMeasureConversions#70018]
(215) Generate [codegen id : 188]
Input [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, _extract_quantityDenominator#79938, _extract_quantityNumerator#79939]
Arguments: explode(_extract_quantityNumerator#79939), [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, _extract_quantityDenominator#79938], true, [quantityNumerator#70019]
(216) Generate [codegen id : 188]
Input [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, _extract_quantityDenominator#79938, quantityNumerator#70019]
Arguments: explode(_extract_quantityDenominator#79938), [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, quantityNumerator#70019], true, [quantityDenominator#70020]
(217) Project [codegen id : 188]
Output [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, (cast(quantityNumerator#70019 as double) / cast(quantityDenominator#70020 as double)) AS outboundUnit#70021]
Input [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, quantityNumerator#70019, quantityDenominator#70020]
(218) Project [codegen id : 188]
Output [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, CASE WHEN (isnull(outboundUnit#70021) OR (outboundUnit#70021 <= 0.0)) THEN 1.0 ELSE outboundUnit#70021 END AS outboundUnit#70022]
Input [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70021]
(219) ReusedExchange [Reuses operator id: 189]
Output [4]: [product#70177, plant#70176, minCalculationDateTime#70327, roundedQuantitySum#70328]
(220) BroadcastQueryStage
Output [4]: [product#70177, plant#70176, minCalculationDateTime#70327, roundedQuantitySum#70328]
Arguments: 358
(221) BroadcastHashJoin [codegen id : 188]
Left keys [2]: [plant#69979, product#69978]
Right keys [2]: [plant#70176, product#70177]
Join type: LeftOuter
Join condition: None
(222) Project [codegen id : 188]
Output [8]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, CASE WHEN isnotnull(minCalculationDateTime#70327) THEN minCalculationDateTime#70327 ELSE orderDateTime#69980 END AS stockDatetime#70329, CASE WHEN isnotnull(roundedQuantitySum#70328) THEN array(roundedQuantitySum#70328) ELSE [0.0] END AS stockBatchQuantities#70330]
Input [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, product#70177, plant#70176, minCalculationDateTime#70327, roundedQuantitySum#70328]
(223) Scan parquet
Output [9]: [product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000002106/0_1_10000002106]
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#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
(225) Filter [codegen id : 49]
Input [9]: [product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
Condition : (isnotnull(product#69873) AND isnotnull(plant#69874))
(226) BroadcastExchange
Input [9]: [product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=49016]
(227) BroadcastQueryStage
Output [9]: [product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
Arguments: 86
(228) BroadcastHashJoin [codegen id : 188]
Left keys [2]: [product#69978, plant#69979]
Right keys [2]: [product#69873, plant#69874]
Join type: LeftOuter
Join condition: None
(229) Project [codegen id : 188]
Output [9]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, CASE WHEN isnotnull(product#69873) THEN struct(demandChannel, demandChannel#69875, demandStream, demandStream#69876, considerVariance, considerVariance#69877, demandTimeBuckets, demandTimeBuckets#69878, demandPointInTimeStart, demandPointInTimeStart#69879, demandPointInTimeEnd, demandPointInTimeEnd#69880, demandPointInTime, demandPointInTime#69881) END AS rawDemands#69908]
Input [17]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
(230) ObjectHashAggregate
Input [9]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, rawDemands#69908]
Keys [9]: [product#69978, plant#69979, orderDateTime#69980, knownfloatingpointnormalized(if (isnull(productPlant#69990)) null else named_struct(systemId, productPlant#69990.systemId, internalUUID, productPlant#69990.internalUUID, plant, productPlant#69990.plant, product, productPlant#69990.product, blockedForReplenishmentStartingFrom, productPlant#69990.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#69990.productionAspect)) null else named_struct(productMovementPlants, productPlant#69990.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#69990.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#69990.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#69990.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#69990.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#69990.productionAspect.productPlanningPlants.minimumLotSize)), minimumSafetyStock, knownfloatingpointnormalized(normalizenanandzero(productPlant#69990.productionAspect.productPlanningPlants.minimumSafetyStock)), logisticalRoundingProfile, productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#69990.salesPlant, listing, productPlant#69990.listing)) AS productPlant#69990, timezonecode#70005, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#70022)) AS outboundUnit#70022, stockDatetime#70329, knownfloatingpointnormalized(transform(stockBatchQuantities#70330, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#87632)), lambda arg#87632, false))) AS stockBatchQuantities#70330, [7226582400000000] AS [7226582400000000]#87631]
Functions [1]: [partial_collect_list(rawDemands#69908, 0, 0)]
Aggregate Attributes [1]: [buf#73954]
Results [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000]#87631, buf#73955]
(231) ObjectHashAggregate
Input [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000]#87631, buf#73955]
Keys [9]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000]#87631]
Functions [1]: [collect_list(rawDemands#69908, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#69908, 0, 0)#69939]
Results [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#70331, collect_list(rawDemands#69908, 0, 0)#69939 AS rawDemands#69921]
(232) DeserializeToObject [codegen id : 189]
Input [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, stockBatchShelfLifeEndDatetimes#70331, rawDemands#69921]
Arguments: createexternalrow(invoke(product#69978.toString()), invoke(plant#69979.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#69980)), if (isnull(productPlant#69990)) null else createexternalrow(invoke(productPlant#69990.systemId.toString()), invoke(productPlant#69990.internalUUID.toString()), if (isnull(productPlant#69990.plant)) null else createexternalrow(invoke(productPlant#69990.plant.internalRefUUID.toString()), invoke(productPlant#69990.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#69990.product)) null else createexternalrow(invoke(productPlant#69990.product.internalRefUUID.toString()), invoke(productPlant#69990.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#69990.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#69990.productionAspect)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#69990.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#69990.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#69990.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#69990.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#69990.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#69990.salesPlant)) null else createexternalrow(if (isnull(productPlant#69990.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#69990.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#69990.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#69990.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#70005.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#70022)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#70329)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#70330, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#70331, 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#69921, 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#69963: org.apache.spark.sql.Row
(233) MapElements [codegen id : 189]
Input [1]: [obj#69963]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@783ec352, obj#69968: org.apache.spark.sql.Row
(234) SerializeFromObject [codegen id : 189]
Input [1]: [obj#69968]
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#69973, 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#69974, 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#69975, 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#69976]
(235) Exchange
Input [4]: [product#69973, plant#69974, dayBucketDemands#69975, pointInTimeDemands#69976]
Arguments: hashpartitioning(coalesce(plant#69974, ), isnull(plant#69974), coalesce(product#69973, ), isnull(product#69973), 25), ENSURE_REQUIREMENTS, [plan_id=186321]
(236) ShuffleQueryStage
Output [4]: [product#69973, plant#69974, dayBucketDemands#69975, pointInTimeDemands#69976]
Arguments: 363
(237) AQEShuffleRead
Input [4]: [product#69973, plant#69974, dayBucketDemands#69975, pointInTimeDemands#69976]
Arguments: local
(238) BroadcastExchange
Input [4]: [product#69973, plant#69974, dayBucketDemands#69975, pointInTimeDemands#69976]
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=189130]
(239) BroadcastQueryStage
Output [4]: [product#69973, plant#69974, dayBucketDemands#69975, pointInTimeDemands#69976]
Arguments: 368
(240) BroadcastHashJoin [codegen id : 198]
Left keys [4]: [coalesce(plant#69020, ), isnull(plant#69020), coalesce(product#69019, ), isnull(product#69019)]
Right keys [4]: [coalesce(plant#69974, ), isnull(plant#69974), coalesce(product#69973, ), isnull(product#69973)]
Join type: LeftOuter
Join condition: None
(241) Project [codegen id : 198]
Output [8]: [product#69019, plant#69020, _extract_minimumSafetyStock#80225, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, dayBucketDemands#69975, pointInTimeDemands#69976]
Input [10]: [product#69019, plant#69020, _extract_minimumSafetyStock#80225, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, product#69973, plant#69974, dayBucketDemands#69975, pointInTimeDemands#69976]
(242) InMemoryTableScan
Output [3]: [product#70773, plant#70770, openGoodsMovements#75050]
Arguments: [product#70773, plant#70770, openGoodsMovements#75050], [isnotnull(product#70773), isnotnull(plant#70770)]
(243) InMemoryRelation
Arguments: [product#70773, plant#70770, openGoodsMovements#75050], StorageLevel(disk, memory, 2 replicas)
(244) InMemoryTableScan
Output [10]: [id#70731, internalUUID#70730, plant#70770, product#70773, quantityDenominator#70782, quantityNumerator#70781, quantityUom#70779, quantityUomUuid#70780, scheduleLines#70783, validConfirmations#70963]
Arguments: [id#70731, internalUUID#70730, plant#70770, product#70773, quantityDenominator#70782, quantityNumerator#70781, quantityUom#70779, quantityUomUuid#70780, scheduleLines#70783, validConfirmations#70963]
(245) InMemoryRelation
Arguments: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784, stockDatetime#69868, timezonecode#69079, validConfirmations#70963], StorageLevel(disk, memory, deserialized, 1 replicas)
(246) Scan parquet
Output [3]: [product#69019, plant#69020, orderDateTime#69021]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(247) ColumnarToRow [codegen id : 1]
Input [3]: [product#69019, plant#69020, orderDateTime#69021]
(248) Filter [codegen id : 1]
Input [3]: [product#69019, plant#69020, orderDateTime#69021]
Condition : (isnotnull(plant#69020) AND isnotnull(product#69019))
(249) Exchange
Input [3]: [product#69019, plant#69020, orderDateTime#69021]
Arguments: hashpartitioning(product#69019, plant#69020, 25), REPARTITION_BY_NUM, [plan_id=51871]
(250) ShuffleQueryStage
Output [3]: [product#69019, plant#69020, orderDateTime#69021]
Arguments: 0
(251) Scan parquet
Output [4]: [plant#69029, product#69031, productionAspect#69036, systemId#69025]
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>>>>
(252) ColumnarToRow [codegen id : 2]
Input [4]: [plant#69029, product#69031, productionAspect#69036, systemId#69025]
(253) Project [codegen id : 2]
Output [4]: [plant#69029.internalRefUUID AS _extract_internalRefUUID#71360, product#69031.internalRefUUID AS _extract_internalRefUUID#71357, productionAspect#69036.productMovementPlants.unitOfIssue.code AS _extract_code#71361, productionAspect#69036.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71362]
Input [4]: [plant#69029, product#69031, productionAspect#69036, systemId#69025]
(254) Exchange
Input [4]: [_extract_internalRefUUID#71360, _extract_internalRefUUID#71357, _extract_code#71361, _extract_internalRefUUID#71362]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=51887]
(255) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#71360, _extract_internalRefUUID#71357, _extract_code#71361, _extract_internalRefUUID#71362]
Arguments: 1
(256) Project [codegen id : 61]
Output [4]: [_extract_code#71361, _extract_internalRefUUID#71362, _extract_internalRefUUID#71357, _extract_internalRefUUID#71360]
Input [4]: [_extract_internalRefUUID#71360, _extract_internalRefUUID#71357, _extract_code#71361, _extract_internalRefUUID#71362]
(257) BroadcastExchange
Input [4]: [_extract_code#71361, _extract_internalRefUUID#71362, _extract_internalRefUUID#71357, _extract_internalRefUUID#71360]
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=75325]
(258) BroadcastQueryStage
Output [4]: [_extract_code#71361, _extract_internalRefUUID#71362, _extract_internalRefUUID#71357, _extract_internalRefUUID#71360]
Arguments: 122
(259) BroadcastHashJoin [codegen id : 103]
Left keys [4]: [coalesce(product#69019, ), isnull(product#69019), coalesce(plant#69020, ), isnull(plant#69020)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71357, ), isnull(_extract_internalRefUUID#71357), coalesce(_extract_internalRefUUID#71360, ), isnull(_extract_internalRefUUID#71360)]
Join type: LeftOuter
Join condition: None
(260) Project [codegen id : 103]
Output [5]: [product#69019, plant#69020, orderDateTime#69021, _extract_code#71361, _extract_internalRefUUID#71362]
Input [7]: [product#69019, plant#69020, orderDateTime#69021, _extract_code#71361, _extract_internalRefUUID#71362, _extract_internalRefUUID#71357, _extract_internalRefUUID#71360]
(261) Scan parquet
Output [3]: [internalUUID#69062, address#69068, systemId#69061]
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>>>
(262) ColumnarToRow [codegen id : 3]
Input [3]: [internalUUID#69062, address#69068, systemId#69061]
(263) Project [codegen id : 3]
Output [2]: [internalUUID#69062, address#69068.timeZone.code AS timezonecode#69074]
Input [3]: [internalUUID#69062, address#69068, systemId#69061]
(264) Exchange
Input [2]: [internalUUID#69062, timezonecode#69074]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=51906]
(265) ShuffleQueryStage
Output [2]: [internalUUID#69062, timezonecode#69074]
Arguments: 2
(266) BroadcastExchange
Input [2]: [internalUUID#69062, timezonecode#69074]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=66364]
(267) BroadcastQueryStage
Output [2]: [internalUUID#69062, timezonecode#69074]
Arguments: 105
(268) BroadcastHashJoin [codegen id : 103]
Left keys [2]: [coalesce(plant#69020, ), isnull(plant#69020)]
Right keys [2]: [coalesce(internalUUID#69062, ), isnull(internalUUID#69062)]
Join type: LeftOuter
Join condition: None
(269) Project [codegen id : 103]
Output [6]: [product#69019, plant#69020, orderDateTime#69021, _extract_code#71361, _extract_internalRefUUID#71362, CASE WHEN isnotnull(timezonecode#69074) THEN timezonecode#69074 ELSE UTC END AS timezonecode#69079]
Input [7]: [product#69019, plant#69020, orderDateTime#69021, _extract_code#71361, _extract_internalRefUUID#71362, internalUUID#69062, timezonecode#69074]
(270) Scan parquet
Output [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
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>>>
(271) ColumnarToRow [codegen id : 4]
Input [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
(272) Filter [codegen id : 4]
Input [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
Condition : isnotnull(internalUUID#69094)
(273) Project [codegen id : 4]
Output [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Input [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
(274) Exchange
Input [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=51926]
(275) ShuffleQueryStage
Output [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: 3
(276) BroadcastExchange
Input [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=69575]
(277) BroadcastQueryStage
Output [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: 107
(278) BroadcastHashJoin [codegen id : 103]
Left keys [1]: [product#69019]
Right keys [1]: [internalUUID#69094]
Join type: LeftOuter
Join condition: None
(279) Project
Output [5]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, filter(unitOfMeasureConversions#69100, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71361) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71362)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69098.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69098.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69107]
Input [9]: [product#69019, plant#69020, orderDateTime#69021, _extract_code#71361, _extract_internalRefUUID#71362, timezonecode#69079, internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
(280) Generate [codegen id : 104]
Input [5]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, filteredUnitOfMeasureConversions#69107]
Arguments: explode(filteredUnitOfMeasureConversions#69107.quantityNumerator), [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, filteredUnitOfMeasureConversions#69107], true, [quantityNumerator#69124]
(281) Project [codegen id : 104]
Output [5]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, filteredUnitOfMeasureConversions#69107.quantityDenominator AS _extract_quantityDenominator#70968]
Input [6]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, filteredUnitOfMeasureConversions#69107, quantityNumerator#69124]
(282) Generate [codegen id : 104]
Input [5]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, _extract_quantityDenominator#70968]
Arguments: explode(_extract_quantityDenominator#70968), [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079], true, [quantityDenominator#69129]
(283) Project [codegen id : 104]
Output [4]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079]
Input [5]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, quantityDenominator#69129]
(284) Scan parquet
Output [6]: [internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, systemId#69257]
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>>>>>
(285) ColumnarToRow [codegen id : 5]
Input [6]: [internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, systemId#69257]
(286) Filter [codegen id : 5]
Input [6]: [internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, systemId#69257]
Condition : (isnotnull(plant#69260.internalRefUUID) AND isnotnull(product#69259.internalRefUUID))
(287) Project [codegen id : 5]
Output [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
Input [6]: [internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, systemId#69257]
(288) Exchange
Input [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=51953]
(289) ShuffleQueryStage
Output [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
Arguments: 4
(290) BroadcastExchange
Input [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
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=72940]
(291) BroadcastQueryStage
Output [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
Arguments: 118
(292) Scan parquet
Output [2]: [marketUnit#69135, distributionCenters#69141]
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>>>>>
(293) ColumnarToRow [codegen id : 6]
Input [2]: [marketUnit#69135, distributionCenters#69141]
(294) Filter [codegen id : 6]
Input [2]: [marketUnit#69135, distributionCenters#69141]
Condition : (((marketUnit#69135 <=> Daily_grocery) AND (size(distributionCenters#69141, true) > 0)) AND isnotnull(distributionCenters#69141))
(295) Project [codegen id : 6]
Output [1]: [distributionCenters#69141]
Input [2]: [marketUnit#69135, distributionCenters#69141]
(296) Exchange
Input [1]: [distributionCenters#69141]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=51973]
(297) ShuffleQueryStage
Output [1]: [distributionCenters#69141]
Arguments: 5
(298) Generate [codegen id : 56]
Input [1]: [distributionCenters#69141]
Arguments: explode(distributionCenters#69141), false, [distributionCenters#69183]
(299) Filter [codegen id : 56]
Input [1]: [distributionCenters#69183]
Condition : (((size(distributionCenters#69183.storageLocations, true) > 0) AND isnotnull(distributionCenters#69183.storageLocations)) AND isnotnull(distributionCenters#69183.internalRefUUID))
(300) Project [codegen id : 56]
Output [2]: [distributionCenters#69183.internalRefUUID AS _extract_internalRefUUID#70977, distributionCenters#69183.storageLocations AS _extract_storageLocations#70978]
Input [1]: [distributionCenters#69183]
(301) Generate [codegen id : 56]
Input [2]: [_extract_internalRefUUID#70977, _extract_storageLocations#70978]
Arguments: explode(_extract_storageLocations#70978), [_extract_internalRefUUID#70977], false, [storageLocations#69197]
(302) Project [codegen id : 56]
Output [3]: [_extract_internalRefUUID#70977 AS plantUuid#69186, storageLocations#69197.id AS storageLocId#69199, storageLocations#69197.internalRefUUID AS storageLocUuid#69200]
Input [2]: [_extract_internalRefUUID#70977, storageLocations#69197]
(303) BroadcastExchange
Input [3]: [plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=65359]
(304) BroadcastQueryStage
Output [3]: [plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
Arguments: 97
(305) Scan parquet
Output [2]: [product#69771, plant#69772]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(306) ColumnarToRow [codegen id : 7]
Input [2]: [product#69771, plant#69772]
(307) Filter [codegen id : 7]
Input [2]: [product#69771, plant#69772]
Condition : isnotnull(plant#69772)
(308) Exchange
Input [2]: [product#69771, plant#69772]
Arguments: hashpartitioning(product#69771, plant#69772, 25), REPARTITION_BY_NUM, [plan_id=51996]
(309) ShuffleQueryStage
Output [2]: [product#69771, plant#69772]
Arguments: 6
(310) ReusedExchange [Reuses operator id: 257]
Output [4]: [_extract_code#71369, _extract_internalRefUUID#71370, _extract_internalRefUUID#71367, _extract_internalRefUUID#71368]
(311) BroadcastQueryStage
Output [4]: [_extract_code#71369, _extract_internalRefUUID#71370, _extract_internalRefUUID#71367, _extract_internalRefUUID#71368]
Arguments: 124
(312) BroadcastHashJoin [codegen id : 73]
Left keys [4]: [coalesce(product#69771, ), isnull(product#69771), coalesce(plant#69772, ), isnull(plant#69772)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71367, ), isnull(_extract_internalRefUUID#71367), coalesce(_extract_internalRefUUID#71368, ), isnull(_extract_internalRefUUID#71368)]
Join type: LeftOuter
Join condition: None
(313) Project [codegen id : 73]
Output [4]: [product#69771, plant#69772, _extract_code#71369, _extract_internalRefUUID#71370]
Input [6]: [product#69771, plant#69772, _extract_code#71369, _extract_internalRefUUID#71370, _extract_internalRefUUID#71367, _extract_internalRefUUID#71368]
(314) Scan parquet
Output [2]: [internalUUID#69798, systemId#69797]
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>
(315) ColumnarToRow [codegen id : 9]
Input [2]: [internalUUID#69798, systemId#69797]
(316) Project [codegen id : 9]
Output [1]: [internalUUID#69798]
Input [2]: [internalUUID#69798, systemId#69797]
(317) Exchange
Input [1]: [internalUUID#69798]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=52033]
(318) ShuffleQueryStage
Output [1]: [internalUUID#69798]
Arguments: 9
(319) BroadcastExchange
Input [1]: [internalUUID#69798]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=85527]
(320) BroadcastQueryStage
Output [1]: [internalUUID#69798]
Arguments: 143
(321) BroadcastHashJoin [codegen id : 73]
Left keys [2]: [coalesce(plant#69772, ), isnull(plant#69772)]
Right keys [2]: [coalesce(internalUUID#69798, ), isnull(internalUUID#69798)]
Join type: LeftOuter
Join condition: None
(322) Project [codegen id : 73]
Output [4]: [product#69771, plant#69772, _extract_code#71369, _extract_internalRefUUID#71370]
Input [5]: [product#69771, plant#69772, _extract_code#71369, _extract_internalRefUUID#71370, internalUUID#69798]
(323) ReusedExchange [Reuses operator id: 276]
Output [3]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832]
(324) BroadcastQueryStage
Output [3]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832]
Arguments: 108
(325) BroadcastHashJoin [codegen id : 73]
Left keys [1]: [product#69771]
Right keys [1]: [internalUUID#69826]
Join type: LeftOuter
Join condition: None
(326) Project
Output [2]: [plant#69772, filter(unitOfMeasureConversions#69832, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71369) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71370)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69830.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69830.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69849]
Input [7]: [product#69771, plant#69772, _extract_code#71369, _extract_internalRefUUID#71370, internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832]
(327) Generate [codegen id : 74]
Input [2]: [plant#69772, filteredUnitOfMeasureConversions#69849]
Arguments: explode(filteredUnitOfMeasureConversions#69849.quantityNumerator), [plant#69772, filteredUnitOfMeasureConversions#69849], true, [quantityNumerator#69851]
(328) Project [codegen id : 74]
Output [2]: [plant#69772, filteredUnitOfMeasureConversions#69849.quantityDenominator AS _extract_quantityDenominator#70980]
Input [3]: [plant#69772, filteredUnitOfMeasureConversions#69849, quantityNumerator#69851]
(329) Generate [codegen id : 74]
Input [2]: [plant#69772, _extract_quantityDenominator#70980]
Arguments: explode(_extract_quantityDenominator#70980), [plant#69772], true, [quantityDenominator#69854]
(330) Project [codegen id : 74]
Output [1]: [plant#69772]
Input [2]: [plant#69772, quantityDenominator#69854]
(331) HashAggregate [codegen id : 74]
Input [1]: [plant#69772]
Keys [1]: [plant#69772]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69772]
(332) Exchange
Input [1]: [plant#69772]
Arguments: hashpartitioning(plant#69772, 25), ENSURE_REQUIREMENTS, [plan_id=110323]
(333) ShuffleQueryStage
Output [1]: [plant#69772]
Arguments: 152
(334) AQEShuffleRead
Input [1]: [plant#69772]
Arguments: coalesced
(335) HashAggregate
Input [1]: [plant#69772]
Keys [1]: [plant#69772]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69772]
(336) BroadcastHashJoin
Left keys [1]: [plantUuid#69186]
Right keys [1]: [plant#69772]
Join type: Inner
Join condition: None
(337) Project
Output [3]: [plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
Input [4]: [plantUuid#69186, storageLocId#69199, storageLocUuid#69200, plant#69772]
(338) BroadcastHashJoin [codegen id : 83]
Left keys [2]: [coalesce(plant#69260.internalRefUUID, ), isnull(plant#69260.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#69186, ), isnull(plantUuid#69186)]
Join type: Inner
Join condition: None
(339) Generate
Input [9]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
Arguments: explode(filter(stockQuantities#69262, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#69200) AND (lambda x#69269.storageLocation.Id = storageLocId#69199)), lambda x#69269, false))), [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, plantUuid#69186], false, [stockQuantity#69272]
(340) ObjectHashAggregate
Input [7]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, plantUuid#69186, stockQuantity#69272]
Keys [5]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257]
Functions [2]: [partial_first(calculationDateTime#69261, false), partial_collect_list(stockQuantity#69272, 0, 0)]
Aggregate Attributes [3]: [first#73924, valueSet#73925, buf#73926]
Results [8]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257, first#73927, valueSet#73928, buf#73929]
(341) ObjectHashAggregate
Input [8]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257, first#73927, valueSet#73928, buf#73929]
Keys [5]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257]
Functions [2]: [first(calculationDateTime#69261, false), collect_list(stockQuantity#69272, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#69261)()#69286, collect_list(stockQuantity#69272, 0, 0)#69287]
Results [4]: [product#69259, plant#69260, first(calculationDateTime#69261)()#69286 AS calculationDateTime#69273, collect_list(stockQuantity#69272, 0, 0)#69287 AS stockQuantities#69274]
(342) Filter [codegen id : 84]
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantities#69274]
Condition : ((size(stockQuantities#69274, true) > 0) AND isnotnull(calculationDateTime#69273))
(343) Generate [codegen id : 84]
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantities#69274]
Arguments: explode(stockQuantities#69274), [product#69259, plant#69260, calculationDateTime#69273], false, [stockQuantity#69289]
(344) Filter [codegen id : 84]
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantity#69289]
Condition : (((isnotnull(stockQuantity#69289.specialStockIndicator.code) AND isnotnull(stockQuantity#69289.stockType.code)) AND (stockQuantity#69289.specialStockIndicator.code = )) AND (stockQuantity#69289.stockType.code = 01))
(345) Project [codegen id : 84]
Output [4]: [plant#69260.internalRefUUID AS plantUuid#69291, product#69259.internalRefUUID AS productUuid#69293, calculationDateTime#69273, stockQuantity#69289.storagelocation.id AS storageLocId#69294]
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantity#69289]
(346) Exchange
Input [4]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294]
Arguments: hashpartitioning(productUuid#69293, plantUuid#69291, 25), ENSURE_REQUIREMENTS, [plan_id=115571]
(347) ShuffleQueryStage
Output [4]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294]
Arguments: 161
(348) AQEShuffleRead
Input [4]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294]
Arguments: local
(349) BroadcastExchange
Input [4]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=117880]
(350) BroadcastQueryStage
Output [4]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294]
Arguments: 167
(351) Scan parquet
Output [3]: [product#69323, plant#69324, orderDateTime#69325]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(352) ColumnarToRow [codegen id : 11]
Input [3]: [product#69323, plant#69324, orderDateTime#69325]
(353) Filter [codegen id : 11]
Input [3]: [product#69323, plant#69324, orderDateTime#69325]
Condition : ((isnotnull(orderDateTime#69325) AND isnotnull(plant#69324)) AND isnotnull(product#69323))
(354) Exchange
Input [3]: [product#69323, plant#69324, orderDateTime#69325]
Arguments: hashpartitioning(product#69323, plant#69324, 25), REPARTITION_BY_NUM, [plan_id=52094]
(355) ShuffleQueryStage
Output [3]: [product#69323, plant#69324, orderDateTime#69325]
Arguments: 12
(356) ReusedExchange [Reuses operator id: 257]
Output [4]: [_extract_code#71375, _extract_internalRefUUID#71376, _extract_internalRefUUID#71378, _extract_internalRefUUID#71377]
(357) BroadcastQueryStage
Output [4]: [_extract_code#71375, _extract_internalRefUUID#71376, _extract_internalRefUUID#71378, _extract_internalRefUUID#71377]
Arguments: 126
(358) BroadcastHashJoin [codegen id : 91]
Left keys [4]: [coalesce(product#69323, ), isnull(product#69323), coalesce(plant#69324, ), isnull(plant#69324)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71378, ), isnull(_extract_internalRefUUID#71378), coalesce(_extract_internalRefUUID#71377, ), isnull(_extract_internalRefUUID#71377)]
Join type: LeftOuter
Join condition: None
(359) Project [codegen id : 91]
Output [5]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#71375, _extract_internalRefUUID#71376]
Input [7]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#71375, _extract_internalRefUUID#71376, _extract_internalRefUUID#71378, _extract_internalRefUUID#71377]
(360) ReusedExchange [Reuses operator id: 319]
Output [1]: [internalUUID#69338]
(361) BroadcastQueryStage
Output [1]: [internalUUID#69338]
Arguments: 144
(362) BroadcastHashJoin [codegen id : 91]
Left keys [2]: [coalesce(plant#69324, ), isnull(plant#69324)]
Right keys [2]: [coalesce(internalUUID#69338, ), isnull(internalUUID#69338)]
Join type: LeftOuter
Join condition: None
(363) Project [codegen id : 91]
Output [5]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#71375, _extract_internalRefUUID#71376]
Input [6]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#71375, _extract_internalRefUUID#71376, internalUUID#69338]
(364) ReusedExchange [Reuses operator id: 276]
Output [3]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358]
(365) BroadcastQueryStage
Output [3]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358]
Arguments: 109
(366) BroadcastHashJoin [codegen id : 91]
Left keys [1]: [product#69323]
Right keys [1]: [internalUUID#69352]
Join type: LeftOuter
Join condition: None
(367) Project
Output [4]: [product#69323, plant#69324, orderDateTime#69325, filter(unitOfMeasureConversions#69358, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71375) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71376)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69356.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69356.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69363]
Input [8]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#71375, _extract_internalRefUUID#71376, internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358]
(368) Generate
Input [4]: [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363]
Arguments: explode(filteredUnitOfMeasureConversions#69363.quantityNumerator), [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363], true, [quantityNumerator#69364]
(369) Project
Output [4]: [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363.quantityDenominator AS _extract_quantityDenominator#70990]
Input [5]: [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363, quantityNumerator#69364]
(370) Generate
Input [4]: [product#69323, plant#69324, orderDateTime#69325, _extract_quantityDenominator#70990]
Arguments: explode(_extract_quantityDenominator#70990), [product#69323, plant#69324, orderDateTime#69325], true, [quantityDenominator#69365]
(371) Project
Output [3]: [product#69323, plant#69324, orderDateTime#69325]
Input [4]: [product#69323, plant#69324, orderDateTime#69325, quantityDenominator#69365]
(372) BroadcastHashJoin [codegen id : 92]
Left keys [2]: [plantUuid#69291, productUuid#69293]
Right keys [2]: [plant#69324, product#69323]
Join type: Inner
Join condition: (calculationDateTime#69273 <= orderDateTime#69325)
(373) Project [codegen id : 92]
Output [4]: [plantUuid#69291 AS plant#69435, productUuid#69293 AS product#69436, storageLocId#69294, calculationDateTime#69273]
Input [7]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294, product#69323, plant#69324, orderDateTime#69325]
(374) Exchange
Input [4]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273]
Arguments: hashpartitioning(coalesce(plant#69435, ), isnull(plant#69435), coalesce(product#69436, ), isnull(product#69436), coalesce(storageLocId#69294, ), isnull(storageLocId#69294), coalesce(calculationDateTime#69273, 1970-01-01 00:00:00), isnull(calculationDateTime#69273), 25), ENSURE_REQUIREMENTS, [plan_id=119285]
(375) ShuffleQueryStage
Output [4]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273]
Arguments: 173
(376) AQEShuffleRead
Input [4]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273]
Arguments: local
(377) BroadcastExchange
Input [4]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273]
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=123597]
(378) BroadcastQueryStage
Output [4]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273]
Arguments: 179
(379) ReusedExchange [Reuses operator id: 349]
Output [4]: [plantUuid#69540, productUuid#69542, calculationDateTime#69536, storageLocId#69543]
(380) BroadcastQueryStage
Output [4]: [plantUuid#69540, productUuid#69542, calculationDateTime#69536, storageLocId#69543]
Arguments: 169
(381) ReusedExchange [Reuses operator id: 354]
Output [3]: [product#69548, plant#69549, orderDateTime#69550]
(382) ShuffleQueryStage
Output [3]: [product#69548, plant#69549, orderDateTime#69550]
Arguments: 32
(383) ReusedExchange [Reuses operator id: 257]
Output [4]: [_extract_code#71393, _extract_internalRefUUID#71394, _extract_internalRefUUID#71391, _extract_internalRefUUID#71392]
(384) BroadcastQueryStage
Output [4]: [_extract_code#71393, _extract_internalRefUUID#71394, _extract_internalRefUUID#71391, _extract_internalRefUUID#71392]
Arguments: 130
(385) BroadcastHashJoin [codegen id : 93]
Left keys [4]: [coalesce(product#69548, ), isnull(product#69548), coalesce(plant#69549, ), isnull(plant#69549)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71391, ), isnull(_extract_internalRefUUID#71391), coalesce(_extract_internalRefUUID#71392, ), isnull(_extract_internalRefUUID#71392)]
Join type: LeftOuter
Join condition: None
(386) Project [codegen id : 93]
Output [5]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#71393, _extract_internalRefUUID#71394]
Input [7]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#71393, _extract_internalRefUUID#71394, _extract_internalRefUUID#71391, _extract_internalRefUUID#71392]
(387) ReusedExchange [Reuses operator id: 319]
Output [1]: [internalUUID#69562]
(388) BroadcastQueryStage
Output [1]: [internalUUID#69562]
Arguments: 146
(389) BroadcastHashJoin [codegen id : 93]
Left keys [2]: [coalesce(plant#69549, ), isnull(plant#69549)]
Right keys [2]: [coalesce(internalUUID#69562, ), isnull(internalUUID#69562)]
Join type: LeftOuter
Join condition: None
(390) Project [codegen id : 93]
Output [5]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#71393, _extract_internalRefUUID#71394]
Input [6]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#71393, _extract_internalRefUUID#71394, internalUUID#69562]
(391) ReusedExchange [Reuses operator id: 276]
Output [3]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582]
(392) BroadcastQueryStage
Output [3]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582]
Arguments: 111
(393) BroadcastHashJoin [codegen id : 93]
Left keys [1]: [product#69548]
Right keys [1]: [internalUUID#69576]
Join type: LeftOuter
Join condition: None
(394) Project
Output [4]: [product#69548, plant#69549, orderDateTime#69550, filter(unitOfMeasureConversions#69582, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71393) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71394)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69580.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69580.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69587]
Input [8]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#71393, _extract_internalRefUUID#71394, internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582]
(395) Generate
Input [4]: [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587]
Arguments: explode(filteredUnitOfMeasureConversions#69587.quantityNumerator), [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587], true, [quantityNumerator#69588]
(396) Project
Output [4]: [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587.quantityDenominator AS _extract_quantityDenominator#71011]
Input [5]: [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587, quantityNumerator#69588]
(397) Generate
Input [4]: [product#69548, plant#69549, orderDateTime#69550, _extract_quantityDenominator#71011]
Arguments: explode(_extract_quantityDenominator#71011), [product#69548, plant#69549, orderDateTime#69550], true, [quantityDenominator#69589]
(398) Project
Output [3]: [product#69548, plant#69549, orderDateTime#69550]
Input [4]: [product#69548, plant#69549, orderDateTime#69550, quantityDenominator#69589]
(399) BroadcastHashJoin [codegen id : 94]
Left keys [2]: [plantUuid#69540, productUuid#69542]
Right keys [2]: [plant#69549, product#69548]
Join type: Inner
Join condition: (calculationDateTime#69536 <= orderDateTime#69550)
(400) Project [codegen id : 94]
Output [4]: [plantUuid#69540 AS plant#69620, productUuid#69542 AS product#69621, storageLocId#69543, calculationDateTime#69536]
Input [7]: [plantUuid#69540, productUuid#69542, calculationDateTime#69536, storageLocId#69543, product#69548, plant#69549, orderDateTime#69550]
(401) HashAggregate [codegen id : 94]
Input [4]: [plant#69620, product#69621, storageLocId#69543, calculationDateTime#69536]
Keys [3]: [plant#69620, product#69621, storageLocId#69543]
Functions [1]: [partial_max(calculationDateTime#69536)]
Aggregate Attributes [1]: [max#73930]
Results [4]: [plant#69620, product#69621, storageLocId#69543, max#73931]
(402) HashAggregate [codegen id : 94]
Input [4]: [plant#69620, product#69621, storageLocId#69543, max#73931]
Keys [3]: [plant#69620, product#69621, storageLocId#69543]
Functions [1]: [max(calculationDateTime#69536)]
Aggregate Attributes [1]: [max(calculationDateTime#69536)#69447]
Results [4]: [plant#69620, product#69621, storageLocId#69543, max(calculationDateTime#69536)#69447 AS max_calc_datetime#69441]
(403) Exchange
Input [4]: [plant#69620, product#69621, storageLocId#69543, max_calc_datetime#69441]
Arguments: hashpartitioning(coalesce(plant#69620, ), isnull(plant#69620), coalesce(product#69621, ), isnull(product#69621), coalesce(storageLocId#69543, ), isnull(storageLocId#69543), coalesce(max_calc_datetime#69441, 1970-01-01 00:00:00), isnull(max_calc_datetime#69441), 25), ENSURE_REQUIREMENTS, [plan_id=119344]
(404) ShuffleQueryStage
Output [4]: [plant#69620, product#69621, storageLocId#69543, max_calc_datetime#69441]
Arguments: 174
(405) AQEShuffleRead
Input [4]: [plant#69620, product#69621, storageLocId#69543, max_calc_datetime#69441]
Arguments: local
(406) BroadcastHashJoin [codegen id : 99]
Left keys [8]: [coalesce(plant#69435, ), isnull(plant#69435), coalesce(product#69436, ), isnull(product#69436), coalesce(storageLocId#69294, ), isnull(storageLocId#69294), coalesce(calculationDateTime#69273, 1970-01-01 00:00:00), isnull(calculationDateTime#69273)]
Right keys [8]: [coalesce(plant#69620, ), isnull(plant#69620), coalesce(product#69621, ), isnull(product#69621), coalesce(storageLocId#69543, ), isnull(storageLocId#69543), coalesce(max_calc_datetime#69441, 1970-01-01 00:00:00), isnull(max_calc_datetime#69441)]
Join type: Inner
Join condition: None
(407) Project [codegen id : 99]
Output [3]: [plant#69435, product#69436, calculationDateTime#69273]
Input [8]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273, plant#69620, product#69621, storageLocId#69543, max_calc_datetime#69441]
(408) HashAggregate [codegen id : 99]
Input [3]: [plant#69435, product#69436, calculationDateTime#69273]
Keys [2]: [product#69436, plant#69435]
Functions [1]: [partial_min(calculationDateTime#69273)]
Aggregate Attributes [1]: [min#73914]
Results [3]: [product#69436, plant#69435, min#73915]
(409) Exchange
Input [3]: [product#69436, plant#69435, min#73915]
Arguments: hashpartitioning(product#69436, plant#69435, 25), ENSURE_REQUIREMENTS, [plan_id=124704]
(410) ShuffleQueryStage
Output [3]: [product#69436, plant#69435, min#73915]
Arguments: 180
(411) AQEShuffleRead
Input [3]: [product#69436, plant#69435, min#73915]
Arguments: coalesced
(412) HashAggregate [codegen id : 101]
Input [3]: [product#69436, plant#69435, min#73915]
Keys [2]: [product#69436, plant#69435]
Functions [1]: [min(calculationDateTime#69273)]
Aggregate Attributes [1]: [min(calculationDateTime#69273)#69766]
Results [3]: [product#69436, plant#69435, min(calculationDateTime#69273)#69766 AS minCalculationDateTime#69752]
(413) BroadcastExchange
Input [3]: [product#69436, plant#69435, minCalculationDateTime#69752]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=126902]
(414) BroadcastQueryStage
Output [3]: [product#69436, plant#69435, minCalculationDateTime#69752]
Arguments: 182
(415) BroadcastHashJoin [codegen id : 104]
Left keys [2]: [plant#69020, product#69019]
Right keys [2]: [plant#69435, product#69436]
Join type: LeftOuter
Join condition: None
(416) Project [codegen id : 104]
Output [4]: [product#69019, plant#69020, timezonecode#69079, CASE WHEN isnotnull(minCalculationDateTime#69752) THEN minCalculationDateTime#69752 ELSE orderDateTime#69021 END AS stockDatetime#69868]
Input [7]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, product#69436, plant#69435, minCalculationDateTime#69752]
(417) Exchange
Input [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: hashpartitioning(coalesce(plant#69020, ), isnull(plant#69020), coalesce(product#69019, ), isnull(product#69019), 25), ENSURE_REQUIREMENTS, [plan_id=128012]
(418) ShuffleQueryStage
Output [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: 184
(419) AQEShuffleRead
Input [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: local
(420) Scan parquet
Output [3]: [product#69978, plant#69979, orderDateTime#69980]
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/10000002106/shardId=0_1_10000002106]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(421) ColumnarToRow [codegen id : 25]
Input [3]: [product#69978, plant#69979, orderDateTime#69980]
(422) Exchange
Input [3]: [product#69978, plant#69979, orderDateTime#69980]
Arguments: hashpartitioning(product#69978, plant#69979, 25), REPARTITION_BY_NUM, [plan_id=52437]
(423) ShuffleQueryStage
Output [3]: [product#69978, plant#69979, orderDateTime#69980]
Arguments: 39
(424) Scan parquet
Output [8]: [internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989, systemId#69982]
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>>>
(425) ColumnarToRow [codegen id : 26]
Input [8]: [internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989, systemId#69982]
(426) Project [codegen id : 26]
Output [8]: [systemId#69982, internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989]
Input [8]: [internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989, systemId#69982]
(427) Exchange
Input [8]: [systemId#69982, internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=52451]
(428) ShuffleQueryStage
Output [8]: [systemId#69982, internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989]
Arguments: 40
(429) Project [codegen id : 71]
Output [1]: [struct(systemId, systemId#69982, internalUUID, internalUUID#69983, plant, plant#69984, product, product#69985, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69986, productionAspect, productionAspect#69987, salesPlant, salesPlant#69988, listing, listing#69989) AS productPlant#69990]
Input [8]: [systemId#69982, internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989]
(430) BroadcastExchange
Input [1]: [productPlant#69990]
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=78088]
(431) BroadcastQueryStage
Output [1]: [productPlant#69990]
Arguments: 141
(432) BroadcastHashJoin [codegen id : 105]
Left keys [4]: [coalesce(product#69978, ), isnull(product#69978), coalesce(plant#69979, ), isnull(plant#69979)]
Right keys [4]: [coalesce(productPlant#69990.product.internalRefUUID, ), isnull(productPlant#69990.product.internalRefUUID), coalesce(productPlant#69990.plant.internalRefUUID, ), isnull(productPlant#69990.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(433) ReusedExchange [Reuses operator id: 266]
Output [2]: [internalUUID#69992, timezonecode#70003]
(434) BroadcastQueryStage
Output [2]: [internalUUID#69992, timezonecode#70003]
Arguments: 106
(435) BroadcastHashJoin [codegen id : 105]
Left keys [2]: [coalesce(plant#69979, ), isnull(plant#69979)]
Right keys [2]: [coalesce(internalUUID#69992, ), isnull(internalUUID#69992)]
Join type: LeftOuter
Join condition: None
(436) Project [codegen id : 105]
Output [5]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, CASE WHEN isnotnull(timezonecode#70003) THEN timezonecode#70003 ELSE UTC END AS timezonecode#70005]
Input [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, internalUUID#69992, timezonecode#70003]
(437) ReusedExchange [Reuses operator id: 276]
Output [3]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013]
(438) BroadcastQueryStage
Output [3]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013]
Arguments: 112
(439) BroadcastHashJoin [codegen id : 105]
Left keys [1]: [product#69978]
Right keys [1]: [internalUUID#70007]
Join type: LeftOuter
Join condition: None
(440) Project
Output [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, filter(unitOfMeasureConversions#70013, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70011.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70011.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70018]
Input [8]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013]
(441) Project [codegen id : 106]
Output [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, filteredUnitOfMeasureConversions#70018.quantityDenominator AS _extract_quantityDenominator#71133, filteredUnitOfMeasureConversions#70018.quantityNumerator AS _extract_quantityNumerator#71134]
Input [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, filteredUnitOfMeasureConversions#70018]
(442) Generate [codegen id : 106]
Input [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, _extract_quantityDenominator#71133, _extract_quantityNumerator#71134]
Arguments: explode(_extract_quantityNumerator#71134), [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, _extract_quantityDenominator#71133], true, [quantityNumerator#70019]
(443) Generate [codegen id : 106]
Input [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, _extract_quantityDenominator#71133, quantityNumerator#70019]
Arguments: explode(_extract_quantityDenominator#71133), [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, quantityNumerator#70019], true, [quantityDenominator#70020]
(444) Project [codegen id : 106]
Output [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, (cast(quantityNumerator#70019 as double) / cast(quantityDenominator#70020 as double)) AS outboundUnit#70021]
Input [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, quantityNumerator#70019, quantityDenominator#70020]
(445) Project [codegen id : 106]
Output [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, CASE WHEN (isnull(outboundUnit#70021) OR (outboundUnit#70021 <= 0.0)) THEN 1.0 ELSE outboundUnit#70021 END AS outboundUnit#70022]
Input [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70021]
(446) ReusedExchange [Reuses operator id: 290]
Output [6]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028]
(447) BroadcastQueryStage
Output [6]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028]
Arguments: 120
(448) ReusedExchange [Reuses operator id: 303]
Output [3]: [plantUuid#70071, storageLocId#70072, storageLocUuid#70073]
(449) BroadcastQueryStage
Output [3]: [plantUuid#70071, storageLocId#70072, storageLocUuid#70073]
Arguments: 101
(450) ReusedExchange [Reuses operator id: 332]
Output [1]: [plant#70075]
(451) ShuffleQueryStage
Output [1]: [plant#70075]
Arguments: 156
(452) AQEShuffleRead
Input [1]: [plant#70075]
Arguments: coalesced
(453) HashAggregate
Input [1]: [plant#70075]
Keys [1]: [plant#70075]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70075]
(454) BroadcastHashJoin
Left keys [1]: [plantUuid#70071]
Right keys [1]: [plant#70075]
Join type: Inner
Join condition: None
(455) Project
Output [3]: [plantUuid#70071, storageLocId#70072, storageLocUuid#70073]
Input [4]: [plantUuid#70071, storageLocId#70072, storageLocUuid#70073, plant#70075]
(456) BroadcastHashJoin [codegen id : 87]
Left keys [2]: [coalesce(plant#70026.internalRefUUID, ), isnull(plant#70026.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#70071, ), isnull(plantUuid#70071)]
Join type: Inner
Join condition: None
(457) Generate
Input [9]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028, plantUuid#70071, storageLocId#70072, storageLocUuid#70073]
Arguments: explode(filter(stockQuantities#70028, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#70073) AND (lambda x#69269.storageLocation.Id = storageLocId#70072)), lambda x#69269, false))), [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, plantUuid#70071], false, [stockQuantity#70118]
(458) ObjectHashAggregate
Input [7]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, plantUuid#70071, stockQuantity#70118]
Keys [5]: [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023]
Functions [2]: [partial_first(calculationDateTime#70027, false), partial_collect_list(stockQuantity#70118, 0, 0)]
Aggregate Attributes [3]: [first#73962, valueSet#73963, buf#73964]
Results [8]: [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023, first#73965, valueSet#73966, buf#73967]
(459) ObjectHashAggregate
Input [8]: [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023, first#73965, valueSet#73966, buf#73967]
Keys [5]: [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023]
Functions [2]: [first(calculationDateTime#70027, false), collect_list(stockQuantity#70118, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#70027)()#69286, collect_list(stockQuantity#70118, 0, 0)#69287]
Results [4]: [product#70025, plant#70026, first(calculationDateTime#70027)()#69286 AS calculationDateTime#70119, collect_list(stockQuantity#70118, 0, 0)#69287 AS stockQuantities#70120]
(460) Filter [codegen id : 88]
Input [4]: [product#70025, plant#70026, calculationDateTime#70119, stockQuantities#70120]
Condition : ((size(stockQuantities#70120, true) > 0) AND isnotnull(calculationDateTime#70119))
(461) Generate [codegen id : 88]
Input [4]: [product#70025, plant#70026, calculationDateTime#70119, stockQuantities#70120]
Arguments: explode(stockQuantities#70120), [product#70025, plant#70026, calculationDateTime#70119], false, [stockQuantity#70121]
(462) Filter [codegen id : 88]
Input [4]: [product#70025, plant#70026, calculationDateTime#70119, stockQuantity#70121]
Condition : (((isnotnull(stockQuantity#70121.specialStockIndicator.code) AND isnotnull(stockQuantity#70121.stockType.code)) AND (stockQuantity#70121.specialStockIndicator.code = )) AND (stockQuantity#70121.stockType.code = 01))
(463) Project [codegen id : 88]
Output [5]: [plant#70026.internalRefUUID AS plantUuid#70123, product#70025.internalRefUUID AS productUuid#70125, calculationDateTime#70119, stockQuantity#70121.storagelocation.id AS storageLocId#70126, stockQuantity#70121.quantity.measure AS quantity#70128]
Input [4]: [product#70025, plant#70026, calculationDateTime#70119, stockQuantity#70121]
(464) Exchange
Input [5]: [plantUuid#70123, productUuid#70125, calculationDateTime#70119, storageLocId#70126, quantity#70128]
Arguments: hashpartitioning(productUuid#70125, plantUuid#70123, 25), ENSURE_REQUIREMENTS, [plan_id=115721]
(465) ShuffleQueryStage
Output [5]: [plantUuid#70123, productUuid#70125, calculationDateTime#70119, storageLocId#70126, quantity#70128]
Arguments: 164
(466) AQEShuffleRead
Input [5]: [plantUuid#70123, productUuid#70125, calculationDateTime#70119, storageLocId#70126, quantity#70128]
Arguments: local
(467) BroadcastExchange
Input [5]: [plantUuid#70123, productUuid#70125, calculationDateTime#70119, storageLocId#70126, quantity#70128]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=118595]
(468) BroadcastQueryStage
Output [5]: [plantUuid#70123, productUuid#70125, calculationDateTime#70119, storageLocId#70126, quantity#70128]
Arguments: 172
(469) ReusedExchange [Reuses operator id: 354]
Output [3]: [product#70131, plant#70132, orderDateTime#70133]
(470) ShuffleQueryStage
Output [3]: [product#70131, plant#70132, orderDateTime#70133]
Arguments: 58
(471) ReusedExchange [Reuses operator id: 257]
Output [4]: [_extract_code#71408, _extract_internalRefUUID#71409, _extract_internalRefUUID#71410, _extract_internalRefUUID#71407]
(472) BroadcastQueryStage
Output [4]: [_extract_code#71408, _extract_internalRefUUID#71409, _extract_internalRefUUID#71410, _extract_internalRefUUID#71407]
Arguments: 134
(473) BroadcastHashJoin [codegen id : 97]
Left keys [4]: [coalesce(product#70131, ), isnull(product#70131), coalesce(plant#70132, ), isnull(plant#70132)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71410, ), isnull(_extract_internalRefUUID#71410), coalesce(_extract_internalRefUUID#71407, ), isnull(_extract_internalRefUUID#71407)]
Join type: LeftOuter
Join condition: None
(474) Project [codegen id : 97]
Output [5]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#71408, _extract_internalRefUUID#71409]
Input [7]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#71408, _extract_internalRefUUID#71409, _extract_internalRefUUID#71410, _extract_internalRefUUID#71407]
(475) ReusedExchange [Reuses operator id: 319]
Output [1]: [internalUUID#70145]
(476) BroadcastQueryStage
Output [1]: [internalUUID#70145]
Arguments: 148
(477) BroadcastHashJoin [codegen id : 97]
Left keys [2]: [coalesce(plant#70132, ), isnull(plant#70132)]
Right keys [2]: [coalesce(internalUUID#70145, ), isnull(internalUUID#70145)]
Join type: LeftOuter
Join condition: None
(478) Project [codegen id : 97]
Output [5]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#71408, _extract_internalRefUUID#71409]
Input [6]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#71408, _extract_internalRefUUID#71409, internalUUID#70145]
(479) ReusedExchange [Reuses operator id: 276]
Output [3]: [internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165]
(480) BroadcastQueryStage
Output [3]: [internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165]
Arguments: 114
(481) BroadcastHashJoin [codegen id : 97]
Left keys [1]: [product#70131]
Right keys [1]: [internalUUID#70159]
Join type: LeftOuter
Join condition: None
(482) Project
Output [4]: [product#70131, plant#70132, orderDateTime#70133, filter(unitOfMeasureConversions#70165, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71408) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71409)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70163.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70163.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70171]
Input [8]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#71408, _extract_internalRefUUID#71409, internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165]
(483) Generate
Input [4]: [product#70131, plant#70132, orderDateTime#70133, filteredUnitOfMeasureConversions#70171]
Arguments: explode(filteredUnitOfMeasureConversions#70171.quantityNumerator), [product#70131, plant#70132, orderDateTime#70133, filteredUnitOfMeasureConversions#70171], true, [quantityNumerator#70172]
(484) Project
Output [4]: [product#70131, plant#70132, orderDateTime#70133, filteredUnitOfMeasureConversions#70171.quantityDenominator AS _extract_quantityDenominator#71031]
Input [5]: [product#70131, plant#70132, orderDateTime#70133, filteredUnitOfMeasureConversions#70171, quantityNumerator#70172]
(485) Generate
Input [4]: [product#70131, plant#70132, orderDateTime#70133, _extract_quantityDenominator#71031]
Arguments: explode(_extract_quantityDenominator#71031), [product#70131, plant#70132, orderDateTime#70133], true, [quantityDenominator#70173]
(486) Project
Output [3]: [product#70131, plant#70132, orderDateTime#70133]
Input [4]: [product#70131, plant#70132, orderDateTime#70133, quantityDenominator#70173]
(487) BroadcastHashJoin [codegen id : 98]
Left keys [2]: [plantUuid#70123, productUuid#70125]
Right keys [2]: [plant#70132, product#70131]
Join type: Inner
Join condition: (calculationDateTime#70119 <= orderDateTime#70133)
(488) Project [codegen id : 98]
Output [5]: [plantUuid#70123 AS plant#70176, productUuid#70125 AS product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
Input [8]: [plantUuid#70123, productUuid#70125, calculationDateTime#70119, storageLocId#70126, quantity#70128, product#70131, plant#70132, orderDateTime#70133]
(489) Exchange
Input [5]: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
Arguments: hashpartitioning(coalesce(plant#70176, ), isnull(plant#70176), coalesce(product#70177, ), isnull(product#70177), coalesce(storageLocId#70126, ), isnull(storageLocId#70126), coalesce(calculationDateTime#70119, 1970-01-01 00:00:00), isnull(calculationDateTime#70119), 25), ENSURE_REQUIREMENTS, [plan_id=119911]
(490) ShuffleQueryStage
Output [5]: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
Arguments: 177
(491) AQEShuffleRead
Input [5]: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
Arguments: local
(492) BroadcastExchange
Input [5]: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
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=123247]
(493) BroadcastQueryStage
Output [5]: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
Arguments: 178
(494) ReusedExchange [Reuses operator id: 403]
Output [4]: [plant#70323, product#70324, storageLocId#70264, max_calc_datetime#70325]
(495) ShuffleQueryStage
Output [4]: [plant#70323, product#70324, storageLocId#70264, max_calc_datetime#70325]
Arguments: 176
(496) AQEShuffleRead
Input [4]: [plant#70323, product#70324, storageLocId#70264, max_calc_datetime#70325]
Arguments: local
(497) BroadcastHashJoin [codegen id : 100]
Left keys [8]: [coalesce(plant#70176, ), isnull(plant#70176), coalesce(product#70177, ), isnull(product#70177), coalesce(storageLocId#70126, ), isnull(storageLocId#70126), coalesce(calculationDateTime#70119, 1970-01-01 00:00:00), isnull(calculationDateTime#70119)]
Right keys [8]: [coalesce(plant#70323, ), isnull(plant#70323), coalesce(product#70324, ), isnull(product#70324), coalesce(storageLocId#70264, ), isnull(storageLocId#70264), coalesce(max_calc_datetime#70325, 1970-01-01 00:00:00), isnull(max_calc_datetime#70325)]
Join type: Inner
Join condition: None
(498) Project [codegen id : 100]
Output [4]: [plant#70176, product#70177, calculationDateTime#70119, quantity#70128]
Input [9]: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128, plant#70323, product#70324, storageLocId#70264, max_calc_datetime#70325]
(499) HashAggregate [codegen id : 100]
Input [4]: [plant#70176, product#70177, calculationDateTime#70119, quantity#70128]
Keys [2]: [product#70177, plant#70176]
Functions [2]: [partial_min(calculationDateTime#70119), partial_sum(quantity#70128)]
Aggregate Attributes [2]: [min#73956, sum#73957]
Results [4]: [product#70177, plant#70176, min#73958, sum#73959]
(500) Exchange
Input [4]: [product#70177, plant#70176, min#73958, sum#73959]
Arguments: hashpartitioning(product#70177, plant#70176, 25), ENSURE_REQUIREMENTS, [plan_id=124782]
(501) ShuffleQueryStage
Output [4]: [product#70177, plant#70176, min#73958, sum#73959]
Arguments: 181
(502) AQEShuffleRead
Input [4]: [product#70177, plant#70176, min#73958, sum#73959]
Arguments: coalesced
(503) HashAggregate [codegen id : 102]
Input [4]: [product#70177, plant#70176, min#73958, sum#73959]
Keys [2]: [product#70177, plant#70176]
Functions [2]: [min(calculationDateTime#70119), sum(quantity#70128)]
Aggregate Attributes [2]: [min(calculationDateTime#70119)#69766, sum(quantity#70128)#69765]
Results [4]: [product#70177, plant#70176, min(calculationDateTime#70119)#69766 AS minCalculationDateTime#70327, round(sum(quantity#70128)#69765, 0) AS roundedQuantitySum#70328]
(504) BroadcastExchange
Input [4]: [product#70177, plant#70176, minCalculationDateTime#70327, roundedQuantitySum#70328]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=127175]
(505) BroadcastQueryStage
Output [4]: [product#70177, plant#70176, minCalculationDateTime#70327, roundedQuantitySum#70328]
Arguments: 183
(506) BroadcastHashJoin [codegen id : 106]
Left keys [2]: [plant#69979, product#69978]
Right keys [2]: [plant#70176, product#70177]
Join type: LeftOuter
Join condition: None
(507) Project [codegen id : 106]
Output [8]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, CASE WHEN isnotnull(minCalculationDateTime#70327) THEN minCalculationDateTime#70327 ELSE orderDateTime#69980 END AS stockDatetime#70329, CASE WHEN isnotnull(roundedQuantitySum#70328) THEN array(roundedQuantitySum#70328) ELSE [0.0] END AS stockBatchQuantities#70330]
Input [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, product#70177, plant#70176, minCalculationDateTime#70327, roundedQuantitySum#70328]
(508) Scan parquet
Output [9]: [product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000002106/0_1_10000002106]
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>>>
(509) ColumnarToRow [codegen id : 49]
Input [9]: [product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
(510) Filter [codegen id : 49]
Input [9]: [product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
Condition : (isnotnull(product#69873) AND isnotnull(plant#69874))
(511) BroadcastExchange
Input [9]: [product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=53015]
(512) BroadcastQueryStage
Output [9]: [product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
Arguments: 85
(513) BroadcastHashJoin [codegen id : 106]
Left keys [2]: [product#69978, plant#69979]
Right keys [2]: [product#69873, plant#69874]
Join type: LeftOuter
Join condition: None
(514) Project [codegen id : 106]
Output [9]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, CASE WHEN isnotnull(product#69873) THEN struct(demandChannel, demandChannel#69875, demandStream, demandStream#69876, considerVariance, considerVariance#69877, demandTimeBuckets, demandTimeBuckets#69878, demandPointInTimeStart, demandPointInTimeStart#69879, demandPointInTimeEnd, demandPointInTimeEnd#69880, demandPointInTime, demandPointInTime#69881) END AS rawDemands#69908]
Input [17]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
(515) ObjectHashAggregate
Input [9]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, rawDemands#69908]
Keys [9]: [product#69978, plant#69979, orderDateTime#69980, knownfloatingpointnormalized(if (isnull(productPlant#69990)) null else named_struct(systemId, productPlant#69990.systemId, internalUUID, productPlant#69990.internalUUID, plant, productPlant#69990.plant, product, productPlant#69990.product, blockedForReplenishmentStartingFrom, productPlant#69990.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#69990.productionAspect)) null else named_struct(productMovementPlants, productPlant#69990.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#69990.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#69990.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#69990.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#69990.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#69990.productionAspect.productPlanningPlants.minimumLotSize)), minimumSafetyStock, knownfloatingpointnormalized(normalizenanandzero(productPlant#69990.productionAspect.productPlanningPlants.minimumSafetyStock)), logisticalRoundingProfile, productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#69990.salesPlant, listing, productPlant#69990.listing)) AS productPlant#69990, timezonecode#70005, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#70022)) AS outboundUnit#70022, stockDatetime#70329, knownfloatingpointnormalized(transform(stockBatchQuantities#70330, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#85165)), lambda arg#85165, false))) AS stockBatchQuantities#70330, [7226582400000000] AS [7226582400000000]#85164]
Functions [1]: [partial_collect_list(rawDemands#69908, 0, 0)]
Aggregate Attributes [1]: [buf#73954]
Results [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000]#85164, buf#73955]
(516) ObjectHashAggregate
Input [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000]#85164, buf#73955]
Keys [9]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000]#85164]
Functions [1]: [collect_list(rawDemands#69908, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#69908, 0, 0)#69939]
Results [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#70331, collect_list(rawDemands#69908, 0, 0)#69939 AS rawDemands#69921]
(517) DeserializeToObject [codegen id : 107]
Input [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, stockBatchShelfLifeEndDatetimes#70331, rawDemands#69921]
Arguments: createexternalrow(invoke(product#69978.toString()), invoke(plant#69979.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#69980)), if (isnull(productPlant#69990)) null else createexternalrow(invoke(productPlant#69990.systemId.toString()), invoke(productPlant#69990.internalUUID.toString()), if (isnull(productPlant#69990.plant)) null else createexternalrow(invoke(productPlant#69990.plant.internalRefUUID.toString()), invoke(productPlant#69990.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#69990.product)) null else createexternalrow(invoke(productPlant#69990.product.internalRefUUID.toString()), invoke(productPlant#69990.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#69990.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#69990.productionAspect)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#69990.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#69990.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#69990.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#69990.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#69990.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#69990.salesPlant)) null else createexternalrow(if (isnull(productPlant#69990.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#69990.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#69990.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#69990.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#70005.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#70022)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#70329)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#70330, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#70331, 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#69921, 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#69963: org.apache.spark.sql.Row
(518) MapElements [codegen id : 107]
Input [1]: [obj#69963]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@783ec352, obj#69968: org.apache.spark.sql.Row
(519) SerializeFromObject [codegen id : 107]
Input [1]: [obj#69968]
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#69973, 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#69974]
(520) Exchange
Input [2]: [product#69973, plant#69974]
Arguments: hashpartitioning(coalesce(plant#69974, ), isnull(plant#69974), coalesce(product#69973, ), isnull(product#69973), 25), ENSURE_REQUIREMENTS, [plan_id=128251]
(521) ShuffleQueryStage
Output [2]: [product#69973, plant#69974]
Arguments: 185
(522) AQEShuffleRead
Input [2]: [product#69973, plant#69974]
Arguments: local
(523) BroadcastExchange
Input [2]: [product#69973, plant#69974]
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=128969]
(524) BroadcastQueryStage
Output [2]: [product#69973, plant#69974]
Arguments: 186
(525) BroadcastHashJoin [codegen id : 108]
Left keys [4]: [coalesce(plant#69020, ), isnull(plant#69020), coalesce(product#69019, ), isnull(product#69019)]
Right keys [4]: [coalesce(plant#69974, ), isnull(plant#69974), coalesce(product#69973, ), isnull(product#69973)]
Join type: LeftOuter
Join condition: None
(526) Project [codegen id : 108]
Output [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Input [6]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868, product#69973, plant#69974]
(527) Exchange
Input [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: hashpartitioning(plant#69020, 25), ENSURE_REQUIREMENTS, [plan_id=129040]
(528) ShuffleQueryStage
Output [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: 187
(529) AQEShuffleRead
Input [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: local
(530) BroadcastExchange
Input [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true]),false), [plan_id=129090]
(531) BroadcastQueryStage
Output [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: 188
(532) ReusedExchange [Reuses operator id: 296]
Output [1]: [distributionCenters#70815]
(533) ShuffleQueryStage
Output [1]: [distributionCenters#70815]
Arguments: 87
(534) Generate [codegen id : 60]
Input [1]: [distributionCenters#70815]
Arguments: explode(distributionCenters#70815), false, [distributionCenters#70854]
(535) Filter [codegen id : 60]
Input [1]: [distributionCenters#70854]
Condition : (((size(distributionCenters#70854.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#70854.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#70854.internalRefUUID))
(536) Project [codegen id : 60]
Output [2]: [distributionCenters#70854.internalRefUUID AS _extract_internalRefUUID#71061, distributionCenters#70854.storageLocations.internalRefUUID AS _extract_internalRefUUID#71429]
Input [1]: [distributionCenters#70854]
(537) Generate [codegen id : 60]
Input [2]: [_extract_internalRefUUID#71061, _extract_internalRefUUID#71429]
Arguments: explode(_extract_internalRefUUID#71429), [_extract_internalRefUUID#71061], false, [storageLocations#70855]
(538) Filter [codegen id : 60]
Input [2]: [_extract_internalRefUUID#71061, storageLocations#70855]
Condition : isnotnull(storageLocations#70855)
(539) Project [codegen id : 60]
Output [2]: [_extract_internalRefUUID#71061 AS plantUuid#70858, storageLocations#70855 AS storageLocUuid#70862]
Input [2]: [_extract_internalRefUUID#71061, storageLocations#70855]
(540) BroadcastExchange
Input [2]: [plantUuid#70858, storageLocUuid#70862]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=65566]
(541) BroadcastQueryStage
Output [2]: [plantUuid#70858, storageLocUuid#70862]
Arguments: 104
(542) ReusedExchange [Reuses operator id: 332]
Output [1]: [plant#70866]
(543) ShuffleQueryStage
Output [1]: [plant#70866]
Arguments: 160
(544) HashAggregate
Input [1]: [plant#70866]
Keys [1]: [plant#70866]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70866]
(545) BroadcastHashJoin
Left keys [1]: [plantUuid#70858]
Right keys [1]: [plant#70866]
Join type: Inner
Join condition: None
(546) Project
Output [2]: [plantUuid#70858 AS plant#70807, storageLocUuid#70862]
Input [3]: [plantUuid#70858, storageLocUuid#70862, plant#70866]
(547) BroadcastHashJoin [codegen id : 109]
Left keys [1]: [plant#69020]
Right keys [1]: [plant#70807]
Join type: Inner
Join condition: None
(548) Project [codegen id : 109]
Output [5]: [plant#69020, product#69019, timezonecode#69079, stockDatetime#69868, storageLocUuid#70862]
Input [6]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868, plant#70807, storageLocUuid#70862]
(549) Scan parquet
Output [6]: [internalUUID#70730, id#70731, supplier#70733, isMarkedForDeletion#70736, items#70737, systemId#70729]
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>>>>>
(550) ColumnarToRow [codegen id : 55]
Input [6]: [internalUUID#70730, id#70731, supplier#70733, isMarkedForDeletion#70736, items#70737, systemId#70729]
(551) Filter [codegen id : 55]
Input [6]: [internalUUID#70730, id#70731, supplier#70733, isMarkedForDeletion#70736, items#70737, systemId#70729]
Condition : (((isnotnull(isMarkedForDeletion#70736) AND NOT isMarkedForDeletion#70736) AND (size(items#70737, true) > 0)) AND isnotnull(items#70737))
(552) Project [codegen id : 55]
Output [4]: [internalUUID#70730, id#70731, supplier#70733, items#70737]
Input [6]: [internalUUID#70730, id#70731, supplier#70733, isMarkedForDeletion#70736, items#70737, systemId#70729]
(553) Exchange
Input [4]: [internalUUID#70730, id#70731, supplier#70733, items#70737]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=53248]
(554) ShuffleQueryStage
Output [4]: [internalUUID#70730, id#70731, supplier#70733, items#70737]
Arguments: 96
(555) Generate [codegen id : 72]
Input [4]: [internalUUID#70730, id#70731, supplier#70733, items#70737]
Arguments: explode(items#70737), [internalUUID#70730, id#70731, supplier#70733], false, [item#70753]
(556) Filter [codegen id : 72]
Input [4]: [internalUUID#70730, id#70731, supplier#70733, item#70753]
Condition : ((((isnotnull(item#70753.deletionIndicator) AND isnotnull(item#70753.completeIndicator)) AND isnotnull(item#70753.returnIndicator)) AND ((NOT item#70753.deletionIndicator AND NOT item#70753.completeIndicator) AND NOT item#70753.returnIndicator)) AND ((isnotnull(item#70753.product.internalRefUUID) AND isnotnull(item#70753.plant.internalRefUUID)) AND isnotnull(item#70753.storageLocation.internalRefUUID)))
(557) Project [codegen id : 72]
Output [14]: [id#70731, internalUUID#70730, supplier#70733.internalRefUUID AS supplierUuid#70747, item#70753.plant.internalRefUUID AS plant#70770, item#70753.product.internalRefUUID AS product#70773, item#70753.plant.id AS externalPlantId#70775, item#70753.product.id AS externalProductId#70777, item#70753.storageLocation.internalRefUUID AS storageLocUuid#70778, item#70753.quantityUnit.code AS quantityUom#70779, item#70753.quantityUnit.internalRefUUID AS quantityUomUuid#70780, item#70753.quantityNumerator AS quantityNumerator#70781, item#70753.quantityDenominator AS quantityDenominator#70782, item#70753.scheduleLines AS scheduleLines#70783, item#70753.confirmations AS confirmations#70784]
Input [4]: [internalUUID#70730, id#70731, supplier#70733, item#70753]
(558) BroadcastExchange
Input [14]: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784]
Arguments: HashedRelationBroadcastMode(List(input[4, string, true], input[3, string, true], input[7, string, true]),false), [plan_id=79540]
(559) BroadcastQueryStage
Output [14]: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784]
Arguments: 142
(560) BroadcastHashJoin [codegen id : 109]
Left keys [3]: [product#69019, plant#69020, storageLocUuid#70862]
Right keys [3]: [product#70773, plant#70770, storageLocUuid#70778]
Join type: Inner
Join condition: None
(561) Project
Output [17]: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784, stockDatetime#69868, timezonecode#69079, filter(confirmations#70784, lambdafunction(((NOT lambda x_2#70966.deletionIndicator AND lambda x_2#70966.isRelevantForConfirmation) AND isnotnull(lambda x_2#70966.confirmedDeliveryAt)), lambda x_2#70966, false)) AS validConfirmations#70963]
Input [19]: [plant#69020, product#69019, timezonecode#69079, stockDatetime#69868, storageLocUuid#70862, id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784]
(562) ResultQueryStage
Output [17]: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784, stockDatetime#69868, timezonecode#69079, validConfirmations#70963]
Arguments: 189
(563) Filter
Input [3]: [product#69019, plant#69020, orderDateTime#69021]
Condition : (isnotnull(plant#69020) AND isnotnull(product#69019))
(564) Exchange
Input [3]: [product#69019, plant#69020, orderDateTime#69021]
Arguments: hashpartitioning(product#69019, plant#69020, 25), REPARTITION_BY_NUM, [plan_id=31627]
(565) Project
Output [4]: [plant#69029.internalRefUUID AS _extract_internalRefUUID#71360, product#69031.internalRefUUID AS _extract_internalRefUUID#71357, productionAspect#69036.productMovementPlants.unitOfIssue.code AS _extract_code#71361, productionAspect#69036.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71362]
Input [4]: [plant#69029, product#69031, productionAspect#69036, systemId#69025]
(566) Exchange
Input [4]: [_extract_internalRefUUID#71360, _extract_internalRefUUID#71357, _extract_code#71361, _extract_internalRefUUID#71362]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30972]
(567) Project
Output [4]: [_extract_code#71361, _extract_internalRefUUID#71362, _extract_internalRefUUID#71357, _extract_internalRefUUID#71360]
Input [4]: [_extract_internalRefUUID#71360, _extract_internalRefUUID#71357, _extract_code#71361, _extract_internalRefUUID#71362]
(568) BroadcastExchange
Input [4]: [_extract_code#71361, _extract_internalRefUUID#71362, _extract_internalRefUUID#71357, _extract_internalRefUUID#71360]
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=32024]
(569) BroadcastHashJoin
Left keys [4]: [coalesce(product#69019, ), isnull(product#69019), coalesce(plant#69020, ), isnull(plant#69020)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71357, ), isnull(_extract_internalRefUUID#71357), coalesce(_extract_internalRefUUID#71360, ), isnull(_extract_internalRefUUID#71360)]
Join type: LeftOuter
Join condition: None
(570) Project
Output [5]: [product#69019, plant#69020, orderDateTime#69021, _extract_code#71361, _extract_internalRefUUID#71362]
Input [7]: [product#69019, plant#69020, orderDateTime#69021, _extract_code#71361, _extract_internalRefUUID#71362, _extract_internalRefUUID#71357, _extract_internalRefUUID#71360]
(571) Project
Output [2]: [internalUUID#69062, address#69068.timeZone.code AS timezonecode#69074]
Input [3]: [internalUUID#69062, address#69068, systemId#69061]
(572) Exchange
Input [2]: [internalUUID#69062, timezonecode#69074]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30978]
(573) BroadcastExchange
Input [2]: [internalUUID#69062, timezonecode#69074]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32033]
(574) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69020, ), isnull(plant#69020)]
Right keys [2]: [coalesce(internalUUID#69062, ), isnull(internalUUID#69062)]
Join type: LeftOuter
Join condition: None
(575) Project
Output [6]: [product#69019, plant#69020, orderDateTime#69021, _extract_code#71361, _extract_internalRefUUID#71362, CASE WHEN isnotnull(timezonecode#69074) THEN timezonecode#69074 ELSE UTC END AS timezonecode#69079]
Input [7]: [product#69019, plant#69020, orderDateTime#69021, _extract_code#71361, _extract_internalRefUUID#71362, internalUUID#69062, timezonecode#69074]
(576) Filter
Input [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
Condition : isnotnull(internalUUID#69094)
(577) Project
Output [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Input [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
(578) Exchange
Input [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30984]
(579) BroadcastExchange
Input [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32041]
(580) BroadcastHashJoin
Left keys [1]: [product#69019]
Right keys [1]: [internalUUID#69094]
Join type: LeftOuter
Join condition: None
(581) Project
Output [5]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, filter(unitOfMeasureConversions#69100, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71361) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71362)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69098.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69098.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69107]
Input [9]: [product#69019, plant#69020, orderDateTime#69021, _extract_code#71361, _extract_internalRefUUID#71362, timezonecode#69079, internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
(582) Generate
Input [5]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, filteredUnitOfMeasureConversions#69107]
Arguments: explode(filteredUnitOfMeasureConversions#69107.quantityNumerator), [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, filteredUnitOfMeasureConversions#69107], true, [quantityNumerator#69124]
(583) Project
Output [5]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, filteredUnitOfMeasureConversions#69107.quantityDenominator AS _extract_quantityDenominator#70968]
Input [6]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, filteredUnitOfMeasureConversions#69107, quantityNumerator#69124]
(584) Generate
Input [5]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, _extract_quantityDenominator#70968]
Arguments: explode(_extract_quantityDenominator#70968), [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079], true, [quantityDenominator#69129]
(585) Project
Output [4]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079]
Input [5]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, quantityDenominator#69129]
(586) Sort
Input [4]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079]
Arguments: [product#69019 ASC NULLS FIRST, plant#69020 ASC NULLS FIRST], false, 0
(587) Filter
Input [6]: [internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, systemId#69257]
Condition : (isnotnull(plant#69260.internalRefUUID) AND isnotnull(product#69259.internalRefUUID))
(588) Project
Output [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
Input [6]: [internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, systemId#69257]
(589) Exchange
Input [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31000]
(590) BroadcastExchange
Input [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
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=32103]
(591) Filter
Input [2]: [marketUnit#69135, distributionCenters#69141]
Condition : (((marketUnit#69135 <=> Daily_grocery) AND (size(distributionCenters#69141, true) > 0)) AND isnotnull(distributionCenters#69141))
(592) Project
Output [1]: [distributionCenters#69141]
Input [2]: [marketUnit#69135, distributionCenters#69141]
(593) Exchange
Input [1]: [distributionCenters#69141]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31011]
(594) Generate
Input [1]: [distributionCenters#69141]
Arguments: explode(distributionCenters#69141), false, [distributionCenters#69183]
(595) Filter
Input [1]: [distributionCenters#69183]
Condition : (((size(distributionCenters#69183.storageLocations, true) > 0) AND isnotnull(distributionCenters#69183.storageLocations)) AND isnotnull(distributionCenters#69183.internalRefUUID))
(596) Project
Output [2]: [distributionCenters#69183.internalRefUUID AS _extract_internalRefUUID#70977, distributionCenters#69183.storageLocations AS _extract_storageLocations#70978]
Input [1]: [distributionCenters#69183]
(597) Generate
Input [2]: [_extract_internalRefUUID#70977, _extract_storageLocations#70978]
Arguments: explode(_extract_storageLocations#70978), [_extract_internalRefUUID#70977], false, [storageLocations#69197]
(598) Project
Output [3]: [_extract_internalRefUUID#70977 AS plantUuid#69186, storageLocations#69197.id AS storageLocId#69199, storageLocations#69197.internalRefUUID AS storageLocUuid#69200]
Input [2]: [_extract_internalRefUUID#70977, storageLocations#69197]
(599) BroadcastExchange
Input [3]: [plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32097]
(600) Filter
Input [2]: [product#69771, plant#69772]
Condition : isnotnull(plant#69772)
(601) Exchange
Input [2]: [product#69771, plant#69772]
Arguments: hashpartitioning(product#69771, plant#69772, 25), REPARTITION_BY_NUM, [plan_id=31648]
(602) Scan parquet
Output [4]: [plant#69777, product#69778, productionAspect#69780, systemId#69775]
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>>>>
(603) Project
Output [4]: [plant#69777.internalRefUUID AS _extract_internalRefUUID#71368, product#69778.internalRefUUID AS _extract_internalRefUUID#71367, productionAspect#69780.productMovementPlants.unitOfIssue.code AS _extract_code#71369, productionAspect#69780.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71370]
Input [4]: [plant#69777, product#69778, productionAspect#69780, systemId#69775]
(604) Exchange
Input [4]: [_extract_internalRefUUID#71368, _extract_internalRefUUID#71367, _extract_code#71369, _extract_internalRefUUID#71370]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31038]
(605) Project
Output [4]: [_extract_code#71369, _extract_internalRefUUID#71370, _extract_internalRefUUID#71367, _extract_internalRefUUID#71368]
Input [4]: [_extract_internalRefUUID#71368, _extract_internalRefUUID#71367, _extract_code#71369, _extract_internalRefUUID#71370]
(606) BroadcastExchange
Input [4]: [_extract_code#71369, _extract_internalRefUUID#71370, _extract_internalRefUUID#71367, _extract_internalRefUUID#71368]
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=32061]
(607) BroadcastHashJoin
Left keys [4]: [coalesce(product#69771, ), isnull(product#69771), coalesce(plant#69772, ), isnull(plant#69772)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71367, ), isnull(_extract_internalRefUUID#71367), coalesce(_extract_internalRefUUID#71368, ), isnull(_extract_internalRefUUID#71368)]
Join type: LeftOuter
Join condition: None
(608) Project
Output [4]: [product#69771, plant#69772, _extract_code#71369, _extract_internalRefUUID#71370]
Input [6]: [product#69771, plant#69772, _extract_code#71369, _extract_internalRefUUID#71370, _extract_internalRefUUID#71367, _extract_internalRefUUID#71368]
(609) Project
Output [1]: [internalUUID#69798]
Input [2]: [internalUUID#69798, systemId#69797]
(610) Exchange
Input [1]: [internalUUID#69798]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31049]
(611) BroadcastExchange
Input [1]: [internalUUID#69798]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32070]
(612) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69772, ), isnull(plant#69772)]
Right keys [2]: [coalesce(internalUUID#69798, ), isnull(internalUUID#69798)]
Join type: LeftOuter
Join condition: None
(613) Project
Output [4]: [product#69771, plant#69772, _extract_code#71369, _extract_internalRefUUID#71370]
Input [5]: [product#69771, plant#69772, _extract_code#71369, _extract_internalRefUUID#71370, internalUUID#69798]
(614) Scan parquet
Output [4]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832, systemId#69825]
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>>>
(615) Filter
Input [4]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832, systemId#69825]
Condition : isnotnull(internalUUID#69826)
(616) Project
Output [3]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832]
Input [4]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832, systemId#69825]
(617) Exchange
Input [3]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31061]
(618) BroadcastExchange
Input [3]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32076]
(619) BroadcastHashJoin
Left keys [1]: [product#69771]
Right keys [1]: [internalUUID#69826]
Join type: LeftOuter
Join condition: None
(620) Project
Output [2]: [plant#69772, filter(unitOfMeasureConversions#69832, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71369) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71370)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69830.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69830.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69849]
Input [7]: [product#69771, plant#69772, _extract_code#71369, _extract_internalRefUUID#71370, internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832]
(621) Generate
Input [2]: [plant#69772, filteredUnitOfMeasureConversions#69849]
Arguments: explode(filteredUnitOfMeasureConversions#69849.quantityNumerator), [plant#69772, filteredUnitOfMeasureConversions#69849], true, [quantityNumerator#69851]
(622) Project
Output [2]: [plant#69772, filteredUnitOfMeasureConversions#69849.quantityDenominator AS _extract_quantityDenominator#70980]
Input [3]: [plant#69772, filteredUnitOfMeasureConversions#69849, quantityNumerator#69851]
(623) Generate
Input [2]: [plant#69772, _extract_quantityDenominator#70980]
Arguments: explode(_extract_quantityDenominator#70980), [plant#69772], true, [quantityDenominator#69854]
(624) Project
Output [1]: [plant#69772]
Input [2]: [plant#69772, quantityDenominator#69854]
(625) HashAggregate
Input [1]: [plant#69772]
Keys [1]: [plant#69772]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69772]
(626) Exchange
Input [1]: [plant#69772]
Arguments: hashpartitioning(plant#69772, 25), ENSURE_REQUIREMENTS, [plan_id=32092]
(627) HashAggregate
Input [1]: [plant#69772]
Keys [1]: [plant#69772]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69772]
(628) BroadcastHashJoin
Left keys [1]: [plantUuid#69186]
Right keys [1]: [plant#69772]
Join type: Inner
Join condition: None
(629) Project
Output [3]: [plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
Input [4]: [plantUuid#69186, storageLocId#69199, storageLocUuid#69200, plant#69772]
(630) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69260.internalRefUUID, ), isnull(plant#69260.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#69186, ), isnull(plantUuid#69186)]
Join type: Inner
Join condition: None
(631) Generate
Input [9]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
Arguments: explode(filter(stockQuantities#69262, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#69200) AND (lambda x#69269.storageLocation.Id = storageLocId#69199)), lambda x#69269, false))), [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, plantUuid#69186], false, [stockQuantity#69272]
(632) ObjectHashAggregate
Input [7]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, plantUuid#69186, stockQuantity#69272]
Keys [5]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257]
Functions [2]: [partial_first(calculationDateTime#69261, false), partial_collect_list(stockQuantity#69272, 0, 0)]
Aggregate Attributes [3]: [first#73924, valueSet#73925, buf#73926]
Results [8]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257, first#73927, valueSet#73928, buf#73929]
(633) ObjectHashAggregate
Input [8]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257, first#73927, valueSet#73928, buf#73929]
Keys [5]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257]
Functions [2]: [first(calculationDateTime#69261, false), collect_list(stockQuantity#69272, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#69261)()#69286, collect_list(stockQuantity#69272, 0, 0)#69287]
Results [4]: [product#69259, plant#69260, first(calculationDateTime#69261)()#69286 AS calculationDateTime#69273, collect_list(stockQuantity#69272, 0, 0)#69287 AS stockQuantities#69274]
(634) Filter
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantities#69274]
Condition : ((size(stockQuantities#69274, true) > 0) AND isnotnull(calculationDateTime#69273))
(635) Generate
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantities#69274]
Arguments: explode(stockQuantities#69274), [product#69259, plant#69260, calculationDateTime#69273], false, [stockQuantity#69289]
(636) Filter
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantity#69289]
Condition : (((isnotnull(stockQuantity#69289.specialStockIndicator.code) AND isnotnull(stockQuantity#69289.stockType.code)) AND (stockQuantity#69289.specialStockIndicator.code = )) AND (stockQuantity#69289.stockType.code = 01))
(637) Project
Output [4]: [plant#69260.internalRefUUID AS plantUuid#69291, product#69259.internalRefUUID AS productUuid#69293, calculationDateTime#69273, stockQuantity#69289.storagelocation.id AS storageLocId#69294]
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantity#69289]
(638) Exchange
Input [4]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294]
Arguments: hashpartitioning(productUuid#69293, plantUuid#69291, 25), ENSURE_REQUIREMENTS, [plan_id=32154]
(639) Sort
Input [4]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294]
Arguments: [productUuid#69293 ASC NULLS FIRST, plantUuid#69291 ASC NULLS FIRST], false, 0
(640) Filter
Input [3]: [product#69323, plant#69324, orderDateTime#69325]
Condition : ((isnotnull(orderDateTime#69325) AND isnotnull(plant#69324)) AND isnotnull(product#69323))
(641) Exchange
Input [3]: [product#69323, plant#69324, orderDateTime#69325]
Arguments: hashpartitioning(product#69323, plant#69324, 25), REPARTITION_BY_NUM, [plan_id=31695]
(642) Scan parquet
Output [4]: [plant#69329, product#69330, productionAspect#69332, systemId#69327]
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>>>>
(643) Project
Output [4]: [plant#69329.internalRefUUID AS _extract_internalRefUUID#71377, product#69330.internalRefUUID AS _extract_internalRefUUID#71378, productionAspect#69332.productMovementPlants.unitOfIssue.code AS _extract_code#71375, productionAspect#69332.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71376]
Input [4]: [plant#69329, product#69330, productionAspect#69332, systemId#69327]
(644) Exchange
Input [4]: [_extract_internalRefUUID#71377, _extract_internalRefUUID#71378, _extract_code#71375, _extract_internalRefUUID#71376]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31116]
(645) Project
Output [4]: [_extract_code#71375, _extract_internalRefUUID#71376, _extract_internalRefUUID#71378, _extract_internalRefUUID#71377]
Input [4]: [_extract_internalRefUUID#71377, _extract_internalRefUUID#71378, _extract_code#71375, _extract_internalRefUUID#71376]
(646) BroadcastExchange
Input [4]: [_extract_code#71375, _extract_internalRefUUID#71376, _extract_internalRefUUID#71378, _extract_internalRefUUID#71377]
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=32123]
(647) BroadcastHashJoin
Left keys [4]: [coalesce(product#69323, ), isnull(product#69323), coalesce(plant#69324, ), isnull(plant#69324)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71378, ), isnull(_extract_internalRefUUID#71378), coalesce(_extract_internalRefUUID#71377, ), isnull(_extract_internalRefUUID#71377)]
Join type: LeftOuter
Join condition: None
(648) Project
Output [5]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#71375, _extract_internalRefUUID#71376]
Input [7]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#71375, _extract_internalRefUUID#71376, _extract_internalRefUUID#71378, _extract_internalRefUUID#71377]
(649) Scan parquet
Output [2]: [internalUUID#69338, systemId#69337]
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>
(650) Project
Output [1]: [internalUUID#69338]
Input [2]: [internalUUID#69338, systemId#69337]
(651) Exchange
Input [1]: [internalUUID#69338]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31129]
(652) BroadcastExchange
Input [1]: [internalUUID#69338]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32127]
(653) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69324, ), isnull(plant#69324)]
Right keys [2]: [coalesce(internalUUID#69338, ), isnull(internalUUID#69338)]
Join type: LeftOuter
Join condition: None
(654) Project
Output [5]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#71375, _extract_internalRefUUID#71376]
Input [6]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#71375, _extract_internalRefUUID#71376, internalUUID#69338]
(655) Scan parquet
Output [4]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358, systemId#69351]
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>>>
(656) Filter
Input [4]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358, systemId#69351]
Condition : isnotnull(internalUUID#69352)
(657) Project
Output [3]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358]
Input [4]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358, systemId#69351]
(658) Exchange
Input [3]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31136]
(659) BroadcastExchange
Input [3]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32131]
(660) BroadcastHashJoin
Left keys [1]: [product#69323]
Right keys [1]: [internalUUID#69352]
Join type: LeftOuter
Join condition: None
(661) Project
Output [4]: [product#69323, plant#69324, orderDateTime#69325, filter(unitOfMeasureConversions#69358, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71375) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71376)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69356.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69356.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69363]
Input [8]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#71375, _extract_internalRefUUID#71376, internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358]
(662) Generate
Input [4]: [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363]
Arguments: explode(filteredUnitOfMeasureConversions#69363.quantityNumerator), [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363], true, [quantityNumerator#69364]
(663) Project
Output [4]: [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363.quantityDenominator AS _extract_quantityDenominator#70990]
Input [5]: [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363, quantityNumerator#69364]
(664) Generate
Input [4]: [product#69323, plant#69324, orderDateTime#69325, _extract_quantityDenominator#70990]
Arguments: explode(_extract_quantityDenominator#70990), [product#69323, plant#69324, orderDateTime#69325], true, [quantityDenominator#69365]
(665) Project
Output [3]: [product#69323, plant#69324, orderDateTime#69325]
Input [4]: [product#69323, plant#69324, orderDateTime#69325, quantityDenominator#69365]
(666) Sort
Input [3]: [product#69323, plant#69324, orderDateTime#69325]
Arguments: [product#69323 ASC NULLS FIRST, plant#69324 ASC NULLS FIRST], false, 0
(667) SortMergeJoin
Left keys [2]: [productUuid#69293, plantUuid#69291]
Right keys [2]: [product#69323, plant#69324]
Join type: Inner
Join condition: (calculationDateTime#69273 <= orderDateTime#69325)
(668) Project
Output [4]: [plantUuid#69291 AS plant#69435, productUuid#69293 AS product#69436, storageLocId#69294, calculationDateTime#69273]
Input [7]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294, product#69323, plant#69324, orderDateTime#69325]
(669) Exchange
Input [4]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273]
Arguments: hashpartitioning(coalesce(plant#69435, ), isnull(plant#69435), coalesce(product#69436, ), isnull(product#69436), coalesce(storageLocId#69294, ), isnull(storageLocId#69294), coalesce(calculationDateTime#69273, 1970-01-01 00:00:00), isnull(calculationDateTime#69273), 25), ENSURE_REQUIREMENTS, [plan_id=32283]
(670) Sort
Input [4]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273]
Arguments: [coalesce(plant#69435, ) ASC NULLS FIRST, isnull(plant#69435) ASC NULLS FIRST, coalesce(product#69436, ) ASC NULLS FIRST, isnull(product#69436) ASC NULLS FIRST, coalesce(storageLocId#69294, ) ASC NULLS FIRST, isnull(storageLocId#69294) ASC NULLS FIRST, coalesce(calculationDateTime#69273, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#69273) ASC NULLS FIRST], false, 0
(671) Scan parquet
Output [6]: [internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462, systemId#69457]
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>>>>>
(672) Filter
Input [6]: [internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462, systemId#69457]
Condition : (isnotnull(plant#69460.internalRefUUID) AND isnotnull(product#69459.internalRefUUID))
(673) Project
Output [6]: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462]
Input [6]: [internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462, systemId#69457]
(674) Exchange
Input [6]: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31161]
(675) BroadcastExchange
Input [6]: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462]
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=32212]
(676) Scan parquet
Output [2]: [marketUnit#69463, distributionCenters#69469]
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>>>>>
(677) Filter
Input [2]: [marketUnit#69463, distributionCenters#69469]
Condition : (((marketUnit#69463 <=> Daily_grocery) AND (size(distributionCenters#69469, true) > 0)) AND isnotnull(distributionCenters#69469))
(678) Project
Output [1]: [distributionCenters#69469]
Input [2]: [marketUnit#69463, distributionCenters#69469]
(679) Exchange
Input [1]: [distributionCenters#69469]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31167]
(680) Generate
Input [1]: [distributionCenters#69469]
Arguments: explode(distributionCenters#69469), false, [distributionCenters#69485]
(681) Filter
Input [1]: [distributionCenters#69485]
Condition : (((size(distributionCenters#69485.storageLocations, true) > 0) AND isnotnull(distributionCenters#69485.storageLocations)) AND isnotnull(distributionCenters#69485.internalRefUUID))
(682) Project
Output [2]: [distributionCenters#69485.internalRefUUID AS _extract_internalRefUUID#70997, distributionCenters#69485.storageLocations AS _extract_storageLocations#70998]
Input [1]: [distributionCenters#69485]
(683) Generate
Input [2]: [_extract_internalRefUUID#70997, _extract_storageLocations#70998]
Arguments: explode(_extract_storageLocations#70998), [_extract_internalRefUUID#70997], false, [storageLocations#69486]
(684) Project
Output [3]: [_extract_internalRefUUID#70997 AS plantUuid#69488, storageLocations#69486.id AS storageLocId#69489, storageLocations#69486.internalRefUUID AS storageLocUuid#69490]
Input [2]: [_extract_internalRefUUID#70997, storageLocations#69486]
(685) BroadcastExchange
Input [3]: [plantUuid#69488, storageLocId#69489, storageLocUuid#69490]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32204]
(686) Scan parquet
Output [2]: [product#69491, plant#69492]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(687) Filter
Input [2]: [product#69491, plant#69492]
Condition : isnotnull(plant#69492)
(688) Exchange
Input [2]: [product#69491, plant#69492]
Arguments: hashpartitioning(product#69491, plant#69492, 25), REPARTITION_BY_NUM, [plan_id=31720]
(689) Scan parquet
Output [4]: [plant#69497, product#69498, productionAspect#69500, systemId#69495]
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>>>>
(690) Project
Output [4]: [plant#69497.internalRefUUID AS _extract_internalRefUUID#71390, product#69498.internalRefUUID AS _extract_internalRefUUID#71389, productionAspect#69500.productMovementPlants.unitOfIssue.code AS _extract_code#71387, productionAspect#69500.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71388]
Input [4]: [plant#69497, product#69498, productionAspect#69500, systemId#69495]
(691) Exchange
Input [4]: [_extract_internalRefUUID#71390, _extract_internalRefUUID#71389, _extract_code#71387, _extract_internalRefUUID#71388]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31196]
(692) Project
Output [4]: [_extract_code#71387, _extract_internalRefUUID#71388, _extract_internalRefUUID#71389, _extract_internalRefUUID#71390]
Input [4]: [_extract_internalRefUUID#71390, _extract_internalRefUUID#71389, _extract_code#71387, _extract_internalRefUUID#71388]
(693) BroadcastExchange
Input [4]: [_extract_code#71387, _extract_internalRefUUID#71388, _extract_internalRefUUID#71389, _extract_internalRefUUID#71390]
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=32164]
(694) BroadcastHashJoin
Left keys [4]: [coalesce(product#69491, ), isnull(product#69491), coalesce(plant#69492, ), isnull(plant#69492)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71389, ), isnull(_extract_internalRefUUID#71389), coalesce(_extract_internalRefUUID#71390, ), isnull(_extract_internalRefUUID#71390)]
Join type: LeftOuter
Join condition: None
(695) Project
Output [4]: [product#69491, plant#69492, _extract_code#71387, _extract_internalRefUUID#71388]
Input [6]: [product#69491, plant#69492, _extract_code#71387, _extract_internalRefUUID#71388, _extract_internalRefUUID#71389, _extract_internalRefUUID#71390]
(696) Scan parquet
Output [2]: [internalUUID#69505, systemId#69504]
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>
(697) Project
Output [1]: [internalUUID#69505]
Input [2]: [internalUUID#69505, systemId#69504]
(698) Exchange
Input [1]: [internalUUID#69505]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31209]
(699) BroadcastExchange
Input [1]: [internalUUID#69505]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32172]
(700) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69492, ), isnull(plant#69492)]
Right keys [2]: [coalesce(internalUUID#69505, ), isnull(internalUUID#69505)]
Join type: LeftOuter
Join condition: None
(701) Project
Output [4]: [product#69491, plant#69492, _extract_code#71387, _extract_internalRefUUID#71388]
Input [5]: [product#69491, plant#69492, _extract_code#71387, _extract_internalRefUUID#71388, internalUUID#69505]
(702) Scan parquet
Output [4]: [internalUUID#69519, baseUnitOfMeasure#69523, unitOfMeasureConversions#69525, systemId#69518]
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>>>
(703) Filter
Input [4]: [internalUUID#69519, baseUnitOfMeasure#69523, unitOfMeasureConversions#69525, systemId#69518]
Condition : isnotnull(internalUUID#69519)
(704) Project
Output [3]: [internalUUID#69519, baseUnitOfMeasure#69523, unitOfMeasureConversions#69525]
Input [4]: [internalUUID#69519, baseUnitOfMeasure#69523, unitOfMeasureConversions#69525, systemId#69518]
(705) Exchange
Input [3]: [internalUUID#69519, baseUnitOfMeasure#69523, unitOfMeasureConversions#69525]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31218]
(706) BroadcastExchange
Input [3]: [internalUUID#69519, baseUnitOfMeasure#69523, unitOfMeasureConversions#69525]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32180]
(707) BroadcastHashJoin
Left keys [1]: [product#69491]
Right keys [1]: [internalUUID#69519]
Join type: LeftOuter
Join condition: None
(708) Project
Output [2]: [plant#69492, filter(unitOfMeasureConversions#69525, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71387) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71388)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69523.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69523.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69530]
Input [7]: [product#69491, plant#69492, _extract_code#71387, _extract_internalRefUUID#71388, internalUUID#69519, baseUnitOfMeasure#69523, unitOfMeasureConversions#69525]
(709) Generate
Input [2]: [plant#69492, filteredUnitOfMeasureConversions#69530]
Arguments: explode(filteredUnitOfMeasureConversions#69530.quantityNumerator), [plant#69492, filteredUnitOfMeasureConversions#69530], true, [quantityNumerator#69531]
(710) Project
Output [2]: [plant#69492, filteredUnitOfMeasureConversions#69530.quantityDenominator AS _extract_quantityDenominator#71002]
Input [3]: [plant#69492, filteredUnitOfMeasureConversions#69530, quantityNumerator#69531]
(711) Generate
Input [2]: [plant#69492, _extract_quantityDenominator#71002]
Arguments: explode(_extract_quantityDenominator#71002), [plant#69492], true, [quantityDenominator#69532]
(712) Project
Output [1]: [plant#69492]
Input [2]: [plant#69492, quantityDenominator#69532]
(713) HashAggregate
Input [1]: [plant#69492]
Keys [1]: [plant#69492]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69492]
(714) Exchange
Input [1]: [plant#69492]
Arguments: hashpartitioning(plant#69492, 25), ENSURE_REQUIREMENTS, [plan_id=32198]
(715) HashAggregate
Input [1]: [plant#69492]
Keys [1]: [plant#69492]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69492]
(716) BroadcastHashJoin
Left keys [1]: [plantUuid#69488]
Right keys [1]: [plant#69492]
Join type: Inner
Join condition: None
(717) Project
Output [3]: [plantUuid#69488, storageLocId#69489, storageLocUuid#69490]
Input [4]: [plantUuid#69488, storageLocId#69489, storageLocUuid#69490, plant#69492]
(718) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69460.internalRefUUID, ), isnull(plant#69460.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#69488, ), isnull(plantUuid#69488)]
Join type: Inner
Join condition: None
(719) Generate
Input [9]: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462, plantUuid#69488, storageLocId#69489, storageLocUuid#69490]
Arguments: explode(filter(stockQuantities#69462, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#69490) AND (lambda x#69269.storageLocation.Id = storageLocId#69489)), lambda x#69269, false))), [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, plantUuid#69488], false, [stockQuantity#69535]
(720) ObjectHashAggregate
Input [7]: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, plantUuid#69488, stockQuantity#69535]
Keys [5]: [plantUuid#69488, internalUUID#69458, plant#69460, product#69459, systemId#69457]
Functions [2]: [partial_first(calculationDateTime#69461, false), partial_collect_list(stockQuantity#69535, 0, 0)]
Aggregate Attributes [3]: [first#73934, valueSet#73935, buf#73936]
Results [8]: [plantUuid#69488, internalUUID#69458, plant#69460, product#69459, systemId#69457, first#73937, valueSet#73938, buf#73939]
(721) ObjectHashAggregate
Input [8]: [plantUuid#69488, internalUUID#69458, plant#69460, product#69459, systemId#69457, first#73937, valueSet#73938, buf#73939]
Keys [5]: [plantUuid#69488, internalUUID#69458, plant#69460, product#69459, systemId#69457]
Functions [2]: [first(calculationDateTime#69461, false), collect_list(stockQuantity#69535, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#69461)()#69286, collect_list(stockQuantity#69535, 0, 0)#69287]
Results [4]: [product#69459, plant#69460, first(calculationDateTime#69461)()#69286 AS calculationDateTime#69536, collect_list(stockQuantity#69535, 0, 0)#69287 AS stockQuantities#69537]
(722) Filter
Input [4]: [product#69459, plant#69460, calculationDateTime#69536, stockQuantities#69537]
Condition : ((size(stockQuantities#69537, true) > 0) AND isnotnull(calculationDateTime#69536))
(723) Generate
Input [4]: [product#69459, plant#69460, calculationDateTime#69536, stockQuantities#69537]
Arguments: explode(stockQuantities#69537), [product#69459, plant#69460, calculationDateTime#69536], false, [stockQuantity#69538]
(724) Filter
Input [4]: [product#69459, plant#69460, calculationDateTime#69536, stockQuantity#69538]
Condition : (((isnotnull(stockQuantity#69538.specialStockIndicator.code) AND isnotnull(stockQuantity#69538.stockType.code)) AND (stockQuantity#69538.specialStockIndicator.code = )) AND (stockQuantity#69538.stockType.code = 01))
(725) Project
Output [4]: [plant#69460.internalRefUUID AS plantUuid#69540, product#69459.internalRefUUID AS productUuid#69542, calculationDateTime#69536, stockQuantity#69538.storagelocation.id AS storageLocId#69543]
Input [4]: [product#69459, plant#69460, calculationDateTime#69536, stockQuantity#69538]
(726) Exchange
Input [4]: [plantUuid#69540, productUuid#69542, calculationDateTime#69536, storageLocId#69543]
Arguments: hashpartitioning(productUuid#69542, plantUuid#69540, 25), ENSURE_REQUIREMENTS, [plan_id=32264]
(727) Sort
Input [4]: [plantUuid#69540, productUuid#69542, calculationDateTime#69536, storageLocId#69543]
Arguments: [productUuid#69542 ASC NULLS FIRST, plantUuid#69540 ASC NULLS FIRST], false, 0
(728) Scan parquet
Output [3]: [product#69548, plant#69549, orderDateTime#69550]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(729) Filter
Input [3]: [product#69548, plant#69549, orderDateTime#69550]
Condition : ((isnotnull(orderDateTime#69550) AND isnotnull(plant#69549)) AND isnotnull(product#69548))
(730) Exchange
Input [3]: [product#69548, plant#69549, orderDateTime#69550]
Arguments: hashpartitioning(product#69548, plant#69549, 25), REPARTITION_BY_NUM, [plan_id=31767]
(731) Scan parquet
Output [4]: [plant#69554, product#69555, productionAspect#69557, systemId#69552]
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>>>>
(732) Project
Output [4]: [plant#69554.internalRefUUID AS _extract_internalRefUUID#71392, product#69555.internalRefUUID AS _extract_internalRefUUID#71391, productionAspect#69557.productMovementPlants.unitOfIssue.code AS _extract_code#71393, productionAspect#69557.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71394]
Input [4]: [plant#69554, product#69555, productionAspect#69557, systemId#69552]
(733) Exchange
Input [4]: [_extract_internalRefUUID#71392, _extract_internalRefUUID#71391, _extract_code#71393, _extract_internalRefUUID#71394]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31272]
(734) Project
Output [4]: [_extract_code#71393, _extract_internalRefUUID#71394, _extract_internalRefUUID#71391, _extract_internalRefUUID#71392]
Input [4]: [_extract_internalRefUUID#71392, _extract_internalRefUUID#71391, _extract_code#71393, _extract_internalRefUUID#71394]
(735) BroadcastExchange
Input [4]: [_extract_code#71393, _extract_internalRefUUID#71394, _extract_internalRefUUID#71391, _extract_internalRefUUID#71392]
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=32231]
(736) BroadcastHashJoin
Left keys [4]: [coalesce(product#69548, ), isnull(product#69548), coalesce(plant#69549, ), isnull(plant#69549)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71391, ), isnull(_extract_internalRefUUID#71391), coalesce(_extract_internalRefUUID#71392, ), isnull(_extract_internalRefUUID#71392)]
Join type: LeftOuter
Join condition: None
(737) Project
Output [5]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#71393, _extract_internalRefUUID#71394]
Input [7]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#71393, _extract_internalRefUUID#71394, _extract_internalRefUUID#71391, _extract_internalRefUUID#71392]
(738) Scan parquet
Output [2]: [internalUUID#69562, systemId#69561]
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>
(739) Project
Output [1]: [internalUUID#69562]
Input [2]: [internalUUID#69562, systemId#69561]
(740) Exchange
Input [1]: [internalUUID#69562]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31283]
(741) BroadcastExchange
Input [1]: [internalUUID#69562]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32239]
(742) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69549, ), isnull(plant#69549)]
Right keys [2]: [coalesce(internalUUID#69562, ), isnull(internalUUID#69562)]
Join type: LeftOuter
Join condition: None
(743) Project
Output [5]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#71393, _extract_internalRefUUID#71394]
Input [6]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#71393, _extract_internalRefUUID#71394, internalUUID#69562]
(744) Scan parquet
Output [4]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582, systemId#69575]
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>>>
(745) Filter
Input [4]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582, systemId#69575]
Condition : isnotnull(internalUUID#69576)
(746) Project
Output [3]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582]
Input [4]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582, systemId#69575]
(747) Exchange
Input [3]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31289]
(748) BroadcastExchange
Input [3]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32246]
(749) BroadcastHashJoin
Left keys [1]: [product#69548]
Right keys [1]: [internalUUID#69576]
Join type: LeftOuter
Join condition: None
(750) Project
Output [4]: [product#69548, plant#69549, orderDateTime#69550, filter(unitOfMeasureConversions#69582, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71393) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71394)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69580.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69580.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69587]
Input [8]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#71393, _extract_internalRefUUID#71394, internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582]
(751) Generate
Input [4]: [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587]
Arguments: explode(filteredUnitOfMeasureConversions#69587.quantityNumerator), [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587], true, [quantityNumerator#69588]
(752) Project
Output [4]: [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587.quantityDenominator AS _extract_quantityDenominator#71011]
Input [5]: [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587, quantityNumerator#69588]
(753) Generate
Input [4]: [product#69548, plant#69549, orderDateTime#69550, _extract_quantityDenominator#71011]
Arguments: explode(_extract_quantityDenominator#71011), [product#69548, plant#69549, orderDateTime#69550], true, [quantityDenominator#69589]
(754) Project
Output [3]: [product#69548, plant#69549, orderDateTime#69550]
Input [4]: [product#69548, plant#69549, orderDateTime#69550, quantityDenominator#69589]
(755) Sort
Input [3]: [product#69548, plant#69549, orderDateTime#69550]
Arguments: [product#69548 ASC NULLS FIRST, plant#69549 ASC NULLS FIRST], false, 0
(756) SortMergeJoin
Left keys [2]: [productUuid#69542, plantUuid#69540]
Right keys [2]: [product#69548, plant#69549]
Join type: Inner
Join condition: (calculationDateTime#69536 <= orderDateTime#69550)
(757) Project
Output [4]: [plantUuid#69540 AS plant#69620, productUuid#69542 AS product#69621, storageLocId#69543, calculationDateTime#69536]
Input [7]: [plantUuid#69540, productUuid#69542, calculationDateTime#69536, storageLocId#69543, product#69548, plant#69549, orderDateTime#69550]
(758) HashAggregate
Input [4]: [plant#69620, product#69621, storageLocId#69543, calculationDateTime#69536]
Keys [3]: [plant#69620, product#69621, storageLocId#69543]
Functions [1]: [partial_max(calculationDateTime#69536)]
Aggregate Attributes [1]: [max#73930]
Results [4]: [plant#69620, product#69621, storageLocId#69543, max#73931]
(759) HashAggregate
Input [4]: [plant#69620, product#69621, storageLocId#69543, max#73931]
Keys [3]: [plant#69620, product#69621, storageLocId#69543]
Functions [1]: [max(calculationDateTime#69536)]
Aggregate Attributes [1]: [max(calculationDateTime#69536)#69447]
Results [4]: [plant#69620, product#69621, storageLocId#69543, max(calculationDateTime#69536)#69447 AS max_calc_datetime#69441]
(760) Exchange
Input [4]: [plant#69620, product#69621, storageLocId#69543, max_calc_datetime#69441]
Arguments: hashpartitioning(coalesce(plant#69620, ), isnull(plant#69620), coalesce(product#69621, ), isnull(product#69621), coalesce(storageLocId#69543, ), isnull(storageLocId#69543), coalesce(max_calc_datetime#69441, 1970-01-01 00:00:00), isnull(max_calc_datetime#69441), 25), ENSURE_REQUIREMENTS, [plan_id=32285]
(761) Sort
Input [4]: [plant#69620, product#69621, storageLocId#69543, max_calc_datetime#69441]
Arguments: [coalesce(plant#69620, ) ASC NULLS FIRST, isnull(plant#69620) ASC NULLS FIRST, coalesce(product#69621, ) ASC NULLS FIRST, isnull(product#69621) ASC NULLS FIRST, coalesce(storageLocId#69543, ) ASC NULLS FIRST, isnull(storageLocId#69543) ASC NULLS FIRST, coalesce(max_calc_datetime#69441, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#69441) ASC NULLS FIRST], false, 0
(762) SortMergeJoin
Left keys [8]: [coalesce(plant#69435, ), isnull(plant#69435), coalesce(product#69436, ), isnull(product#69436), coalesce(storageLocId#69294, ), isnull(storageLocId#69294), coalesce(calculationDateTime#69273, 1970-01-01 00:00:00), isnull(calculationDateTime#69273)]
Right keys [8]: [coalesce(plant#69620, ), isnull(plant#69620), coalesce(product#69621, ), isnull(product#69621), coalesce(storageLocId#69543, ), isnull(storageLocId#69543), coalesce(max_calc_datetime#69441, 1970-01-01 00:00:00), isnull(max_calc_datetime#69441)]
Join type: Inner
Join condition: None
(763) Project
Output [3]: [plant#69435, product#69436, calculationDateTime#69273]
Input [8]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273, plant#69620, product#69621, storageLocId#69543, max_calc_datetime#69441]
(764) HashAggregate
Input [3]: [plant#69435, product#69436, calculationDateTime#69273]
Keys [2]: [product#69436, plant#69435]
Functions [1]: [partial_min(calculationDateTime#69273)]
Aggregate Attributes [1]: [min#73914]
Results [3]: [product#69436, plant#69435, min#73915]
(765) Exchange
Input [3]: [product#69436, plant#69435, min#73915]
Arguments: hashpartitioning(product#69436, plant#69435, 25), ENSURE_REQUIREMENTS, [plan_id=32300]
(766) HashAggregate
Input [3]: [product#69436, plant#69435, min#73915]
Keys [2]: [product#69436, plant#69435]
Functions [1]: [min(calculationDateTime#69273)]
Aggregate Attributes [1]: [min(calculationDateTime#69273)#69766]
Results [3]: [product#69436, plant#69435, min(calculationDateTime#69273)#69766 AS minCalculationDateTime#69752]
(767) Sort
Input [3]: [product#69436, plant#69435, minCalculationDateTime#69752]
Arguments: [product#69436 ASC NULLS FIRST, plant#69435 ASC NULLS FIRST], false, 0
(768) SortMergeJoin
Left keys [2]: [product#69019, plant#69020]
Right keys [2]: [product#69436, plant#69435]
Join type: LeftOuter
Join condition: None
(769) Project
Output [4]: [product#69019, plant#69020, timezonecode#69079, CASE WHEN isnotnull(minCalculationDateTime#69752) THEN minCalculationDateTime#69752 ELSE orderDateTime#69021 END AS stockDatetime#69868]
Input [7]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, product#69436, plant#69435, minCalculationDateTime#69752]
(770) Exchange
Input [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: hashpartitioning(coalesce(plant#69020, ), isnull(plant#69020), coalesce(product#69019, ), isnull(product#69019), 25), ENSURE_REQUIREMENTS, [plan_id=32632]
(771) Sort
Input [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: [coalesce(plant#69020, ) ASC NULLS FIRST, isnull(plant#69020) ASC NULLS FIRST, coalesce(product#69019, ) ASC NULLS FIRST, isnull(product#69019) ASC NULLS FIRST], false, 0
(772) Exchange
Input [3]: [product#69978, plant#69979, orderDateTime#69980]
Arguments: hashpartitioning(product#69978, plant#69979, 25), REPARTITION_BY_NUM, [plan_id=31319]
(773) Project
Output [8]: [systemId#69982, internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989]
Input [8]: [internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989, systemId#69982]
(774) Exchange
Input [8]: [systemId#69982, internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31325]
(775) Project
Output [1]: [struct(systemId, systemId#69982, internalUUID, internalUUID#69983, plant, plant#69984, product, product#69985, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69986, productionAspect, productionAspect#69987, salesPlant, salesPlant#69988, listing, listing#69989) AS productPlant#69990]
Input [8]: [systemId#69982, internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989]
(776) BroadcastExchange
Input [1]: [productPlant#69990]
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=32316]
(777) BroadcastHashJoin
Left keys [4]: [coalesce(product#69978, ), isnull(product#69978), coalesce(plant#69979, ), isnull(plant#69979)]
Right keys [4]: [coalesce(productPlant#69990.product.internalRefUUID, ), isnull(productPlant#69990.product.internalRefUUID), coalesce(productPlant#69990.plant.internalRefUUID, ), isnull(productPlant#69990.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(778) Scan parquet
Output [3]: [internalUUID#69992, address#69998, systemId#69991]
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>>>
(779) Project
Output [2]: [internalUUID#69992, address#69998.timeZone.code AS timezonecode#70003]
Input [3]: [internalUUID#69992, address#69998, systemId#69991]
(780) Exchange
Input [2]: [internalUUID#69992, timezonecode#70003]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31333]
(781) BroadcastExchange
Input [2]: [internalUUID#69992, timezonecode#70003]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32320]
(782) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69979, ), isnull(plant#69979)]
Right keys [2]: [coalesce(internalUUID#69992, ), isnull(internalUUID#69992)]
Join type: LeftOuter
Join condition: None
(783) Project
Output [5]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, CASE WHEN isnotnull(timezonecode#70003) THEN timezonecode#70003 ELSE UTC END AS timezonecode#70005]
Input [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, internalUUID#69992, timezonecode#70003]
(784) Scan parquet
Output [4]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013, systemId#70006]
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>>>
(785) Filter
Input [4]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013, systemId#70006]
Condition : isnotnull(internalUUID#70007)
(786) Project
Output [3]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013]
Input [4]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013, systemId#70006]
(787) Exchange
Input [3]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31342]
(788) BroadcastExchange
Input [3]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32324]
(789) BroadcastHashJoin
Left keys [1]: [product#69978]
Right keys [1]: [internalUUID#70007]
Join type: LeftOuter
Join condition: None
(790) Project
Output [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, filter(unitOfMeasureConversions#70013, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70011.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70011.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70018]
Input [8]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013]
(791) Project
Output [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, filteredUnitOfMeasureConversions#70018.quantityDenominator AS _extract_quantityDenominator#71133, filteredUnitOfMeasureConversions#70018.quantityNumerator AS _extract_quantityNumerator#71134]
Input [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, filteredUnitOfMeasureConversions#70018]
(792) Generate
Input [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, _extract_quantityDenominator#71133, _extract_quantityNumerator#71134]
Arguments: explode(_extract_quantityNumerator#71134), [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, _extract_quantityDenominator#71133], true, [quantityNumerator#70019]
(793) Generate
Input [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, _extract_quantityDenominator#71133, quantityNumerator#70019]
Arguments: explode(_extract_quantityDenominator#71133), [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, quantityNumerator#70019], true, [quantityDenominator#70020]
(794) Project
Output [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, (cast(quantityNumerator#70019 as double) / cast(quantityDenominator#70020 as double)) AS outboundUnit#70021]
Input [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, quantityNumerator#70019, quantityDenominator#70020]
(795) Project
Output [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, CASE WHEN (isnull(outboundUnit#70021) OR (outboundUnit#70021 <= 0.0)) THEN 1.0 ELSE outboundUnit#70021 END AS outboundUnit#70022]
Input [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70021]
(796) Sort
Input [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022]
Arguments: [product#69978 ASC NULLS FIRST, plant#69979 ASC NULLS FIRST], false, 0
(797) Scan parquet
Output [6]: [internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028, systemId#70023]
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>>>>>
(798) Filter
Input [6]: [internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028, systemId#70023]
Condition : (isnotnull(plant#70026.internalRefUUID) AND isnotnull(product#70025.internalRefUUID))
(799) Project
Output [6]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028]
Input [6]: [internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028, systemId#70023]
(800) Exchange
Input [6]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31367]
(801) BroadcastExchange
Input [6]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028]
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=32381]
(802) Scan parquet
Output [2]: [marketUnit#70029, distributionCenters#70035]
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>>>>>
(803) Filter
Input [2]: [marketUnit#70029, distributionCenters#70035]
Condition : (((marketUnit#70029 <=> Daily_grocery) AND (size(distributionCenters#70035, true) > 0)) AND isnotnull(distributionCenters#70035))
(804) Project
Output [1]: [distributionCenters#70035]
Input [2]: [marketUnit#70029, distributionCenters#70035]
(805) Exchange
Input [1]: [distributionCenters#70035]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31378]
(806) Generate
Input [1]: [distributionCenters#70035]
Arguments: explode(distributionCenters#70035), false, [distributionCenters#70051]
(807) Filter
Input [1]: [distributionCenters#70051]
Condition : (((size(distributionCenters#70051.storageLocations, true) > 0) AND isnotnull(distributionCenters#70051.storageLocations)) AND isnotnull(distributionCenters#70051.internalRefUUID))
(808) Project
Output [2]: [distributionCenters#70051.internalRefUUID AS _extract_internalRefUUID#71021, distributionCenters#70051.storageLocations AS _extract_storageLocations#71022]
Input [1]: [distributionCenters#70051]
(809) Generate
Input [2]: [_extract_internalRefUUID#71021, _extract_storageLocations#71022]
Arguments: explode(_extract_storageLocations#71022), [_extract_internalRefUUID#71021], false, [storageLocations#70069]
(810) Project
Output [3]: [_extract_internalRefUUID#71021 AS plantUuid#70071, storageLocations#70069.id AS storageLocId#70072, storageLocations#70069.internalRefUUID AS storageLocUuid#70073]
Input [2]: [_extract_internalRefUUID#71021, storageLocations#70069]
(811) BroadcastExchange
Input [3]: [plantUuid#70071, storageLocId#70072, storageLocUuid#70073]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32371]
(812) Scan parquet
Output [2]: [product#70074, plant#70075]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(813) Filter
Input [2]: [product#70074, plant#70075]
Condition : isnotnull(plant#70075)
(814) Exchange
Input [2]: [product#70074, plant#70075]
Arguments: hashpartitioning(product#70074, plant#70075, 25), REPARTITION_BY_NUM, [plan_id=31809]
(815) Scan parquet
Output [4]: [plant#70080, product#70081, productionAspect#70083, systemId#70078]
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>>>>
(816) Project
Output [4]: [plant#70080.internalRefUUID AS _extract_internalRefUUID#71405, product#70081.internalRefUUID AS _extract_internalRefUUID#71406, productionAspect#70083.productMovementPlants.unitOfIssue.code AS _extract_code#71403, productionAspect#70083.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71404]
Input [4]: [plant#70080, product#70081, productionAspect#70083, systemId#70078]
(817) Exchange
Input [4]: [_extract_internalRefUUID#71405, _extract_internalRefUUID#71406, _extract_code#71403, _extract_internalRefUUID#71404]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31407]
(818) Project
Output [4]: [_extract_code#71403, _extract_internalRefUUID#71404, _extract_internalRefUUID#71406, _extract_internalRefUUID#71405]
Input [4]: [_extract_internalRefUUID#71405, _extract_internalRefUUID#71406, _extract_code#71403, _extract_internalRefUUID#71404]
(819) BroadcastExchange
Input [4]: [_extract_code#71403, _extract_internalRefUUID#71404, _extract_internalRefUUID#71406, _extract_internalRefUUID#71405]
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=32336]
(820) BroadcastHashJoin
Left keys [4]: [coalesce(product#70074, ), isnull(product#70074), coalesce(plant#70075, ), isnull(plant#70075)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71406, ), isnull(_extract_internalRefUUID#71406), coalesce(_extract_internalRefUUID#71405, ), isnull(_extract_internalRefUUID#71405)]
Join type: LeftOuter
Join condition: None
(821) Project
Output [4]: [product#70074, plant#70075, _extract_code#71403, _extract_internalRefUUID#71404]
Input [6]: [product#70074, plant#70075, _extract_code#71403, _extract_internalRefUUID#71404, _extract_internalRefUUID#71406, _extract_internalRefUUID#71405]
(822) Scan parquet
Output [2]: [internalUUID#70088, systemId#70087]
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>
(823) Project
Output [1]: [internalUUID#70088]
Input [2]: [internalUUID#70088, systemId#70087]
(824) Exchange
Input [1]: [internalUUID#70088]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31416]
(825) BroadcastExchange
Input [1]: [internalUUID#70088]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32344]
(826) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70075, ), isnull(plant#70075)]
Right keys [2]: [coalesce(internalUUID#70088, ), isnull(internalUUID#70088)]
Join type: LeftOuter
Join condition: None
(827) Project
Output [4]: [product#70074, plant#70075, _extract_code#71403, _extract_internalRefUUID#71404]
Input [5]: [product#70074, plant#70075, _extract_code#71403, _extract_internalRefUUID#71404, internalUUID#70088]
(828) Scan parquet
Output [4]: [internalUUID#70102, baseUnitOfMeasure#70106, unitOfMeasureConversions#70108, systemId#70101]
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>>>
(829) Filter
Input [4]: [internalUUID#70102, baseUnitOfMeasure#70106, unitOfMeasureConversions#70108, systemId#70101]
Condition : isnotnull(internalUUID#70102)
(830) Project
Output [3]: [internalUUID#70102, baseUnitOfMeasure#70106, unitOfMeasureConversions#70108]
Input [4]: [internalUUID#70102, baseUnitOfMeasure#70106, unitOfMeasureConversions#70108, systemId#70101]
(831) Exchange
Input [3]: [internalUUID#70102, baseUnitOfMeasure#70106, unitOfMeasureConversions#70108]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31428]
(832) BroadcastExchange
Input [3]: [internalUUID#70102, baseUnitOfMeasure#70106, unitOfMeasureConversions#70108]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32349]
(833) BroadcastHashJoin
Left keys [1]: [product#70074]
Right keys [1]: [internalUUID#70102]
Join type: LeftOuter
Join condition: None
(834) Project
Output [2]: [plant#70075, filter(unitOfMeasureConversions#70108, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71403) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71404)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70106.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70106.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70113]
Input [7]: [product#70074, plant#70075, _extract_code#71403, _extract_internalRefUUID#71404, internalUUID#70102, baseUnitOfMeasure#70106, unitOfMeasureConversions#70108]
(835) Generate
Input [2]: [plant#70075, filteredUnitOfMeasureConversions#70113]
Arguments: explode(filteredUnitOfMeasureConversions#70113.quantityNumerator), [plant#70075, filteredUnitOfMeasureConversions#70113], true, [quantityNumerator#70114]
(836) Project
Output [2]: [plant#70075, filteredUnitOfMeasureConversions#70113.quantityDenominator AS _extract_quantityDenominator#71024]
Input [3]: [plant#70075, filteredUnitOfMeasureConversions#70113, quantityNumerator#70114]
(837) Generate
Input [2]: [plant#70075, _extract_quantityDenominator#71024]
Arguments: explode(_extract_quantityDenominator#71024), [plant#70075], true, [quantityDenominator#70115]
(838) Project
Output [1]: [plant#70075]
Input [2]: [plant#70075, quantityDenominator#70115]
(839) HashAggregate
Input [1]: [plant#70075]
Keys [1]: [plant#70075]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70075]
(840) Exchange
Input [1]: [plant#70075]
Arguments: hashpartitioning(plant#70075, 25), ENSURE_REQUIREMENTS, [plan_id=32365]
(841) HashAggregate
Input [1]: [plant#70075]
Keys [1]: [plant#70075]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70075]
(842) BroadcastHashJoin
Left keys [1]: [plantUuid#70071]
Right keys [1]: [plant#70075]
Join type: Inner
Join condition: None
(843) Project
Output [3]: [plantUuid#70071, storageLocId#70072, storageLocUuid#70073]
Input [4]: [plantUuid#70071, storageLocId#70072, storageLocUuid#70073, plant#70075]
(844) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70026.internalRefUUID, ), isnull(plant#70026.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#70071, ), isnull(plantUuid#70071)]
Join type: Inner
Join condition: None
(845) Generate
Input [9]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028, plantUuid#70071, storageLocId#70072, storageLocUuid#70073]
Arguments: explode(filter(stockQuantities#70028, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#70073) AND (lambda x#69269.storageLocation.Id = storageLocId#70072)), lambda x#69269, false))), [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, plantUuid#70071], false, [stockQuantity#70118]
(846) ObjectHashAggregate
Input [7]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, plantUuid#70071, stockQuantity#70118]
Keys [5]: [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023]
Functions [2]: [partial_first(calculationDateTime#70027, false), partial_collect_list(stockQuantity#70118, 0, 0)]
Aggregate Attributes [3]: [first#73962, valueSet#73963, buf#73964]
Results [8]: [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023, first#73965, valueSet#73966, buf#73967]
(847) ObjectHashAggregate
Input [8]: [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023, first#73965, valueSet#73966, buf#73967]
Keys [5]: [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023]
Functions [2]: [first(calculationDateTime#70027, false), collect_list(stockQuantity#70118, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#70027)()#69286, collect_list(stockQuantity#70118, 0, 0)#69287]
Results [4]: [product#70025, plant#70026, first(calculationDateTime#70027)()#69286 AS calculationDateTime#70119, collect_list(stockQuantity#70118, 0, 0)#69287 AS stockQuantities#70120]
(848) Filter
Input [4]: [product#70025, plant#70026, calculationDateTime#70119, stockQuantities#70120]
Condition : ((size(stockQuantities#70120, true) > 0) AND isnotnull(calculationDateTime#70119))
(849) Generate
Input [4]: [product#70025, plant#70026, calculationDateTime#70119, stockQuantities#70120]
Arguments: explode(stockQuantities#70120), [product#70025, plant#70026, calculationDateTime#70119], false, [stockQuantity#70121]
(850) Filter
Input [4]: [product#70025, plant#70026, calculationDateTime#70119, stockQuantity#70121]
Condition : (((isnotnull(stockQuantity#70121.specialStockIndicator.code) AND isnotnull(stockQuantity#70121.stockType.code)) AND (stockQuantity#70121.specialStockIndicator.code = )) AND (stockQuantity#70121.stockType.code = 01))
(851) Project
Output [5]: [plant#70026.internalRefUUID AS plantUuid#70123, product#70025.internalRefUUID AS productUuid#70125, calculationDateTime#70119, stockQuantity#70121.storagelocation.id AS storageLocId#70126, stockQuantity#70121.quantity.measure AS quantity#70128]
Input [4]: [product#70025, plant#70026, calculationDateTime#70119, stockQuantity#70121]
(852) Exchange
Input [5]: [plantUuid#70123, productUuid#70125, calculationDateTime#70119, storageLocId#70126, quantity#70128]
Arguments: hashpartitioning(productUuid#70125, plantUuid#70123, 25), ENSURE_REQUIREMENTS, [plan_id=32442]
(853) Sort
Input [5]: [plantUuid#70123, productUuid#70125, calculationDateTime#70119, storageLocId#70126, quantity#70128]
Arguments: [productUuid#70125 ASC NULLS FIRST, plantUuid#70123 ASC NULLS FIRST], false, 0
(854) Scan parquet
Output [3]: [product#70131, plant#70132, orderDateTime#70133]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(855) Filter
Input [3]: [product#70131, plant#70132, orderDateTime#70133]
Condition : ((isnotnull(orderDateTime#70133) AND isnotnull(plant#70132)) AND isnotnull(product#70131))
(856) Exchange
Input [3]: [product#70131, plant#70132, orderDateTime#70133]
Arguments: hashpartitioning(product#70131, plant#70132, 25), REPARTITION_BY_NUM, [plan_id=31855]
(857) Scan parquet
Output [4]: [plant#70137, product#70138, productionAspect#70140, systemId#70135]
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>>>>
(858) Project
Output [4]: [plant#70137.internalRefUUID AS _extract_internalRefUUID#71407, product#70138.internalRefUUID AS _extract_internalRefUUID#71410, productionAspect#70140.productMovementPlants.unitOfIssue.code AS _extract_code#71408, productionAspect#70140.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71409]
Input [4]: [plant#70137, product#70138, productionAspect#70140, systemId#70135]
(859) Exchange
Input [4]: [_extract_internalRefUUID#71407, _extract_internalRefUUID#71410, _extract_code#71408, _extract_internalRefUUID#71409]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31456]
(860) Project
Output [4]: [_extract_code#71408, _extract_internalRefUUID#71409, _extract_internalRefUUID#71410, _extract_internalRefUUID#71407]
Input [4]: [_extract_internalRefUUID#71407, _extract_internalRefUUID#71410, _extract_code#71408, _extract_internalRefUUID#71409]
(861) BroadcastExchange
Input [4]: [_extract_code#71408, _extract_internalRefUUID#71409, _extract_internalRefUUID#71410, _extract_internalRefUUID#71407]
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=32407]
(862) BroadcastHashJoin
Left keys [4]: [coalesce(product#70131, ), isnull(product#70131), coalesce(plant#70132, ), isnull(plant#70132)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71410, ), isnull(_extract_internalRefUUID#71410), coalesce(_extract_internalRefUUID#71407, ), isnull(_extract_internalRefUUID#71407)]
Join type: LeftOuter
Join condition: None
(863) Project
Output [5]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#71408, _extract_internalRefUUID#71409]
Input [7]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#71408, _extract_internalRefUUID#71409, _extract_internalRefUUID#71410, _extract_internalRefUUID#71407]
(864) Scan parquet
Output [2]: [internalUUID#70145, systemId#70144]
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>
(865) Project
Output [1]: [internalUUID#70145]
Input [2]: [internalUUID#70145, systemId#70144]
(866) Exchange
Input [1]: [internalUUID#70145]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31462]
(867) BroadcastExchange
Input [1]: [internalUUID#70145]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32412]
(868) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70132, ), isnull(plant#70132)]
Right keys [2]: [coalesce(internalUUID#70145, ), isnull(internalUUID#70145)]
Join type: LeftOuter
Join condition: None
(869) Project
Output [5]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#71408, _extract_internalRefUUID#71409]
Input [6]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#71408, _extract_internalRefUUID#71409, internalUUID#70145]
(870) Scan parquet
Output [4]: [internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165, systemId#70158]
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>>>
(871) Filter
Input [4]: [internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165, systemId#70158]
Condition : isnotnull(internalUUID#70159)
(872) Project
Output [3]: [internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165]
Input [4]: [internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165, systemId#70158]
(873) Exchange
Input [3]: [internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31468]
(874) BroadcastExchange
Input [3]: [internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32418]
(875) BroadcastHashJoin
Left keys [1]: [product#70131]
Right keys [1]: [internalUUID#70159]
Join type: LeftOuter
Join condition: None
(876) Project
Output [4]: [product#70131, plant#70132, orderDateTime#70133, filter(unitOfMeasureConversions#70165, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71408) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71409)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70163.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70163.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70171]
Input [8]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#71408, _extract_internalRefUUID#71409, internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165]
(877) Generate
Input [4]: [product#70131, plant#70132, orderDateTime#70133, filteredUnitOfMeasureConversions#70171]
Arguments: explode(filteredUnitOfMeasureConversions#70171.quantityNumerator), [product#70131, plant#70132, orderDateTime#70133, filteredUnitOfMeasureConversions#70171], true, [quantityNumerator#70172]
(878) Project
Output [4]: [product#70131, plant#70132, orderDateTime#70133, filteredUnitOfMeasureConversions#70171.quantityDenominator AS _extract_quantityDenominator#71031]
Input [5]: [product#70131, plant#70132, orderDateTime#70133, filteredUnitOfMeasureConversions#70171, quantityNumerator#70172]
(879) Generate
Input [4]: [product#70131, plant#70132, orderDateTime#70133, _extract_quantityDenominator#71031]
Arguments: explode(_extract_quantityDenominator#71031), [product#70131, plant#70132, orderDateTime#70133], true, [quantityDenominator#70173]
(880) Project
Output [3]: [product#70131, plant#70132, orderDateTime#70133]
Input [4]: [product#70131, plant#70132, orderDateTime#70133, quantityDenominator#70173]
(881) Sort
Input [3]: [product#70131, plant#70132, orderDateTime#70133]
Arguments: [product#70131 ASC NULLS FIRST, plant#70132 ASC NULLS FIRST], false, 0
(882) SortMergeJoin
Left keys [2]: [productUuid#70125, plantUuid#70123]
Right keys [2]: [product#70131, plant#70132]
Join type: Inner
Join condition: (calculationDateTime#70119 <= orderDateTime#70133)
(883) Project
Output [5]: [plantUuid#70123 AS plant#70176, productUuid#70125 AS product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
Input [8]: [plantUuid#70123, productUuid#70125, calculationDateTime#70119, storageLocId#70126, quantity#70128, product#70131, plant#70132, orderDateTime#70133]
(884) Exchange
Input [5]: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
Arguments: hashpartitioning(coalesce(plant#70176, ), isnull(plant#70176), coalesce(product#70177, ), isnull(product#70177), coalesce(storageLocId#70126, ), isnull(storageLocId#70126), coalesce(calculationDateTime#70119, 1970-01-01 00:00:00), isnull(calculationDateTime#70119), 25), ENSURE_REQUIREMENTS, [plan_id=32583]
(885) Sort
Input [5]: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
Arguments: [coalesce(plant#70176, ) ASC NULLS FIRST, isnull(plant#70176) ASC NULLS FIRST, coalesce(product#70177, ) ASC NULLS FIRST, isnull(product#70177) ASC NULLS FIRST, coalesce(storageLocId#70126, ) ASC NULLS FIRST, isnull(storageLocId#70126) ASC NULLS FIRST, coalesce(calculationDateTime#70119, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#70119) ASC NULLS FIRST], false, 0
(886) Scan parquet
Output [6]: [internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183, systemId#70178]
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>>>>>
(887) Filter
Input [6]: [internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183, systemId#70178]
Condition : (isnotnull(plant#70181.internalRefUUID) AND isnotnull(product#70180.internalRefUUID))
(888) Project
Output [6]: [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183]
Input [6]: [internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183, systemId#70178]
(889) Exchange
Input [6]: [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31480]
(890) BroadcastExchange
Input [6]: [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183]
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=32503]
(891) Scan parquet
Output [2]: [marketUnit#70184, distributionCenters#70190]
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>>>>>
(892) Filter
Input [2]: [marketUnit#70184, distributionCenters#70190]
Condition : (((marketUnit#70184 <=> Daily_grocery) AND (size(distributionCenters#70190, true) > 0)) AND isnotnull(distributionCenters#70190))
(893) Project
Output [1]: [distributionCenters#70190]
Input [2]: [marketUnit#70184, distributionCenters#70190]
(894) Exchange
Input [1]: [distributionCenters#70190]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31484]
(895) Generate
Input [1]: [distributionCenters#70190]
Arguments: explode(distributionCenters#70190), false, [distributionCenters#70206]
(896) Filter
Input [1]: [distributionCenters#70206]
Condition : (((size(distributionCenters#70206.storageLocations, true) > 0) AND isnotnull(distributionCenters#70206.storageLocations)) AND isnotnull(distributionCenters#70206.internalRefUUID))
(897) Project
Output [2]: [distributionCenters#70206.internalRefUUID AS _extract_internalRefUUID#71041, distributionCenters#70206.storageLocations AS _extract_storageLocations#71042]
Input [1]: [distributionCenters#70206]
(898) Generate
Input [2]: [_extract_internalRefUUID#71041, _extract_storageLocations#71042]
Arguments: explode(_extract_storageLocations#71042), [_extract_internalRefUUID#71041], false, [storageLocations#70207]
(899) Project
Output [3]: [_extract_internalRefUUID#71041 AS plantUuid#70209, storageLocations#70207.id AS storageLocId#70210, storageLocations#70207.internalRefUUID AS storageLocUuid#70211]
Input [2]: [_extract_internalRefUUID#71041, storageLocations#70207]
(900) BroadcastExchange
Input [3]: [plantUuid#70209, storageLocId#70210, storageLocUuid#70211]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32494]
(901) Scan parquet
Output [2]: [product#70212, plant#70213]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(902) Filter
Input [2]: [product#70212, plant#70213]
Condition : isnotnull(plant#70213)
(903) Exchange
Input [2]: [product#70212, plant#70213]
Arguments: hashpartitioning(product#70212, plant#70213, 25), REPARTITION_BY_NUM, [plan_id=31881]
(904) Scan parquet
Output [4]: [plant#70218, product#70219, productionAspect#70221, systemId#70216]
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>>>>
(905) Project
Output [4]: [plant#70218.internalRefUUID AS _extract_internalRefUUID#71422, product#70219.internalRefUUID AS _extract_internalRefUUID#71419, productionAspect#70221.productMovementPlants.unitOfIssue.code AS _extract_code#71420, productionAspect#70221.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71421]
Input [4]: [plant#70218, product#70219, productionAspect#70221, systemId#70216]
(906) Exchange
Input [4]: [_extract_internalRefUUID#71422, _extract_internalRefUUID#71419, _extract_code#71420, _extract_internalRefUUID#71421]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31496]
(907) Project
Output [4]: [_extract_code#71420, _extract_internalRefUUID#71421, _extract_internalRefUUID#71419, _extract_internalRefUUID#71422]
Input [4]: [_extract_internalRefUUID#71422, _extract_internalRefUUID#71419, _extract_code#71420, _extract_internalRefUUID#71421]
(908) BroadcastExchange
Input [4]: [_extract_code#71420, _extract_internalRefUUID#71421, _extract_internalRefUUID#71419, _extract_internalRefUUID#71422]
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=32454]
(909) BroadcastHashJoin
Left keys [4]: [coalesce(product#70212, ), isnull(product#70212), coalesce(plant#70213, ), isnull(plant#70213)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71419, ), isnull(_extract_internalRefUUID#71419), coalesce(_extract_internalRefUUID#71422, ), isnull(_extract_internalRefUUID#71422)]
Join type: LeftOuter
Join condition: None
(910) Project
Output [4]: [product#70212, plant#70213, _extract_code#71420, _extract_internalRefUUID#71421]
Input [6]: [product#70212, plant#70213, _extract_code#71420, _extract_internalRefUUID#71421, _extract_internalRefUUID#71419, _extract_internalRefUUID#71422]
(911) Scan parquet
Output [2]: [internalUUID#70226, systemId#70225]
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>
(912) Project
Output [1]: [internalUUID#70226]
Input [2]: [internalUUID#70226, systemId#70225]
(913) Exchange
Input [1]: [internalUUID#70226]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31502]
(914) BroadcastExchange
Input [1]: [internalUUID#70226]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32461]
(915) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70213, ), isnull(plant#70213)]
Right keys [2]: [coalesce(internalUUID#70226, ), isnull(internalUUID#70226)]
Join type: LeftOuter
Join condition: None
(916) Project
Output [4]: [product#70212, plant#70213, _extract_code#71420, _extract_internalRefUUID#71421]
Input [5]: [product#70212, plant#70213, _extract_code#71420, _extract_internalRefUUID#71421, internalUUID#70226]
(917) Scan parquet
Output [4]: [internalUUID#70240, baseUnitOfMeasure#70244, unitOfMeasureConversions#70246, systemId#70239]
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>>>
(918) Filter
Input [4]: [internalUUID#70240, baseUnitOfMeasure#70244, unitOfMeasureConversions#70246, systemId#70239]
Condition : isnotnull(internalUUID#70240)
(919) Project
Output [3]: [internalUUID#70240, baseUnitOfMeasure#70244, unitOfMeasureConversions#70246]
Input [4]: [internalUUID#70240, baseUnitOfMeasure#70244, unitOfMeasureConversions#70246, systemId#70239]
(920) Exchange
Input [3]: [internalUUID#70240, baseUnitOfMeasure#70244, unitOfMeasureConversions#70246]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31508]
(921) BroadcastExchange
Input [3]: [internalUUID#70240, baseUnitOfMeasure#70244, unitOfMeasureConversions#70246]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32469]
(922) BroadcastHashJoin
Left keys [1]: [product#70212]
Right keys [1]: [internalUUID#70240]
Join type: LeftOuter
Join condition: None
(923) Project
Output [2]: [plant#70213, filter(unitOfMeasureConversions#70246, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71420) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71421)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70244.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70244.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70251]
Input [7]: [product#70212, plant#70213, _extract_code#71420, _extract_internalRefUUID#71421, internalUUID#70240, baseUnitOfMeasure#70244, unitOfMeasureConversions#70246]
(924) Generate
Input [2]: [plant#70213, filteredUnitOfMeasureConversions#70251]
Arguments: explode(filteredUnitOfMeasureConversions#70251.quantityNumerator), [plant#70213, filteredUnitOfMeasureConversions#70251], true, [quantityNumerator#70252]
(925) Project
Output [2]: [plant#70213, filteredUnitOfMeasureConversions#70251.quantityDenominator AS _extract_quantityDenominator#71044]
Input [3]: [plant#70213, filteredUnitOfMeasureConversions#70251, quantityNumerator#70252]
(926) Generate
Input [2]: [plant#70213, _extract_quantityDenominator#71044]
Arguments: explode(_extract_quantityDenominator#71044), [plant#70213], true, [quantityDenominator#70253]
(927) Project
Output [1]: [plant#70213]
Input [2]: [plant#70213, quantityDenominator#70253]
(928) HashAggregate
Input [1]: [plant#70213]
Keys [1]: [plant#70213]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70213]
(929) Exchange
Input [1]: [plant#70213]
Arguments: hashpartitioning(plant#70213, 25), ENSURE_REQUIREMENTS, [plan_id=32488]
(930) HashAggregate
Input [1]: [plant#70213]
Keys [1]: [plant#70213]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70213]
(931) BroadcastHashJoin
Left keys [1]: [plantUuid#70209]
Right keys [1]: [plant#70213]
Join type: Inner
Join condition: None
(932) Project
Output [3]: [plantUuid#70209, storageLocId#70210, storageLocUuid#70211]
Input [4]: [plantUuid#70209, storageLocId#70210, storageLocUuid#70211, plant#70213]
(933) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70181.internalRefUUID, ), isnull(plant#70181.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#70209, ), isnull(plantUuid#70209)]
Join type: Inner
Join condition: None
(934) Generate
Input [9]: [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183, plantUuid#70209, storageLocId#70210, storageLocUuid#70211]
Arguments: explode(filter(stockQuantities#70183, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#70211) AND (lambda x#69269.storageLocation.Id = storageLocId#70210)), lambda x#69269, false))), [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, plantUuid#70209], false, [stockQuantity#70256]
(935) ObjectHashAggregate
Input [7]: [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, plantUuid#70209, stockQuantity#70256]
Keys [5]: [plantUuid#70209, internalUUID#70179, plant#70181, product#70180, systemId#70178]
Functions [2]: [partial_first(calculationDateTime#70182, false), partial_collect_list(stockQuantity#70256, 0, 0)]
Aggregate Attributes [3]: [first#73976, valueSet#73977, buf#73978]
Results [8]: [plantUuid#70209, internalUUID#70179, plant#70181, product#70180, systemId#70178, first#73979, valueSet#73980, buf#73981]
(936) ObjectHashAggregate
Input [8]: [plantUuid#70209, internalUUID#70179, plant#70181, product#70180, systemId#70178, first#73979, valueSet#73980, buf#73981]
Keys [5]: [plantUuid#70209, internalUUID#70179, plant#70181, product#70180, systemId#70178]
Functions [2]: [first(calculationDateTime#70182, false), collect_list(stockQuantity#70256, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#70182)()#69286, collect_list(stockQuantity#70256, 0, 0)#69287]
Results [4]: [product#70180, plant#70181, first(calculationDateTime#70182)()#69286 AS calculationDateTime#70257, collect_list(stockQuantity#70256, 0, 0)#69287 AS stockQuantities#70258]
(937) Filter
Input [4]: [product#70180, plant#70181, calculationDateTime#70257, stockQuantities#70258]
Condition : ((size(stockQuantities#70258, true) > 0) AND isnotnull(calculationDateTime#70257))
(938) Generate
Input [4]: [product#70180, plant#70181, calculationDateTime#70257, stockQuantities#70258]
Arguments: explode(stockQuantities#70258), [product#70180, plant#70181, calculationDateTime#70257], false, [stockQuantity#70259]
(939) Filter
Input [4]: [product#70180, plant#70181, calculationDateTime#70257, stockQuantity#70259]
Condition : (((isnotnull(stockQuantity#70259.specialStockIndicator.code) AND isnotnull(stockQuantity#70259.stockType.code)) AND (stockQuantity#70259.specialStockIndicator.code = )) AND (stockQuantity#70259.stockType.code = 01))
(940) Project
Output [4]: [plant#70181.internalRefUUID AS plantUuid#70261, product#70180.internalRefUUID AS productUuid#70263, calculationDateTime#70257, stockQuantity#70259.storagelocation.id AS storageLocId#70264]
Input [4]: [product#70180, plant#70181, calculationDateTime#70257, stockQuantity#70259]
(941) Exchange
Input [4]: [plantUuid#70261, productUuid#70263, calculationDateTime#70257, storageLocId#70264]
Arguments: hashpartitioning(productUuid#70263, plantUuid#70261, 25), ENSURE_REQUIREMENTS, [plan_id=32561]
(942) Sort
Input [4]: [plantUuid#70261, productUuid#70263, calculationDateTime#70257, storageLocId#70264]
Arguments: [productUuid#70263 ASC NULLS FIRST, plantUuid#70261 ASC NULLS FIRST], false, 0
(943) Scan parquet
Output [3]: [product#70269, plant#70270, orderDateTime#70271]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(944) Filter
Input [3]: [product#70269, plant#70270, orderDateTime#70271]
Condition : ((isnotnull(orderDateTime#70271) AND isnotnull(plant#70270)) AND isnotnull(product#70269))
(945) Exchange
Input [3]: [product#70269, plant#70270, orderDateTime#70271]
Arguments: hashpartitioning(product#70269, plant#70270, 25), REPARTITION_BY_NUM, [plan_id=31927]
(946) Scan parquet
Output [4]: [plant#70275, product#70276, productionAspect#70278, systemId#70273]
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>>>>
(947) Project
Output [4]: [plant#70275.internalRefUUID AS _extract_internalRefUUID#71425, product#70276.internalRefUUID AS _extract_internalRefUUID#71426, productionAspect#70278.productMovementPlants.unitOfIssue.code AS _extract_code#71423, productionAspect#70278.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71424]
Input [4]: [plant#70275, product#70276, productionAspect#70278, systemId#70273]
(948) Exchange
Input [4]: [_extract_internalRefUUID#71425, _extract_internalRefUUID#71426, _extract_code#71423, _extract_internalRefUUID#71424]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31533]
(949) Project
Output [4]: [_extract_code#71423, _extract_internalRefUUID#71424, _extract_internalRefUUID#71426, _extract_internalRefUUID#71425]
Input [4]: [_extract_internalRefUUID#71425, _extract_internalRefUUID#71426, _extract_code#71423, _extract_internalRefUUID#71424]
(950) BroadcastExchange
Input [4]: [_extract_code#71423, _extract_internalRefUUID#71424, _extract_internalRefUUID#71426, _extract_internalRefUUID#71425]
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=32521]
(951) BroadcastHashJoin
Left keys [4]: [coalesce(product#70269, ), isnull(product#70269), coalesce(plant#70270, ), isnull(plant#70270)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71426, ), isnull(_extract_internalRefUUID#71426), coalesce(_extract_internalRefUUID#71425, ), isnull(_extract_internalRefUUID#71425)]
Join type: LeftOuter
Join condition: None
(952) Project
Output [5]: [product#70269, plant#70270, orderDateTime#70271, _extract_code#71423, _extract_internalRefUUID#71424]
Input [7]: [product#70269, plant#70270, orderDateTime#70271, _extract_code#71423, _extract_internalRefUUID#71424, _extract_internalRefUUID#71426, _extract_internalRefUUID#71425]
(953) Scan parquet
Output [2]: [internalUUID#70283, systemId#70282]
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>
(954) Project
Output [1]: [internalUUID#70283]
Input [2]: [internalUUID#70283, systemId#70282]
(955) Exchange
Input [1]: [internalUUID#70283]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31539]
(956) BroadcastExchange
Input [1]: [internalUUID#70283]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32529]
(957) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70270, ), isnull(plant#70270)]
Right keys [2]: [coalesce(internalUUID#70283, ), isnull(internalUUID#70283)]
Join type: LeftOuter
Join condition: None
(958) Project
Output [5]: [product#70269, plant#70270, orderDateTime#70271, _extract_code#71423, _extract_internalRefUUID#71424]
Input [6]: [product#70269, plant#70270, orderDateTime#70271, _extract_code#71423, _extract_internalRefUUID#71424, internalUUID#70283]
(959) Scan parquet
Output [4]: [internalUUID#70297, baseUnitOfMeasure#70301, unitOfMeasureConversions#70303, systemId#70296]
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>>>
(960) Filter
Input [4]: [internalUUID#70297, baseUnitOfMeasure#70301, unitOfMeasureConversions#70303, systemId#70296]
Condition : isnotnull(internalUUID#70297)
(961) Project
Output [3]: [internalUUID#70297, baseUnitOfMeasure#70301, unitOfMeasureConversions#70303]
Input [4]: [internalUUID#70297, baseUnitOfMeasure#70301, unitOfMeasureConversions#70303, systemId#70296]
(962) Exchange
Input [3]: [internalUUID#70297, baseUnitOfMeasure#70301, unitOfMeasureConversions#70303]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31545]
(963) BroadcastExchange
Input [3]: [internalUUID#70297, baseUnitOfMeasure#70301, unitOfMeasureConversions#70303]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32537]
(964) BroadcastHashJoin
Left keys [1]: [product#70269]
Right keys [1]: [internalUUID#70297]
Join type: LeftOuter
Join condition: None
(965) Project
Output [4]: [product#70269, plant#70270, orderDateTime#70271, filter(unitOfMeasureConversions#70303, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71423) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71424)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70301.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70301.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70308]
Input [8]: [product#70269, plant#70270, orderDateTime#70271, _extract_code#71423, _extract_internalRefUUID#71424, internalUUID#70297, baseUnitOfMeasure#70301, unitOfMeasureConversions#70303]
(966) Generate
Input [4]: [product#70269, plant#70270, orderDateTime#70271, filteredUnitOfMeasureConversions#70308]
Arguments: explode(filteredUnitOfMeasureConversions#70308.quantityNumerator), [product#70269, plant#70270, orderDateTime#70271, filteredUnitOfMeasureConversions#70308], true, [quantityNumerator#70309]
(967) Project
Output [4]: [product#70269, plant#70270, orderDateTime#70271, filteredUnitOfMeasureConversions#70308.quantityDenominator AS _extract_quantityDenominator#71052]
Input [5]: [product#70269, plant#70270, orderDateTime#70271, filteredUnitOfMeasureConversions#70308, quantityNumerator#70309]
(968) Generate
Input [4]: [product#70269, plant#70270, orderDateTime#70271, _extract_quantityDenominator#71052]
Arguments: explode(_extract_quantityDenominator#71052), [product#70269, plant#70270, orderDateTime#70271], true, [quantityDenominator#70310]
(969) Project
Output [3]: [product#70269, plant#70270, orderDateTime#70271]
Input [4]: [product#70269, plant#70270, orderDateTime#70271, quantityDenominator#70310]
(970) Sort
Input [3]: [product#70269, plant#70270, orderDateTime#70271]
Arguments: [product#70269 ASC NULLS FIRST, plant#70270 ASC NULLS FIRST], false, 0
(971) SortMergeJoin
Left keys [2]: [productUuid#70263, plantUuid#70261]
Right keys [2]: [product#70269, plant#70270]
Join type: Inner
Join condition: (calculationDateTime#70257 <= orderDateTime#70271)
(972) Project
Output [4]: [plantUuid#70261 AS plant#70323, productUuid#70263 AS product#70324, storageLocId#70264, calculationDateTime#70257]
Input [7]: [plantUuid#70261, productUuid#70263, calculationDateTime#70257, storageLocId#70264, product#70269, plant#70270, orderDateTime#70271]
(973) HashAggregate
Input [4]: [plant#70323, product#70324, storageLocId#70264, calculationDateTime#70257]
Keys [3]: [plant#70323, product#70324, storageLocId#70264]
Functions [1]: [partial_max(calculationDateTime#70257)]
Aggregate Attributes [1]: [max#73974]
Results [4]: [plant#70323, product#70324, storageLocId#70264, max#73975]
(974) HashAggregate
Input [4]: [plant#70323, product#70324, storageLocId#70264, max#73975]
Keys [3]: [plant#70323, product#70324, storageLocId#70264]
Functions [1]: [max(calculationDateTime#70257)]
Aggregate Attributes [1]: [max(calculationDateTime#70257)#69447]
Results [4]: [plant#70323, product#70324, storageLocId#70264, max(calculationDateTime#70257)#69447 AS max_calc_datetime#70325]
(975) Exchange
Input [4]: [plant#70323, product#70324, storageLocId#70264, max_calc_datetime#70325]
Arguments: hashpartitioning(coalesce(plant#70323, ), isnull(plant#70323), coalesce(product#70324, ), isnull(product#70324), coalesce(storageLocId#70264, ), isnull(storageLocId#70264), coalesce(max_calc_datetime#70325, 1970-01-01 00:00:00), isnull(max_calc_datetime#70325), 25), ENSURE_REQUIREMENTS, [plan_id=32584]
(976) Sort
Input [4]: [plant#70323, product#70324, storageLocId#70264, max_calc_datetime#70325]
Arguments: [coalesce(plant#70323, ) ASC NULLS FIRST, isnull(plant#70323) ASC NULLS FIRST, coalesce(product#70324, ) ASC NULLS FIRST, isnull(product#70324) ASC NULLS FIRST, coalesce(storageLocId#70264, ) ASC NULLS FIRST, isnull(storageLocId#70264) ASC NULLS FIRST, coalesce(max_calc_datetime#70325, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#70325) ASC NULLS FIRST], false, 0
(977) SortMergeJoin
Left keys [8]: [coalesce(plant#70176, ), isnull(plant#70176), coalesce(product#70177, ), isnull(product#70177), coalesce(storageLocId#70126, ), isnull(storageLocId#70126), coalesce(calculationDateTime#70119, 1970-01-01 00:00:00), isnull(calculationDateTime#70119)]
Right keys [8]: [coalesce(plant#70323, ), isnull(plant#70323), coalesce(product#70324, ), isnull(product#70324), coalesce(storageLocId#70264, ), isnull(storageLocId#70264), coalesce(max_calc_datetime#70325, 1970-01-01 00:00:00), isnull(max_calc_datetime#70325)]
Join type: Inner
Join condition: None
(978) Project
Output [4]: [plant#70176, product#70177, calculationDateTime#70119, quantity#70128]
Input [9]: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128, plant#70323, product#70324, storageLocId#70264, max_calc_datetime#70325]
(979) HashAggregate
Input [4]: [plant#70176, product#70177, calculationDateTime#70119, quantity#70128]
Keys [2]: [product#70177, plant#70176]
Functions [2]: [partial_min(calculationDateTime#70119), partial_sum(quantity#70128)]
Aggregate Attributes [2]: [min#73956, sum#73957]
Results [4]: [product#70177, plant#70176, min#73958, sum#73959]
(980) Exchange
Input [4]: [product#70177, plant#70176, min#73958, sum#73959]
Arguments: hashpartitioning(product#70177, plant#70176, 25), ENSURE_REQUIREMENTS, [plan_id=32596]
(981) HashAggregate
Input [4]: [product#70177, plant#70176, min#73958, sum#73959]
Keys [2]: [product#70177, plant#70176]
Functions [2]: [min(calculationDateTime#70119), sum(quantity#70128)]
Aggregate Attributes [2]: [min(calculationDateTime#70119)#69766, sum(quantity#70128)#69765]
Results [4]: [product#70177, plant#70176, min(calculationDateTime#70119)#69766 AS minCalculationDateTime#70327, round(sum(quantity#70128)#69765, 0) AS roundedQuantitySum#70328]
(982) Sort
Input [4]: [product#70177, plant#70176, minCalculationDateTime#70327, roundedQuantitySum#70328]
Arguments: [product#70177 ASC NULLS FIRST, plant#70176 ASC NULLS FIRST], false, 0
(983) SortMergeJoin
Left keys [2]: [product#69978, plant#69979]
Right keys [2]: [product#70177, plant#70176]
Join type: LeftOuter
Join condition: None
(984) Project
Output [8]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, CASE WHEN isnotnull(minCalculationDateTime#70327) THEN minCalculationDateTime#70327 ELSE orderDateTime#69980 END AS stockDatetime#70329, CASE WHEN isnotnull(roundedQuantitySum#70328) THEN array(roundedQuantitySum#70328) ELSE [0.0] END AS stockBatchQuantities#70330]
Input [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, product#70177, plant#70176, minCalculationDateTime#70327, roundedQuantitySum#70328]
(985) Filter
Input [9]: [product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
Condition : (isnotnull(product#69873) AND isnotnull(plant#69874))
(986) BroadcastExchange
Input [9]: [product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=32615]
(987) BroadcastHashJoin
Left keys [2]: [product#69978, plant#69979]
Right keys [2]: [product#69873, plant#69874]
Join type: LeftOuter
Join condition: None
(988) Project
Output [9]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, CASE WHEN isnotnull(product#69873) THEN struct(demandChannel, demandChannel#69875, demandStream, demandStream#69876, considerVariance, considerVariance#69877, demandTimeBuckets, demandTimeBuckets#69878, demandPointInTimeStart, demandPointInTimeStart#69879, demandPointInTimeEnd, demandPointInTimeEnd#69880, demandPointInTime, demandPointInTime#69881) END AS rawDemands#69908]
Input [17]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
(989) ObjectHashAggregate
Input [9]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, rawDemands#69908]
Keys [9]: [product#69978, plant#69979, orderDateTime#69980, knownfloatingpointnormalized(if (isnull(productPlant#69990)) null else named_struct(systemId, productPlant#69990.systemId, internalUUID, productPlant#69990.internalUUID, plant, productPlant#69990.plant, product, productPlant#69990.product, blockedForReplenishmentStartingFrom, productPlant#69990.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#69990.productionAspect)) null else named_struct(productMovementPlants, productPlant#69990.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#69990.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#69990.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#69990.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#69990.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#69990.productionAspect.productPlanningPlants.minimumLotSize)), minimumSafetyStock, knownfloatingpointnormalized(normalizenanandzero(productPlant#69990.productionAspect.productPlanningPlants.minimumSafetyStock)), logisticalRoundingProfile, productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#69990.salesPlant, listing, productPlant#69990.listing)) AS productPlant#69990, timezonecode#70005, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#70022)) AS outboundUnit#70022, stockDatetime#70329, knownfloatingpointnormalized(transform(stockBatchQuantities#70330, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#73953)), lambda arg#73953, false))) AS stockBatchQuantities#70330, [7226582400000000] AS [7226582400000000]#73952]
Functions [1]: [partial_collect_list(rawDemands#69908, 0, 0)]
Aggregate Attributes [1]: [buf#73954]
Results [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000]#73952, buf#73955]
(990) ObjectHashAggregate
Input [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000]#73952, buf#73955]
Keys [9]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000]#73952]
Functions [1]: [collect_list(rawDemands#69908, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#69908, 0, 0)#69939]
Results [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#70331, collect_list(rawDemands#69908, 0, 0)#69939 AS rawDemands#69921]
(991) DeserializeToObject
Input [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, stockBatchShelfLifeEndDatetimes#70331, rawDemands#69921]
Arguments: createexternalrow(invoke(product#69978.toString()), invoke(plant#69979.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#69980)), if (isnull(productPlant#69990)) null else createexternalrow(invoke(productPlant#69990.systemId.toString()), invoke(productPlant#69990.internalUUID.toString()), if (isnull(productPlant#69990.plant)) null else createexternalrow(invoke(productPlant#69990.plant.internalRefUUID.toString()), invoke(productPlant#69990.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#69990.product)) null else createexternalrow(invoke(productPlant#69990.product.internalRefUUID.toString()), invoke(productPlant#69990.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#69990.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#69990.productionAspect)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#69990.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#69990.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#69990.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#69990.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#69990.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#69990.salesPlant)) null else createexternalrow(if (isnull(productPlant#69990.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#69990.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#69990.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#69990.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#70005.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#70022)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#70329)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#70330, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#70331, 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#69921, 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#69963: org.apache.spark.sql.Row
(992) MapElements
Input [1]: [obj#69963]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@783ec352, obj#69968: org.apache.spark.sql.Row
(993) SerializeFromObject
Input [1]: [obj#69968]
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#69973, 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#69974]
(994) Exchange
Input [2]: [product#69973, plant#69974]
Arguments: hashpartitioning(coalesce(plant#69974, ), isnull(plant#69974), coalesce(product#69973, ), isnull(product#69973), 25), ENSURE_REQUIREMENTS, [plan_id=32633]
(995) Sort
Input [2]: [product#69973, plant#69974]
Arguments: [coalesce(plant#69974, ) ASC NULLS FIRST, isnull(plant#69974) ASC NULLS FIRST, coalesce(product#69973, ) ASC NULLS FIRST, isnull(product#69973) ASC NULLS FIRST], false, 0
(996) SortMergeJoin
Left keys [4]: [coalesce(plant#69020, ), isnull(plant#69020), coalesce(product#69019, ), isnull(product#69019)]
Right keys [4]: [coalesce(plant#69974, ), isnull(plant#69974), coalesce(product#69973, ), isnull(product#69973)]
Join type: LeftOuter
Join condition: None
(997) Project
Output [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Input [6]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868, product#69973, plant#69974]
(998) Exchange
Input [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: hashpartitioning(plant#69020, 25), ENSURE_REQUIREMENTS, [plan_id=32697]
(999) Sort
Input [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: [plant#69020 ASC NULLS FIRST], false, 0
(1000) Scan parquet
Output [2]: [marketUnit#70809, distributionCenters#70815]
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>>>>>
(1001) Filter
Input [2]: [marketUnit#70809, distributionCenters#70815]
Condition : (((marketUnit#70809 <=> Daily_grocery) AND (size(distributionCenters#70815, true) > 0)) AND isnotnull(distributionCenters#70815))
(1002) Project
Output [1]: [distributionCenters#70815]
Input [2]: [marketUnit#70809, distributionCenters#70815]
(1003) Exchange
Input [1]: [distributionCenters#70815]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31577]
(1004) Generate
Input [1]: [distributionCenters#70815]
Arguments: explode(distributionCenters#70815), false, [distributionCenters#70854]
(1005) Filter
Input [1]: [distributionCenters#70854]
Condition : (((size(distributionCenters#70854.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#70854.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#70854.internalRefUUID))
(1006) Project
Output [2]: [distributionCenters#70854.internalRefUUID AS _extract_internalRefUUID#71061, distributionCenters#70854.storageLocations.internalRefUUID AS _extract_internalRefUUID#71429]
Input [1]: [distributionCenters#70854]
(1007) Generate
Input [2]: [_extract_internalRefUUID#71061, _extract_internalRefUUID#71429]
Arguments: explode(_extract_internalRefUUID#71429), [_extract_internalRefUUID#71061], false, [storageLocations#70855]
(1008) Filter
Input [2]: [_extract_internalRefUUID#71061, storageLocations#70855]
Condition : isnotnull(storageLocations#70855)
(1009) Project
Output [2]: [_extract_internalRefUUID#71061 AS plantUuid#70858, storageLocations#70855 AS storageLocUuid#70862]
Input [2]: [_extract_internalRefUUID#71061, storageLocations#70855]
(1010) BroadcastExchange
Input [2]: [plantUuid#70858, storageLocUuid#70862]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32683]
(1011) Scan parquet
Output [2]: [product#70865, plant#70866]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1012) Filter
Input [2]: [product#70865, plant#70866]
Condition : isnotnull(plant#70866)
(1013) Exchange
Input [2]: [product#70865, plant#70866]
Arguments: hashpartitioning(product#70865, plant#70866, 25), REPARTITION_BY_NUM, [plan_id=31971]
(1014) Scan parquet
Output [4]: [plant#70883, product#70884, productionAspect#70886, systemId#70881]
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>>>>
(1015) Project
Output [4]: [plant#70883.internalRefUUID AS _extract_internalRefUUID#71431, product#70884.internalRefUUID AS _extract_internalRefUUID#71434, productionAspect#70886.productMovementPlants.unitOfIssue.code AS _extract_code#71432, productionAspect#70886.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71433]
Input [4]: [plant#70883, product#70884, productionAspect#70886, systemId#70881]
(1016) Exchange
Input [4]: [_extract_internalRefUUID#71431, _extract_internalRefUUID#71434, _extract_code#71432, _extract_internalRefUUID#71433]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31590]
(1017) Project
Output [4]: [_extract_code#71432, _extract_internalRefUUID#71433, _extract_internalRefUUID#71434, _extract_internalRefUUID#71431]
Input [4]: [_extract_internalRefUUID#71431, _extract_internalRefUUID#71434, _extract_code#71432, _extract_internalRefUUID#71433]
(1018) BroadcastExchange
Input [4]: [_extract_code#71432, _extract_internalRefUUID#71433, _extract_internalRefUUID#71434, _extract_internalRefUUID#71431]
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=32650]
(1019) BroadcastHashJoin
Left keys [4]: [coalesce(product#70865, ), isnull(product#70865), coalesce(plant#70866, ), isnull(plant#70866)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71434, ), isnull(_extract_internalRefUUID#71434), coalesce(_extract_internalRefUUID#71431, ), isnull(_extract_internalRefUUID#71431)]
Join type: LeftOuter
Join condition: None
(1020) Project
Output [4]: [product#70865, plant#70866, _extract_code#71432, _extract_internalRefUUID#71433]
Input [6]: [product#70865, plant#70866, _extract_code#71432, _extract_internalRefUUID#71433, _extract_internalRefUUID#71434, _extract_internalRefUUID#71431]
(1021) Scan parquet
Output [2]: [internalUUID#70892, systemId#70891]
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>
(1022) Project
Output [1]: [internalUUID#70892]
Input [2]: [internalUUID#70892, systemId#70891]
(1023) Exchange
Input [1]: [internalUUID#70892]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31596]
(1024) BroadcastExchange
Input [1]: [internalUUID#70892]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32657]
(1025) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70866, ), isnull(plant#70866)]
Right keys [2]: [coalesce(internalUUID#70892, ), isnull(internalUUID#70892)]
Join type: LeftOuter
Join condition: None
(1026) Project
Output [4]: [product#70865, plant#70866, _extract_code#71432, _extract_internalRefUUID#71433]
Input [5]: [product#70865, plant#70866, _extract_code#71432, _extract_internalRefUUID#71433, internalUUID#70892]
(1027) Scan parquet
Output [4]: [internalUUID#70919, baseUnitOfMeasure#70923, unitOfMeasureConversions#70925, systemId#70918]
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>>>
(1028) Filter
Input [4]: [internalUUID#70919, baseUnitOfMeasure#70923, unitOfMeasureConversions#70925, systemId#70918]
Condition : isnotnull(internalUUID#70919)
(1029) Project
Output [3]: [internalUUID#70919, baseUnitOfMeasure#70923, unitOfMeasureConversions#70925]
Input [4]: [internalUUID#70919, baseUnitOfMeasure#70923, unitOfMeasureConversions#70925, systemId#70918]
(1030) Exchange
Input [3]: [internalUUID#70919, baseUnitOfMeasure#70923, unitOfMeasureConversions#70925]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31602]
(1031) BroadcastExchange
Input [3]: [internalUUID#70919, baseUnitOfMeasure#70923, unitOfMeasureConversions#70925]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32663]
(1032) BroadcastHashJoin
Left keys [1]: [product#70865]
Right keys [1]: [internalUUID#70919]
Join type: LeftOuter
Join condition: None
(1033) Project
Output [2]: [plant#70866, filter(unitOfMeasureConversions#70925, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71432) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71433)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70923.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70923.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70943]
Input [7]: [product#70865, plant#70866, _extract_code#71432, _extract_internalRefUUID#71433, internalUUID#70919, baseUnitOfMeasure#70923, unitOfMeasureConversions#70925]
(1034) Generate
Input [2]: [plant#70866, filteredUnitOfMeasureConversions#70943]
Arguments: explode(filteredUnitOfMeasureConversions#70943.quantityNumerator), [plant#70866, filteredUnitOfMeasureConversions#70943], true, [quantityNumerator#70944]
(1035) Project
Output [2]: [plant#70866, filteredUnitOfMeasureConversions#70943.quantityDenominator AS _extract_quantityDenominator#71064]
Input [3]: [plant#70866, filteredUnitOfMeasureConversions#70943, quantityNumerator#70944]
(1036) Generate
Input [2]: [plant#70866, _extract_quantityDenominator#71064]
Arguments: explode(_extract_quantityDenominator#71064), [plant#70866], true, [quantityDenominator#70946]
(1037) Project
Output [1]: [plant#70866]
Input [2]: [plant#70866, quantityDenominator#70946]
(1038) HashAggregate
Input [1]: [plant#70866]
Keys [1]: [plant#70866]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70866]
(1039) Exchange
Input [1]: [plant#70866]
Arguments: hashpartitioning(plant#70866, 25), ENSURE_REQUIREMENTS, [plan_id=32679]
(1040) HashAggregate
Input [1]: [plant#70866]
Keys [1]: [plant#70866]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70866]
(1041) BroadcastHashJoin
Left keys [1]: [plantUuid#70858]
Right keys [1]: [plant#70866]
Join type: Inner
Join condition: None
(1042) Project
Output [2]: [plantUuid#70858 AS plant#70807, storageLocUuid#70862]
Input [3]: [plantUuid#70858, storageLocUuid#70862, plant#70866]
(1043) Sort
Input [2]: [plant#70807, storageLocUuid#70862]
Arguments: [plant#70807 ASC NULLS FIRST], false, 0
(1044) SortMergeJoin
Left keys [1]: [plant#69020]
Right keys [1]: [plant#70807]
Join type: Inner
Join condition: None
(1045) Project
Output [5]: [plant#69020, product#69019, timezonecode#69079, stockDatetime#69868, storageLocUuid#70862]
Input [6]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868, plant#70807, storageLocUuid#70862]
(1046) Filter
Input [6]: [internalUUID#70730, id#70731, supplier#70733, isMarkedForDeletion#70736, items#70737, systemId#70729]
Condition : (((isnotnull(isMarkedForDeletion#70736) AND NOT isMarkedForDeletion#70736) AND (size(items#70737, true) > 0)) AND isnotnull(items#70737))
(1047) Project
Output [4]: [internalUUID#70730, id#70731, supplier#70733, items#70737]
Input [6]: [internalUUID#70730, id#70731, supplier#70733, isMarkedForDeletion#70736, items#70737, systemId#70729]
(1048) Exchange
Input [4]: [internalUUID#70730, id#70731, supplier#70733, items#70737]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31618]
(1049) Generate
Input [4]: [internalUUID#70730, id#70731, supplier#70733, items#70737]
Arguments: explode(items#70737), [internalUUID#70730, id#70731, supplier#70733], false, [item#70753]
(1050) Filter
Input [4]: [internalUUID#70730, id#70731, supplier#70733, item#70753]
Condition : ((((isnotnull(item#70753.deletionIndicator) AND isnotnull(item#70753.completeIndicator)) AND isnotnull(item#70753.returnIndicator)) AND ((NOT item#70753.deletionIndicator AND NOT item#70753.completeIndicator) AND NOT item#70753.returnIndicator)) AND ((isnotnull(item#70753.product.internalRefUUID) AND isnotnull(item#70753.plant.internalRefUUID)) AND isnotnull(item#70753.storageLocation.internalRefUUID)))
(1051) Project
Output [14]: [id#70731, internalUUID#70730, supplier#70733.internalRefUUID AS supplierUuid#70747, item#70753.plant.internalRefUUID AS plant#70770, item#70753.product.internalRefUUID AS product#70773, item#70753.plant.id AS externalPlantId#70775, item#70753.product.id AS externalProductId#70777, item#70753.storageLocation.internalRefUUID AS storageLocUuid#70778, item#70753.quantityUnit.code AS quantityUom#70779, item#70753.quantityUnit.internalRefUUID AS quantityUomUuid#70780, item#70753.quantityNumerator AS quantityNumerator#70781, item#70753.quantityDenominator AS quantityDenominator#70782, item#70753.scheduleLines AS scheduleLines#70783, item#70753.confirmations AS confirmations#70784]
Input [4]: [internalUUID#70730, id#70731, supplier#70733, item#70753]
(1052) BroadcastExchange
Input [14]: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784]
Arguments: HashedRelationBroadcastMode(List(input[4, string, true], input[3, string, true], input[7, string, true]),false), [plan_id=32703]
(1053) BroadcastHashJoin
Left keys [3]: [product#69019, plant#69020, storageLocUuid#70862]
Right keys [3]: [product#70773, plant#70770, storageLocUuid#70778]
Join type: Inner
Join condition: None
(1054) Project
Output [17]: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784, stockDatetime#69868, timezonecode#69079, filter(confirmations#70784, lambdafunction(((NOT lambda x_2#70966.deletionIndicator AND lambda x_2#70966.isRelevantForConfirmation) AND isnotnull(lambda x_2#70966.confirmedDeliveryAt)), lambda x_2#70966, false)) AS validConfirmations#70963]
Input [19]: [plant#69020, product#69019, timezonecode#69079, stockDatetime#69868, storageLocUuid#70862, id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784]
(1055) AdaptiveSparkPlan
Output [17]: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784, stockDatetime#69868, timezonecode#69079, validConfirmations#70963]
Arguments: isFinalPlan=true
(1056) TableCacheQueryStage
Output [10]: [id#70731, internalUUID#70730, plant#70770, product#70773, quantityDenominator#70782, quantityNumerator#70781, quantityUom#70779, quantityUomUuid#70780, scheduleLines#70783, validConfirmations#70963]
Arguments: 0
(1057) Project [codegen id : 1]
Output [11]: [id#70731, internalUUID#70730, plant#70770, product#70773, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, validConfirmations#70963, size(validConfirmations#70963, false) AS _w0#75046]
Input [10]: [id#70731, internalUUID#70730, plant#70770, product#70773, quantityDenominator#70782, quantityNumerator#70781, quantityUom#70779, quantityUomUuid#70780, scheduleLines#70783, validConfirmations#70963]
(1058) Exchange
Input [11]: [id#70731, internalUUID#70730, plant#70770, product#70773, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, validConfirmations#70963, _w0#75046]
Arguments: hashpartitioning(internalUUID#70730, 25), ENSURE_REQUIREMENTS, [plan_id=129398]
(1059) ShuffleQueryStage
Output [11]: [id#70731, internalUUID#70730, plant#70770, product#70773, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, validConfirmations#70963, _w0#75046]
Arguments: 1
(1060) AQEShuffleRead
Input [11]: [id#70731, internalUUID#70730, plant#70770, product#70773, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, validConfirmations#70963, _w0#75046]
Arguments: coalesced
(1061) Sort [codegen id : 2]
Input [11]: [id#70731, internalUUID#70730, plant#70770, product#70773, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, validConfirmations#70963, _w0#75046]
Arguments: [internalUUID#70730 ASC NULLS FIRST], false, 0
(1062) Window
Input [11]: [id#70731, internalUUID#70730, plant#70770, product#70773, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, validConfirmations#70963, _w0#75046]
Arguments: [sum(_w0#75046) windowspecdefinition(internalUUID#70730, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#75049L], [internalUUID#70730]
(1063) Project
Output [3]: [plant#70770, product#70773, filter(transform(CASE WHEN (_we0#75049L > 0) THEN transform(validConfirmations#70963, lambdafunction(struct(openQty, greatest((lambda x_16#75039.confirmedQuantity - coalesce(lambda x_16#75039.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_16#75039.confirmedDeliveryAt), lambda x_16#75039, false)) ELSE transform(scheduleLines#70783, lambdafunction(struct(openQty, greatest((lambda x_15#75041.quantity - coalesce(lambda x_15#75041.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_15#75041.deliveryAt), lambda x_15#75041, false)) END, lambdafunction(struct(documentId, id#70731, documentUuid, internalUUID#70730, openQty, lambda x_17#75043.openQty, openQtyInBaseUnit, ((lambda x_17#75043.openQty * quantityNumerator#70781) / quantityDenominator#70782), qtyUom, quantityUom#70779, qtyUomUuid, quantityUomUuid#70780, availabilityDatetime, lambda x_17#75043.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_17#75043, false)), lambdafunction(NOT (lambda x_18#75045.openQty = 0.0), lambda x_18#75045, false)) AS openGoodsMovements#75035]
Input [12]: [id#70731, internalUUID#70730, plant#70770, product#70773, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, validConfirmations#70963, _w0#75046, _we0#75049L]
(1064) ObjectHashAggregate
Input [3]: [plant#70770, product#70773, openGoodsMovements#75035]
Keys [2]: [product#70773, plant#70770]
Functions [1]: [partial_collect_list(openGoodsMovements#75035, 0, 0)]
Aggregate Attributes [1]: [buf#75600]
Results [3]: [product#70773, plant#70770, buf#75601]
(1065) Exchange
Input [3]: [product#70773, plant#70770, buf#75601]
Arguments: hashpartitioning(product#70773, plant#70770, 25), ENSURE_REQUIREMENTS, [plan_id=129457]
(1066) ShuffleQueryStage
Output [3]: [product#70773, plant#70770, buf#75601]
Arguments: 2
(1067) ObjectHashAggregate
Input [3]: [product#70773, plant#70770, buf#75601]
Keys [2]: [product#70773, plant#70770]
Functions [1]: [collect_list(openGoodsMovements#75035, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#75035, 0, 0)#75088]
Results [3]: [product#70773, plant#70770, flatten(collect_list(openGoodsMovements#75035, 0, 0)#75088) AS openGoodsMovements#75050]
(1068) Filter [codegen id : 3]
Input [3]: [product#70773, plant#70770, openGoodsMovements#75050]
Condition : (size(openGoodsMovements#75050, false) > 0)
(1069) ResultQueryStage
Output [3]: [product#70773, plant#70770, openGoodsMovements#75050]
Arguments: 3
(1070) Project
Output [11]: [id#70731, internalUUID#70730, plant#70770, product#70773, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, validConfirmations#70963, size(validConfirmations#70963, false) AS _w0#75046]
Input [10]: [id#70731, internalUUID#70730, plant#70770, product#70773, quantityDenominator#70782, quantityNumerator#70781, quantityUom#70779, quantityUomUuid#70780, scheduleLines#70783, validConfirmations#70963]
(1071) Exchange
Input [11]: [id#70731, internalUUID#70730, plant#70770, product#70773, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, validConfirmations#70963, _w0#75046]
Arguments: hashpartitioning(internalUUID#70730, 25), ENSURE_REQUIREMENTS, [plan_id=32757]
(1072) Sort
Input [11]: [id#70731, internalUUID#70730, plant#70770, product#70773, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, validConfirmations#70963, _w0#75046]
Arguments: [internalUUID#70730 ASC NULLS FIRST], false, 0
(1073) Window
Input [11]: [id#70731, internalUUID#70730, plant#70770, product#70773, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, validConfirmations#70963, _w0#75046]
Arguments: [sum(_w0#75046) windowspecdefinition(internalUUID#70730, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#75049L], [internalUUID#70730]
(1074) Project
Output [3]: [plant#70770, product#70773, filter(transform(CASE WHEN (_we0#75049L > 0) THEN transform(validConfirmations#70963, lambdafunction(struct(openQty, greatest((lambda x_16#75039.confirmedQuantity - coalesce(lambda x_16#75039.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_16#75039.confirmedDeliveryAt), lambda x_16#75039, false)) ELSE transform(scheduleLines#70783, lambdafunction(struct(openQty, greatest((lambda x_15#75041.quantity - coalesce(lambda x_15#75041.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_15#75041.deliveryAt), lambda x_15#75041, false)) END, lambdafunction(struct(documentId, id#70731, documentUuid, internalUUID#70730, openQty, lambda x_17#75043.openQty, openQtyInBaseUnit, ((lambda x_17#75043.openQty * quantityNumerator#70781) / quantityDenominator#70782), qtyUom, quantityUom#70779, qtyUomUuid, quantityUomUuid#70780, availabilityDatetime, lambda x_17#75043.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_17#75043, false)), lambdafunction(NOT (lambda x_18#75045.openQty = 0.0), lambda x_18#75045, false)) AS openGoodsMovements#75035]
Input [12]: [id#70731, internalUUID#70730, plant#70770, product#70773, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, validConfirmations#70963, _w0#75046, _we0#75049L]
(1075) ObjectHashAggregate
Input [3]: [plant#70770, product#70773, openGoodsMovements#75035]
Keys [2]: [product#70773, plant#70770]
Functions [1]: [partial_collect_list(openGoodsMovements#75035, 0, 0)]
Aggregate Attributes [1]: [buf#75600]
Results [3]: [product#70773, plant#70770, buf#75601]
(1076) Exchange
Input [3]: [product#70773, plant#70770, buf#75601]
Arguments: hashpartitioning(product#70773, plant#70770, 25), ENSURE_REQUIREMENTS, [plan_id=32768]
(1077) ObjectHashAggregate
Input [3]: [product#70773, plant#70770, buf#75601]
Keys [2]: [product#70773, plant#70770]
Functions [1]: [collect_list(openGoodsMovements#75035, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#75035, 0, 0)#75088]
Results [3]: [product#70773, plant#70770, flatten(collect_list(openGoodsMovements#75035, 0, 0)#75088) AS openGoodsMovements#75050]
(1078) Filter
Input [3]: [product#70773, plant#70770, openGoodsMovements#75050]
Condition : (size(openGoodsMovements#75050, false) > 0)
(1079) AdaptiveSparkPlan
Output [3]: [product#70773, plant#70770, openGoodsMovements#75050]
Arguments: isFinalPlan=true
(1080) TableCacheQueryStage
Output [3]: [product#70773, plant#70770, openGoodsMovements#75050]
Arguments: 87
(1081) Filter [codegen id : 196]
Input [3]: [product#70773, plant#70770, openGoodsMovements#75050]
Condition : (isnotnull(product#70773) AND isnotnull(plant#70770))
(1082) ObjectHashAggregate
Input [3]: [product#70773, plant#70770, openGoodsMovements#75050]
Keys [2]: [product#70773, plant#70770]
Functions [1]: [partial_collect_list(openGoodsMovements#75050, 0, 0)]
Aggregate Attributes [1]: [buf#81828]
Results [3]: [product#70773, plant#70770, buf#81829]
(1083) ObjectHashAggregate
Input [3]: [product#70773, plant#70770, buf#81829]
Keys [2]: [product#70773, plant#70770]
Functions [1]: [collect_list(openGoodsMovements#75050, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#75050, 0, 0)#77179]
Results [3]: [product#70773, plant#70770, flatten(collect_list(openGoodsMovements#75050, 0, 0)#77179) AS openGoodsMovements#77170]
(1084) Project [codegen id : 197]
Output [5]: [product#70773, plant#70770, openGoodsMovements#77170.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#79909, openGoodsMovements#77170.availabilityDatetime AS _extract_availabilityDatetime#79910, openGoodsMovements#77170.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#79911]
Input [3]: [product#70773, plant#70770, openGoodsMovements#77170]
(1085) BroadcastExchange
Input [5]: [product#70773, plant#70770, _extract_openQtyInBaseUnit#79909, _extract_availabilityDatetime#79910, _extract_shelfLifeEndDatetime#79911]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=189339]
(1086) BroadcastQueryStage
Output [5]: [product#70773, plant#70770, _extract_openQtyInBaseUnit#79909, _extract_availabilityDatetime#79910, _extract_shelfLifeEndDatetime#79911]
Arguments: 369
(1087) BroadcastHashJoin [codegen id : 198]
Left keys [2]: [product#69019, plant#69020]
Right keys [2]: [product#70773, plant#70770]
Join type: LeftOuter
Join condition: None
(1088) Project [codegen id : 198]
Output [16]: [product#69019, plant#69020, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#69871, dayBucketDemands#69975, pointInTimeDemands#69976, coalesce(_extract_openQtyInBaseUnit#79909, []) AS openGoodsMovementQuantities#78608, coalesce(_extract_availabilityDatetime#79910, []) AS openGoodsMovementAvailabilityDatetimes#78609, coalesce(_extract_shelfLifeEndDatetime#79911, []) AS openGoodsMovementShelfLifeEndDatetimes#78610, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#78818, concat([ListingPeriod], CASE WHEN isnotnull(_extract_minimumSafetyStock#80225) THEN [MinStock] ELSE [] END) AS timeDependentSettingsName#79226, concat([-2208988800000000], CASE WHEN isnotnull(_extract_minimumSafetyStock#80225) THEN [-2208988800000000] ELSE [] END) AS timeDependentSettingsStartDatetime#79228, concat([7226582400000000], CASE WHEN isnotnull(_extract_minimumSafetyStock#80225) THEN [7226582400000000] ELSE [] END) AS timeDependentSettingsEndDatetime#79260, concat([1.0], CASE WHEN isnotnull(_extract_minimumSafetyStock#80225) THEN array(_extract_minimumSafetyStock#80225) ELSE [] END) AS timeDependentSettingsValue#79262]
Input [13]: [product#69019, plant#69020, _extract_minimumSafetyStock#80225, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, dayBucketDemands#69975, pointInTimeDemands#69976, product#70773, plant#70770, _extract_openQtyInBaseUnit#79909, _extract_availabilityDatetime#79910, _extract_shelfLifeEndDatetime#79911]
(1089) ResultQueryStage
Output [16]: [product#69019, plant#69020, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871, dayBucketDemands#69975, pointInTimeDemands#69976, openGoodsMovementQuantities#78608, openGoodsMovementAvailabilityDatetimes#78609, openGoodsMovementShelfLifeEndDatetimes#78610, configuration#78818, timeDependentSettingsName#79226, timeDependentSettingsStartDatetime#79228, timeDependentSettingsEndDatetime#79260, timeDependentSettingsValue#79262]
Arguments: 371
(1090) Exchange
Input [3]: [product#69019, plant#69020, orderDateTime#69021]
Arguments: hashpartitioning(product#69019, plant#69020, 25), REPARTITION_BY_NUM, [plan_id=43121]
(1091) Project
Output [8]: [systemId#69025, internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040]
Input [8]: [internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040, systemId#69025]
(1092) Exchange
Input [8]: [systemId#69025, internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43124]
(1093) Project
Output [1]: [struct(systemId, systemId#69025, internalUUID, internalUUID#69027, plant, plant#69029, product, product#69031, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69034, productionAspect, productionAspect#69036, salesPlant, salesPlant#69038, listing, listing#69040) AS productPlant#69044]
Input [8]: [systemId#69025, internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040]
(1094) BroadcastExchange
Input [1]: [productPlant#69044]
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=44267]
(1095) BroadcastHashJoin
Left keys [4]: [coalesce(product#69019, ), isnull(product#69019), coalesce(plant#69020, ), isnull(plant#69020)]
Right keys [4]: [coalesce(productPlant#69044.product.internalRefUUID, ), isnull(productPlant#69044.product.internalRefUUID), coalesce(productPlant#69044.plant.internalRefUUID, ), isnull(productPlant#69044.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1096) Project
Output [1]: [internalUUID#69062]
Input [2]: [internalUUID#69062, systemId#69061]
(1097) Exchange
Input [1]: [internalUUID#69062]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43129]
(1098) BroadcastExchange
Input [1]: [internalUUID#69062]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=44270]
(1099) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69020, ), isnull(plant#69020)]
Right keys [2]: [coalesce(internalUUID#69062, ), isnull(internalUUID#69062)]
Join type: LeftOuter
Join condition: None
(1100) Project
Output [4]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044]
Input [5]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, internalUUID#69062]
(1101) Filter
Input [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
Condition : isnotnull(internalUUID#69094)
(1102) Project
Output [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Input [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
(1103) Exchange
Input [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43135]
(1104) BroadcastExchange
Input [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=44274]
(1105) BroadcastHashJoin
Left keys [1]: [product#69019]
Right keys [1]: [internalUUID#69094]
Join type: LeftOuter
Join condition: None
(1106) Project
Output [5]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, filter(unitOfMeasureConversions#69100, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#69044.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#69044.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69098.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69098.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69107]
Input [7]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
(1107) Project
Output [6]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, filteredUnitOfMeasureConversions#69107.quantityDenominator AS _extract_quantityDenominator#79912, filteredUnitOfMeasureConversions#69107.quantityNumerator AS _extract_quantityNumerator#79913]
Input [5]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, filteredUnitOfMeasureConversions#69107]
(1108) Generate
Input [6]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, _extract_quantityDenominator#79912, _extract_quantityNumerator#79913]
Arguments: explode(_extract_quantityNumerator#79913), [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, _extract_quantityDenominator#79912], true, [quantityNumerator#69124]
(1109) Generate
Input [6]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, _extract_quantityDenominator#79912, quantityNumerator#69124]
Arguments: explode(_extract_quantityDenominator#79912), [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, quantityNumerator#69124], true, [quantityDenominator#69129]
(1110) Project
Output [5]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, (cast(quantityNumerator#69124 as double) / cast(quantityDenominator#69129 as double)) AS outboundUnit#69131]
Input [6]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, quantityNumerator#69124, quantityDenominator#69129]
(1111) Project
Output [5]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044.productionAspect.productPlanningPlants.minimumSafetyStock AS _extract_minimumSafetyStock#80225, CASE WHEN (isnull(outboundUnit#69131) OR (outboundUnit#69131 <= 0.0)) THEN 1.0 ELSE outboundUnit#69131 END AS outboundUnit#69134]
Input [5]: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, outboundUnit#69131]
(1112) Sort
Input [5]: [product#69019, plant#69020, orderDateTime#69021, _extract_minimumSafetyStock#80225, outboundUnit#69134]
Arguments: [product#69019 ASC NULLS FIRST, plant#69020 ASC NULLS FIRST], false, 0
(1113) Filter
Input [6]: [internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, systemId#69257]
Condition : (isnotnull(plant#69260.internalRefUUID) AND isnotnull(product#69259.internalRefUUID))
(1114) Project
Output [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
Input [6]: [internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, systemId#69257]
(1115) Exchange
Input [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43146]
(1116) BroadcastExchange
Input [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
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=44306]
(1117) Filter
Input [2]: [marketUnit#69135, distributionCenters#69141]
Condition : (((marketUnit#69135 <=> Daily_grocery) AND (size(distributionCenters#69141, true) > 0)) AND isnotnull(distributionCenters#69141))
(1118) Project
Output [1]: [distributionCenters#69141]
Input [2]: [marketUnit#69135, distributionCenters#69141]
(1119) Exchange
Input [1]: [distributionCenters#69141]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43150]
(1120) Generate
Input [1]: [distributionCenters#69141]
Arguments: explode(distributionCenters#69141), false, [distributionCenters#69183]
(1121) Filter
Input [1]: [distributionCenters#69183]
Condition : (((size(distributionCenters#69183.storageLocations, true) > 0) AND isnotnull(distributionCenters#69183.storageLocations)) AND isnotnull(distributionCenters#69183.internalRefUUID))
(1122) Project
Output [2]: [distributionCenters#69183.internalRefUUID AS _extract_internalRefUUID#79820, distributionCenters#69183.storageLocations AS _extract_storageLocations#79821]
Input [1]: [distributionCenters#69183]
(1123) Generate
Input [2]: [_extract_internalRefUUID#79820, _extract_storageLocations#79821]
Arguments: explode(_extract_storageLocations#79821), [_extract_internalRefUUID#79820], false, [storageLocations#69197]
(1124) Project
Output [3]: [_extract_internalRefUUID#79820 AS plantUuid#69186, storageLocations#69197.id AS storageLocId#69199, storageLocations#69197.internalRefUUID AS storageLocUuid#69200]
Input [2]: [_extract_internalRefUUID#79820, storageLocations#69197]
(1125) BroadcastExchange
Input [3]: [plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=44302]
(1126) Filter
Input [2]: [product#69771, plant#69772]
Condition : isnotnull(plant#69772)
(1127) Exchange
Input [2]: [product#69771, plant#69772]
Arguments: hashpartitioning(product#69771, plant#69772, 25), REPARTITION_BY_NUM, [plan_id=43907]
(1128) Project
Output [4]: [plant#69777.internalRefUUID AS _extract_internalRefUUID#80158, product#69778.internalRefUUID AS _extract_internalRefUUID#80157, productionAspect#69780.productMovementPlants.unitOfIssue.code AS _extract_code#80159, productionAspect#69780.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#80160]
Input [4]: [plant#69777, product#69778, productionAspect#69780, systemId#69775]
(1129) Exchange
Input [4]: [_extract_internalRefUUID#80158, _extract_internalRefUUID#80157, _extract_code#80159, _extract_internalRefUUID#80160]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43162]
(1130) Project
Output [4]: [_extract_code#80159, _extract_internalRefUUID#80160, _extract_internalRefUUID#80157, _extract_internalRefUUID#80158]
Input [4]: [_extract_internalRefUUID#80158, _extract_internalRefUUID#80157, _extract_code#80159, _extract_internalRefUUID#80160]
(1131) BroadcastExchange
Input [4]: [_extract_code#80159, _extract_internalRefUUID#80160, _extract_internalRefUUID#80157, _extract_internalRefUUID#80158]
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=44282]
(1132) BroadcastHashJoin
Left keys [4]: [coalesce(product#69771, ), isnull(product#69771), coalesce(plant#69772, ), isnull(plant#69772)]
Right keys [4]: [coalesce(_extract_internalRefUUID#80157, ), isnull(_extract_internalRefUUID#80157), coalesce(_extract_internalRefUUID#80158, ), isnull(_extract_internalRefUUID#80158)]
Join type: LeftOuter
Join condition: None
(1133) Project
Output [4]: [product#69771, plant#69772, _extract_code#80159, _extract_internalRefUUID#80160]
Input [6]: [product#69771, plant#69772, _extract_code#80159, _extract_internalRefUUID#80160, _extract_internalRefUUID#80157, _extract_internalRefUUID#80158]
(1134) Scan parquet
Output [2]: [internalUUID#69798, systemId#69797]
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>
(1135) Project
Output [1]: [internalUUID#69798]
Input [2]: [internalUUID#69798, systemId#69797]
(1136) Exchange
Input [1]: [internalUUID#69798]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43168]
(1137) BroadcastExchange
Input [1]: [internalUUID#69798]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=44286]
(1138) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69772, ), isnull(plant#69772)]
Right keys [2]: [coalesce(internalUUID#69798, ), isnull(internalUUID#69798)]
Join type: LeftOuter
Join condition: None
(1139) Project
Output [4]: [product#69771, plant#69772, _extract_code#80159, _extract_internalRefUUID#80160]
Input [5]: [product#69771, plant#69772, _extract_code#80159, _extract_internalRefUUID#80160, internalUUID#69798]
(1140) Scan parquet
Output [4]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832, systemId#69825]
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>>>
(1141) Filter
Input [4]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832, systemId#69825]
Condition : isnotnull(internalUUID#69826)
(1142) Project
Output [3]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832]
Input [4]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832, systemId#69825]
(1143) Exchange
Input [3]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43174]
(1144) BroadcastExchange
Input [3]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=44290]
(1145) BroadcastHashJoin
Left keys [1]: [product#69771]
Right keys [1]: [internalUUID#69826]
Join type: LeftOuter
Join condition: None
(1146) Project
Output [2]: [plant#69772, filter(unitOfMeasureConversions#69832, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#80159) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#80160)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69830.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69830.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69849]
Input [7]: [product#69771, plant#69772, _extract_code#80159, _extract_internalRefUUID#80160, internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832]
(1147) Generate
Input [2]: [plant#69772, filteredUnitOfMeasureConversions#69849]
Arguments: explode(filteredUnitOfMeasureConversions#69849.quantityNumerator), [plant#69772, filteredUnitOfMeasureConversions#69849], true, [quantityNumerator#69851]
(1148) Project
Output [2]: [plant#69772, filteredUnitOfMeasureConversions#69849.quantityDenominator AS _extract_quantityDenominator#79822]
Input [3]: [plant#69772, filteredUnitOfMeasureConversions#69849, quantityNumerator#69851]
(1149) Generate
Input [2]: [plant#69772, _extract_quantityDenominator#79822]
Arguments: explode(_extract_quantityDenominator#79822), [plant#69772], true, [quantityDenominator#69854]
(1150) Project
Output [1]: [plant#69772]
Input [2]: [plant#69772, quantityDenominator#69854]
(1151) HashAggregate
Input [1]: [plant#69772]
Keys [1]: [plant#69772]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69772]
(1152) Exchange
Input [1]: [plant#69772]
Arguments: hashpartitioning(plant#69772, 25), ENSURE_REQUIREMENTS, [plan_id=44299]
(1153) HashAggregate
Input [1]: [plant#69772]
Keys [1]: [plant#69772]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69772]
(1154) BroadcastHashJoin
Left keys [1]: [plantUuid#69186]
Right keys [1]: [plant#69772]
Join type: Inner
Join condition: None
(1155) Project
Output [3]: [plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
Input [4]: [plantUuid#69186, storageLocId#69199, storageLocUuid#69200, plant#69772]
(1156) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69260.internalRefUUID, ), isnull(plant#69260.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#69186, ), isnull(plantUuid#69186)]
Join type: Inner
Join condition: None
(1157) Generate
Input [9]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
Arguments: explode(filter(stockQuantities#69262, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#69200) AND (lambda x#69269.storageLocation.Id = storageLocId#69199)), lambda x#69269, false))), [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, plantUuid#69186], false, [stockQuantity#69272]
(1158) ObjectHashAggregate
Input [7]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, plantUuid#69186, stockQuantity#69272]
Keys [5]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257]
Functions [2]: [partial_first(calculationDateTime#69261, false), partial_collect_list(stockQuantity#69272, 0, 0)]
Aggregate Attributes [3]: [first#73924, valueSet#73925, buf#73926]
Results [8]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257, first#73927, valueSet#73928, buf#73929]
(1159) ObjectHashAggregate
Input [8]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257, first#73927, valueSet#73928, buf#73929]
Keys [5]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257]
Functions [2]: [first(calculationDateTime#69261, false), collect_list(stockQuantity#69272, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#69261)()#69286, collect_list(stockQuantity#69272, 0, 0)#69287]
Results [4]: [product#69259, plant#69260, first(calculationDateTime#69261)()#69286 AS calculationDateTime#69273, collect_list(stockQuantity#69272, 0, 0)#69287 AS stockQuantities#69274]
(1160) Filter
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantities#69274]
Condition : ((size(stockQuantities#69274, true) > 0) AND isnotnull(calculationDateTime#69273))
(1161) Generate
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantities#69274]
Arguments: explode(stockQuantities#69274), [product#69259, plant#69260, calculationDateTime#69273], false, [stockQuantity#69289]
(1162) Filter
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantity#69289]
Condition : (((isnotnull(stockQuantity#69289.specialStockIndicator.code) AND isnotnull(stockQuantity#69289.stockType.code)) AND (stockQuantity#69289.specialStockIndicator.code = )) AND (stockQuantity#69289.stockType.code = 01))
(1163) Project
Output [5]: [plant#69260.internalRefUUID AS plantUuid#69291, product#69259.internalRefUUID AS productUuid#69293, calculationDateTime#69273, stockQuantity#69289.storagelocation.id AS storageLocId#69294, stockQuantity#69289.quantity.measure AS quantity#69296]
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantity#69289]
(1164) Exchange
Input [5]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294, quantity#69296]
Arguments: hashpartitioning(productUuid#69293, plantUuid#69291, 25), ENSURE_REQUIREMENTS, [plan_id=44332]
(1165) Sort
Input [5]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294, quantity#69296]
Arguments: [productUuid#69293 ASC NULLS FIRST, plantUuid#69291 ASC NULLS FIRST], false, 0
(1166) Filter
Input [3]: [product#69323, plant#69324, orderDateTime#69325]
Condition : ((isnotnull(orderDateTime#69325) AND isnotnull(plant#69324)) AND isnotnull(product#69323))
(1167) Exchange
Input [3]: [product#69323, plant#69324, orderDateTime#69325]
Arguments: hashpartitioning(product#69323, plant#69324, 25), REPARTITION_BY_NUM, [plan_id=43930]
(1168) Scan parquet
Output [4]: [plant#69329, product#69330, productionAspect#69332, systemId#69327]
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>>>>
(1169) Project
Output [4]: [plant#69329.internalRefUUID AS _extract_internalRefUUID#80163, product#69330.internalRefUUID AS _extract_internalRefUUID#80164, productionAspect#69332.productMovementPlants.unitOfIssue.code AS _extract_code#80161, productionAspect#69332.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#80162]
Input [4]: [plant#69329, product#69330, productionAspect#69332, systemId#69327]
(1170) Exchange
Input [4]: [_extract_internalRefUUID#80163, _extract_internalRefUUID#80164, _extract_code#80161, _extract_internalRefUUID#80162]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43199]
(1171) Project
Output [4]: [_extract_code#80161, _extract_internalRefUUID#80162, _extract_internalRefUUID#80164, _extract_internalRefUUID#80163]
Input [4]: [_extract_internalRefUUID#80163, _extract_internalRefUUID#80164, _extract_code#80161, _extract_internalRefUUID#80162]
(1172) BroadcastExchange
Input [4]: [_extract_code#80161, _extract_internalRefUUID#80162, _extract_internalRefUUID#80164, _extract_internalRefUUID#80163]
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=44315]
(1173) BroadcastHashJoin
Left keys [4]: [coalesce(product#69323, ), isnull(product#69323), coalesce(plant#69324, ), isnull(plant#69324)]
Right keys [4]: [coalesce(_extract_internalRefUUID#80164, ), isnull(_extract_internalRefUUID#80164), coalesce(_extract_internalRefUUID#80163, ), isnull(_extract_internalRefUUID#80163)]
Join type: LeftOuter
Join condition: None
(1174) Project
Output [5]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#80161, _extract_internalRefUUID#80162]
Input [7]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#80161, _extract_internalRefUUID#80162, _extract_internalRefUUID#80164, _extract_internalRefUUID#80163]
(1175) Scan parquet
Output [2]: [internalUUID#69338, systemId#69337]
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>
(1176) Project
Output [1]: [internalUUID#69338]
Input [2]: [internalUUID#69338, systemId#69337]
(1177) Exchange
Input [1]: [internalUUID#69338]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43205]
(1178) BroadcastExchange
Input [1]: [internalUUID#69338]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=44319]
(1179) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69324, ), isnull(plant#69324)]
Right keys [2]: [coalesce(internalUUID#69338, ), isnull(internalUUID#69338)]
Join type: LeftOuter
Join condition: None
(1180) Project
Output [5]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#80161, _extract_internalRefUUID#80162]
Input [6]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#80161, _extract_internalRefUUID#80162, internalUUID#69338]
(1181) Scan parquet
Output [4]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358, systemId#69351]
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>>>
(1182) Filter
Input [4]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358, systemId#69351]
Condition : isnotnull(internalUUID#69352)
(1183) Project
Output [3]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358]
Input [4]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358, systemId#69351]
(1184) Exchange
Input [3]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43211]
(1185) BroadcastExchange
Input [3]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=44323]
(1186) BroadcastHashJoin
Left keys [1]: [product#69323]
Right keys [1]: [internalUUID#69352]
Join type: LeftOuter
Join condition: None
(1187) Project
Output [4]: [product#69323, plant#69324, orderDateTime#69325, filter(unitOfMeasureConversions#69358, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#80161) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#80162)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69356.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69356.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69363]
Input [8]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#80161, _extract_internalRefUUID#80162, internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358]
(1188) Generate
Input [4]: [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363]
Arguments: explode(filteredUnitOfMeasureConversions#69363.quantityNumerator), [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363], true, [quantityNumerator#69364]
(1189) Project
Output [4]: [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363.quantityDenominator AS _extract_quantityDenominator#79826]
Input [5]: [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363, quantityNumerator#69364]
(1190) Generate
Input [4]: [product#69323, plant#69324, orderDateTime#69325, _extract_quantityDenominator#79826]
Arguments: explode(_extract_quantityDenominator#79826), [product#69323, plant#69324, orderDateTime#69325], true, [quantityDenominator#69365]
(1191) Project
Output [3]: [product#69323, plant#69324, orderDateTime#69325]
Input [4]: [product#69323, plant#69324, orderDateTime#69325, quantityDenominator#69365]
(1192) Sort
Input [3]: [product#69323, plant#69324, orderDateTime#69325]
Arguments: [product#69323 ASC NULLS FIRST, plant#69324 ASC NULLS FIRST], false, 0
(1193) SortMergeJoin
Left keys [2]: [productUuid#69293, plantUuid#69291]
Right keys [2]: [product#69323, plant#69324]
Join type: Inner
Join condition: (calculationDateTime#69273 <= orderDateTime#69325)
(1194) Project
Output [5]: [plantUuid#69291 AS plant#69435, productUuid#69293 AS product#69436, storageLocId#69294, calculationDateTime#69273, quantity#69296]
Input [8]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294, quantity#69296, product#69323, plant#69324, orderDateTime#69325]
(1195) Exchange
Input [5]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273, quantity#69296]
Arguments: hashpartitioning(coalesce(plant#69435, ), isnull(plant#69435), coalesce(product#69436, ), isnull(product#69436), coalesce(storageLocId#69294, ), isnull(storageLocId#69294), coalesce(calculationDateTime#69273, 1970-01-01 00:00:00), isnull(calculationDateTime#69273), 25), ENSURE_REQUIREMENTS, [plan_id=44403]
(1196) Sort
Input [5]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273, quantity#69296]
Arguments: [coalesce(plant#69435, ) ASC NULLS FIRST, isnull(plant#69435) ASC NULLS FIRST, coalesce(product#69436, ) ASC NULLS FIRST, isnull(product#69436) ASC NULLS FIRST, coalesce(storageLocId#69294, ) ASC NULLS FIRST, isnull(storageLocId#69294) ASC NULLS FIRST, coalesce(calculationDateTime#69273, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#69273) ASC NULLS FIRST], false, 0
(1197) Scan parquet
Output [6]: [internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462, systemId#69457]
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>>>>>
(1198) Filter
Input [6]: [internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462, systemId#69457]
Condition : (isnotnull(plant#69460.internalRefUUID) AND isnotnull(product#69459.internalRefUUID))
(1199) Project
Output [6]: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462]
Input [6]: [internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462, systemId#69457]
(1200) Exchange
Input [6]: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43223]
(1201) BroadcastExchange
Input [6]: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462]
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=44361]
(1202) Scan parquet
Output [2]: [marketUnit#69463, distributionCenters#69469]
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>>>>>
(1203) Filter
Input [2]: [marketUnit#69463, distributionCenters#69469]
Condition : (((marketUnit#69463 <=> Daily_grocery) AND (size(distributionCenters#69469, true) > 0)) AND isnotnull(distributionCenters#69469))
(1204) Project
Output [1]: [distributionCenters#69469]
Input [2]: [marketUnit#69463, distributionCenters#69469]
(1205) Exchange
Input [1]: [distributionCenters#69469]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43227]
(1206) Generate
Input [1]: [distributionCenters#69469]
Arguments: explode(distributionCenters#69469), false, [distributionCenters#69485]
(1207) Filter
Input [1]: [distributionCenters#69485]
Condition : (((size(distributionCenters#69485.storageLocations, true) > 0) AND isnotnull(distributionCenters#69485.storageLocations)) AND isnotnull(distributionCenters#69485.internalRefUUID))
(1208) Project
Output [2]: [distributionCenters#69485.internalRefUUID AS _extract_internalRefUUID#79830, distributionCenters#69485.storageLocations AS _extract_storageLocations#79831]
Input [1]: [distributionCenters#69485]
(1209) Generate
Input [2]: [_extract_internalRefUUID#79830, _extract_storageLocations#79831]
Arguments: explode(_extract_storageLocations#79831), [_extract_internalRefUUID#79830], false, [storageLocations#69486]
(1210) Project
Output [3]: [_extract_internalRefUUID#79830 AS plantUuid#69488, storageLocations#69486.id AS storageLocId#69489, storageLocations#69486.internalRefUUID AS storageLocUuid#69490]
Input [2]: [_extract_internalRefUUID#79830, storageLocations#69486]
(1211) BroadcastExchange
Input [3]: [plantUuid#69488, storageLocId#69489, storageLocUuid#69490]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=44357]
(1212) Scan parquet
Output [2]: [product#69491, plant#69492]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1213) Filter
Input [2]: [product#69491, plant#69492]
Condition : isnotnull(plant#69492)
(1214) Exchange
Input [2]: [product#69491, plant#69492]
Arguments: hashpartitioning(product#69491, plant#69492, 25), REPARTITION_BY_NUM, [plan_id=43943]
(1215) Scan parquet
Output [4]: [plant#69497, product#69498, productionAspect#69500, systemId#69495]
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>>>>
(1216) Project
Output [4]: [plant#69497.internalRefUUID AS _extract_internalRefUUID#80168, product#69498.internalRefUUID AS _extract_internalRefUUID#80167, productionAspect#69500.productMovementPlants.unitOfIssue.code AS _extract_code#80165, productionAspect#69500.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#80166]
Input [4]: [plant#69497, product#69498, productionAspect#69500, systemId#69495]
(1217) Exchange
Input [4]: [_extract_internalRefUUID#80168, _extract_internalRefUUID#80167, _extract_code#80165, _extract_internalRefUUID#80166]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43239]
(1218) Project
Output [4]: [_extract_code#80165, _extract_internalRefUUID#80166, _extract_internalRefUUID#80167, _extract_internalRefUUID#80168]
Input [4]: [_extract_internalRefUUID#80168, _extract_internalRefUUID#80167, _extract_code#80165, _extract_internalRefUUID#80166]
(1219) BroadcastExchange
Input [4]: [_extract_code#80165, _extract_internalRefUUID#80166, _extract_internalRefUUID#80167, _extract_internalRefUUID#80168]
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=44337]
(1220) BroadcastHashJoin
Left keys [4]: [coalesce(product#69491, ), isnull(product#69491), coalesce(plant#69492, ), isnull(plant#69492)]
Right keys [4]: [coalesce(_extract_internalRefUUID#80167, ), isnull(_extract_internalRefUUID#80167), coalesce(_extract_internalRefUUID#80168, ), isnull(_extract_internalRefUUID#80168)]
Join type: LeftOuter
Join condition: None
(1221) Project
Output [4]: [product#69491, plant#69492, _extract_code#80165, _extract_internalRefUUID#80166]
Input [6]: [product#69491, plant#69492, _extract_code#80165, _extract_internalRefUUID#80166, _extract_internalRefUUID#80167, _extract_internalRefUUID#80168]
(1222) Scan parquet
Output [2]: [internalUUID#69505, systemId#69504]
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>
(1223) Project
Output [1]: [internalUUID#69505]
Input [2]: [internalUUID#69505, systemId#69504]
(1224) Exchange
Input [1]: [internalUUID#69505]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43245]
(1225) BroadcastExchange
Input [1]: [internalUUID#69505]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=44341]
(1226) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69492, ), isnull(plant#69492)]
Right keys [2]: [coalesce(internalUUID#69505, ), isnull(internalUUID#69505)]
Join type: LeftOuter
Join condition: None
(1227) Project
Output [4]: [product#69491, plant#69492, _extract_code#80165, _extract_internalRefUUID#80166]
Input [5]: [product#69491, plant#69492, _extract_code#80165, _extract_internalRefUUID#80166, internalUUID#69505]
(1228) Scan parquet
Output [4]: [internalUUID#69519, baseUnitOfMeasure#69523, unitOfMeasureConversions#69525, systemId#69518]
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>>>
(1229) Filter
Input [4]: [internalUUID#69519, baseUnitOfMeasure#69523, unitOfMeasureConversions#69525, systemId#69518]
Condition : isnotnull(internalUUID#69519)
(1230) Project
Output [3]: [internalUUID#69519, baseUnitOfMeasure#69523, unitOfMeasureConversions#69525]
Input [4]: [internalUUID#69519, baseUnitOfMeasure#69523, unitOfMeasureConversions#69525, systemId#69518]
(1231) Exchange
Input [3]: [internalUUID#69519, baseUnitOfMeasure#69523, unitOfMeasureConversions#69525]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43251]
(1232) BroadcastExchange
Input [3]: [internalUUID#69519, baseUnitOfMeasure#69523, unitOfMeasureConversions#69525]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=44345]
(1233) BroadcastHashJoin
Left keys [1]: [product#69491]
Right keys [1]: [internalUUID#69519]
Join type: LeftOuter
Join condition: None
(1234) Project
Output [2]: [plant#69492, filter(unitOfMeasureConversions#69525, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#80165) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#80166)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69523.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69523.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69530]
Input [7]: [product#69491, plant#69492, _extract_code#80165, _extract_internalRefUUID#80166, internalUUID#69519, baseUnitOfMeasure#69523, unitOfMeasureConversions#69525]
(1235) Generate
Input [2]: [plant#69492, filteredUnitOfMeasureConversions#69530]
Arguments: explode(filteredUnitOfMeasureConversions#69530.quantityNumerator), [plant#69492, filteredUnitOfMeasureConversions#69530], true, [quantityNumerator#69531]
(1236) Project
Output [2]: [plant#69492, filteredUnitOfMeasureConversions#69530.quantityDenominator AS _extract_quantityDenominator#79832]
Input [3]: [plant#69492, filteredUnitOfMeasureConversions#69530, quantityNumerator#69531]
(1237) Generate
Input [2]: [plant#69492, _extract_quantityDenominator#79832]
Arguments: explode(_extract_quantityDenominator#79832), [plant#69492], true, [quantityDenominator#69532]
(1238) Project
Output [1]: [plant#69492]
Input [2]: [plant#69492, quantityDenominator#69532]
(1239) HashAggregate
Input [1]: [plant#69492]
Keys [1]: [plant#69492]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69492]
(1240) Exchange
Input [1]: [plant#69492]
Arguments: hashpartitioning(plant#69492, 25), ENSURE_REQUIREMENTS, [plan_id=44354]
(1241) HashAggregate
Input [1]: [plant#69492]
Keys [1]: [plant#69492]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69492]
(1242) BroadcastHashJoin
Left keys [1]: [plantUuid#69488]
Right keys [1]: [plant#69492]
Join type: Inner
Join condition: None
(1243) Project
Output [3]: [plantUuid#69488, storageLocId#69489, storageLocUuid#69490]
Input [4]: [plantUuid#69488, storageLocId#69489, storageLocUuid#69490, plant#69492]
(1244) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69460.internalRefUUID, ), isnull(plant#69460.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#69488, ), isnull(plantUuid#69488)]
Join type: Inner
Join condition: None
(1245) Generate
Input [9]: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462, plantUuid#69488, storageLocId#69489, storageLocUuid#69490]
Arguments: explode(filter(stockQuantities#69462, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#69490) AND (lambda x#69269.storageLocation.Id = storageLocId#69489)), lambda x#69269, false))), [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, plantUuid#69488], false, [stockQuantity#69535]
(1246) ObjectHashAggregate
Input [7]: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, plantUuid#69488, stockQuantity#69535]
Keys [5]: [plantUuid#69488, internalUUID#69458, plant#69460, product#69459, systemId#69457]
Functions [2]: [partial_first(calculationDateTime#69461, false), partial_collect_list(stockQuantity#69535, 0, 0)]
Aggregate Attributes [3]: [first#73934, valueSet#73935, buf#73936]
Results [8]: [plantUuid#69488, internalUUID#69458, plant#69460, product#69459, systemId#69457, first#73937, valueSet#73938, buf#73939]
(1247) ObjectHashAggregate
Input [8]: [plantUuid#69488, internalUUID#69458, plant#69460, product#69459, systemId#69457, first#73937, valueSet#73938, buf#73939]
Keys [5]: [plantUuid#69488, internalUUID#69458, plant#69460, product#69459, systemId#69457]
Functions [2]: [first(calculationDateTime#69461, false), collect_list(stockQuantity#69535, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#69461)()#69286, collect_list(stockQuantity#69535, 0, 0)#69287]
Results [4]: [product#69459, plant#69460, first(calculationDateTime#69461)()#69286 AS calculationDateTime#69536, collect_list(stockQuantity#69535, 0, 0)#69287 AS stockQuantities#69537]
(1248) Filter
Input [4]: [product#69459, plant#69460, calculationDateTime#69536, stockQuantities#69537]
Condition : ((size(stockQuantities#69537, true) > 0) AND isnotnull(calculationDateTime#69536))
(1249) Generate
Input [4]: [product#69459, plant#69460, calculationDateTime#69536, stockQuantities#69537]
Arguments: explode(stockQuantities#69537), [product#69459, plant#69460, calculationDateTime#69536], false, [stockQuantity#69538]
(1250) Filter
Input [4]: [product#69459, plant#69460, calculationDateTime#69536, stockQuantity#69538]
Condition : (((isnotnull(stockQuantity#69538.specialStockIndicator.code) AND isnotnull(stockQuantity#69538.stockType.code)) AND (stockQuantity#69538.specialStockIndicator.code = )) AND (stockQuantity#69538.stockType.code = 01))
(1251) Project
Output [4]: [plant#69460.internalRefUUID AS plantUuid#69540, product#69459.internalRefUUID AS productUuid#69542, calculationDateTime#69536, stockQuantity#69538.storagelocation.id AS storageLocId#69543]
Input [4]: [product#69459, plant#69460, calculationDateTime#69536, stockQuantity#69538]
(1252) Exchange
Input [4]: [plantUuid#69540, productUuid#69542, calculationDateTime#69536, storageLocId#69543]
Arguments: hashpartitioning(productUuid#69542, plantUuid#69540, 25), ENSURE_REQUIREMENTS, [plan_id=44387]
(1253) Sort
Input [4]: [plantUuid#69540, productUuid#69542, calculationDateTime#69536, storageLocId#69543]
Arguments: [productUuid#69542 ASC NULLS FIRST, plantUuid#69540 ASC NULLS FIRST], false, 0
(1254) Scan parquet
Output [3]: [product#69548, plant#69549, orderDateTime#69550]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1255) Filter
Input [3]: [product#69548, plant#69549, orderDateTime#69550]
Condition : ((isnotnull(orderDateTime#69550) AND isnotnull(plant#69549)) AND isnotnull(product#69548))
(1256) Exchange
Input [3]: [product#69548, plant#69549, orderDateTime#69550]
Arguments: hashpartitioning(product#69548, plant#69549, 25), REPARTITION_BY_NUM, [plan_id=43966]
(1257) Scan parquet
Output [4]: [plant#69554, product#69555, productionAspect#69557, systemId#69552]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1258) Project
Output [4]: [plant#69554.internalRefUUID AS _extract_internalRefUUID#80170, product#69555.internalRefUUID AS _extract_internalRefUUID#80169, productionAspect#69557.productMovementPlants.unitOfIssue.code AS _extract_code#80171, productionAspect#69557.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#80172]
Input [4]: [plant#69554, product#69555, productionAspect#69557, systemId#69552]
(1259) Exchange
Input [4]: [_extract_internalRefUUID#80170, _extract_internalRefUUID#80169, _extract_code#80171, _extract_internalRefUUID#80172]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43276]
(1260) Project
Output [4]: [_extract_code#80171, _extract_internalRefUUID#80172, _extract_internalRefUUID#80169, _extract_internalRefUUID#80170]
Input [4]: [_extract_internalRefUUID#80170, _extract_internalRefUUID#80169, _extract_code#80171, _extract_internalRefUUID#80172]
(1261) BroadcastExchange
Input [4]: [_extract_code#80171, _extract_internalRefUUID#80172, _extract_internalRefUUID#80169, _extract_internalRefUUID#80170]
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=44370]
(1262) BroadcastHashJoin
Left keys [4]: [coalesce(product#69548, ), isnull(product#69548), coalesce(plant#69549, ), isnull(plant#69549)]
Right keys [4]: [coalesce(_extract_internalRefUUID#80169, ), isnull(_extract_internalRefUUID#80169), coalesce(_extract_internalRefUUID#80170, ), isnull(_extract_internalRefUUID#80170)]
Join type: LeftOuter
Join condition: None
(1263) Project
Output [5]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#80171, _extract_internalRefUUID#80172]
Input [7]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#80171, _extract_internalRefUUID#80172, _extract_internalRefUUID#80169, _extract_internalRefUUID#80170]
(1264) Scan parquet
Output [2]: [internalUUID#69562, systemId#69561]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1265) Project
Output [1]: [internalUUID#69562]
Input [2]: [internalUUID#69562, systemId#69561]
(1266) Exchange
Input [1]: [internalUUID#69562]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43282]
(1267) BroadcastExchange
Input [1]: [internalUUID#69562]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=44374]
(1268) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69549, ), isnull(plant#69549)]
Right keys [2]: [coalesce(internalUUID#69562, ), isnull(internalUUID#69562)]
Join type: LeftOuter
Join condition: None
(1269) Project
Output [5]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#80171, _extract_internalRefUUID#80172]
Input [6]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#80171, _extract_internalRefUUID#80172, internalUUID#69562]
(1270) Scan parquet
Output [4]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582, systemId#69575]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1271) Filter
Input [4]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582, systemId#69575]
Condition : isnotnull(internalUUID#69576)
(1272) Project
Output [3]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582]
Input [4]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582, systemId#69575]
(1273) Exchange
Input [3]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43288]
(1274) BroadcastExchange
Input [3]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=44378]
(1275) BroadcastHashJoin
Left keys [1]: [product#69548]
Right keys [1]: [internalUUID#69576]
Join type: LeftOuter
Join condition: None
(1276) Project
Output [4]: [product#69548, plant#69549, orderDateTime#69550, filter(unitOfMeasureConversions#69582, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#80171) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#80172)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69580.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69580.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69587]
Input [8]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#80171, _extract_internalRefUUID#80172, internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582]
(1277) Generate
Input [4]: [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587]
Arguments: explode(filteredUnitOfMeasureConversions#69587.quantityNumerator), [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587], true, [quantityNumerator#69588]
(1278) Project
Output [4]: [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587.quantityDenominator AS _extract_quantityDenominator#79836]
Input [5]: [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587, quantityNumerator#69588]
(1279) Generate
Input [4]: [product#69548, plant#69549, orderDateTime#69550, _extract_quantityDenominator#79836]
Arguments: explode(_extract_quantityDenominator#79836), [product#69548, plant#69549, orderDateTime#69550], true, [quantityDenominator#69589]
(1280) Project
Output [3]: [product#69548, plant#69549, orderDateTime#69550]
Input [4]: [product#69548, plant#69549, orderDateTime#69550, quantityDenominator#69589]
(1281) Sort
Input [3]: [product#69548, plant#69549, orderDateTime#69550]
Arguments: [product#69548 ASC NULLS FIRST, plant#69549 ASC NULLS FIRST], false, 0
(1282) SortMergeJoin
Left keys [2]: [productUuid#69542, plantUuid#69540]
Right keys [2]: [product#69548, plant#69549]
Join type: Inner
Join condition: (calculationDateTime#69536 <= orderDateTime#69550)
(1283) Project
Output [4]: [plantUuid#69540 AS plant#69620, productUuid#69542 AS product#69621, storageLocId#69543, calculationDateTime#69536]
Input [7]: [plantUuid#69540, productUuid#69542, calculationDateTime#69536, storageLocId#69543, product#69548, plant#69549, orderDateTime#69550]
(1284) HashAggregate
Input [4]: [plant#69620, product#69621, storageLocId#69543, calculationDateTime#69536]
Keys [3]: [plant#69620, product#69621, storageLocId#69543]
Functions [1]: [partial_max(calculationDateTime#69536)]
Aggregate Attributes [1]: [max#73930]
Results [4]: [plant#69620, product#69621, storageLocId#69543, max#73931]
(1285) HashAggregate
Input [4]: [plant#69620, product#69621, storageLocId#69543, max#73931]
Keys [3]: [plant#69620, product#69621, storageLocId#69543]
Functions [1]: [max(calculationDateTime#69536)]
Aggregate Attributes [1]: [max(calculationDateTime#69536)#69447]
Results [4]: [plant#69620, product#69621, storageLocId#69543, max(calculationDateTime#69536)#69447 AS max_calc_datetime#69441]
(1286) Exchange
Input [4]: [plant#69620, product#69621, storageLocId#69543, max_calc_datetime#69441]
Arguments: hashpartitioning(coalesce(plant#69620, ), isnull(plant#69620), coalesce(product#69621, ), isnull(product#69621), coalesce(storageLocId#69543, ), isnull(storageLocId#69543), coalesce(max_calc_datetime#69441, 1970-01-01 00:00:00), isnull(max_calc_datetime#69441), 25), ENSURE_REQUIREMENTS, [plan_id=44408]
(1287) Sort
Input [4]: [plant#69620, product#69621, storageLocId#69543, max_calc_datetime#69441]
Arguments: [coalesce(plant#69620, ) ASC NULLS FIRST, isnull(plant#69620) ASC NULLS FIRST, coalesce(product#69621, ) ASC NULLS FIRST, isnull(product#69621) ASC NULLS FIRST, coalesce(storageLocId#69543, ) ASC NULLS FIRST, isnull(storageLocId#69543) ASC NULLS FIRST, coalesce(max_calc_datetime#69441, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#69441) ASC NULLS FIRST], false, 0
(1288) SortMergeJoin
Left keys [8]: [coalesce(plant#69435, ), isnull(plant#69435), coalesce(product#69436, ), isnull(product#69436), coalesce(storageLocId#69294, ), isnull(storageLocId#69294), coalesce(calculationDateTime#69273, 1970-01-01 00:00:00), isnull(calculationDateTime#69273)]
Right keys [8]: [coalesce(plant#69620, ), isnull(plant#69620), coalesce(product#69621, ), isnull(product#69621), coalesce(storageLocId#69543, ), isnull(storageLocId#69543), coalesce(max_calc_datetime#69441, 1970-01-01 00:00:00), isnull(max_calc_datetime#69441)]
Join type: Inner
Join condition: None
(1289) Project
Output [4]: [plant#69435, product#69436, calculationDateTime#69273, quantity#69296]
Input [9]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273, quantity#69296, plant#69620, product#69621, storageLocId#69543, max_calc_datetime#69441]
(1290) HashAggregate
Input [4]: [plant#69435, product#69436, calculationDateTime#69273, quantity#69296]
Keys [2]: [product#69436, plant#69435]
Functions [2]: [partial_min(calculationDateTime#69273), partial_sum(quantity#69296)]
Aggregate Attributes [2]: [min#73914, sum#81824]
Results [4]: [product#69436, plant#69435, min#73915, sum#81825]
(1291) Exchange
Input [4]: [product#69436, plant#69435, min#73915, sum#81825]
Arguments: hashpartitioning(product#69436, plant#69435, 25), ENSURE_REQUIREMENTS, [plan_id=44422]
(1292) HashAggregate
Input [4]: [product#69436, plant#69435, min#73915, sum#81825]
Keys [2]: [product#69436, plant#69435]
Functions [2]: [min(calculationDateTime#69273), sum(quantity#69296)]
Aggregate Attributes [2]: [min(calculationDateTime#69273)#69766, sum(quantity#69296)#69765]
Results [4]: [product#69436, plant#69435, min(calculationDateTime#69273)#69766 AS minCalculationDateTime#69752, round(sum(quantity#69296)#69765, 0) AS roundedQuantitySum#69769]
(1293) Sort
Input [4]: [product#69436, plant#69435, minCalculationDateTime#69752, roundedQuantitySum#69769]
Arguments: [product#69436 ASC NULLS FIRST, plant#69435 ASC NULLS FIRST], false, 0
(1294) SortMergeJoin
Left keys [2]: [product#69019, plant#69020]
Right keys [2]: [product#69436, plant#69435]
Join type: LeftOuter
Join condition: None
(1295) Project
Output [6]: [product#69019, plant#69020, _extract_minimumSafetyStock#80225, outboundUnit#69134, CASE WHEN isnotnull(minCalculationDateTime#69752) THEN minCalculationDateTime#69752 ELSE orderDateTime#69021 END AS stockDatetime#69868, CASE WHEN isnotnull(roundedQuantitySum#69769) THEN array(roundedQuantitySum#69769) ELSE [0.0] END AS stockBatchQuantities#69869]
Input [9]: [product#69019, plant#69020, orderDateTime#69021, _extract_minimumSafetyStock#80225, outboundUnit#69134, product#69436, plant#69435, minCalculationDateTime#69752, roundedQuantitySum#69769]
(1296) Exchange
Input [6]: [product#69019, plant#69020, _extract_minimumSafetyStock#80225, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869]
Arguments: hashpartitioning(coalesce(plant#69020, ), isnull(plant#69020), coalesce(product#69019, ), isnull(product#69019), 25), ENSURE_REQUIREMENTS, [plan_id=45328]
(1297) Sort
Input [6]: [product#69019, plant#69020, _extract_minimumSafetyStock#80225, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869]
Arguments: [coalesce(plant#69020, ) ASC NULLS FIRST, isnull(plant#69020) ASC NULLS FIRST, coalesce(product#69019, ) ASC NULLS FIRST, isnull(product#69019) ASC NULLS FIRST], false, 0
(1298) Scan parquet
Output [3]: [product#69978, plant#69979, orderDateTime#69980]
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/10000002106/shardId=0_1_10000002106]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1299) Exchange
Input [3]: [product#69978, plant#69979, orderDateTime#69980]
Arguments: hashpartitioning(product#69978, plant#69979, 25), REPARTITION_BY_NUM, [plan_id=43306]
(1300) Scan parquet
Output [8]: [internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989, systemId#69982]
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>>>
(1301) Project
Output [8]: [systemId#69982, internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989]
Input [8]: [internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989, systemId#69982]
(1302) Exchange
Input [8]: [systemId#69982, internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43309]
(1303) Project
Output [1]: [struct(systemId, systemId#69982, internalUUID, internalUUID#69983, plant, plant#69984, product, product#69985, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69986, productionAspect, productionAspect#69987, salesPlant, salesPlant#69988, listing, listing#69989) AS productPlant#69990]
Input [8]: [systemId#69982, internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989]
(1304) BroadcastExchange
Input [1]: [productPlant#69990]
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=44437]
(1305) BroadcastHashJoin
Left keys [4]: [coalesce(product#69978, ), isnull(product#69978), coalesce(plant#69979, ), isnull(plant#69979)]
Right keys [4]: [coalesce(productPlant#69990.product.internalRefUUID, ), isnull(productPlant#69990.product.internalRefUUID), coalesce(productPlant#69990.plant.internalRefUUID, ), isnull(productPlant#69990.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1306) Project
Output [2]: [internalUUID#69992, address#69998.timeZone.code AS timezonecode#70003]
Input [3]: [internalUUID#69992, address#69998, systemId#69991]
(1307) Exchange
Input [2]: [internalUUID#69992, timezonecode#70003]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43314]
(1308) BroadcastExchange
Input [2]: [internalUUID#69992, timezonecode#70003]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=44440]
(1309) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69979, ), isnull(plant#69979)]
Right keys [2]: [coalesce(internalUUID#69992, ), isnull(internalUUID#69992)]
Join type: LeftOuter
Join condition: None
(1310) Project
Output [5]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, CASE WHEN isnotnull(timezonecode#70003) THEN timezonecode#70003 ELSE UTC END AS timezonecode#70005]
Input [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, internalUUID#69992, timezonecode#70003]
(1311) Scan parquet
Output [4]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013, systemId#70006]
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>>>
(1312) Filter
Input [4]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013, systemId#70006]
Condition : isnotnull(internalUUID#70007)
(1313) Project
Output [3]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013]
Input [4]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013, systemId#70006]
(1314) Exchange
Input [3]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43320]
(1315) BroadcastExchange
Input [3]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=44444]
(1316) BroadcastHashJoin
Left keys [1]: [product#69978]
Right keys [1]: [internalUUID#70007]
Join type: LeftOuter
Join condition: None
(1317) Project
Output [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, filter(unitOfMeasureConversions#70013, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70011.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70011.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70018]
Input [8]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013]
(1318) Project
Output [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, filteredUnitOfMeasureConversions#70018.quantityDenominator AS _extract_quantityDenominator#79938, filteredUnitOfMeasureConversions#70018.quantityNumerator AS _extract_quantityNumerator#79939]
Input [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, filteredUnitOfMeasureConversions#70018]
(1319) Generate
Input [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, _extract_quantityDenominator#79938, _extract_quantityNumerator#79939]
Arguments: explode(_extract_quantityNumerator#79939), [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, _extract_quantityDenominator#79938], true, [quantityNumerator#70019]
(1320) Generate
Input [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, _extract_quantityDenominator#79938, quantityNumerator#70019]
Arguments: explode(_extract_quantityDenominator#79938), [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, quantityNumerator#70019], true, [quantityDenominator#70020]
(1321) Project
Output [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, (cast(quantityNumerator#70019 as double) / cast(quantityDenominator#70020 as double)) AS outboundUnit#70021]
Input [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, quantityNumerator#70019, quantityDenominator#70020]
(1322) Project
Output [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, CASE WHEN (isnull(outboundUnit#70021) OR (outboundUnit#70021 <= 0.0)) THEN 1.0 ELSE outboundUnit#70021 END AS outboundUnit#70022]
Input [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70021]
(1323) Sort
Input [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022]
Arguments: [product#69978 ASC NULLS FIRST, plant#69979 ASC NULLS FIRST], false, 0
(1324) Scan parquet
Output [6]: [internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028, systemId#70023]
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>>>>>
(1325) Filter
Input [6]: [internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028, systemId#70023]
Condition : (isnotnull(plant#70026.internalRefUUID) AND isnotnull(product#70025.internalRefUUID))
(1326) Project
Output [6]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028]
Input [6]: [internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028, systemId#70023]
(1327) Exchange
Input [6]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43331]
(1328) BroadcastExchange
Input [6]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028]
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=44476]
(1329) Scan parquet
Output [2]: [marketUnit#70029, distributionCenters#70035]
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>>>>>
(1330) Filter
Input [2]: [marketUnit#70029, distributionCenters#70035]
Condition : (((marketUnit#70029 <=> Daily_grocery) AND (size(distributionCenters#70035, true) > 0)) AND isnotnull(distributionCenters#70035))
(1331) Project
Output [1]: [distributionCenters#70035]
Input [2]: [marketUnit#70029, distributionCenters#70035]
(1332) Exchange
Input [1]: [distributionCenters#70035]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43335]
(1333) Generate
Input [1]: [distributionCenters#70035]
Arguments: explode(distributionCenters#70035), false, [distributionCenters#70051]
(1334) Filter
Input [1]: [distributionCenters#70051]
Condition : (((size(distributionCenters#70051.storageLocations, true) > 0) AND isnotnull(distributionCenters#70051.storageLocations)) AND isnotnull(distributionCenters#70051.internalRefUUID))
(1335) Project
Output [2]: [distributionCenters#70051.internalRefUUID AS _extract_internalRefUUID#79842, distributionCenters#70051.storageLocations AS _extract_storageLocations#79843]
Input [1]: [distributionCenters#70051]
(1336) Generate
Input [2]: [_extract_internalRefUUID#79842, _extract_storageLocations#79843]
Arguments: explode(_extract_storageLocations#79843), [_extract_internalRefUUID#79842], false, [storageLocations#70069]
(1337) Project
Output [3]: [_extract_internalRefUUID#79842 AS plantUuid#70071, storageLocations#70069.id AS storageLocId#70072, storageLocations#70069.internalRefUUID AS storageLocUuid#70073]
Input [2]: [_extract_internalRefUUID#79842, storageLocations#70069]
(1338) BroadcastExchange
Input [3]: [plantUuid#70071, storageLocId#70072, storageLocUuid#70073]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=44472]
(1339) Scan parquet
Output [2]: [product#70074, plant#70075]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1340) Filter
Input [2]: [product#70074, plant#70075]
Condition : isnotnull(plant#70075)
(1341) Exchange
Input [2]: [product#70074, plant#70075]
Arguments: hashpartitioning(product#70074, plant#70075, 25), REPARTITION_BY_NUM, [plan_id=43987]
(1342) Scan parquet
Output [4]: [plant#70080, product#70081, productionAspect#70083, systemId#70078]
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>>>>
(1343) Project
Output [4]: [plant#70080.internalRefUUID AS _extract_internalRefUUID#80175, product#70081.internalRefUUID AS _extract_internalRefUUID#80176, productionAspect#70083.productMovementPlants.unitOfIssue.code AS _extract_code#80173, productionAspect#70083.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#80174]
Input [4]: [plant#70080, product#70081, productionAspect#70083, systemId#70078]
(1344) Exchange
Input [4]: [_extract_internalRefUUID#80175, _extract_internalRefUUID#80176, _extract_code#80173, _extract_internalRefUUID#80174]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43347]
(1345) Project
Output [4]: [_extract_code#80173, _extract_internalRefUUID#80174, _extract_internalRefUUID#80176, _extract_internalRefUUID#80175]
Input [4]: [_extract_internalRefUUID#80175, _extract_internalRefUUID#80176, _extract_code#80173, _extract_internalRefUUID#80174]
(1346) BroadcastExchange
Input [4]: [_extract_code#80173, _extract_internalRefUUID#80174, _extract_internalRefUUID#80176, _extract_internalRefUUID#80175]
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=44452]
(1347) BroadcastHashJoin
Left keys [4]: [coalesce(product#70074, ), isnull(product#70074), coalesce(plant#70075, ), isnull(plant#70075)]
Right keys [4]: [coalesce(_extract_internalRefUUID#80176, ), isnull(_extract_internalRefUUID#80176), coalesce(_extract_internalRefUUID#80175, ), isnull(_extract_internalRefUUID#80175)]
Join type: LeftOuter
Join condition: None
(1348) Project
Output [4]: [product#70074, plant#70075, _extract_code#80173, _extract_internalRefUUID#80174]
Input [6]: [product#70074, plant#70075, _extract_code#80173, _extract_internalRefUUID#80174, _extract_internalRefUUID#80176, _extract_internalRefUUID#80175]
(1349) Scan parquet
Output [2]: [internalUUID#70088, systemId#70087]
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>
(1350) Project
Output [1]: [internalUUID#70088]
Input [2]: [internalUUID#70088, systemId#70087]
(1351) Exchange
Input [1]: [internalUUID#70088]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43353]
(1352) BroadcastExchange
Input [1]: [internalUUID#70088]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=44456]
(1353) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70075, ), isnull(plant#70075)]
Right keys [2]: [coalesce(internalUUID#70088, ), isnull(internalUUID#70088)]
Join type: LeftOuter
Join condition: None
(1354) Project
Output [4]: [product#70074, plant#70075, _extract_code#80173, _extract_internalRefUUID#80174]
Input [5]: [product#70074, plant#70075, _extract_code#80173, _extract_internalRefUUID#80174, internalUUID#70088]
(1355) Scan parquet
Output [4]: [internalUUID#70102, baseUnitOfMeasure#70106, unitOfMeasureConversions#70108, systemId#70101]
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>>>
(1356) Filter
Input [4]: [internalUUID#70102, baseUnitOfMeasure#70106, unitOfMeasureConversions#70108, systemId#70101]
Condition : isnotnull(internalUUID#70102)
(1357) Project
Output [3]: [internalUUID#70102, baseUnitOfMeasure#70106, unitOfMeasureConversions#70108]
Input [4]: [internalUUID#70102, baseUnitOfMeasure#70106, unitOfMeasureConversions#70108, systemId#70101]
(1358) Exchange
Input [3]: [internalUUID#70102, baseUnitOfMeasure#70106, unitOfMeasureConversions#70108]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43359]
(1359) BroadcastExchange
Input [3]: [internalUUID#70102, baseUnitOfMeasure#70106, unitOfMeasureConversions#70108]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=44460]
(1360) BroadcastHashJoin
Left keys [1]: [product#70074]
Right keys [1]: [internalUUID#70102]
Join type: LeftOuter
Join condition: None
(1361) Project
Output [2]: [plant#70075, filter(unitOfMeasureConversions#70108, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#80173) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#80174)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70106.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70106.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70113]
Input [7]: [product#70074, plant#70075, _extract_code#80173, _extract_internalRefUUID#80174, internalUUID#70102, baseUnitOfMeasure#70106, unitOfMeasureConversions#70108]
(1362) Generate
Input [2]: [plant#70075, filteredUnitOfMeasureConversions#70113]
Arguments: explode(filteredUnitOfMeasureConversions#70113.quantityNumerator), [plant#70075, filteredUnitOfMeasureConversions#70113], true, [quantityNumerator#70114]
(1363) Project
Output [2]: [plant#70075, filteredUnitOfMeasureConversions#70113.quantityDenominator AS _extract_quantityDenominator#79844]
Input [3]: [plant#70075, filteredUnitOfMeasureConversions#70113, quantityNumerator#70114]
(1364) Generate
Input [2]: [plant#70075, _extract_quantityDenominator#79844]
Arguments: explode(_extract_quantityDenominator#79844), [plant#70075], true, [quantityDenominator#70115]
(1365) Project
Output [1]: [plant#70075]
Input [2]: [plant#70075, quantityDenominator#70115]
(1366) HashAggregate
Input [1]: [plant#70075]
Keys [1]: [plant#70075]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70075]
(1367) Exchange
Input [1]: [plant#70075]
Arguments: hashpartitioning(plant#70075, 25), ENSURE_REQUIREMENTS, [plan_id=44469]
(1368) HashAggregate
Input [1]: [plant#70075]
Keys [1]: [plant#70075]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70075]
(1369) BroadcastHashJoin
Left keys [1]: [plantUuid#70071]
Right keys [1]: [plant#70075]
Join type: Inner
Join condition: None
(1370) Project
Output [3]: [plantUuid#70071, storageLocId#70072, storageLocUuid#70073]
Input [4]: [plantUuid#70071, storageLocId#70072, storageLocUuid#70073, plant#70075]
(1371) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70026.internalRefUUID, ), isnull(plant#70026.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#70071, ), isnull(plantUuid#70071)]
Join type: Inner
Join condition: None
(1372) Generate
Input [9]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028, plantUuid#70071, storageLocId#70072, storageLocUuid#70073]
Arguments: explode(filter(stockQuantities#70028, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#70073) AND (lambda x#69269.storageLocation.Id = storageLocId#70072)), lambda x#69269, false))), [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, plantUuid#70071], false, [stockQuantity#70118]
(1373) ObjectHashAggregate
Input [7]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, plantUuid#70071, stockQuantity#70118]
Keys [5]: [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023]
Functions [2]: [partial_first(calculationDateTime#70027, false), partial_collect_list(stockQuantity#70118, 0, 0)]
Aggregate Attributes [3]: [first#73962, valueSet#73963, buf#73964]
Results [8]: [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023, first#73965, valueSet#73966, buf#73967]
(1374) ObjectHashAggregate
Input [8]: [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023, first#73965, valueSet#73966, buf#73967]
Keys [5]: [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023]
Functions [2]: [first(calculationDateTime#70027, false), collect_list(stockQuantity#70118, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#70027)()#69286, collect_list(stockQuantity#70118, 0, 0)#69287]
Results [4]: [product#70025, plant#70026, first(calculationDateTime#70027)()#69286 AS calculationDateTime#70119, collect_list(stockQuantity#70118, 0, 0)#69287 AS stockQuantities#70120]
(1375) Filter
Input [4]: [product#70025, plant#70026, calculationDateTime#70119, stockQuantities#70120]
Condition : ((size(stockQuantities#70120, true) > 0) AND isnotnull(calculationDateTime#70119))
(1376) Generate
Input [4]: [product#70025, plant#70026, calculationDateTime#70119, stockQuantities#70120]
Arguments: explode(stockQuantities#70120), [product#70025, plant#70026, calculationDateTime#70119], false, [stockQuantity#70121]
(1377) Filter
Input [4]: [product#70025, plant#70026, calculationDateTime#70119, stockQuantity#70121]
Condition : (((isnotnull(stockQuantity#70121.specialStockIndicator.code) AND isnotnull(stockQuantity#70121.stockType.code)) AND (stockQuantity#70121.specialStockIndicator.code = )) AND (stockQuantity#70121.stockType.code = 01))
(1378) Project
Output [5]: [plant#70026.internalRefUUID AS plantUuid#70123, product#70025.internalRefUUID AS productUuid#70125, calculationDateTime#70119, stockQuantity#70121.storagelocation.id AS storageLocId#70126, stockQuantity#70121.quantity.measure AS quantity#70128]
Input [4]: [product#70025, plant#70026, calculationDateTime#70119, stockQuantity#70121]
(1379) Exchange
Input [5]: [plantUuid#70123, productUuid#70125, calculationDateTime#70119, storageLocId#70126, quantity#70128]
Arguments: hashpartitioning(productUuid#70125, plantUuid#70123, 25), ENSURE_REQUIREMENTS, [plan_id=44555]
(1380) Sort
Input [5]: [plantUuid#70123, productUuid#70125, calculationDateTime#70119, storageLocId#70126, quantity#70128]
Arguments: [productUuid#70125 ASC NULLS FIRST, plantUuid#70123 ASC NULLS FIRST], false, 0
(1381) Scan parquet
Output [3]: [product#70131, plant#70132, orderDateTime#70133]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1382) Filter
Input [3]: [product#70131, plant#70132, orderDateTime#70133]
Condition : ((isnotnull(orderDateTime#70133) AND isnotnull(plant#70132)) AND isnotnull(product#70131))
(1383) Exchange
Input [3]: [product#70131, plant#70132, orderDateTime#70133]
Arguments: hashpartitioning(product#70131, plant#70132, 25), REPARTITION_BY_NUM, [plan_id=44010]
(1384) Scan parquet
Output [4]: [plant#70137, product#70138, productionAspect#70140, systemId#70135]
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>>>>
(1385) Project
Output [4]: [plant#70137.internalRefUUID AS _extract_internalRefUUID#80177, product#70138.internalRefUUID AS _extract_internalRefUUID#80180, productionAspect#70140.productMovementPlants.unitOfIssue.code AS _extract_code#80178, productionAspect#70140.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#80179]
Input [4]: [plant#70137, product#70138, productionAspect#70140, systemId#70135]
(1386) Exchange
Input [4]: [_extract_internalRefUUID#80177, _extract_internalRefUUID#80180, _extract_code#80178, _extract_internalRefUUID#80179]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43384]
(1387) Project
Output [4]: [_extract_code#80178, _extract_internalRefUUID#80179, _extract_internalRefUUID#80180, _extract_internalRefUUID#80177]
Input [4]: [_extract_internalRefUUID#80177, _extract_internalRefUUID#80180, _extract_code#80178, _extract_internalRefUUID#80179]
(1388) BroadcastExchange
Input [4]: [_extract_code#80178, _extract_internalRefUUID#80179, _extract_internalRefUUID#80180, _extract_internalRefUUID#80177]
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=44499]
(1389) BroadcastHashJoin
Left keys [4]: [coalesce(product#70131, ), isnull(product#70131), coalesce(plant#70132, ), isnull(plant#70132)]
Right keys [4]: [coalesce(_extract_internalRefUUID#80180, ), isnull(_extract_internalRefUUID#80180), coalesce(_extract_internalRefUUID#80177, ), isnull(_extract_internalRefUUID#80177)]
Join type: LeftOuter
Join condition: None
(1390) Project
Output [5]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#80178, _extract_internalRefUUID#80179]
Input [7]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#80178, _extract_internalRefUUID#80179, _extract_internalRefUUID#80180, _extract_internalRefUUID#80177]
(1391) Scan parquet
Output [2]: [internalUUID#70145, systemId#70144]
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>
(1392) Project
Output [1]: [internalUUID#70145]
Input [2]: [internalUUID#70145, systemId#70144]
(1393) Exchange
Input [1]: [internalUUID#70145]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43390]
(1394) BroadcastExchange
Input [1]: [internalUUID#70145]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=44512]
(1395) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70132, ), isnull(plant#70132)]
Right keys [2]: [coalesce(internalUUID#70145, ), isnull(internalUUID#70145)]
Join type: LeftOuter
Join condition: None
(1396) Project
Output [5]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#80178, _extract_internalRefUUID#80179]
Input [6]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#80178, _extract_internalRefUUID#80179, internalUUID#70145]
(1397) Scan parquet
Output [4]: [internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165, systemId#70158]
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>>>
(1398) Filter
Input [4]: [internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165, systemId#70158]
Condition : isnotnull(internalUUID#70159)
(1399) Project
Output [3]: [internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165]
Input [4]: [internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165, systemId#70158]
(1400) Exchange
Input [3]: [internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43396]
(1401) BroadcastExchange
Input [3]: [internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=44519]
(1402) BroadcastHashJoin
Left keys [1]: [product#70131]
Right keys [1]: [internalUUID#70159]
Join type: LeftOuter
Join condition: None
(1403) Project
Output [4]: [product#70131, plant#70132, orderDateTime#70133, filter(unitOfMeasureConversions#70165, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#80178) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#80179)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70163.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70163.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70171]
Input [8]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#80178, _extract_internalRefUUID#80179, internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165]
(1404) Generate
Input [4]: [product#70131, plant#70132, orderDateTime#70133, filteredUnitOfMeasureConversions#70171]
Arguments: explode(filteredUnitOfMeasureConversions#70171.quantityNumerator), [product#70131, plant#70132, orderDateTime#70133, filteredUnitOfMeasureConversions#70171], true, [quantityNumerator#70172]
(1405) Project
Output [4]: [product#70131, plant#70132, orderDateTime#70133, filteredUnitOfMeasureConversions#70171.quantityDenominator AS _extract_quantityDenominator#79848]
Input [5]: [product#70131, plant#70132, orderDateTime#70133, filteredUnitOfMeasureConversions#70171, quantityNumerator#70172]
(1406) Generate
Input [4]: [product#70131, plant#70132, orderDateTime#70133, _extract_quantityDenominator#79848]
Arguments: explode(_extract_quantityDenominator#79848), [product#70131, plant#70132, orderDateTime#70133], true, [quantityDenominator#70173]
(1407) Project
Output [3]: [product#70131, plant#70132, orderDateTime#70133]
Input [4]: [product#70131, plant#70132, orderDateTime#70133, quantityDenominator#70173]
(1408) Sort
Input [3]: [product#70131, plant#70132, orderDateTime#70133]
Arguments: [product#70131 ASC NULLS FIRST, plant#70132 ASC NULLS FIRST], false, 0
(1409) SortMergeJoin
Left keys [2]: [productUuid#70125, plantUuid#70123]
Right keys [2]: [product#70131, plant#70132]
Join type: Inner
Join condition: (calculationDateTime#70119 <= orderDateTime#70133)
(1410) Project
Output [5]: [plantUuid#70123 AS plant#70176, productUuid#70125 AS product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
Input [8]: [plantUuid#70123, productUuid#70125, calculationDateTime#70119, storageLocId#70126, quantity#70128, product#70131, plant#70132, orderDateTime#70133]
(1411) Exchange
Input [5]: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
Arguments: hashpartitioning(coalesce(plant#70176, ), isnull(plant#70176), coalesce(product#70177, ), isnull(product#70177), coalesce(storageLocId#70126, ), isnull(storageLocId#70126), coalesce(calculationDateTime#70119, 1970-01-01 00:00:00), isnull(calculationDateTime#70119), 25), ENSURE_REQUIREMENTS, [plan_id=44902]
(1412) Sort
Input [5]: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
Arguments: [coalesce(plant#70176, ) ASC NULLS FIRST, isnull(plant#70176) ASC NULLS FIRST, coalesce(product#70177, ) ASC NULLS FIRST, isnull(product#70177) ASC NULLS FIRST, coalesce(storageLocId#70126, ) ASC NULLS FIRST, isnull(storageLocId#70126) ASC NULLS FIRST, coalesce(calculationDateTime#70119, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#70119) ASC NULLS FIRST], false, 0
(1413) Scan parquet
Output [6]: [internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183, systemId#70178]
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>>>>>
(1414) Filter
Input [6]: [internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183, systemId#70178]
Condition : (isnotnull(plant#70181.internalRefUUID) AND isnotnull(product#70180.internalRefUUID))
(1415) Project
Output [6]: [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183]
Input [6]: [internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183, systemId#70178]
(1416) Exchange
Input [6]: [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43408]
(1417) BroadcastExchange
Input [6]: [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183]
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=44675]
(1418) Scan parquet
Output [2]: [marketUnit#70184, distributionCenters#70190]
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>>>>>
(1419) Filter
Input [2]: [marketUnit#70184, distributionCenters#70190]
Condition : (((marketUnit#70184 <=> Daily_grocery) AND (size(distributionCenters#70190, true) > 0)) AND isnotnull(distributionCenters#70190))
(1420) Project
Output [1]: [distributionCenters#70190]
Input [2]: [marketUnit#70184, distributionCenters#70190]
(1421) Exchange
Input [1]: [distributionCenters#70190]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43412]
(1422) Generate
Input [1]: [distributionCenters#70190]
Arguments: explode(distributionCenters#70190), false, [distributionCenters#70206]
(1423) Filter
Input [1]: [distributionCenters#70206]
Condition : (((size(distributionCenters#70206.storageLocations, true) > 0) AND isnotnull(distributionCenters#70206.storageLocations)) AND isnotnull(distributionCenters#70206.internalRefUUID))
(1424) Project
Output [2]: [distributionCenters#70206.internalRefUUID AS _extract_internalRefUUID#79852, distributionCenters#70206.storageLocations AS _extract_storageLocations#79853]
Input [1]: [distributionCenters#70206]
(1425) Generate
Input [2]: [_extract_internalRefUUID#79852, _extract_storageLocations#79853]
Arguments: explode(_extract_storageLocations#79853), [_extract_internalRefUUID#79852], false, [storageLocations#70207]
(1426) Project
Output [3]: [_extract_internalRefUUID#79852 AS plantUuid#70209, storageLocations#70207.id AS storageLocId#70210, storageLocations#70207.internalRefUUID AS storageLocUuid#70211]
Input [2]: [_extract_internalRefUUID#79852, storageLocations#70207]
(1427) BroadcastExchange
Input [3]: [plantUuid#70209, storageLocId#70210, storageLocUuid#70211]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=44660]
(1428) Scan parquet
Output [2]: [product#70212, plant#70213]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1429) Filter
Input [2]: [product#70212, plant#70213]
Condition : isnotnull(plant#70213)
(1430) Exchange
Input [2]: [product#70212, plant#70213]
Arguments: hashpartitioning(product#70212, plant#70213, 25), REPARTITION_BY_NUM, [plan_id=44023]
(1431) Scan parquet
Output [4]: [plant#70218, product#70219, productionAspect#70221, systemId#70216]
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>>>>
(1432) Project
Output [4]: [plant#70218.internalRefUUID AS _extract_internalRefUUID#80184, product#70219.internalRefUUID AS _extract_internalRefUUID#80181, productionAspect#70221.productMovementPlants.unitOfIssue.code AS _extract_code#80182, productionAspect#70221.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#80183]
Input [4]: [plant#70218, product#70219, productionAspect#70221, systemId#70216]
(1433) Exchange
Input [4]: [_extract_internalRefUUID#80184, _extract_internalRefUUID#80181, _extract_code#80182, _extract_internalRefUUID#80183]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43424]
(1434) Project
Output [4]: [_extract_code#80182, _extract_internalRefUUID#80183, _extract_internalRefUUID#80181, _extract_internalRefUUID#80184]
Input [4]: [_extract_internalRefUUID#80184, _extract_internalRefUUID#80181, _extract_code#80182, _extract_internalRefUUID#80183]
(1435) BroadcastExchange
Input [4]: [_extract_code#80182, _extract_internalRefUUID#80183, _extract_internalRefUUID#80181, _extract_internalRefUUID#80184]
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=44604]
(1436) BroadcastHashJoin
Left keys [4]: [coalesce(product#70212, ), isnull(product#70212), coalesce(plant#70213, ), isnull(plant#70213)]
Right keys [4]: [coalesce(_extract_internalRefUUID#80181, ), isnull(_extract_internalRefUUID#80181), coalesce(_extract_internalRefUUID#80184, ), isnull(_extract_internalRefUUID#80184)]
Join type: LeftOuter
Join condition: None
(1437) Project
Output [4]: [product#70212, plant#70213, _extract_code#80182, _extract_internalRefUUID#80183]
Input [6]: [product#70212, plant#70213, _extract_code#80182, _extract_internalRefUUID#80183, _extract_internalRefUUID#80181, _extract_internalRefUUID#80184]
(1438) Scan parquet
Output [2]: [internalUUID#70226, systemId#70225]
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>
(1439) Project
Output [1]: [internalUUID#70226]
Input [2]: [internalUUID#70226, systemId#70225]
(1440) Exchange
Input [1]: [internalUUID#70226]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43430]
(1441) BroadcastExchange
Input [1]: [internalUUID#70226]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=44615]
(1442) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70213, ), isnull(plant#70213)]
Right keys [2]: [coalesce(internalUUID#70226, ), isnull(internalUUID#70226)]
Join type: LeftOuter
Join condition: None
(1443) Project
Output [4]: [product#70212, plant#70213, _extract_code#80182, _extract_internalRefUUID#80183]
Input [5]: [product#70212, plant#70213, _extract_code#80182, _extract_internalRefUUID#80183, internalUUID#70226]
(1444) Scan parquet
Output [4]: [internalUUID#70240, baseUnitOfMeasure#70244, unitOfMeasureConversions#70246, systemId#70239]
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>>>
(1445) Filter
Input [4]: [internalUUID#70240, baseUnitOfMeasure#70244, unitOfMeasureConversions#70246, systemId#70239]
Condition : isnotnull(internalUUID#70240)
(1446) Project
Output [3]: [internalUUID#70240, baseUnitOfMeasure#70244, unitOfMeasureConversions#70246]
Input [4]: [internalUUID#70240, baseUnitOfMeasure#70244, unitOfMeasureConversions#70246, systemId#70239]
(1447) Exchange
Input [3]: [internalUUID#70240, baseUnitOfMeasure#70244, unitOfMeasureConversions#70246]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43436]
(1448) BroadcastExchange
Input [3]: [internalUUID#70240, baseUnitOfMeasure#70244, unitOfMeasureConversions#70246]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=44621]
(1449) BroadcastHashJoin
Left keys [1]: [product#70212]
Right keys [1]: [internalUUID#70240]
Join type: LeftOuter
Join condition: None
(1450) Project
Output [2]: [plant#70213, filter(unitOfMeasureConversions#70246, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#80182) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#80183)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70244.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70244.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70251]
Input [7]: [product#70212, plant#70213, _extract_code#80182, _extract_internalRefUUID#80183, internalUUID#70240, baseUnitOfMeasure#70244, unitOfMeasureConversions#70246]
(1451) Generate
Input [2]: [plant#70213, filteredUnitOfMeasureConversions#70251]
Arguments: explode(filteredUnitOfMeasureConversions#70251.quantityNumerator), [plant#70213, filteredUnitOfMeasureConversions#70251], true, [quantityNumerator#70252]
(1452) Project
Output [2]: [plant#70213, filteredUnitOfMeasureConversions#70251.quantityDenominator AS _extract_quantityDenominator#79854]
Input [3]: [plant#70213, filteredUnitOfMeasureConversions#70251, quantityNumerator#70252]
(1453) Generate
Input [2]: [plant#70213, _extract_quantityDenominator#79854]
Arguments: explode(_extract_quantityDenominator#79854), [plant#70213], true, [quantityDenominator#70253]
(1454) Project
Output [1]: [plant#70213]
Input [2]: [plant#70213, quantityDenominator#70253]
(1455) HashAggregate
Input [1]: [plant#70213]
Keys [1]: [plant#70213]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70213]
(1456) Exchange
Input [1]: [plant#70213]
Arguments: hashpartitioning(plant#70213, 25), ENSURE_REQUIREMENTS, [plan_id=44655]
(1457) HashAggregate
Input [1]: [plant#70213]
Keys [1]: [plant#70213]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70213]
(1458) BroadcastHashJoin
Left keys [1]: [plantUuid#70209]
Right keys [1]: [plant#70213]
Join type: Inner
Join condition: None
(1459) Project
Output [3]: [plantUuid#70209, storageLocId#70210, storageLocUuid#70211]
Input [4]: [plantUuid#70209, storageLocId#70210, storageLocUuid#70211, plant#70213]
(1460) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70181.internalRefUUID, ), isnull(plant#70181.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#70209, ), isnull(plantUuid#70209)]
Join type: Inner
Join condition: None
(1461) Generate
Input [9]: [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183, plantUuid#70209, storageLocId#70210, storageLocUuid#70211]
Arguments: explode(filter(stockQuantities#70183, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#70211) AND (lambda x#69269.storageLocation.Id = storageLocId#70210)), lambda x#69269, false))), [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, plantUuid#70209], false, [stockQuantity#70256]
(1462) ObjectHashAggregate
Input [7]: [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, plantUuid#70209, stockQuantity#70256]
Keys [5]: [plantUuid#70209, internalUUID#70179, plant#70181, product#70180, systemId#70178]
Functions [2]: [partial_first(calculationDateTime#70182, false), partial_collect_list(stockQuantity#70256, 0, 0)]
Aggregate Attributes [3]: [first#73976, valueSet#73977, buf#73978]
Results [8]: [plantUuid#70209, internalUUID#70179, plant#70181, product#70180, systemId#70178, first#73979, valueSet#73980, buf#73981]
(1463) ObjectHashAggregate
Input [8]: [plantUuid#70209, internalUUID#70179, plant#70181, product#70180, systemId#70178, first#73979, valueSet#73980, buf#73981]
Keys [5]: [plantUuid#70209, internalUUID#70179, plant#70181, product#70180, systemId#70178]
Functions [2]: [first(calculationDateTime#70182, false), collect_list(stockQuantity#70256, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#70182)()#69286, collect_list(stockQuantity#70256, 0, 0)#69287]
Results [4]: [product#70180, plant#70181, first(calculationDateTime#70182)()#69286 AS calculationDateTime#70257, collect_list(stockQuantity#70256, 0, 0)#69287 AS stockQuantities#70258]
(1464) Filter
Input [4]: [product#70180, plant#70181, calculationDateTime#70257, stockQuantities#70258]
Condition : ((size(stockQuantities#70258, true) > 0) AND isnotnull(calculationDateTime#70257))
(1465) Generate
Input [4]: [product#70180, plant#70181, calculationDateTime#70257, stockQuantities#70258]
Arguments: explode(stockQuantities#70258), [product#70180, plant#70181, calculationDateTime#70257], false, [stockQuantity#70259]
(1466) Filter
Input [4]: [product#70180, plant#70181, calculationDateTime#70257, stockQuantity#70259]
Condition : (((isnotnull(stockQuantity#70259.specialStockIndicator.code) AND isnotnull(stockQuantity#70259.stockType.code)) AND (stockQuantity#70259.specialStockIndicator.code = )) AND (stockQuantity#70259.stockType.code = 01))
(1467) Project
Output [4]: [plant#70181.internalRefUUID AS plantUuid#70261, product#70180.internalRefUUID AS productUuid#70263, calculationDateTime#70257, stockQuantity#70259.storagelocation.id AS storageLocId#70264]
Input [4]: [product#70180, plant#70181, calculationDateTime#70257, stockQuantity#70259]
(1468) Exchange
Input [4]: [plantUuid#70261, productUuid#70263, calculationDateTime#70257, storageLocId#70264]
Arguments: hashpartitioning(productUuid#70263, plantUuid#70261, 25), ENSURE_REQUIREMENTS, [plan_id=44788]
(1469) Sort
Input [4]: [plantUuid#70261, productUuid#70263, calculationDateTime#70257, storageLocId#70264]
Arguments: [productUuid#70263 ASC NULLS FIRST, plantUuid#70261 ASC NULLS FIRST], false, 0
(1470) Scan parquet
Output [3]: [product#70269, plant#70270, orderDateTime#70271]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1471) Filter
Input [3]: [product#70269, plant#70270, orderDateTime#70271]
Condition : ((isnotnull(orderDateTime#70271) AND isnotnull(plant#70270)) AND isnotnull(product#70269))
(1472) Exchange
Input [3]: [product#70269, plant#70270, orderDateTime#70271]
Arguments: hashpartitioning(product#70269, plant#70270, 25), REPARTITION_BY_NUM, [plan_id=44046]
(1473) Scan parquet
Output [4]: [plant#70275, product#70276, productionAspect#70278, systemId#70273]
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>>>>
(1474) Project
Output [4]: [plant#70275.internalRefUUID AS _extract_internalRefUUID#80187, product#70276.internalRefUUID AS _extract_internalRefUUID#80188, productionAspect#70278.productMovementPlants.unitOfIssue.code AS _extract_code#80185, productionAspect#70278.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#80186]
Input [4]: [plant#70275, product#70276, productionAspect#70278, systemId#70273]
(1475) Exchange
Input [4]: [_extract_internalRefUUID#80187, _extract_internalRefUUID#80188, _extract_code#80185, _extract_internalRefUUID#80186]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43461]
(1476) Project
Output [4]: [_extract_code#80185, _extract_internalRefUUID#80186, _extract_internalRefUUID#80188, _extract_internalRefUUID#80187]
Input [4]: [_extract_internalRefUUID#80187, _extract_internalRefUUID#80188, _extract_code#80185, _extract_internalRefUUID#80186]
(1477) BroadcastExchange
Input [4]: [_extract_code#80185, _extract_internalRefUUID#80186, _extract_internalRefUUID#80188, _extract_internalRefUUID#80187]
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=44718]
(1478) BroadcastHashJoin
Left keys [4]: [coalesce(product#70269, ), isnull(product#70269), coalesce(plant#70270, ), isnull(plant#70270)]
Right keys [4]: [coalesce(_extract_internalRefUUID#80188, ), isnull(_extract_internalRefUUID#80188), coalesce(_extract_internalRefUUID#80187, ), isnull(_extract_internalRefUUID#80187)]
Join type: LeftOuter
Join condition: None
(1479) Project
Output [5]: [product#70269, plant#70270, orderDateTime#70271, _extract_code#80185, _extract_internalRefUUID#80186]
Input [7]: [product#70269, plant#70270, orderDateTime#70271, _extract_code#80185, _extract_internalRefUUID#80186, _extract_internalRefUUID#80188, _extract_internalRefUUID#80187]
(1480) Scan parquet
Output [2]: [internalUUID#70283, systemId#70282]
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>
(1481) Project
Output [1]: [internalUUID#70283]
Input [2]: [internalUUID#70283, systemId#70282]
(1482) Exchange
Input [1]: [internalUUID#70283]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43467]
(1483) BroadcastExchange
Input [1]: [internalUUID#70283]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=44724]
(1484) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70270, ), isnull(plant#70270)]
Right keys [2]: [coalesce(internalUUID#70283, ), isnull(internalUUID#70283)]
Join type: LeftOuter
Join condition: None
(1485) Project
Output [5]: [product#70269, plant#70270, orderDateTime#70271, _extract_code#80185, _extract_internalRefUUID#80186]
Input [6]: [product#70269, plant#70270, orderDateTime#70271, _extract_code#80185, _extract_internalRefUUID#80186, internalUUID#70283]
(1486) Scan parquet
Output [4]: [internalUUID#70297, baseUnitOfMeasure#70301, unitOfMeasureConversions#70303, systemId#70296]
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>>>
(1487) Filter
Input [4]: [internalUUID#70297, baseUnitOfMeasure#70301, unitOfMeasureConversions#70303, systemId#70296]
Condition : isnotnull(internalUUID#70297)
(1488) Project
Output [3]: [internalUUID#70297, baseUnitOfMeasure#70301, unitOfMeasureConversions#70303]
Input [4]: [internalUUID#70297, baseUnitOfMeasure#70301, unitOfMeasureConversions#70303, systemId#70296]
(1489) Exchange
Input [3]: [internalUUID#70297, baseUnitOfMeasure#70301, unitOfMeasureConversions#70303]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43473]
(1490) BroadcastExchange
Input [3]: [internalUUID#70297, baseUnitOfMeasure#70301, unitOfMeasureConversions#70303]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=44740]
(1491) BroadcastHashJoin
Left keys [1]: [product#70269]
Right keys [1]: [internalUUID#70297]
Join type: LeftOuter
Join condition: None
(1492) Project
Output [4]: [product#70269, plant#70270, orderDateTime#70271, filter(unitOfMeasureConversions#70303, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#80185) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#80186)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70301.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70301.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70308]
Input [8]: [product#70269, plant#70270, orderDateTime#70271, _extract_code#80185, _extract_internalRefUUID#80186, internalUUID#70297, baseUnitOfMeasure#70301, unitOfMeasureConversions#70303]
(1493) Generate
Input [4]: [product#70269, plant#70270, orderDateTime#70271, filteredUnitOfMeasureConversions#70308]
Arguments: explode(filteredUnitOfMeasureConversions#70308.quantityNumerator), [product#70269, plant#70270, orderDateTime#70271, filteredUnitOfMeasureConversions#70308], true, [quantityNumerator#70309]
(1494) Project
Output [4]: [product#70269, plant#70270, orderDateTime#70271, filteredUnitOfMeasureConversions#70308.quantityDenominator AS _extract_quantityDenominator#79858]
Input [5]: [product#70269, plant#70270, orderDateTime#70271, filteredUnitOfMeasureConversions#70308, quantityNumerator#70309]
(1495) Generate
Input [4]: [product#70269, plant#70270, orderDateTime#70271, _extract_quantityDenominator#79858]
Arguments: explode(_extract_quantityDenominator#79858), [product#70269, plant#70270, orderDateTime#70271], true, [quantityDenominator#70310]
(1496) Project
Output [3]: [product#70269, plant#70270, orderDateTime#70271]
Input [4]: [product#70269, plant#70270, orderDateTime#70271, quantityDenominator#70310]
(1497) Sort
Input [3]: [product#70269, plant#70270, orderDateTime#70271]
Arguments: [product#70269 ASC NULLS FIRST, plant#70270 ASC NULLS FIRST], false, 0
(1498) SortMergeJoin
Left keys [2]: [productUuid#70263, plantUuid#70261]
Right keys [2]: [product#70269, plant#70270]
Join type: Inner
Join condition: (calculationDateTime#70257 <= orderDateTime#70271)
(1499) Project
Output [4]: [plantUuid#70261 AS plant#70323, productUuid#70263 AS product#70324, storageLocId#70264, calculationDateTime#70257]
Input [7]: [plantUuid#70261, productUuid#70263, calculationDateTime#70257, storageLocId#70264, product#70269, plant#70270, orderDateTime#70271]
(1500) HashAggregate
Input [4]: [plant#70323, product#70324, storageLocId#70264, calculationDateTime#70257]
Keys [3]: [plant#70323, product#70324, storageLocId#70264]
Functions [1]: [partial_max(calculationDateTime#70257)]
Aggregate Attributes [1]: [max#73974]
Results [4]: [plant#70323, product#70324, storageLocId#70264, max#73975]
(1501) HashAggregate
Input [4]: [plant#70323, product#70324, storageLocId#70264, max#73975]
Keys [3]: [plant#70323, product#70324, storageLocId#70264]
Functions [1]: [max(calculationDateTime#70257)]
Aggregate Attributes [1]: [max(calculationDateTime#70257)#69447]
Results [4]: [plant#70323, product#70324, storageLocId#70264, max(calculationDateTime#70257)#69447 AS max_calc_datetime#70325]
(1502) Exchange
Input [4]: [plant#70323, product#70324, storageLocId#70264, max_calc_datetime#70325]
Arguments: hashpartitioning(coalesce(plant#70323, ), isnull(plant#70323), coalesce(product#70324, ), isnull(product#70324), coalesce(storageLocId#70264, ), isnull(storageLocId#70264), coalesce(max_calc_datetime#70325, 1970-01-01 00:00:00), isnull(max_calc_datetime#70325), 25), ENSURE_REQUIREMENTS, [plan_id=44914]
(1503) Sort
Input [4]: [plant#70323, product#70324, storageLocId#70264, max_calc_datetime#70325]
Arguments: [coalesce(plant#70323, ) ASC NULLS FIRST, isnull(plant#70323) ASC NULLS FIRST, coalesce(product#70324, ) ASC NULLS FIRST, isnull(product#70324) ASC NULLS FIRST, coalesce(storageLocId#70264, ) ASC NULLS FIRST, isnull(storageLocId#70264) ASC NULLS FIRST, coalesce(max_calc_datetime#70325, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#70325) ASC NULLS FIRST], false, 0
(1504) SortMergeJoin
Left keys [8]: [coalesce(plant#70176, ), isnull(plant#70176), coalesce(product#70177, ), isnull(product#70177), coalesce(storageLocId#70126, ), isnull(storageLocId#70126), coalesce(calculationDateTime#70119, 1970-01-01 00:00:00), isnull(calculationDateTime#70119)]
Right keys [8]: [coalesce(plant#70323, ), isnull(plant#70323), coalesce(product#70324, ), isnull(product#70324), coalesce(storageLocId#70264, ), isnull(storageLocId#70264), coalesce(max_calc_datetime#70325, 1970-01-01 00:00:00), isnull(max_calc_datetime#70325)]
Join type: Inner
Join condition: None
(1505) Project
Output [4]: [plant#70176, product#70177, calculationDateTime#70119, quantity#70128]
Input [9]: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128, plant#70323, product#70324, storageLocId#70264, max_calc_datetime#70325]
(1506) HashAggregate
Input [4]: [plant#70176, product#70177, calculationDateTime#70119, quantity#70128]
Keys [2]: [product#70177, plant#70176]
Functions [2]: [partial_min(calculationDateTime#70119), partial_sum(quantity#70128)]
Aggregate Attributes [2]: [min#73956, sum#73957]
Results [4]: [product#70177, plant#70176, min#73958, sum#73959]
(1507) Exchange
Input [4]: [product#70177, plant#70176, min#73958, sum#73959]
Arguments: hashpartitioning(product#70177, plant#70176, 25), ENSURE_REQUIREMENTS, [plan_id=44942]
(1508) HashAggregate
Input [4]: [product#70177, plant#70176, min#73958, sum#73959]
Keys [2]: [product#70177, plant#70176]
Functions [2]: [min(calculationDateTime#70119), sum(quantity#70128)]
Aggregate Attributes [2]: [min(calculationDateTime#70119)#69766, sum(quantity#70128)#69765]
Results [4]: [product#70177, plant#70176, min(calculationDateTime#70119)#69766 AS minCalculationDateTime#70327, round(sum(quantity#70128)#69765, 0) AS roundedQuantitySum#70328]
(1509) Sort
Input [4]: [product#70177, plant#70176, minCalculationDateTime#70327, roundedQuantitySum#70328]
Arguments: [product#70177 ASC NULLS FIRST, plant#70176 ASC NULLS FIRST], false, 0
(1510) SortMergeJoin
Left keys [2]: [product#69978, plant#69979]
Right keys [2]: [product#70177, plant#70176]
Join type: LeftOuter
Join condition: None
(1511) Project
Output [8]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, CASE WHEN isnotnull(minCalculationDateTime#70327) THEN minCalculationDateTime#70327 ELSE orderDateTime#69980 END AS stockDatetime#70329, CASE WHEN isnotnull(roundedQuantitySum#70328) THEN array(roundedQuantitySum#70328) ELSE [0.0] END AS stockBatchQuantities#70330]
Input [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, product#70177, plant#70176, minCalculationDateTime#70327, roundedQuantitySum#70328]
(1512) Filter
Input [9]: [product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
Condition : (isnotnull(product#69873) AND isnotnull(plant#69874))
(1513) BroadcastExchange
Input [9]: [product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=45026]
(1514) BroadcastHashJoin
Left keys [2]: [product#69978, plant#69979]
Right keys [2]: [product#69873, plant#69874]
Join type: LeftOuter
Join condition: None
(1515) Project
Output [9]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, CASE WHEN isnotnull(product#69873) THEN struct(demandChannel, demandChannel#69875, demandStream, demandStream#69876, considerVariance, considerVariance#69877, demandTimeBuckets, demandTimeBuckets#69878, demandPointInTimeStart, demandPointInTimeStart#69879, demandPointInTimeEnd, demandPointInTimeEnd#69880, demandPointInTime, demandPointInTime#69881) END AS rawDemands#69908]
Input [17]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
(1516) ObjectHashAggregate
Input [9]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, rawDemands#69908]
Keys [9]: [product#69978, plant#69979, orderDateTime#69980, knownfloatingpointnormalized(if (isnull(productPlant#69990)) null else named_struct(systemId, productPlant#69990.systemId, internalUUID, productPlant#69990.internalUUID, plant, productPlant#69990.plant, product, productPlant#69990.product, blockedForReplenishmentStartingFrom, productPlant#69990.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#69990.productionAspect)) null else named_struct(productMovementPlants, productPlant#69990.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#69990.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#69990.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#69990.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#69990.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#69990.productionAspect.productPlanningPlants.minimumLotSize)), minimumSafetyStock, knownfloatingpointnormalized(normalizenanandzero(productPlant#69990.productionAspect.productPlanningPlants.minimumSafetyStock)), logisticalRoundingProfile, productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#69990.salesPlant, listing, productPlant#69990.listing)) AS productPlant#69990, timezonecode#70005, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#70022)) AS outboundUnit#70022, stockDatetime#70329, knownfloatingpointnormalized(transform(stockBatchQuantities#70330, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#81827)), lambda arg#81827, false))) AS stockBatchQuantities#70330, [7226582400000000] AS [7226582400000000]#81826]
Functions [1]: [partial_collect_list(rawDemands#69908, 0, 0)]
Aggregate Attributes [1]: [buf#73954]
Results [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000]#81826, buf#73955]
(1517) ObjectHashAggregate
Input [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000]#81826, buf#73955]
Keys [9]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000]#81826]
Functions [1]: [collect_list(rawDemands#69908, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#69908, 0, 0)#69939]
Results [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#70331, collect_list(rawDemands#69908, 0, 0)#69939 AS rawDemands#69921]
(1518) DeserializeToObject
Input [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, stockBatchShelfLifeEndDatetimes#70331, rawDemands#69921]
Arguments: createexternalrow(invoke(product#69978.toString()), invoke(plant#69979.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#69980)), if (isnull(productPlant#69990)) null else createexternalrow(invoke(productPlant#69990.systemId.toString()), invoke(productPlant#69990.internalUUID.toString()), if (isnull(productPlant#69990.plant)) null else createexternalrow(invoke(productPlant#69990.plant.internalRefUUID.toString()), invoke(productPlant#69990.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#69990.product)) null else createexternalrow(invoke(productPlant#69990.product.internalRefUUID.toString()), invoke(productPlant#69990.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#69990.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#69990.productionAspect)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#69990.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#69990.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#69990.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#69990.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#69990.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#69990.salesPlant)) null else createexternalrow(if (isnull(productPlant#69990.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#69990.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#69990.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#69990.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#70005.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#70022)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#70329)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#70330, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#70331, 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#69921, 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#69963: org.apache.spark.sql.Row
(1519) MapElements
Input [1]: [obj#69963]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@783ec352, obj#69968: org.apache.spark.sql.Row
(1520) SerializeFromObject
Input [1]: [obj#69968]
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#69973, 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#69974, 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#69975, 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#69976]
(1521) Exchange
Input [4]: [product#69973, plant#69974, dayBucketDemands#69975, pointInTimeDemands#69976]
Arguments: hashpartitioning(coalesce(plant#69974, ), isnull(plant#69974), coalesce(product#69973, ), isnull(product#69973), 25), ENSURE_REQUIREMENTS, [plan_id=45332]
(1522) Sort
Input [4]: [product#69973, plant#69974, dayBucketDemands#69975, pointInTimeDemands#69976]
Arguments: [coalesce(plant#69974, ) ASC NULLS FIRST, isnull(plant#69974) ASC NULLS FIRST, coalesce(product#69973, ) ASC NULLS FIRST, isnull(product#69973) ASC NULLS FIRST], false, 0
(1523) SortMergeJoin
Left keys [4]: [coalesce(plant#69020, ), isnull(plant#69020), coalesce(product#69019, ), isnull(product#69019)]
Right keys [4]: [coalesce(plant#69974, ), isnull(plant#69974), coalesce(product#69973, ), isnull(product#69973)]
Join type: LeftOuter
Join condition: None
(1524) Project
Output [8]: [product#69019, plant#69020, _extract_minimumSafetyStock#80225, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, dayBucketDemands#69975, pointInTimeDemands#69976]
Input [10]: [product#69019, plant#69020, _extract_minimumSafetyStock#80225, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, product#69973, plant#69974, dayBucketDemands#69975, pointInTimeDemands#69976]
(1525) Exchange
Input [8]: [product#69019, plant#69020, _extract_minimumSafetyStock#80225, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, dayBucketDemands#69975, pointInTimeDemands#69976]
Arguments: hashpartitioning(product#69019, plant#69020, 25), ENSURE_REQUIREMENTS, [plan_id=47053]
(1526) Sort
Input [8]: [product#69019, plant#69020, _extract_minimumSafetyStock#80225, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, dayBucketDemands#69975, pointInTimeDemands#69976]
Arguments: [product#69019 ASC NULLS FIRST, plant#69020 ASC NULLS FIRST], false, 0
(1527) Filter
Input [3]: [product#70773, plant#70770, openGoodsMovements#75050]
Condition : (isnotnull(product#70773) AND isnotnull(plant#70770))
(1528) Scan parquet
Output [3]: [product#75735, plant#75736, orderDateTime#75737]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1529) Filter
Input [3]: [product#75735, plant#75736, orderDateTime#75737]
Condition : isnotnull(plant#75736)
(1530) Exchange
Input [3]: [product#75735, plant#75736, orderDateTime#75737]
Arguments: hashpartitioning(product#75735, plant#75736, 25), REPARTITION_BY_NUM, [plan_id=44076]
(1531) Scan parquet
Output [4]: [plant#75743, product#75744, productionAspect#75746, systemId#75741]
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>>>>
(1532) Project
Output [4]: [plant#75743.internalRefUUID AS _extract_internalRefUUID#80192, product#75744.internalRefUUID AS _extract_internalRefUUID#80189, productionAspect#75746.productMovementPlants.unitOfIssue.code AS _extract_code#80190, productionAspect#75746.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#80191]
Input [4]: [plant#75743, product#75744, productionAspect#75746, systemId#75741]
(1533) Exchange
Input [4]: [_extract_internalRefUUID#80192, _extract_internalRefUUID#80189, _extract_code#80190, _extract_internalRefUUID#80191]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43510]
(1534) Project
Output [4]: [_extract_code#80190, _extract_internalRefUUID#80191, _extract_internalRefUUID#80189, _extract_internalRefUUID#80192]
Input [4]: [_extract_internalRefUUID#80192, _extract_internalRefUUID#80189, _extract_code#80190, _extract_internalRefUUID#80191]
(1535) BroadcastExchange
Input [4]: [_extract_code#80190, _extract_internalRefUUID#80191, _extract_internalRefUUID#80189, _extract_internalRefUUID#80192]
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=45349]
(1536) BroadcastHashJoin
Left keys [4]: [coalesce(product#75735, ), isnull(product#75735), coalesce(plant#75736, ), isnull(plant#75736)]
Right keys [4]: [coalesce(_extract_internalRefUUID#80189, ), isnull(_extract_internalRefUUID#80189), coalesce(_extract_internalRefUUID#80192, ), isnull(_extract_internalRefUUID#80192)]
Join type: LeftOuter
Join condition: None
(1537) Project
Output [5]: [product#75735, plant#75736, orderDateTime#75737, _extract_code#80190, _extract_internalRefUUID#80191]
Input [7]: [product#75735, plant#75736, orderDateTime#75737, _extract_code#80190, _extract_internalRefUUID#80191, _extract_internalRefUUID#80189, _extract_internalRefUUID#80192]
(1538) Scan parquet
Output [2]: [internalUUID#75753, systemId#75752]
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>
(1539) Project
Output [1]: [internalUUID#75753]
Input [2]: [internalUUID#75753, systemId#75752]
(1540) Exchange
Input [1]: [internalUUID#75753]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43516]
(1541) BroadcastExchange
Input [1]: [internalUUID#75753]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=45355]
(1542) BroadcastHashJoin
Left keys [2]: [coalesce(plant#75736, ), isnull(plant#75736)]
Right keys [2]: [coalesce(internalUUID#75753, ), isnull(internalUUID#75753)]
Join type: LeftOuter
Join condition: None
(1543) Project
Output [5]: [product#75735, plant#75736, orderDateTime#75737, _extract_code#80190, _extract_internalRefUUID#80191]
Input [6]: [product#75735, plant#75736, orderDateTime#75737, _extract_code#80190, _extract_internalRefUUID#80191, internalUUID#75753]
(1544) Scan parquet
Output [4]: [internalUUID#75796, baseUnitOfMeasure#75800, unitOfMeasureConversions#75802, systemId#75795]
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>>>
(1545) Filter
Input [4]: [internalUUID#75796, baseUnitOfMeasure#75800, unitOfMeasureConversions#75802, systemId#75795]
Condition : isnotnull(internalUUID#75796)
(1546) Project
Output [3]: [internalUUID#75796, baseUnitOfMeasure#75800, unitOfMeasureConversions#75802]
Input [4]: [internalUUID#75796, baseUnitOfMeasure#75800, unitOfMeasureConversions#75802, systemId#75795]
(1547) Exchange
Input [3]: [internalUUID#75796, baseUnitOfMeasure#75800, unitOfMeasureConversions#75802]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43522]
(1548) BroadcastExchange
Input [3]: [internalUUID#75796, baseUnitOfMeasure#75800, unitOfMeasureConversions#75802]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=45361]
(1549) BroadcastHashJoin
Left keys [1]: [product#75735]
Right keys [1]: [internalUUID#75796]
Join type: LeftOuter
Join condition: None
(1550) Project
Output [4]: [product#75735, plant#75736, orderDateTime#75737, filter(unitOfMeasureConversions#75802, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#80190) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#80191)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#75800.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#75800.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#75811]
Input [8]: [product#75735, plant#75736, orderDateTime#75737, _extract_code#80190, _extract_internalRefUUID#80191, internalUUID#75796, baseUnitOfMeasure#75800, unitOfMeasureConversions#75802]
(1551) Generate
Input [4]: [product#75735, plant#75736, orderDateTime#75737, filteredUnitOfMeasureConversions#75811]
Arguments: explode(filteredUnitOfMeasureConversions#75811.quantityNumerator), [product#75735, plant#75736, orderDateTime#75737, filteredUnitOfMeasureConversions#75811], true, [quantityNumerator#75818]
(1552) Project
Output [4]: [product#75735, plant#75736, orderDateTime#75737, filteredUnitOfMeasureConversions#75811.quantityDenominator AS _extract_quantityDenominator#79862]
Input [5]: [product#75735, plant#75736, orderDateTime#75737, filteredUnitOfMeasureConversions#75811, quantityNumerator#75818]
(1553) Generate
Input [4]: [product#75735, plant#75736, orderDateTime#75737, _extract_quantityDenominator#79862]
Arguments: explode(_extract_quantityDenominator#79862), [product#75735, plant#75736, orderDateTime#75737], true, [quantityDenominator#75827]
(1554) Project
Output [3]: [product#75735, plant#75736, orderDateTime#75737]
Input [4]: [product#75735, plant#75736, orderDateTime#75737, quantityDenominator#75827]
(1555) Sort
Input [3]: [product#75735, plant#75736, orderDateTime#75737]
Arguments: [product#75735 ASC NULLS FIRST, plant#75736 ASC NULLS FIRST], false, 0
(1556) Scan parquet
Output [6]: [internalUUID#75845, product#75846, plant#75847, calculationDateTime#75848, stockQuantities#75849, systemId#75844]
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>>>>>
(1557) Filter
Input [6]: [internalUUID#75845, product#75846, plant#75847, calculationDateTime#75848, stockQuantities#75849, systemId#75844]
Condition : (isnotnull(plant#75847.internalRefUUID) AND isnotnull(product#75846.internalRefUUID))
(1558) Project
Output [6]: [systemId#75844, internalUUID#75845, product#75846, plant#75847, calculationDateTime#75848, stockQuantities#75849]
Input [6]: [internalUUID#75845, product#75846, plant#75847, calculationDateTime#75848, stockQuantities#75849, systemId#75844]
(1559) Exchange
Input [6]: [systemId#75844, internalUUID#75845, product#75846, plant#75847, calculationDateTime#75848, stockQuantities#75849]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43532]
(1560) BroadcastExchange
Input [6]: [systemId#75844, internalUUID#75845, product#75846, plant#75847, calculationDateTime#75848, stockQuantities#75849]
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=45408]
(1561) Scan parquet
Output [2]: [marketUnit#75850, distributionCenters#75856]
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>>>>>
(1562) Filter
Input [2]: [marketUnit#75850, distributionCenters#75856]
Condition : (((marketUnit#75850 <=> Daily_grocery) AND (size(distributionCenters#75856, true) > 0)) AND isnotnull(distributionCenters#75856))
(1563) Project
Output [1]: [distributionCenters#75856]
Input [2]: [marketUnit#75850, distributionCenters#75856]
(1564) Exchange
Input [1]: [distributionCenters#75856]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43536]
(1565) Generate
Input [1]: [distributionCenters#75856]
Arguments: explode(distributionCenters#75856), false, [distributionCenters#75885]
(1566) Filter
Input [1]: [distributionCenters#75885]
Condition : (((size(distributionCenters#75885.storageLocations, true) > 0) AND isnotnull(distributionCenters#75885.storageLocations)) AND isnotnull(distributionCenters#75885.internalRefUUID))
(1567) Project
Output [2]: [distributionCenters#75885.internalRefUUID AS _extract_internalRefUUID#79866, distributionCenters#75885.storageLocations AS _extract_storageLocations#79867]
Input [1]: [distributionCenters#75885]
(1568) Generate
Input [2]: [_extract_internalRefUUID#79866, _extract_storageLocations#79867]
Arguments: explode(_extract_storageLocations#79867), [_extract_internalRefUUID#79866], false, [storageLocations#75886]
(1569) Project
Output [3]: [_extract_internalRefUUID#79866 AS plantUuid#75888, storageLocations#75886.id AS storageLocId#75889, storageLocations#75886.internalRefUUID AS storageLocUuid#75890]
Input [2]: [_extract_internalRefUUID#79866, storageLocations#75886]
(1570) BroadcastExchange
Input [3]: [plantUuid#75888, storageLocId#75889, storageLocUuid#75890]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=45404]
(1571) Scan parquet
Output [2]: [product#75891, plant#75892]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1572) Filter
Input [2]: [product#75891, plant#75892]
Condition : isnotnull(plant#75892)
(1573) Exchange
Input [2]: [product#75891, plant#75892]
Arguments: hashpartitioning(product#75891, plant#75892, 25), REPARTITION_BY_NUM, [plan_id=44087]
(1574) Scan parquet
Output [4]: [plant#75898, product#75899, productionAspect#75901, systemId#75896]
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>>>>
(1575) Project
Output [4]: [plant#75898.internalRefUUID AS _extract_internalRefUUID#80193, product#75899.internalRefUUID AS _extract_internalRefUUID#80196, productionAspect#75901.productMovementPlants.unitOfIssue.code AS _extract_code#80194, productionAspect#75901.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#80195]
Input [4]: [plant#75898, product#75899, productionAspect#75901, systemId#75896]
(1576) Exchange
Input [4]: [_extract_internalRefUUID#80193, _extract_internalRefUUID#80196, _extract_code#80194, _extract_internalRefUUID#80195]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43548]
(1577) Project
Output [4]: [_extract_code#80194, _extract_internalRefUUID#80195, _extract_internalRefUUID#80196, _extract_internalRefUUID#80193]
Input [4]: [_extract_internalRefUUID#80193, _extract_internalRefUUID#80196, _extract_code#80194, _extract_internalRefUUID#80195]
(1578) BroadcastExchange
Input [4]: [_extract_code#80194, _extract_internalRefUUID#80195, _extract_internalRefUUID#80196, _extract_internalRefUUID#80193]
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=45384]
(1579) BroadcastHashJoin
Left keys [4]: [coalesce(product#75891, ), isnull(product#75891), coalesce(plant#75892, ), isnull(plant#75892)]
Right keys [4]: [coalesce(_extract_internalRefUUID#80196, ), isnull(_extract_internalRefUUID#80196), coalesce(_extract_internalRefUUID#80193, ), isnull(_extract_internalRefUUID#80193)]
Join type: LeftOuter
Join condition: None
(1580) Project
Output [4]: [product#75891, plant#75892, _extract_code#80194, _extract_internalRefUUID#80195]
Input [6]: [product#75891, plant#75892, _extract_code#80194, _extract_internalRefUUID#80195, _extract_internalRefUUID#80196, _extract_internalRefUUID#80193]
(1581) Scan parquet
Output [2]: [internalUUID#75908, systemId#75907]
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>
(1582) Project
Output [1]: [internalUUID#75908]
Input [2]: [internalUUID#75908, systemId#75907]
(1583) Exchange
Input [1]: [internalUUID#75908]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43554]
(1584) BroadcastExchange
Input [1]: [internalUUID#75908]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=45388]
(1585) BroadcastHashJoin
Left keys [2]: [coalesce(plant#75892, ), isnull(plant#75892)]
Right keys [2]: [coalesce(internalUUID#75908, ), isnull(internalUUID#75908)]
Join type: LeftOuter
Join condition: None
(1586) Project
Output [4]: [product#75891, plant#75892, _extract_code#80194, _extract_internalRefUUID#80195]
Input [5]: [product#75891, plant#75892, _extract_code#80194, _extract_internalRefUUID#80195, internalUUID#75908]
(1587) Scan parquet
Output [4]: [internalUUID#75924, baseUnitOfMeasure#75928, unitOfMeasureConversions#75930, systemId#75923]
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>>>
(1588) Filter
Input [4]: [internalUUID#75924, baseUnitOfMeasure#75928, unitOfMeasureConversions#75930, systemId#75923]
Condition : isnotnull(internalUUID#75924)
(1589) Project
Output [3]: [internalUUID#75924, baseUnitOfMeasure#75928, unitOfMeasureConversions#75930]
Input [4]: [internalUUID#75924, baseUnitOfMeasure#75928, unitOfMeasureConversions#75930, systemId#75923]
(1590) Exchange
Input [3]: [internalUUID#75924, baseUnitOfMeasure#75928, unitOfMeasureConversions#75930]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43560]
(1591) BroadcastExchange
Input [3]: [internalUUID#75924, baseUnitOfMeasure#75928, unitOfMeasureConversions#75930]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=45392]
(1592) BroadcastHashJoin
Left keys [1]: [product#75891]
Right keys [1]: [internalUUID#75924]
Join type: LeftOuter
Join condition: None
(1593) Project
Output [2]: [plant#75892, filter(unitOfMeasureConversions#75930, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#80194) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#80195)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#75928.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#75928.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#75935]
Input [7]: [product#75891, plant#75892, _extract_code#80194, _extract_internalRefUUID#80195, internalUUID#75924, baseUnitOfMeasure#75928, unitOfMeasureConversions#75930]
(1594) Generate
Input [2]: [plant#75892, filteredUnitOfMeasureConversions#75935]
Arguments: explode(filteredUnitOfMeasureConversions#75935.quantityNumerator), [plant#75892, filteredUnitOfMeasureConversions#75935], true, [quantityNumerator#75937]
(1595) Project
Output [2]: [plant#75892, filteredUnitOfMeasureConversions#75935.quantityDenominator AS _extract_quantityDenominator#79868]
Input [3]: [plant#75892, filteredUnitOfMeasureConversions#75935, quantityNumerator#75937]
(1596) Generate
Input [2]: [plant#75892, _extract_quantityDenominator#79868]
Arguments: explode(_extract_quantityDenominator#79868), [plant#75892], true, [quantityDenominator#75938]
(1597) Project
Output [1]: [plant#75892]
Input [2]: [plant#75892, quantityDenominator#75938]
(1598) HashAggregate
Input [1]: [plant#75892]
Keys [1]: [plant#75892]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#75892]
(1599) Exchange
Input [1]: [plant#75892]
Arguments: hashpartitioning(plant#75892, 25), ENSURE_REQUIREMENTS, [plan_id=45401]
(1600) HashAggregate
Input [1]: [plant#75892]
Keys [1]: [plant#75892]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#75892]
(1601) BroadcastHashJoin
Left keys [1]: [plantUuid#75888]
Right keys [1]: [plant#75892]
Join type: Inner
Join condition: None
(1602) Project
Output [3]: [plantUuid#75888, storageLocId#75889, storageLocUuid#75890]
Input [4]: [plantUuid#75888, storageLocId#75889, storageLocUuid#75890, plant#75892]
(1603) BroadcastHashJoin
Left keys [2]: [coalesce(plant#75847.internalRefUUID, ), isnull(plant#75847.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#75888, ), isnull(plantUuid#75888)]
Join type: Inner
Join condition: None
(1604) Generate
Input [9]: [systemId#75844, internalUUID#75845, product#75846, plant#75847, calculationDateTime#75848, stockQuantities#75849, plantUuid#75888, storageLocId#75889, storageLocUuid#75890]
Arguments: explode(filter(stockQuantities#75849, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#75890) AND (lambda x#69269.storageLocation.Id = storageLocId#75889)), lambda x#69269, false))), [systemId#75844, internalUUID#75845, product#75846, plant#75847, calculationDateTime#75848, plantUuid#75888], false, [stockQuantity#75966]
(1605) ObjectHashAggregate
Input [7]: [systemId#75844, internalUUID#75845, product#75846, plant#75847, calculationDateTime#75848, plantUuid#75888, stockQuantity#75966]
Keys [5]: [plantUuid#75888, internalUUID#75845, plant#75847, product#75846, systemId#75844]
Functions [2]: [partial_first(calculationDateTime#75848, false), partial_collect_list(stockQuantity#75966, 0, 0)]
Aggregate Attributes [3]: [first#81834, valueSet#81835, buf#81836]
Results [8]: [plantUuid#75888, internalUUID#75845, plant#75847, product#75846, systemId#75844, first#81837, valueSet#81838, buf#81839]
(1606) ObjectHashAggregate
Input [8]: [plantUuid#75888, internalUUID#75845, plant#75847, product#75846, systemId#75844, first#81837, valueSet#81838, buf#81839]
Keys [5]: [plantUuid#75888, internalUUID#75845, plant#75847, product#75846, systemId#75844]
Functions [2]: [first(calculationDateTime#75848, false), collect_list(stockQuantity#75966, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#75848)()#69286, collect_list(stockQuantity#75966, 0, 0)#69287]
Results [4]: [product#75846, plant#75847, first(calculationDateTime#75848)()#69286 AS calculationDateTime#75979, collect_list(stockQuantity#75966, 0, 0)#69287 AS stockQuantities#75980]
(1607) Filter
Input [4]: [product#75846, plant#75847, calculationDateTime#75979, stockQuantities#75980]
Condition : ((size(stockQuantities#75980, true) > 0) AND isnotnull(calculationDateTime#75979))
(1608) Generate
Input [4]: [product#75846, plant#75847, calculationDateTime#75979, stockQuantities#75980]
Arguments: explode(stockQuantities#75980), [product#75846, plant#75847, calculationDateTime#75979], false, [stockQuantity#75982]
(1609) Filter
Input [4]: [product#75846, plant#75847, calculationDateTime#75979, stockQuantity#75982]
Condition : (((isnotnull(stockQuantity#75982.specialStockIndicator.code) AND isnotnull(stockQuantity#75982.stockType.code)) AND (stockQuantity#75982.specialStockIndicator.code = )) AND (stockQuantity#75982.stockType.code = 01))
(1610) Project
Output [4]: [plant#75847.internalRefUUID AS plantUuid#75997, product#75846.internalRefUUID AS productUuid#75999, calculationDateTime#75979, stockQuantity#75982.storagelocation.id AS storageLocId#76000]
Input [4]: [product#75846, plant#75847, calculationDateTime#75979, stockQuantity#75982]
(1611) Exchange
Input [4]: [plantUuid#75997, productUuid#75999, calculationDateTime#75979, storageLocId#76000]
Arguments: hashpartitioning(productUuid#75999, plantUuid#75997, 25), ENSURE_REQUIREMENTS, [plan_id=45437]
(1612) Sort
Input [4]: [plantUuid#75997, productUuid#75999, calculationDateTime#75979, storageLocId#76000]
Arguments: [productUuid#75999 ASC NULLS FIRST, plantUuid#75997 ASC NULLS FIRST], false, 0
(1613) Scan parquet
Output [3]: [product#76005, plant#76006, orderDateTime#76007]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1614) Filter
Input [3]: [product#76005, plant#76006, orderDateTime#76007]
Condition : ((isnotnull(orderDateTime#76007) AND isnotnull(plant#76006)) AND isnotnull(product#76005))
(1615) Exchange
Input [3]: [product#76005, plant#76006, orderDateTime#76007]
Arguments: hashpartitioning(product#76005, plant#76006, 25), REPARTITION_BY_NUM, [plan_id=44110]
(1616) Scan parquet
Output [4]: [plant#76011, product#76012, productionAspect#76014, systemId#76009]
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>>>>
(1617) Project
Output [4]: [plant#76011.internalRefUUID AS _extract_internalRefUUID#80200, product#76012.internalRefUUID AS _extract_internalRefUUID#80197, productionAspect#76014.productMovementPlants.unitOfIssue.code AS _extract_code#80198, productionAspect#76014.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#80199]
Input [4]: [plant#76011, product#76012, productionAspect#76014, systemId#76009]
(1618) Exchange
Input [4]: [_extract_internalRefUUID#80200, _extract_internalRefUUID#80197, _extract_code#80198, _extract_internalRefUUID#80199]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43585]
(1619) Project
Output [4]: [_extract_code#80198, _extract_internalRefUUID#80199, _extract_internalRefUUID#80197, _extract_internalRefUUID#80200]
Input [4]: [_extract_internalRefUUID#80200, _extract_internalRefUUID#80197, _extract_code#80198, _extract_internalRefUUID#80199]
(1620) BroadcastExchange
Input [4]: [_extract_code#80198, _extract_internalRefUUID#80199, _extract_internalRefUUID#80197, _extract_internalRefUUID#80200]
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=45417]
(1621) BroadcastHashJoin
Left keys [4]: [coalesce(product#76005, ), isnull(product#76005), coalesce(plant#76006, ), isnull(plant#76006)]
Right keys [4]: [coalesce(_extract_internalRefUUID#80197, ), isnull(_extract_internalRefUUID#80197), coalesce(_extract_internalRefUUID#80200, ), isnull(_extract_internalRefUUID#80200)]
Join type: LeftOuter
Join condition: None
(1622) Project
Output [5]: [product#76005, plant#76006, orderDateTime#76007, _extract_code#80198, _extract_internalRefUUID#80199]
Input [7]: [product#76005, plant#76006, orderDateTime#76007, _extract_code#80198, _extract_internalRefUUID#80199, _extract_internalRefUUID#80197, _extract_internalRefUUID#80200]
(1623) Scan parquet
Output [2]: [internalUUID#76021, systemId#76020]
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>
(1624) Project
Output [1]: [internalUUID#76021]
Input [2]: [internalUUID#76021, systemId#76020]
(1625) Exchange
Input [1]: [internalUUID#76021]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43591]
(1626) BroadcastExchange
Input [1]: [internalUUID#76021]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=45421]
(1627) BroadcastHashJoin
Left keys [2]: [coalesce(plant#76006, ), isnull(plant#76006)]
Right keys [2]: [coalesce(internalUUID#76021, ), isnull(internalUUID#76021)]
Join type: LeftOuter
Join condition: None
(1628) Project
Output [5]: [product#76005, plant#76006, orderDateTime#76007, _extract_code#80198, _extract_internalRefUUID#80199]
Input [6]: [product#76005, plant#76006, orderDateTime#76007, _extract_code#80198, _extract_internalRefUUID#80199, internalUUID#76021]
(1629) Scan parquet
Output [4]: [internalUUID#76037, baseUnitOfMeasure#76041, unitOfMeasureConversions#76043, systemId#76036]
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>>>
(1630) Filter
Input [4]: [internalUUID#76037, baseUnitOfMeasure#76041, unitOfMeasureConversions#76043, systemId#76036]
Condition : isnotnull(internalUUID#76037)
(1631) Project
Output [3]: [internalUUID#76037, baseUnitOfMeasure#76041, unitOfMeasureConversions#76043]
Input [4]: [internalUUID#76037, baseUnitOfMeasure#76041, unitOfMeasureConversions#76043, systemId#76036]
(1632) Exchange
Input [3]: [internalUUID#76037, baseUnitOfMeasure#76041, unitOfMeasureConversions#76043]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43597]
(1633) BroadcastExchange
Input [3]: [internalUUID#76037, baseUnitOfMeasure#76041, unitOfMeasureConversions#76043]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=45425]
(1634) BroadcastHashJoin
Left keys [1]: [product#76005]
Right keys [1]: [internalUUID#76037]
Join type: LeftOuter
Join condition: None
(1635) Project
Output [4]: [product#76005, plant#76006, orderDateTime#76007, filter(unitOfMeasureConversions#76043, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#80198) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#80199)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#76041.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76041.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#76049]
Input [8]: [product#76005, plant#76006, orderDateTime#76007, _extract_code#80198, _extract_internalRefUUID#80199, internalUUID#76037, baseUnitOfMeasure#76041, unitOfMeasureConversions#76043]
(1636) Generate
Input [4]: [product#76005, plant#76006, orderDateTime#76007, filteredUnitOfMeasureConversions#76049]
Arguments: explode(filteredUnitOfMeasureConversions#76049.quantityNumerator), [product#76005, plant#76006, orderDateTime#76007, filteredUnitOfMeasureConversions#76049], true, [quantityNumerator#76052]
(1637) Project
Output [4]: [product#76005, plant#76006, orderDateTime#76007, filteredUnitOfMeasureConversions#76049.quantityDenominator AS _extract_quantityDenominator#79872]
Input [5]: [product#76005, plant#76006, orderDateTime#76007, filteredUnitOfMeasureConversions#76049, quantityNumerator#76052]
(1638) Generate
Input [4]: [product#76005, plant#76006, orderDateTime#76007, _extract_quantityDenominator#79872]
Arguments: explode(_extract_quantityDenominator#79872), [product#76005, plant#76006, orderDateTime#76007], true, [quantityDenominator#76081]
(1639) Project
Output [3]: [product#76005, plant#76006, orderDateTime#76007]
Input [4]: [product#76005, plant#76006, orderDateTime#76007, quantityDenominator#76081]
(1640) Sort
Input [3]: [product#76005, plant#76006, orderDateTime#76007]
Arguments: [product#76005 ASC NULLS FIRST, plant#76006 ASC NULLS FIRST], false, 0
(1641) SortMergeJoin
Left keys [2]: [productUuid#75999, plantUuid#75997]
Right keys [2]: [product#76005, plant#76006]
Join type: Inner
Join condition: (calculationDateTime#75979 <= orderDateTime#76007)
(1642) Project
Output [4]: [plantUuid#75997 AS plant#76103, productUuid#75999 AS product#76104, storageLocId#76000, calculationDateTime#75979]
Input [7]: [plantUuid#75997, productUuid#75999, calculationDateTime#75979, storageLocId#76000, product#76005, plant#76006, orderDateTime#76007]
(1643) Exchange
Input [4]: [plant#76103, product#76104, storageLocId#76000, calculationDateTime#75979]
Arguments: hashpartitioning(coalesce(plant#76103, ), isnull(plant#76103), coalesce(product#76104, ), isnull(product#76104), coalesce(storageLocId#76000, ), isnull(storageLocId#76000), coalesce(calculationDateTime#75979, 1970-01-01 00:00:00), isnull(calculationDateTime#75979), 25), ENSURE_REQUIREMENTS, [plan_id=45991]
(1644) Sort
Input [4]: [plant#76103, product#76104, storageLocId#76000, calculationDateTime#75979]
Arguments: [coalesce(plant#76103, ) ASC NULLS FIRST, isnull(plant#76103) ASC NULLS FIRST, coalesce(product#76104, ) ASC NULLS FIRST, isnull(product#76104) ASC NULLS FIRST, coalesce(storageLocId#76000, ) ASC NULLS FIRST, isnull(storageLocId#76000) ASC NULLS FIRST, coalesce(calculationDateTime#75979, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#75979) ASC NULLS FIRST], false, 0
(1645) Scan parquet
Output [6]: [internalUUID#76106, product#76107, plant#76108, calculationDateTime#76109, stockQuantities#76110, systemId#76105]
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>>>>>
(1646) Filter
Input [6]: [internalUUID#76106, product#76107, plant#76108, calculationDateTime#76109, stockQuantities#76110, systemId#76105]
Condition : (isnotnull(plant#76108.internalRefUUID) AND isnotnull(product#76107.internalRefUUID))
(1647) Project
Output [6]: [systemId#76105, internalUUID#76106, product#76107, plant#76108, calculationDateTime#76109, stockQuantities#76110]
Input [6]: [internalUUID#76106, product#76107, plant#76108, calculationDateTime#76109, stockQuantities#76110, systemId#76105]
(1648) Exchange
Input [6]: [systemId#76105, internalUUID#76106, product#76107, plant#76108, calculationDateTime#76109, stockQuantities#76110]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43609]
(1649) BroadcastExchange
Input [6]: [systemId#76105, internalUUID#76106, product#76107, plant#76108, calculationDateTime#76109, stockQuantities#76110]
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=45558]
(1650) Scan parquet
Output [2]: [marketUnit#76111, distributionCenters#76117]
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>>>>>
(1651) Filter
Input [2]: [marketUnit#76111, distributionCenters#76117]
Condition : (((marketUnit#76111 <=> Daily_grocery) AND (size(distributionCenters#76117, true) > 0)) AND isnotnull(distributionCenters#76117))
(1652) Project
Output [1]: [distributionCenters#76117]
Input [2]: [marketUnit#76111, distributionCenters#76117]
(1653) Exchange
Input [1]: [distributionCenters#76117]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43613]
(1654) Generate
Input [1]: [distributionCenters#76117]
Arguments: explode(distributionCenters#76117), false, [distributionCenters#76146]
(1655) Filter
Input [1]: [distributionCenters#76146]
Condition : (((size(distributionCenters#76146.storageLocations, true) > 0) AND isnotnull(distributionCenters#76146.storageLocations)) AND isnotnull(distributionCenters#76146.internalRefUUID))
(1656) Project
Output [2]: [distributionCenters#76146.internalRefUUID AS _extract_internalRefUUID#79876, distributionCenters#76146.storageLocations AS _extract_storageLocations#79877]
Input [1]: [distributionCenters#76146]
(1657) Generate
Input [2]: [_extract_internalRefUUID#79876, _extract_storageLocations#79877]
Arguments: explode(_extract_storageLocations#79877), [_extract_internalRefUUID#79876], false, [storageLocations#76147]
(1658) Project
Output [3]: [_extract_internalRefUUID#79876 AS plantUuid#76150, storageLocations#76147.id AS storageLocId#76163, storageLocations#76147.internalRefUUID AS storageLocUuid#76164]
Input [2]: [_extract_internalRefUUID#79876, storageLocations#76147]
(1659) BroadcastExchange
Input [3]: [plantUuid#76150, storageLocId#76163, storageLocUuid#76164]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=45539]
(1660) Scan parquet
Output [2]: [product#76165, plant#76166]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1661) Filter
Input [2]: [product#76165, plant#76166]
Condition : isnotnull(plant#76166)
(1662) Exchange
Input [2]: [product#76165, plant#76166]
Arguments: hashpartitioning(product#76165, plant#76166, 25), REPARTITION_BY_NUM, [plan_id=44123]
(1663) Scan parquet
Output [4]: [plant#76171, product#76172, productionAspect#76174, systemId#76169]
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>>>>
(1664) Project
Output [4]: [plant#76171.internalRefUUID AS _extract_internalRefUUID#80204, product#76172.internalRefUUID AS _extract_internalRefUUID#80201, productionAspect#76174.productMovementPlants.unitOfIssue.code AS _extract_code#80202, productionAspect#76174.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#80203]
Input [4]: [plant#76171, product#76172, productionAspect#76174, systemId#76169]
(1665) Exchange
Input [4]: [_extract_internalRefUUID#80204, _extract_internalRefUUID#80201, _extract_code#80202, _extract_internalRefUUID#80203]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43625]
(1666) Project
Output [4]: [_extract_code#80202, _extract_internalRefUUID#80203, _extract_internalRefUUID#80201, _extract_internalRefUUID#80204]
Input [4]: [_extract_internalRefUUID#80204, _extract_internalRefUUID#80201, _extract_code#80202, _extract_internalRefUUID#80203]
(1667) BroadcastExchange
Input [4]: [_extract_code#80202, _extract_internalRefUUID#80203, _extract_internalRefUUID#80201, _extract_internalRefUUID#80204]
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=45474]
(1668) BroadcastHashJoin
Left keys [4]: [coalesce(product#76165, ), isnull(product#76165), coalesce(plant#76166, ), isnull(plant#76166)]
Right keys [4]: [coalesce(_extract_internalRefUUID#80201, ), isnull(_extract_internalRefUUID#80201), coalesce(_extract_internalRefUUID#80204, ), isnull(_extract_internalRefUUID#80204)]
Join type: LeftOuter
Join condition: None
(1669) Project
Output [4]: [product#76165, plant#76166, _extract_code#80202, _extract_internalRefUUID#80203]
Input [6]: [product#76165, plant#76166, _extract_code#80202, _extract_internalRefUUID#80203, _extract_internalRefUUID#80201, _extract_internalRefUUID#80204]
(1670) Scan parquet
Output [2]: [internalUUID#76181, systemId#76180]
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>
(1671) Project
Output [1]: [internalUUID#76181]
Input [2]: [internalUUID#76181, systemId#76180]
(1672) Exchange
Input [1]: [internalUUID#76181]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43631]
(1673) BroadcastExchange
Input [1]: [internalUUID#76181]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=45481]
(1674) BroadcastHashJoin
Left keys [2]: [coalesce(plant#76166, ), isnull(plant#76166)]
Right keys [2]: [coalesce(internalUUID#76181, ), isnull(internalUUID#76181)]
Join type: LeftOuter
Join condition: None
(1675) Project
Output [4]: [product#76165, plant#76166, _extract_code#80202, _extract_internalRefUUID#80203]
Input [5]: [product#76165, plant#76166, _extract_code#80202, _extract_internalRefUUID#80203, internalUUID#76181]
(1676) Scan parquet
Output [4]: [internalUUID#76196, baseUnitOfMeasure#76200, unitOfMeasureConversions#76202, systemId#76195]
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>>>
(1677) Filter
Input [4]: [internalUUID#76196, baseUnitOfMeasure#76200, unitOfMeasureConversions#76202, systemId#76195]
Condition : isnotnull(internalUUID#76196)
(1678) Project
Output [3]: [internalUUID#76196, baseUnitOfMeasure#76200, unitOfMeasureConversions#76202]
Input [4]: [internalUUID#76196, baseUnitOfMeasure#76200, unitOfMeasureConversions#76202, systemId#76195]
(1679) Exchange
Input [3]: [internalUUID#76196, baseUnitOfMeasure#76200, unitOfMeasureConversions#76202]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43637]
(1680) BroadcastExchange
Input [3]: [internalUUID#76196, baseUnitOfMeasure#76200, unitOfMeasureConversions#76202]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=45495]
(1681) BroadcastHashJoin
Left keys [1]: [product#76165]
Right keys [1]: [internalUUID#76196]
Join type: LeftOuter
Join condition: None
(1682) Project
Output [2]: [plant#76166, filter(unitOfMeasureConversions#76202, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#80202) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#80203)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#76200.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76200.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#76209]
Input [7]: [product#76165, plant#76166, _extract_code#80202, _extract_internalRefUUID#80203, internalUUID#76196, baseUnitOfMeasure#76200, unitOfMeasureConversions#76202]
(1683) Generate
Input [2]: [plant#76166, filteredUnitOfMeasureConversions#76209]
Arguments: explode(filteredUnitOfMeasureConversions#76209.quantityNumerator), [plant#76166, filteredUnitOfMeasureConversions#76209], true, [quantityNumerator#76210]
(1684) Project
Output [2]: [plant#76166, filteredUnitOfMeasureConversions#76209.quantityDenominator AS _extract_quantityDenominator#79878]
Input [3]: [plant#76166, filteredUnitOfMeasureConversions#76209, quantityNumerator#76210]
(1685) Generate
Input [2]: [plant#76166, _extract_quantityDenominator#79878]
Arguments: explode(_extract_quantityDenominator#79878), [plant#76166], true, [quantityDenominator#76211]
(1686) Project
Output [1]: [plant#76166]
Input [2]: [plant#76166, quantityDenominator#76211]
(1687) HashAggregate
Input [1]: [plant#76166]
Keys [1]: [plant#76166]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#76166]
(1688) Exchange
Input [1]: [plant#76166]
Arguments: hashpartitioning(plant#76166, 25), ENSURE_REQUIREMENTS, [plan_id=45536]
(1689) HashAggregate
Input [1]: [plant#76166]
Keys [1]: [plant#76166]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#76166]
(1690) BroadcastHashJoin
Left keys [1]: [plantUuid#76150]
Right keys [1]: [plant#76166]
Join type: Inner
Join condition: None
(1691) Project
Output [3]: [plantUuid#76150, storageLocId#76163, storageLocUuid#76164]
Input [4]: [plantUuid#76150, storageLocId#76163, storageLocUuid#76164, plant#76166]
(1692) BroadcastHashJoin
Left keys [2]: [coalesce(plant#76108.internalRefUUID, ), isnull(plant#76108.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#76150, ), isnull(plantUuid#76150)]
Join type: Inner
Join condition: None
(1693) Generate
Input [9]: [systemId#76105, internalUUID#76106, product#76107, plant#76108, calculationDateTime#76109, stockQuantities#76110, plantUuid#76150, storageLocId#76163, storageLocUuid#76164]
Arguments: explode(filter(stockQuantities#76110, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#76164) AND (lambda x#69269.storageLocation.Id = storageLocId#76163)), lambda x#69269, false))), [systemId#76105, internalUUID#76106, product#76107, plant#76108, calculationDateTime#76109, plantUuid#76150], false, [stockQuantity#76218]
(1694) ObjectHashAggregate
Input [7]: [systemId#76105, internalUUID#76106, product#76107, plant#76108, calculationDateTime#76109, plantUuid#76150, stockQuantity#76218]
Keys [5]: [plantUuid#76150, internalUUID#76106, plant#76108, product#76107, systemId#76105]
Functions [2]: [partial_first(calculationDateTime#76109, false), partial_collect_list(stockQuantity#76218, 0, 0)]
Aggregate Attributes [3]: [first#81842, valueSet#81843, buf#81844]
Results [8]: [plantUuid#76150, internalUUID#76106, plant#76108, product#76107, systemId#76105, first#81845, valueSet#81846, buf#81847]
(1695) ObjectHashAggregate
Input [8]: [plantUuid#76150, internalUUID#76106, plant#76108, product#76107, systemId#76105, first#81845, valueSet#81846, buf#81847]
Keys [5]: [plantUuid#76150, internalUUID#76106, plant#76108, product#76107, systemId#76105]
Functions [2]: [first(calculationDateTime#76109, false), collect_list(stockQuantity#76218, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#76109)()#69286, collect_list(stockQuantity#76218, 0, 0)#69287]
Results [4]: [product#76107, plant#76108, first(calculationDateTime#76109)()#69286 AS calculationDateTime#76228, collect_list(stockQuantity#76218, 0, 0)#69287 AS stockQuantities#76229]
(1696) Filter
Input [4]: [product#76107, plant#76108, calculationDateTime#76228, stockQuantities#76229]
Condition : ((size(stockQuantities#76229, true) > 0) AND isnotnull(calculationDateTime#76228))
(1697) Generate
Input [4]: [product#76107, plant#76108, calculationDateTime#76228, stockQuantities#76229]
Arguments: explode(stockQuantities#76229), [product#76107, plant#76108, calculationDateTime#76228], false, [stockQuantity#76242]
(1698) Filter
Input [4]: [product#76107, plant#76108, calculationDateTime#76228, stockQuantity#76242]
Condition : (((isnotnull(stockQuantity#76242.specialStockIndicator.code) AND isnotnull(stockQuantity#76242.stockType.code)) AND (stockQuantity#76242.specialStockIndicator.code = )) AND (stockQuantity#76242.stockType.code = 01))
(1699) Project
Output [4]: [plant#76108.internalRefUUID AS plantUuid#76245, product#76107.internalRefUUID AS productUuid#76247, calculationDateTime#76228, stockQuantity#76242.storagelocation.id AS storageLocId#76248]
Input [4]: [product#76107, plant#76108, calculationDateTime#76228, stockQuantity#76242]
(1700) Exchange
Input [4]: [plantUuid#76245, productUuid#76247, calculationDateTime#76228, storageLocId#76248]
Arguments: hashpartitioning(productUuid#76247, plantUuid#76245, 25), ENSURE_REQUIREMENTS, [plan_id=45907]
(1701) Sort
Input [4]: [plantUuid#76245, productUuid#76247, calculationDateTime#76228, storageLocId#76248]
Arguments: [productUuid#76247 ASC NULLS FIRST, plantUuid#76245 ASC NULLS FIRST], false, 0
(1702) Scan parquet
Output [3]: [product#76253, plant#76254, orderDateTime#76255]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1703) Filter
Input [3]: [product#76253, plant#76254, orderDateTime#76255]
Condition : ((isnotnull(orderDateTime#76255) AND isnotnull(plant#76254)) AND isnotnull(product#76253))
(1704) Exchange
Input [3]: [product#76253, plant#76254, orderDateTime#76255]
Arguments: hashpartitioning(product#76253, plant#76254, 25), REPARTITION_BY_NUM, [plan_id=44146]
(1705) Scan parquet
Output [4]: [plant#76259, product#76260, productionAspect#76262, systemId#76257]
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>>>>
(1706) Project
Output [4]: [plant#76259.internalRefUUID AS _extract_internalRefUUID#80205, product#76260.internalRefUUID AS _extract_internalRefUUID#80208, productionAspect#76262.productMovementPlants.unitOfIssue.code AS _extract_code#80206, productionAspect#76262.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#80207]
Input [4]: [plant#76259, product#76260, productionAspect#76262, systemId#76257]
(1707) Exchange
Input [4]: [_extract_internalRefUUID#80205, _extract_internalRefUUID#80208, _extract_code#80206, _extract_internalRefUUID#80207]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43662]
(1708) Project
Output [4]: [_extract_code#80206, _extract_internalRefUUID#80207, _extract_internalRefUUID#80208, _extract_internalRefUUID#80205]
Input [4]: [_extract_internalRefUUID#80205, _extract_internalRefUUID#80208, _extract_code#80206, _extract_internalRefUUID#80207]
(1709) BroadcastExchange
Input [4]: [_extract_code#80206, _extract_internalRefUUID#80207, _extract_internalRefUUID#80208, _extract_internalRefUUID#80205]
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=45616]
(1710) BroadcastHashJoin
Left keys [4]: [coalesce(product#76253, ), isnull(product#76253), coalesce(plant#76254, ), isnull(plant#76254)]
Right keys [4]: [coalesce(_extract_internalRefUUID#80208, ), isnull(_extract_internalRefUUID#80208), coalesce(_extract_internalRefUUID#80205, ), isnull(_extract_internalRefUUID#80205)]
Join type: LeftOuter
Join condition: None
(1711) Project
Output [5]: [product#76253, plant#76254, orderDateTime#76255, _extract_code#80206, _extract_internalRefUUID#80207]
Input [7]: [product#76253, plant#76254, orderDateTime#76255, _extract_code#80206, _extract_internalRefUUID#80207, _extract_internalRefUUID#80208, _extract_internalRefUUID#80205]
(1712) Scan parquet
Output [2]: [internalUUID#76293, systemId#76292]
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>
(1713) Project
Output [1]: [internalUUID#76293]
Input [2]: [internalUUID#76293, systemId#76292]
(1714) Exchange
Input [1]: [internalUUID#76293]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43668]
(1715) BroadcastExchange
Input [1]: [internalUUID#76293]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=45702]
(1716) BroadcastHashJoin
Left keys [2]: [coalesce(plant#76254, ), isnull(plant#76254)]
Right keys [2]: [coalesce(internalUUID#76293, ), isnull(internalUUID#76293)]
Join type: LeftOuter
Join condition: None
(1717) Project
Output [5]: [product#76253, plant#76254, orderDateTime#76255, _extract_code#80206, _extract_internalRefUUID#80207]
Input [6]: [product#76253, plant#76254, orderDateTime#76255, _extract_code#80206, _extract_internalRefUUID#80207, internalUUID#76293]
(1718) Scan parquet
Output [4]: [internalUUID#76308, baseUnitOfMeasure#76312, unitOfMeasureConversions#76314, systemId#76307]
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>>>
(1719) Filter
Input [4]: [internalUUID#76308, baseUnitOfMeasure#76312, unitOfMeasureConversions#76314, systemId#76307]
Condition : isnotnull(internalUUID#76308)
(1720) Project
Output [3]: [internalUUID#76308, baseUnitOfMeasure#76312, unitOfMeasureConversions#76314]
Input [4]: [internalUUID#76308, baseUnitOfMeasure#76312, unitOfMeasureConversions#76314, systemId#76307]
(1721) Exchange
Input [3]: [internalUUID#76308, baseUnitOfMeasure#76312, unitOfMeasureConversions#76314]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43674]
(1722) BroadcastExchange
Input [3]: [internalUUID#76308, baseUnitOfMeasure#76312, unitOfMeasureConversions#76314]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=45706]
(1723) BroadcastHashJoin
Left keys [1]: [product#76253]
Right keys [1]: [internalUUID#76308]
Join type: LeftOuter
Join condition: None
(1724) Project
Output [4]: [product#76253, plant#76254, orderDateTime#76255, filter(unitOfMeasureConversions#76314, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#80206) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#80207)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#76312.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76312.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#76322]
Input [8]: [product#76253, plant#76254, orderDateTime#76255, _extract_code#80206, _extract_internalRefUUID#80207, internalUUID#76308, baseUnitOfMeasure#76312, unitOfMeasureConversions#76314]
(1725) Generate
Input [4]: [product#76253, plant#76254, orderDateTime#76255, filteredUnitOfMeasureConversions#76322]
Arguments: explode(filteredUnitOfMeasureConversions#76322.quantityNumerator), [product#76253, plant#76254, orderDateTime#76255, filteredUnitOfMeasureConversions#76322], true, [quantityNumerator#76323]
(1726) Project
Output [4]: [product#76253, plant#76254, orderDateTime#76255, filteredUnitOfMeasureConversions#76322.quantityDenominator AS _extract_quantityDenominator#79882]
Input [5]: [product#76253, plant#76254, orderDateTime#76255, filteredUnitOfMeasureConversions#76322, quantityNumerator#76323]
(1727) Generate
Input [4]: [product#76253, plant#76254, orderDateTime#76255, _extract_quantityDenominator#79882]
Arguments: explode(_extract_quantityDenominator#79882), [product#76253, plant#76254, orderDateTime#76255], true, [quantityDenominator#76325]
(1728) Project
Output [3]: [product#76253, plant#76254, orderDateTime#76255]
Input [4]: [product#76253, plant#76254, orderDateTime#76255, quantityDenominator#76325]
(1729) Sort
Input [3]: [product#76253, plant#76254, orderDateTime#76255]
Arguments: [product#76253 ASC NULLS FIRST, plant#76254 ASC NULLS FIRST], false, 0
(1730) SortMergeJoin
Left keys [2]: [productUuid#76247, plantUuid#76245]
Right keys [2]: [product#76253, plant#76254]
Join type: Inner
Join condition: (calculationDateTime#76228 <= orderDateTime#76255)
(1731) Project
Output [4]: [plantUuid#76245 AS plant#76336, productUuid#76247 AS product#76337, storageLocId#76248, calculationDateTime#76228]
Input [7]: [plantUuid#76245, productUuid#76247, calculationDateTime#76228, storageLocId#76248, product#76253, plant#76254, orderDateTime#76255]
(1732) HashAggregate
Input [4]: [plant#76336, product#76337, storageLocId#76248, calculationDateTime#76228]
Keys [3]: [plant#76336, product#76337, storageLocId#76248]
Functions [1]: [partial_max(calculationDateTime#76228)]
Aggregate Attributes [1]: [max#81840]
Results [4]: [plant#76336, product#76337, storageLocId#76248, max#81841]
(1733) HashAggregate
Input [4]: [plant#76336, product#76337, storageLocId#76248, max#81841]
Keys [3]: [plant#76336, product#76337, storageLocId#76248]
Functions [1]: [max(calculationDateTime#76228)]
Aggregate Attributes [1]: [max(calculationDateTime#76228)#69447]
Results [4]: [plant#76336, product#76337, storageLocId#76248, max(calculationDateTime#76228)#69447 AS max_calc_datetime#76339]
(1734) Exchange
Input [4]: [plant#76336, product#76337, storageLocId#76248, max_calc_datetime#76339]
Arguments: hashpartitioning(coalesce(plant#76336, ), isnull(plant#76336), coalesce(product#76337, ), isnull(product#76337), coalesce(storageLocId#76248, ), isnull(storageLocId#76248), coalesce(max_calc_datetime#76339, 1970-01-01 00:00:00), isnull(max_calc_datetime#76339), 25), ENSURE_REQUIREMENTS, [plan_id=45996]
(1735) Sort
Input [4]: [plant#76336, product#76337, storageLocId#76248, max_calc_datetime#76339]
Arguments: [coalesce(plant#76336, ) ASC NULLS FIRST, isnull(plant#76336) ASC NULLS FIRST, coalesce(product#76337, ) ASC NULLS FIRST, isnull(product#76337) ASC NULLS FIRST, coalesce(storageLocId#76248, ) ASC NULLS FIRST, isnull(storageLocId#76248) ASC NULLS FIRST, coalesce(max_calc_datetime#76339, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#76339) ASC NULLS FIRST], false, 0
(1736) SortMergeJoin
Left keys [8]: [coalesce(plant#76103, ), isnull(plant#76103), coalesce(product#76104, ), isnull(product#76104), coalesce(storageLocId#76000, ), isnull(storageLocId#76000), coalesce(calculationDateTime#75979, 1970-01-01 00:00:00), isnull(calculationDateTime#75979)]
Right keys [8]: [coalesce(plant#76336, ), isnull(plant#76336), coalesce(product#76337, ), isnull(product#76337), coalesce(storageLocId#76248, ), isnull(storageLocId#76248), coalesce(max_calc_datetime#76339, 1970-01-01 00:00:00), isnull(max_calc_datetime#76339)]
Join type: Inner
Join condition: None
(1737) Project
Output [3]: [plant#76103, product#76104, calculationDateTime#75979]
Input [8]: [plant#76103, product#76104, storageLocId#76000, calculationDateTime#75979, plant#76336, product#76337, storageLocId#76248, max_calc_datetime#76339]
(1738) HashAggregate
Input [3]: [plant#76103, product#76104, calculationDateTime#75979]
Keys [2]: [product#76104, plant#76103]
Functions [1]: [partial_min(calculationDateTime#75979)]
Aggregate Attributes [1]: [min#81832]
Results [3]: [product#76104, plant#76103, min#81833]
(1739) Exchange
Input [3]: [product#76104, plant#76103, min#81833]
Arguments: hashpartitioning(product#76104, plant#76103, 25), ENSURE_REQUIREMENTS, [plan_id=46009]
(1740) HashAggregate
Input [3]: [product#76104, plant#76103, min#81833]
Keys [2]: [product#76104, plant#76103]
Functions [1]: [min(calculationDateTime#75979)]
Aggregate Attributes [1]: [min(calculationDateTime#75979)#69766]
Results [3]: [product#76104, plant#76103, min(calculationDateTime#75979)#69766 AS minCalculationDateTime#76353]
(1741) Sort
Input [3]: [product#76104, plant#76103, minCalculationDateTime#76353]
Arguments: [product#76104 ASC NULLS FIRST, plant#76103 ASC NULLS FIRST], false, 0
(1742) SortMergeJoin
Left keys [2]: [product#75735, plant#75736]
Right keys [2]: [product#76104, plant#76103]
Join type: LeftOuter
Join condition: None
(1743) Project
Output [3]: [product#75735, plant#75736, CASE WHEN isnotnull(minCalculationDateTime#76353) THEN minCalculationDateTime#76353 ELSE orderDateTime#75737 END AS stockDatetime#76369]
Input [6]: [product#75735, plant#75736, orderDateTime#75737, product#76104, plant#76103, minCalculationDateTime#76353]
(1744) Exchange
Input [3]: [product#75735, plant#75736, stockDatetime#76369]
Arguments: hashpartitioning(coalesce(plant#75736, ), isnull(plant#75736), coalesce(product#75735, ), isnull(product#75735), 25), ENSURE_REQUIREMENTS, [plan_id=46901]
(1745) Sort
Input [3]: [product#75735, plant#75736, stockDatetime#76369]
Arguments: [coalesce(plant#75736, ) ASC NULLS FIRST, isnull(plant#75736) ASC NULLS FIRST, coalesce(product#75735, ) ASC NULLS FIRST, isnull(product#75735) ASC NULLS FIRST], false, 0
(1746) Scan parquet
Output [3]: [product#76385, plant#76386, orderDateTime#76387]
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/10000002106/shardId=0_1_10000002106]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1747) Exchange
Input [3]: [product#76385, plant#76386, orderDateTime#76387]
Arguments: hashpartitioning(product#76385, plant#76386, 25), REPARTITION_BY_NUM, [plan_id=43692]
(1748) Scan parquet
Output [8]: [internalUUID#76390, plant#76391, product#76392, blockedForReplenishmentStartingFrom#76393, productionAspect#76394, salesPlant#76395, listing#76396, systemId#76389]
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>>>
(1749) Project
Output [8]: [systemId#76389, internalUUID#76390, plant#76391, product#76392, blockedForReplenishmentStartingFrom#76393, productionAspect#76394, salesPlant#76395, listing#76396]
Input [8]: [internalUUID#76390, plant#76391, product#76392, blockedForReplenishmentStartingFrom#76393, productionAspect#76394, salesPlant#76395, listing#76396, systemId#76389]
(1750) Exchange
Input [8]: [systemId#76389, internalUUID#76390, plant#76391, product#76392, blockedForReplenishmentStartingFrom#76393, productionAspect#76394, salesPlant#76395, listing#76396]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43695]
(1751) Project
Output [1]: [struct(systemId, systemId#76389, internalUUID, internalUUID#76390, plant, plant#76391, product, product#76392, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#76393, productionAspect, productionAspect#76394, salesPlant, salesPlant#76395, listing, listing#76396) AS productPlant#76397]
Input [8]: [systemId#76389, internalUUID#76390, plant#76391, product#76392, blockedForReplenishmentStartingFrom#76393, productionAspect#76394, salesPlant#76395, listing#76396]
(1752) BroadcastExchange
Input [1]: [productPlant#76397]
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=46017]
(1753) BroadcastHashJoin
Left keys [4]: [coalesce(product#76385, ), isnull(product#76385), coalesce(plant#76386, ), isnull(plant#76386)]
Right keys [4]: [coalesce(productPlant#76397.product.internalRefUUID, ), isnull(productPlant#76397.product.internalRefUUID), coalesce(productPlant#76397.plant.internalRefUUID, ), isnull(productPlant#76397.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1754) Scan parquet
Output [3]: [internalUUID#76399, address#76405, systemId#76398]
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>>>
(1755) Project
Output [2]: [internalUUID#76399, address#76405.timeZone.code AS timezonecode#76410]
Input [3]: [internalUUID#76399, address#76405, systemId#76398]
(1756) Exchange
Input [2]: [internalUUID#76399, timezonecode#76410]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43700]
(1757) BroadcastExchange
Input [2]: [internalUUID#76399, timezonecode#76410]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=46020]
(1758) BroadcastHashJoin
Left keys [2]: [coalesce(plant#76386, ), isnull(plant#76386)]
Right keys [2]: [coalesce(internalUUID#76399, ), isnull(internalUUID#76399)]
Join type: LeftOuter
Join condition: None
(1759) Project
Output [5]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, CASE WHEN isnotnull(timezonecode#76410) THEN timezonecode#76410 ELSE UTC END AS timezonecode#76413]
Input [6]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, internalUUID#76399, timezonecode#76410]
(1760) Scan parquet
Output [4]: [internalUUID#76415, baseUnitOfMeasure#76419, unitOfMeasureConversions#76421, systemId#76414]
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>>>
(1761) Filter
Input [4]: [internalUUID#76415, baseUnitOfMeasure#76419, unitOfMeasureConversions#76421, systemId#76414]
Condition : isnotnull(internalUUID#76415)
(1762) Project
Output [3]: [internalUUID#76415, baseUnitOfMeasure#76419, unitOfMeasureConversions#76421]
Input [4]: [internalUUID#76415, baseUnitOfMeasure#76419, unitOfMeasureConversions#76421, systemId#76414]
(1763) Exchange
Input [3]: [internalUUID#76415, baseUnitOfMeasure#76419, unitOfMeasureConversions#76421]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43706]
(1764) BroadcastExchange
Input [3]: [internalUUID#76415, baseUnitOfMeasure#76419, unitOfMeasureConversions#76421]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=46024]
(1765) BroadcastHashJoin
Left keys [1]: [product#76385]
Right keys [1]: [internalUUID#76415]
Join type: LeftOuter
Join condition: None
(1766) Project
Output [6]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, filter(unitOfMeasureConversions#76421, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#76397.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#76397.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#76419.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76419.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#76428]
Input [8]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, internalUUID#76415, baseUnitOfMeasure#76419, unitOfMeasureConversions#76421]
(1767) Project
Output [7]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, filteredUnitOfMeasureConversions#76428.quantityDenominator AS _extract_quantityDenominator#79994, filteredUnitOfMeasureConversions#76428.quantityNumerator AS _extract_quantityNumerator#79995]
Input [6]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, filteredUnitOfMeasureConversions#76428]
(1768) Generate
Input [7]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, _extract_quantityDenominator#79994, _extract_quantityNumerator#79995]
Arguments: explode(_extract_quantityNumerator#79995), [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, _extract_quantityDenominator#79994], true, [quantityNumerator#76429]
(1769) Generate
Input [7]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, _extract_quantityDenominator#79994, quantityNumerator#76429]
Arguments: explode(_extract_quantityDenominator#79994), [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, quantityNumerator#76429], true, [quantityDenominator#76431]
(1770) Project
Output [6]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, (cast(quantityNumerator#76429 as double) / cast(quantityDenominator#76431 as double)) AS outboundUnit#76460]
Input [7]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, quantityNumerator#76429, quantityDenominator#76431]
(1771) Project
Output [6]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, CASE WHEN (isnull(outboundUnit#76460) OR (outboundUnit#76460 <= 0.0)) THEN 1.0 ELSE outboundUnit#76460 END AS outboundUnit#76463]
Input [6]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76460]
(1772) Sort
Input [6]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76463]
Arguments: [product#76385 ASC NULLS FIRST, plant#76386 ASC NULLS FIRST], false, 0
(1773) Scan parquet
Output [6]: [internalUUID#76473, product#76474, plant#76475, calculationDateTime#76476, stockQuantities#76477, systemId#76472]
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>>>>>
(1774) Filter
Input [6]: [internalUUID#76473, product#76474, plant#76475, calculationDateTime#76476, stockQuantities#76477, systemId#76472]
Condition : (isnotnull(plant#76475.internalRefUUID) AND isnotnull(product#76474.internalRefUUID))
(1775) Project
Output [6]: [systemId#76472, internalUUID#76473, product#76474, plant#76475, calculationDateTime#76476, stockQuantities#76477]
Input [6]: [internalUUID#76473, product#76474, plant#76475, calculationDateTime#76476, stockQuantities#76477, systemId#76472]
(1776) Exchange
Input [6]: [systemId#76472, internalUUID#76473, product#76474, plant#76475, calculationDateTime#76476, stockQuantities#76477]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43717]
(1777) BroadcastExchange
Input [6]: [systemId#76472, internalUUID#76473, product#76474, plant#76475, calculationDateTime#76476, stockQuantities#76477]
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=46121]
(1778) Scan parquet
Output [2]: [marketUnit#76478, distributionCenters#76484]
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>>>>>
(1779) Filter
Input [2]: [marketUnit#76478, distributionCenters#76484]
Condition : (((marketUnit#76478 <=> Daily_grocery) AND (size(distributionCenters#76484, true) > 0)) AND isnotnull(distributionCenters#76484))
(1780) Project
Output [1]: [distributionCenters#76484]
Input [2]: [marketUnit#76478, distributionCenters#76484]
(1781) Exchange
Input [1]: [distributionCenters#76484]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43721]
(1782) Generate
Input [1]: [distributionCenters#76484]
Arguments: explode(distributionCenters#76484), false, [distributionCenters#76509]
(1783) Filter
Input [1]: [distributionCenters#76509]
Condition : (((size(distributionCenters#76509.storageLocations, true) > 0) AND isnotnull(distributionCenters#76509.storageLocations)) AND isnotnull(distributionCenters#76509.internalRefUUID))
(1784) Project
Output [2]: [distributionCenters#76509.internalRefUUID AS _extract_internalRefUUID#79888, distributionCenters#76509.storageLocations AS _extract_storageLocations#79889]
Input [1]: [distributionCenters#76509]
(1785) Generate
Input [2]: [_extract_internalRefUUID#79888, _extract_storageLocations#79889]
Arguments: explode(_extract_storageLocations#79889), [_extract_internalRefUUID#79888], false, [storageLocations#76515]
(1786) Project
Output [3]: [_extract_internalRefUUID#79888 AS plantUuid#76524, storageLocations#76515.id AS storageLocId#76525, storageLocations#76515.internalRefUUID AS storageLocUuid#76526]
Input [2]: [_extract_internalRefUUID#79888, storageLocations#76515]
(1787) BroadcastExchange
Input [3]: [plantUuid#76524, storageLocId#76525, storageLocUuid#76526]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=46102]
(1788) Scan parquet
Output [2]: [product#76528, plant#76529]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1789) Filter
Input [2]: [product#76528, plant#76529]
Condition : isnotnull(plant#76529)
(1790) Exchange
Input [2]: [product#76528, plant#76529]
Arguments: hashpartitioning(product#76528, plant#76529, 25), REPARTITION_BY_NUM, [plan_id=44167]
(1791) Scan parquet
Output [4]: [plant#76534, product#76535, productionAspect#76537, systemId#76532]
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>>>>
(1792) Project
Output [4]: [plant#76534.internalRefUUID AS _extract_internalRefUUID#80209, product#76535.internalRefUUID AS _extract_internalRefUUID#80212, productionAspect#76537.productMovementPlants.unitOfIssue.code AS _extract_code#80210, productionAspect#76537.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#80211]
Input [4]: [plant#76534, product#76535, productionAspect#76537, systemId#76532]
(1793) Exchange
Input [4]: [_extract_internalRefUUID#80209, _extract_internalRefUUID#80212, _extract_code#80210, _extract_internalRefUUID#80211]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43733]
(1794) Project
Output [4]: [_extract_code#80210, _extract_internalRefUUID#80211, _extract_internalRefUUID#80212, _extract_internalRefUUID#80209]
Input [4]: [_extract_internalRefUUID#80209, _extract_internalRefUUID#80212, _extract_code#80210, _extract_internalRefUUID#80211]
(1795) BroadcastExchange
Input [4]: [_extract_code#80210, _extract_internalRefUUID#80211, _extract_internalRefUUID#80212, _extract_internalRefUUID#80209]
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=46049]
(1796) BroadcastHashJoin
Left keys [4]: [coalesce(product#76528, ), isnull(product#76528), coalesce(plant#76529, ), isnull(plant#76529)]
Right keys [4]: [coalesce(_extract_internalRefUUID#80212, ), isnull(_extract_internalRefUUID#80212), coalesce(_extract_internalRefUUID#80209, ), isnull(_extract_internalRefUUID#80209)]
Join type: LeftOuter
Join condition: None
(1797) Project
Output [4]: [product#76528, plant#76529, _extract_code#80210, _extract_internalRefUUID#80211]
Input [6]: [product#76528, plant#76529, _extract_code#80210, _extract_internalRefUUID#80211, _extract_internalRefUUID#80212, _extract_internalRefUUID#80209]
(1798) Scan parquet
Output [2]: [internalUUID#76555, systemId#76554]
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>
(1799) Project
Output [1]: [internalUUID#76555]
Input [2]: [internalUUID#76555, systemId#76554]
(1800) Exchange
Input [1]: [internalUUID#76555]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43739]
(1801) BroadcastExchange
Input [1]: [internalUUID#76555]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=46056]
(1802) BroadcastHashJoin
Left keys [2]: [coalesce(plant#76529, ), isnull(plant#76529)]
Right keys [2]: [coalesce(internalUUID#76555, ), isnull(internalUUID#76555)]
Join type: LeftOuter
Join condition: None
(1803) Project
Output [4]: [product#76528, plant#76529, _extract_code#80210, _extract_internalRefUUID#80211]
Input [5]: [product#76528, plant#76529, _extract_code#80210, _extract_internalRefUUID#80211, internalUUID#76555]
(1804) Scan parquet
Output [4]: [internalUUID#76569, baseUnitOfMeasure#76573, unitOfMeasureConversions#76575, systemId#76568]
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>>>
(1805) Filter
Input [4]: [internalUUID#76569, baseUnitOfMeasure#76573, unitOfMeasureConversions#76575, systemId#76568]
Condition : isnotnull(internalUUID#76569)
(1806) Project
Output [3]: [internalUUID#76569, baseUnitOfMeasure#76573, unitOfMeasureConversions#76575]
Input [4]: [internalUUID#76569, baseUnitOfMeasure#76573, unitOfMeasureConversions#76575, systemId#76568]
(1807) Exchange
Input [3]: [internalUUID#76569, baseUnitOfMeasure#76573, unitOfMeasureConversions#76575]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43745]
(1808) BroadcastExchange
Input [3]: [internalUUID#76569, baseUnitOfMeasure#76573, unitOfMeasureConversions#76575]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=46062]
(1809) BroadcastHashJoin
Left keys [1]: [product#76528]
Right keys [1]: [internalUUID#76569]
Join type: LeftOuter
Join condition: None
(1810) Project
Output [2]: [plant#76529, filter(unitOfMeasureConversions#76575, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#80210) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#80211)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#76573.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76573.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#76581]
Input [7]: [product#76528, plant#76529, _extract_code#80210, _extract_internalRefUUID#80211, internalUUID#76569, baseUnitOfMeasure#76573, unitOfMeasureConversions#76575]
(1811) Generate
Input [2]: [plant#76529, filteredUnitOfMeasureConversions#76581]
Arguments: explode(filteredUnitOfMeasureConversions#76581.quantityNumerator), [plant#76529, filteredUnitOfMeasureConversions#76581], true, [quantityNumerator#76583]
(1812) Project
Output [2]: [plant#76529, filteredUnitOfMeasureConversions#76581.quantityDenominator AS _extract_quantityDenominator#79890]
Input [3]: [plant#76529, filteredUnitOfMeasureConversions#76581, quantityNumerator#76583]
(1813) Generate
Input [2]: [plant#76529, _extract_quantityDenominator#79890]
Arguments: explode(_extract_quantityDenominator#79890), [plant#76529], true, [quantityDenominator#76585]
(1814) Project
Output [1]: [plant#76529]
Input [2]: [plant#76529, quantityDenominator#76585]
(1815) HashAggregate
Input [1]: [plant#76529]
Keys [1]: [plant#76529]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#76529]
(1816) Exchange
Input [1]: [plant#76529]
Arguments: hashpartitioning(plant#76529, 25), ENSURE_REQUIREMENTS, [plan_id=46092]
(1817) HashAggregate
Input [1]: [plant#76529]
Keys [1]: [plant#76529]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#76529]
(1818) BroadcastHashJoin
Left keys [1]: [plantUuid#76524]
Right keys [1]: [plant#76529]
Join type: Inner
Join condition: None
(1819) Project
Output [3]: [plantUuid#76524, storageLocId#76525, storageLocUuid#76526]
Input [4]: [plantUuid#76524, storageLocId#76525, storageLocUuid#76526, plant#76529]
(1820) BroadcastHashJoin
Left keys [2]: [coalesce(plant#76475.internalRefUUID, ), isnull(plant#76475.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#76524, ), isnull(plantUuid#76524)]
Join type: Inner
Join condition: None
(1821) Generate
Input [9]: [systemId#76472, internalUUID#76473, product#76474, plant#76475, calculationDateTime#76476, stockQuantities#76477, plantUuid#76524, storageLocId#76525, storageLocUuid#76526]
Arguments: explode(filter(stockQuantities#76477, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#76526) AND (lambda x#69269.storageLocation.Id = storageLocId#76525)), lambda x#69269, false))), [systemId#76472, internalUUID#76473, product#76474, plant#76475, calculationDateTime#76476, plantUuid#76524], false, [stockQuantity#76590]
(1822) ObjectHashAggregate
Input [7]: [systemId#76472, internalUUID#76473, product#76474, plant#76475, calculationDateTime#76476, plantUuid#76524, stockQuantity#76590]
Keys [5]: [plantUuid#76524, internalUUID#76473, plant#76475, product#76474, systemId#76472]
Functions [2]: [partial_first(calculationDateTime#76476, false), partial_collect_list(stockQuantity#76590, 0, 0)]
Aggregate Attributes [3]: [first#81856, valueSet#81857, buf#81858]
Results [8]: [plantUuid#76524, internalUUID#76473, plant#76475, product#76474, systemId#76472, first#81859, valueSet#81860, buf#81861]
(1823) ObjectHashAggregate
Input [8]: [plantUuid#76524, internalUUID#76473, plant#76475, product#76474, systemId#76472, first#81859, valueSet#81860, buf#81861]
Keys [5]: [plantUuid#76524, internalUUID#76473, plant#76475, product#76474, systemId#76472]
Functions [2]: [first(calculationDateTime#76476, false), collect_list(stockQuantity#76590, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#76476)()#69286, collect_list(stockQuantity#76590, 0, 0)#69287]
Results [4]: [product#76474, plant#76475, first(calculationDateTime#76476)()#69286 AS calculationDateTime#76592, collect_list(stockQuantity#76590, 0, 0)#69287 AS stockQuantities#76593]
(1824) Filter
Input [4]: [product#76474, plant#76475, calculationDateTime#76592, stockQuantities#76593]
Condition : ((size(stockQuantities#76593, true) > 0) AND isnotnull(calculationDateTime#76592))
(1825) Generate
Input [4]: [product#76474, plant#76475, calculationDateTime#76592, stockQuantities#76593]
Arguments: explode(stockQuantities#76593), [product#76474, plant#76475, calculationDateTime#76592], false, [stockQuantity#76594]
(1826) Filter
Input [4]: [product#76474, plant#76475, calculationDateTime#76592, stockQuantity#76594]
Condition : (((isnotnull(stockQuantity#76594.specialStockIndicator.code) AND isnotnull(stockQuantity#76594.stockType.code)) AND (stockQuantity#76594.specialStockIndicator.code = )) AND (stockQuantity#76594.stockType.code = 01))
(1827) Project
Output [5]: [plant#76475.internalRefUUID AS plantUuid#76620, product#76474.internalRefUUID AS productUuid#76622, calculationDateTime#76592, stockQuantity#76594.storagelocation.id AS storageLocId#76623, stockQuantity#76594.quantity.measure AS quantity#76625]
Input [4]: [product#76474, plant#76475, calculationDateTime#76592, stockQuantity#76594]
(1828) Exchange
Input [5]: [plantUuid#76620, productUuid#76622, calculationDateTime#76592, storageLocId#76623, quantity#76625]
Arguments: hashpartitioning(productUuid#76622, plantUuid#76620, 25), ENSURE_REQUIREMENTS, [plan_id=46279]
(1829) Sort
Input [5]: [plantUuid#76620, productUuid#76622, calculationDateTime#76592, storageLocId#76623, quantity#76625]
Arguments: [productUuid#76622 ASC NULLS FIRST, plantUuid#76620 ASC NULLS FIRST], false, 0
(1830) Scan parquet
Output [3]: [product#76629, plant#76630, orderDateTime#76631]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1831) Filter
Input [3]: [product#76629, plant#76630, orderDateTime#76631]
Condition : ((isnotnull(orderDateTime#76631) AND isnotnull(plant#76630)) AND isnotnull(product#76629))
(1832) Exchange
Input [3]: [product#76629, plant#76630, orderDateTime#76631]
Arguments: hashpartitioning(product#76629, plant#76630, 25), REPARTITION_BY_NUM, [plan_id=44190]
(1833) Scan parquet
Output [4]: [plant#76635, product#76636, productionAspect#76638, systemId#76633]
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>>>>
(1834) Project
Output [4]: [plant#76635.internalRefUUID AS _extract_internalRefUUID#80213, product#76636.internalRefUUID AS _extract_internalRefUUID#80214, productionAspect#76638.productMovementPlants.unitOfIssue.code AS _extract_code#80215, productionAspect#76638.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#80216]
Input [4]: [plant#76635, product#76636, productionAspect#76638, systemId#76633]
(1835) Exchange
Input [4]: [_extract_internalRefUUID#80213, _extract_internalRefUUID#80214, _extract_code#80215, _extract_internalRefUUID#80216]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43770]
(1836) Project
Output [4]: [_extract_code#80215, _extract_internalRefUUID#80216, _extract_internalRefUUID#80214, _extract_internalRefUUID#80213]
Input [4]: [_extract_internalRefUUID#80213, _extract_internalRefUUID#80214, _extract_code#80215, _extract_internalRefUUID#80216]
(1837) BroadcastExchange
Input [4]: [_extract_code#80215, _extract_internalRefUUID#80216, _extract_internalRefUUID#80214, _extract_internalRefUUID#80213]
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=46159]
(1838) BroadcastHashJoin
Left keys [4]: [coalesce(product#76629, ), isnull(product#76629), coalesce(plant#76630, ), isnull(plant#76630)]
Right keys [4]: [coalesce(_extract_internalRefUUID#80214, ), isnull(_extract_internalRefUUID#80214), coalesce(_extract_internalRefUUID#80213, ), isnull(_extract_internalRefUUID#80213)]
Join type: LeftOuter
Join condition: None
(1839) Project
Output [5]: [product#76629, plant#76630, orderDateTime#76631, _extract_code#80215, _extract_internalRefUUID#80216]
Input [7]: [product#76629, plant#76630, orderDateTime#76631, _extract_code#80215, _extract_internalRefUUID#80216, _extract_internalRefUUID#80214, _extract_internalRefUUID#80213]
(1840) Scan parquet
Output [2]: [internalUUID#76657, systemId#76656]
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>
(1841) Project
Output [1]: [internalUUID#76657]
Input [2]: [internalUUID#76657, systemId#76656]
(1842) Exchange
Input [1]: [internalUUID#76657]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43776]
(1843) BroadcastExchange
Input [1]: [internalUUID#76657]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=46166]
(1844) BroadcastHashJoin
Left keys [2]: [coalesce(plant#76630, ), isnull(plant#76630)]
Right keys [2]: [coalesce(internalUUID#76657, ), isnull(internalUUID#76657)]
Join type: LeftOuter
Join condition: None
(1845) Project
Output [5]: [product#76629, plant#76630, orderDateTime#76631, _extract_code#80215, _extract_internalRefUUID#80216]
Input [6]: [product#76629, plant#76630, orderDateTime#76631, _extract_code#80215, _extract_internalRefUUID#80216, internalUUID#76657]
(1846) Scan parquet
Output [4]: [internalUUID#76683, baseUnitOfMeasure#76687, unitOfMeasureConversions#76689, systemId#76682]
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>>>
(1847) Filter
Input [4]: [internalUUID#76683, baseUnitOfMeasure#76687, unitOfMeasureConversions#76689, systemId#76682]
Condition : isnotnull(internalUUID#76683)
(1848) Project
Output [3]: [internalUUID#76683, baseUnitOfMeasure#76687, unitOfMeasureConversions#76689]
Input [4]: [internalUUID#76683, baseUnitOfMeasure#76687, unitOfMeasureConversions#76689, systemId#76682]
(1849) Exchange
Input [3]: [internalUUID#76683, baseUnitOfMeasure#76687, unitOfMeasureConversions#76689]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43782]
(1850) BroadcastExchange
Input [3]: [internalUUID#76683, baseUnitOfMeasure#76687, unitOfMeasureConversions#76689]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=46180]
(1851) BroadcastHashJoin
Left keys [1]: [product#76629]
Right keys [1]: [internalUUID#76683]
Join type: LeftOuter
Join condition: None
(1852) Project
Output [4]: [product#76629, plant#76630, orderDateTime#76631, filter(unitOfMeasureConversions#76689, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#80215) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#80216)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#76687.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76687.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#76697]
Input [8]: [product#76629, plant#76630, orderDateTime#76631, _extract_code#80215, _extract_internalRefUUID#80216, internalUUID#76683, baseUnitOfMeasure#76687, unitOfMeasureConversions#76689]
(1853) Generate
Input [4]: [product#76629, plant#76630, orderDateTime#76631, filteredUnitOfMeasureConversions#76697]
Arguments: explode(filteredUnitOfMeasureConversions#76697.quantityNumerator), [product#76629, plant#76630, orderDateTime#76631, filteredUnitOfMeasureConversions#76697], true, [quantityNumerator#76698]
(1854) Project
Output [4]: [product#76629, plant#76630, orderDateTime#76631, filteredUnitOfMeasureConversions#76697.quantityDenominator AS _extract_quantityDenominator#79894]
Input [5]: [product#76629, plant#76630, orderDateTime#76631, filteredUnitOfMeasureConversions#76697, quantityNumerator#76698]
(1855) Generate
Input [4]: [product#76629, plant#76630, orderDateTime#76631, _extract_quantityDenominator#79894]
Arguments: explode(_extract_quantityDenominator#79894), [product#76629, plant#76630, orderDateTime#76631], true, [quantityDenominator#76700]
(1856) Project
Output [3]: [product#76629, plant#76630, orderDateTime#76631]
Input [4]: [product#76629, plant#76630, orderDateTime#76631, quantityDenominator#76700]
(1857) Sort
Input [3]: [product#76629, plant#76630, orderDateTime#76631]
Arguments: [product#76629 ASC NULLS FIRST, plant#76630 ASC NULLS FIRST], false, 0
(1858) SortMergeJoin
Left keys [2]: [productUuid#76622, plantUuid#76620]
Right keys [2]: [product#76629, plant#76630]
Join type: Inner
Join condition: (calculationDateTime#76592 <= orderDateTime#76631)
(1859) Project
Output [5]: [plantUuid#76620 AS plant#76703, productUuid#76622 AS product#76704, storageLocId#76623, calculationDateTime#76592, quantity#76625]
Input [8]: [plantUuid#76620, productUuid#76622, calculationDateTime#76592, storageLocId#76623, quantity#76625, product#76629, plant#76630, orderDateTime#76631]
(1860) Exchange
Input [5]: [plant#76703, product#76704, storageLocId#76623, calculationDateTime#76592, quantity#76625]
Arguments: hashpartitioning(coalesce(plant#76703, ), isnull(plant#76703), coalesce(product#76704, ), isnull(product#76704), coalesce(storageLocId#76623, ), isnull(storageLocId#76623), coalesce(calculationDateTime#76592, 1970-01-01 00:00:00), isnull(calculationDateTime#76592), 25), ENSURE_REQUIREMENTS, [plan_id=46724]
(1861) Sort
Input [5]: [plant#76703, product#76704, storageLocId#76623, calculationDateTime#76592, quantity#76625]
Arguments: [coalesce(plant#76703, ) ASC NULLS FIRST, isnull(plant#76703) ASC NULLS FIRST, coalesce(product#76704, ) ASC NULLS FIRST, isnull(product#76704) ASC NULLS FIRST, coalesce(storageLocId#76623, ) ASC NULLS FIRST, isnull(storageLocId#76623) ASC NULLS FIRST, coalesce(calculationDateTime#76592, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#76592) ASC NULLS FIRST], false, 0
(1862) Scan parquet
Output [6]: [internalUUID#76706, product#76707, plant#76708, calculationDateTime#76709, stockQuantities#76710, systemId#76705]
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>>>>>
(1863) Filter
Input [6]: [internalUUID#76706, product#76707, plant#76708, calculationDateTime#76709, stockQuantities#76710, systemId#76705]
Condition : (isnotnull(plant#76708.internalRefUUID) AND isnotnull(product#76707.internalRefUUID))
(1864) Project
Output [6]: [systemId#76705, internalUUID#76706, product#76707, plant#76708, calculationDateTime#76709, stockQuantities#76710]
Input [6]: [internalUUID#76706, product#76707, plant#76708, calculationDateTime#76709, stockQuantities#76710, systemId#76705]
(1865) Exchange
Input [6]: [systemId#76705, internalUUID#76706, product#76707, plant#76708, calculationDateTime#76709, stockQuantities#76710]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43794]
(1866) BroadcastExchange
Input [6]: [systemId#76705, internalUUID#76706, product#76707, plant#76708, calculationDateTime#76709, stockQuantities#76710]
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=46440]
(1867) Scan parquet
Output [2]: [marketUnit#76711, distributionCenters#76717]
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>>>>>
(1868) Filter
Input [2]: [marketUnit#76711, distributionCenters#76717]
Condition : (((marketUnit#76711 <=> Daily_grocery) AND (size(distributionCenters#76717, true) > 0)) AND isnotnull(distributionCenters#76717))
(1869) Project
Output [1]: [distributionCenters#76717]
Input [2]: [marketUnit#76711, distributionCenters#76717]
(1870) Exchange
Input [1]: [distributionCenters#76717]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43798]
(1871) Generate
Input [1]: [distributionCenters#76717]
Arguments: explode(distributionCenters#76717), false, [distributionCenters#76733]
(1872) Filter
Input [1]: [distributionCenters#76733]
Condition : (((size(distributionCenters#76733.storageLocations, true) > 0) AND isnotnull(distributionCenters#76733.storageLocations)) AND isnotnull(distributionCenters#76733.internalRefUUID))
(1873) Project
Output [2]: [distributionCenters#76733.internalRefUUID AS _extract_internalRefUUID#79898, distributionCenters#76733.storageLocations AS _extract_storageLocations#79899]
Input [1]: [distributionCenters#76733]
(1874) Generate
Input [2]: [_extract_internalRefUUID#79898, _extract_storageLocations#79899]
Arguments: explode(_extract_storageLocations#79899), [_extract_internalRefUUID#79898], false, [storageLocations#76734]
(1875) Project
Output [3]: [_extract_internalRefUUID#79898 AS plantUuid#76736, storageLocations#76734.id AS storageLocId#76737, storageLocations#76734.internalRefUUID AS storageLocUuid#76738]
Input [2]: [_extract_internalRefUUID#79898, storageLocations#76734]
(1876) BroadcastExchange
Input [3]: [plantUuid#76736, storageLocId#76737, storageLocUuid#76738]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=46421]
(1877) Scan parquet
Output [2]: [product#76739, plant#76740]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1878) Filter
Input [2]: [product#76739, plant#76740]
Condition : isnotnull(plant#76740)
(1879) Exchange
Input [2]: [product#76739, plant#76740]
Arguments: hashpartitioning(product#76739, plant#76740, 25), REPARTITION_BY_NUM, [plan_id=44203]
(1880) Scan parquet
Output [4]: [plant#76745, product#76746, productionAspect#76748, systemId#76743]
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>>>>
(1881) Project
Output [4]: [plant#76745.internalRefUUID AS _extract_internalRefUUID#80220, product#76746.internalRefUUID AS _extract_internalRefUUID#80219, productionAspect#76748.productMovementPlants.unitOfIssue.code AS _extract_code#80217, productionAspect#76748.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#80218]
Input [4]: [plant#76745, product#76746, productionAspect#76748, systemId#76743]
(1882) Exchange
Input [4]: [_extract_internalRefUUID#80220, _extract_internalRefUUID#80219, _extract_code#80217, _extract_internalRefUUID#80218]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43810]
(1883) Project
Output [4]: [_extract_code#80217, _extract_internalRefUUID#80218, _extract_internalRefUUID#80219, _extract_internalRefUUID#80220]
Input [4]: [_extract_internalRefUUID#80220, _extract_internalRefUUID#80219, _extract_code#80217, _extract_internalRefUUID#80218]
(1884) BroadcastExchange
Input [4]: [_extract_code#80217, _extract_internalRefUUID#80218, _extract_internalRefUUID#80219, _extract_internalRefUUID#80220]
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=46340]
(1885) BroadcastHashJoin
Left keys [4]: [coalesce(product#76739, ), isnull(product#76739), coalesce(plant#76740, ), isnull(plant#76740)]
Right keys [4]: [coalesce(_extract_internalRefUUID#80219, ), isnull(_extract_internalRefUUID#80219), coalesce(_extract_internalRefUUID#80220, ), isnull(_extract_internalRefUUID#80220)]
Join type: LeftOuter
Join condition: None
(1886) Project
Output [4]: [product#76739, plant#76740, _extract_code#80217, _extract_internalRefUUID#80218]
Input [6]: [product#76739, plant#76740, _extract_code#80217, _extract_internalRefUUID#80218, _extract_internalRefUUID#80219, _extract_internalRefUUID#80220]
(1887) Scan parquet
Output [2]: [internalUUID#76754, systemId#76753]
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>
(1888) Project
Output [1]: [internalUUID#76754]
Input [2]: [internalUUID#76754, systemId#76753]
(1889) Exchange
Input [1]: [internalUUID#76754]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43816]
(1890) BroadcastExchange
Input [1]: [internalUUID#76754]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=46351]
(1891) BroadcastHashJoin
Left keys [2]: [coalesce(plant#76740, ), isnull(plant#76740)]
Right keys [2]: [coalesce(internalUUID#76754, ), isnull(internalUUID#76754)]
Join type: LeftOuter
Join condition: None
(1892) Project
Output [4]: [product#76739, plant#76740, _extract_code#80217, _extract_internalRefUUID#80218]
Input [5]: [product#76739, plant#76740, _extract_code#80217, _extract_internalRefUUID#80218, internalUUID#76754]
(1893) Scan parquet
Output [4]: [internalUUID#76798, baseUnitOfMeasure#76802, unitOfMeasureConversions#76804, systemId#76797]
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>>>
(1894) Filter
Input [4]: [internalUUID#76798, baseUnitOfMeasure#76802, unitOfMeasureConversions#76804, systemId#76797]
Condition : isnotnull(internalUUID#76798)
(1895) Project
Output [3]: [internalUUID#76798, baseUnitOfMeasure#76802, unitOfMeasureConversions#76804]
Input [4]: [internalUUID#76798, baseUnitOfMeasure#76802, unitOfMeasureConversions#76804, systemId#76797]
(1896) Exchange
Input [3]: [internalUUID#76798, baseUnitOfMeasure#76802, unitOfMeasureConversions#76804]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43822]
(1897) BroadcastExchange
Input [3]: [internalUUID#76798, baseUnitOfMeasure#76802, unitOfMeasureConversions#76804]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=46367]
(1898) BroadcastHashJoin
Left keys [1]: [product#76739]
Right keys [1]: [internalUUID#76798]
Join type: LeftOuter
Join condition: None
(1899) Project
Output [2]: [plant#76740, filter(unitOfMeasureConversions#76804, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#80217) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#80218)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#76802.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76802.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#76819]
Input [7]: [product#76739, plant#76740, _extract_code#80217, _extract_internalRefUUID#80218, internalUUID#76798, baseUnitOfMeasure#76802, unitOfMeasureConversions#76804]
(1900) Generate
Input [2]: [plant#76740, filteredUnitOfMeasureConversions#76819]
Arguments: explode(filteredUnitOfMeasureConversions#76819.quantityNumerator), [plant#76740, filteredUnitOfMeasureConversions#76819], true, [quantityNumerator#76828]
(1901) Project
Output [2]: [plant#76740, filteredUnitOfMeasureConversions#76819.quantityDenominator AS _extract_quantityDenominator#79900]
Input [3]: [plant#76740, filteredUnitOfMeasureConversions#76819, quantityNumerator#76828]
(1902) Generate
Input [2]: [plant#76740, _extract_quantityDenominator#79900]
Arguments: explode(_extract_quantityDenominator#79900), [plant#76740], true, [quantityDenominator#76830]
(1903) Project
Output [1]: [plant#76740]
Input [2]: [plant#76740, quantityDenominator#76830]
(1904) HashAggregate
Input [1]: [plant#76740]
Keys [1]: [plant#76740]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#76740]
(1905) Exchange
Input [1]: [plant#76740]
Arguments: hashpartitioning(plant#76740, 25), ENSURE_REQUIREMENTS, [plan_id=46411]
(1906) HashAggregate
Input [1]: [plant#76740]
Keys [1]: [plant#76740]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#76740]
(1907) BroadcastHashJoin
Left keys [1]: [plantUuid#76736]
Right keys [1]: [plant#76740]
Join type: Inner
Join condition: None
(1908) Project
Output [3]: [plantUuid#76736, storageLocId#76737, storageLocUuid#76738]
Input [4]: [plantUuid#76736, storageLocId#76737, storageLocUuid#76738, plant#76740]
(1909) BroadcastHashJoin
Left keys [2]: [coalesce(plant#76708.internalRefUUID, ), isnull(plant#76708.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#76736, ), isnull(plantUuid#76736)]
Join type: Inner
Join condition: None
(1910) Generate
Input [9]: [systemId#76705, internalUUID#76706, product#76707, plant#76708, calculationDateTime#76709, stockQuantities#76710, plantUuid#76736, storageLocId#76737, storageLocUuid#76738]
Arguments: explode(filter(stockQuantities#76710, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#76738) AND (lambda x#69269.storageLocation.Id = storageLocId#76737)), lambda x#69269, false))), [systemId#76705, internalUUID#76706, product#76707, plant#76708, calculationDateTime#76709, plantUuid#76736], false, [stockQuantity#76862]
(1911) ObjectHashAggregate
Input [7]: [systemId#76705, internalUUID#76706, product#76707, plant#76708, calculationDateTime#76709, plantUuid#76736, stockQuantity#76862]
Keys [5]: [plantUuid#76736, internalUUID#76706, plant#76708, product#76707, systemId#76705]
Functions [2]: [partial_first(calculationDateTime#76709, false), partial_collect_list(stockQuantity#76862, 0, 0)]
Aggregate Attributes [3]: [first#81864, valueSet#81865, buf#81866]
Results [8]: [plantUuid#76736, internalUUID#76706, plant#76708, product#76707, systemId#76705, first#81867, valueSet#81868, buf#81869]
(1912) ObjectHashAggregate
Input [8]: [plantUuid#76736, internalUUID#76706, plant#76708, product#76707, systemId#76705, first#81867, valueSet#81868, buf#81869]
Keys [5]: [plantUuid#76736, internalUUID#76706, plant#76708, product#76707, systemId#76705]
Functions [2]: [first(calculationDateTime#76709, false), collect_list(stockQuantity#76862, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#76709)()#69286, collect_list(stockQuantity#76862, 0, 0)#69287]
Results [4]: [product#76707, plant#76708, first(calculationDateTime#76709)()#69286 AS calculationDateTime#76865, collect_list(stockQuantity#76862, 0, 0)#69287 AS stockQuantities#76866]
(1913) Filter
Input [4]: [product#76707, plant#76708, calculationDateTime#76865, stockQuantities#76866]
Condition : ((size(stockQuantities#76866, true) > 0) AND isnotnull(calculationDateTime#76865))
(1914) Generate
Input [4]: [product#76707, plant#76708, calculationDateTime#76865, stockQuantities#76866]
Arguments: explode(stockQuantities#76866), [product#76707, plant#76708, calculationDateTime#76865], false, [stockQuantity#76867]
(1915) Filter
Input [4]: [product#76707, plant#76708, calculationDateTime#76865, stockQuantity#76867]
Condition : (((isnotnull(stockQuantity#76867.specialStockIndicator.code) AND isnotnull(stockQuantity#76867.stockType.code)) AND (stockQuantity#76867.specialStockIndicator.code = )) AND (stockQuantity#76867.stockType.code = 01))
(1916) Project
Output [4]: [plant#76708.internalRefUUID AS plantUuid#76869, product#76707.internalRefUUID AS productUuid#76871, calculationDateTime#76865, stockQuantity#76867.storagelocation.id AS storageLocId#76872]
Input [4]: [product#76707, plant#76708, calculationDateTime#76865, stockQuantity#76867]
(1917) Exchange
Input [4]: [plantUuid#76869, productUuid#76871, calculationDateTime#76865, storageLocId#76872]
Arguments: hashpartitioning(productUuid#76871, plantUuid#76869, 25), ENSURE_REQUIREMENTS, [plan_id=46603]
(1918) Sort
Input [4]: [plantUuid#76869, productUuid#76871, calculationDateTime#76865, storageLocId#76872]
Arguments: [productUuid#76871 ASC NULLS FIRST, plantUuid#76869 ASC NULLS FIRST], false, 0
(1919) Scan parquet
Output [3]: [product#76877, plant#76878, orderDateTime#76879]
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/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1920) Filter
Input [3]: [product#76877, plant#76878, orderDateTime#76879]
Condition : ((isnotnull(orderDateTime#76879) AND isnotnull(plant#76878)) AND isnotnull(product#76877))
(1921) Exchange
Input [3]: [product#76877, plant#76878, orderDateTime#76879]
Arguments: hashpartitioning(product#76877, plant#76878, 25), REPARTITION_BY_NUM, [plan_id=44226]
(1922) Scan parquet
Output [4]: [plant#76884, product#76885, productionAspect#76887, systemId#76882]
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>>>>
(1923) Project
Output [4]: [plant#76884.internalRefUUID AS _extract_internalRefUUID#80224, product#76885.internalRefUUID AS _extract_internalRefUUID#80223, productionAspect#76887.productMovementPlants.unitOfIssue.code AS _extract_code#80221, productionAspect#76887.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#80222]
Input [4]: [plant#76884, product#76885, productionAspect#76887, systemId#76882]
(1924) Exchange
Input [4]: [_extract_internalRefUUID#80224, _extract_internalRefUUID#80223, _extract_code#80221, _extract_internalRefUUID#80222]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43847]
(1925) Project
Output [4]: [_extract_code#80221, _extract_internalRefUUID#80222, _extract_internalRefUUID#80223, _extract_internalRefUUID#80224]
Input [4]: [_extract_internalRefUUID#80224, _extract_internalRefUUID#80223, _extract_code#80221, _extract_internalRefUUID#80222]
(1926) BroadcastExchange
Input [4]: [_extract_code#80221, _extract_internalRefUUID#80222, _extract_internalRefUUID#80223, _extract_internalRefUUID#80224]
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=46512]
(1927) BroadcastHashJoin
Left keys [4]: [coalesce(product#76877, ), isnull(product#76877), coalesce(plant#76878, ), isnull(plant#76878)]
Right keys [4]: [coalesce(_extract_internalRefUUID#80223, ), isnull(_extract_internalRefUUID#80223), coalesce(_extract_internalRefUUID#80224, ), isnull(_extract_internalRefUUID#80224)]
Join type: LeftOuter
Join condition: None
(1928) Project
Output [5]: [product#76877, plant#76878, orderDateTime#76879, _extract_code#80221, _extract_internalRefUUID#80222]
Input [7]: [product#76877, plant#76878, orderDateTime#76879, _extract_code#80221, _extract_internalRefUUID#80222, _extract_internalRefUUID#80223, _extract_internalRefUUID#80224]
(1929) Scan parquet
Output [2]: [internalUUID#76895, systemId#76894]
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>
(1930) Project
Output [1]: [internalUUID#76895]
Input [2]: [internalUUID#76895, systemId#76894]
(1931) Exchange
Input [1]: [internalUUID#76895]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43853]
(1932) BroadcastExchange
Input [1]: [internalUUID#76895]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=46525]
(1933) BroadcastHashJoin
Left keys [2]: [coalesce(plant#76878, ), isnull(plant#76878)]
Right keys [2]: [coalesce(internalUUID#76895, ), isnull(internalUUID#76895)]
Join type: LeftOuter
Join condition: None
(1934) Project
Output [5]: [product#76877, plant#76878, orderDateTime#76879, _extract_code#80221, _extract_internalRefUUID#80222]
Input [6]: [product#76877, plant#76878, orderDateTime#76879, _extract_code#80221, _extract_internalRefUUID#80222, internalUUID#76895]
(1935) Scan parquet
Output [4]: [internalUUID#76931, baseUnitOfMeasure#76935, unitOfMeasureConversions#76937, systemId#76930]
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>>>
(1936) Filter
Input [4]: [internalUUID#76931, baseUnitOfMeasure#76935, unitOfMeasureConversions#76937, systemId#76930]
Condition : isnotnull(internalUUID#76931)
(1937) Project
Output [3]: [internalUUID#76931, baseUnitOfMeasure#76935, unitOfMeasureConversions#76937]
Input [4]: [internalUUID#76931, baseUnitOfMeasure#76935, unitOfMeasureConversions#76937, systemId#76930]
(1938) Exchange
Input [3]: [internalUUID#76931, baseUnitOfMeasure#76935, unitOfMeasureConversions#76937]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43859]
(1939) BroadcastExchange
Input [3]: [internalUUID#76931, baseUnitOfMeasure#76935, unitOfMeasureConversions#76937]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=46538]
(1940) BroadcastHashJoin
Left keys [1]: [product#76877]
Right keys [1]: [internalUUID#76931]
Join type: LeftOuter
Join condition: None
(1941) Project
Output [4]: [product#76877, plant#76878, orderDateTime#76879, filter(unitOfMeasureConversions#76937, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#80221) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#80222)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#76935.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76935.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#76955]
Input [8]: [product#76877, plant#76878, orderDateTime#76879, _extract_code#80221, _extract_internalRefUUID#80222, internalUUID#76931, baseUnitOfMeasure#76935, unitOfMeasureConversions#76937]
(1942) Generate
Input [4]: [product#76877, plant#76878, orderDateTime#76879, filteredUnitOfMeasureConversions#76955]
Arguments: explode(filteredUnitOfMeasureConversions#76955.quantityNumerator), [product#76877, plant#76878, orderDateTime#76879, filteredUnitOfMeasureConversions#76955], true, [quantityNumerator#76956]
(1943) Project
Output [4]: [product#76877, plant#76878, orderDateTime#76879, filteredUnitOfMeasureConversions#76955.quantityDenominator AS _extract_quantityDenominator#79904]
Input [5]: [product#76877, plant#76878, orderDateTime#76879, filteredUnitOfMeasureConversions#76955, quantityNumerator#76956]
(1944) Generate
Input [4]: [product#76877, plant#76878, orderDateTime#76879, _extract_quantityDenominator#79904]
Arguments: explode(_extract_quantityDenominator#79904), [product#76877, plant#76878, orderDateTime#76879], true, [quantityDenominator#76970]
(1945) Project
Output [3]: [product#76877, plant#76878, orderDateTime#76879]
Input [4]: [product#76877, plant#76878, orderDateTime#76879, quantityDenominator#76970]
(1946) Sort
Input [3]: [product#76877, plant#76878, orderDateTime#76879]
Arguments: [product#76877 ASC NULLS FIRST, plant#76878 ASC NULLS FIRST], false, 0
(1947) SortMergeJoin
Left keys [2]: [productUuid#76871, plantUuid#76869]
Right keys [2]: [product#76877, plant#76878]
Join type: Inner
Join condition: (calculationDateTime#76865 <= orderDateTime#76879)
(1948) Project
Output [4]: [plantUuid#76869 AS plant#76976, productUuid#76871 AS product#76977, storageLocId#76872, calculationDateTime#76865]
Input [7]: [plantUuid#76869, productUuid#76871, calculationDateTime#76865, storageLocId#76872, product#76877, plant#76878, orderDateTime#76879]
(1949) HashAggregate
Input [4]: [plant#76976, product#76977, storageLocId#76872, calculationDateTime#76865]
Keys [3]: [plant#76976, product#76977, storageLocId#76872]
Functions [1]: [partial_max(calculationDateTime#76865)]
Aggregate Attributes [1]: [max#81862]
Results [4]: [plant#76976, product#76977, storageLocId#76872, max#81863]
(1950) HashAggregate
Input [4]: [plant#76976, product#76977, storageLocId#76872, max#81863]
Keys [3]: [plant#76976, product#76977, storageLocId#76872]
Functions [1]: [max(calculationDateTime#76865)]
Aggregate Attributes [1]: [max(calculationDateTime#76865)#69447]
Results [4]: [plant#76976, product#76977, storageLocId#76872, max(calculationDateTime#76865)#69447 AS max_calc_datetime#76979]
(1951) Exchange
Input [4]: [plant#76976, product#76977, storageLocId#76872, max_calc_datetime#76979]
Arguments: hashpartitioning(coalesce(plant#76976, ), isnull(plant#76976), coalesce(product#76977, ), isnull(product#76977), coalesce(storageLocId#76872, ), isnull(storageLocId#76872), coalesce(max_calc_datetime#76979, 1970-01-01 00:00:00), isnull(max_calc_datetime#76979), 25), ENSURE_REQUIREMENTS, [plan_id=46725]
(1952) Sort
Input [4]: [plant#76976, product#76977, storageLocId#76872, max_calc_datetime#76979]
Arguments: [coalesce(plant#76976, ) ASC NULLS FIRST, isnull(plant#76976) ASC NULLS FIRST, coalesce(product#76977, ) ASC NULLS FIRST, isnull(product#76977) ASC NULLS FIRST, coalesce(storageLocId#76872, ) ASC NULLS FIRST, isnull(storageLocId#76872) ASC NULLS FIRST, coalesce(max_calc_datetime#76979, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#76979) ASC NULLS FIRST], false, 0
(1953) SortMergeJoin
Left keys [8]: [coalesce(plant#76703, ), isnull(plant#76703), coalesce(product#76704, ), isnull(product#76704), coalesce(storageLocId#76623, ), isnull(storageLocId#76623), coalesce(calculationDateTime#76592, 1970-01-01 00:00:00), isnull(calculationDateTime#76592)]
Right keys [8]: [coalesce(plant#76976, ), isnull(plant#76976), coalesce(product#76977, ), isnull(product#76977), coalesce(storageLocId#76872, ), isnull(storageLocId#76872), coalesce(max_calc_datetime#76979, 1970-01-01 00:00:00), isnull(max_calc_datetime#76979)]
Join type: Inner
Join condition: None
(1954) Project
Output [4]: [plant#76703, product#76704, calculationDateTime#76592, quantity#76625]
Input [9]: [plant#76703, product#76704, storageLocId#76623, calculationDateTime#76592, quantity#76625, plant#76976, product#76977, storageLocId#76872, max_calc_datetime#76979]
(1955) HashAggregate
Input [4]: [plant#76703, product#76704, calculationDateTime#76592, quantity#76625]
Keys [2]: [product#76704, plant#76703]
Functions [2]: [partial_min(calculationDateTime#76592), partial_sum(quantity#76625)]
Aggregate Attributes [2]: [min#81852, sum#81853]
Results [4]: [product#76704, plant#76703, min#81854, sum#81855]
(1956) Exchange
Input [4]: [product#76704, plant#76703, min#81854, sum#81855]
Arguments: hashpartitioning(product#76704, plant#76703, 25), ENSURE_REQUIREMENTS, [plan_id=46752]
(1957) HashAggregate
Input [4]: [product#76704, plant#76703, min#81854, sum#81855]
Keys [2]: [product#76704, plant#76703]
Functions [2]: [min(calculationDateTime#76592), sum(quantity#76625)]
Aggregate Attributes [2]: [min(calculationDateTime#76592)#69766, sum(quantity#76625)#69765]
Results [4]: [product#76704, plant#76703, min(calculationDateTime#76592)#69766 AS minCalculationDateTime#76982, round(sum(quantity#76625)#69765, 0) AS roundedQuantitySum#76983]
(1958) Sort
Input [4]: [product#76704, plant#76703, minCalculationDateTime#76982, roundedQuantitySum#76983]
Arguments: [product#76704 ASC NULLS FIRST, plant#76703 ASC NULLS FIRST], false, 0
(1959) SortMergeJoin
Left keys [2]: [product#76385, plant#76386]
Right keys [2]: [product#76704, plant#76703]
Join type: LeftOuter
Join condition: None
(1960) Project
Output [8]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76463, CASE WHEN isnotnull(minCalculationDateTime#76982) THEN minCalculationDateTime#76982 ELSE orderDateTime#76387 END AS stockDatetime#76987, CASE WHEN isnotnull(roundedQuantitySum#76983) THEN array(roundedQuantitySum#76983) ELSE [0.0] END AS stockBatchQuantities#76988]
Input [10]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76463, product#76704, plant#76703, minCalculationDateTime#76982, roundedQuantitySum#76983]
(1961) Scan parquet
Output [9]: [product#76992, plant#76993, demandChannel#76994, demandStream#76995, considerVariance#76996, demandTimeBuckets#76997, demandPointInTimeStart#76998, demandPointInTimeEnd#76999, demandPointInTime#77000]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000002106/0_1_10000002106]
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>>>
(1962) Filter
Input [9]: [product#76992, plant#76993, demandChannel#76994, demandStream#76995, considerVariance#76996, demandTimeBuckets#76997, demandPointInTimeStart#76998, demandPointInTimeEnd#76999, demandPointInTime#77000]
Condition : (isnotnull(product#76992) AND isnotnull(plant#76993))
(1963) BroadcastExchange
Input [9]: [product#76992, plant#76993, demandChannel#76994, demandStream#76995, considerVariance#76996, demandTimeBuckets#76997, demandPointInTimeStart#76998, demandPointInTimeEnd#76999, demandPointInTime#77000]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=46832]
(1964) BroadcastHashJoin
Left keys [2]: [product#76385, plant#76386]
Right keys [2]: [product#76992, plant#76993]
Join type: LeftOuter
Join condition: None
(1965) Project
Output [9]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76463, stockDatetime#76987, stockBatchQuantities#76988, CASE WHEN isnotnull(product#76992) THEN struct(demandChannel, demandChannel#76994, demandStream, demandStream#76995, considerVariance, considerVariance#76996, demandTimeBuckets, demandTimeBuckets#76997, demandPointInTimeStart, demandPointInTimeStart#76998, demandPointInTimeEnd, demandPointInTimeEnd#76999, demandPointInTime, demandPointInTime#77000) END AS rawDemands#77004]
Input [17]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76463, stockDatetime#76987, stockBatchQuantities#76988, product#76992, plant#76993, demandChannel#76994, demandStream#76995, considerVariance#76996, demandTimeBuckets#76997, demandPointInTimeStart#76998, demandPointInTimeEnd#76999, demandPointInTime#77000]
(1966) ObjectHashAggregate
Input [9]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76463, stockDatetime#76987, stockBatchQuantities#76988, rawDemands#77004]
Keys [9]: [product#76385, plant#76386, orderDateTime#76387, knownfloatingpointnormalized(if (isnull(productPlant#76397)) null else named_struct(systemId, productPlant#76397.systemId, internalUUID, productPlant#76397.internalUUID, plant, productPlant#76397.plant, product, productPlant#76397.product, blockedForReplenishmentStartingFrom, productPlant#76397.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#76397.productionAspect)) null else named_struct(productMovementPlants, productPlant#76397.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#76397.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#76397.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#76397.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#76397.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#76397.productionAspect.productPlanningPlants.minimumLotSize)), minimumSafetyStock, knownfloatingpointnormalized(normalizenanandzero(productPlant#76397.productionAspect.productPlanningPlants.minimumSafetyStock)), logisticalRoundingProfile, productPlant#76397.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#76397.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#76397.salesPlant, listing, productPlant#76397.listing)) AS productPlant#76397, timezonecode#76413, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#76463)) AS outboundUnit#76463, stockDatetime#76987, knownfloatingpointnormalized(transform(stockBatchQuantities#76988, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#81849)), lambda arg#81849, false))) AS stockBatchQuantities#76988, [7226582400000000] AS [7226582400000000]#81848]
Functions [1]: [partial_collect_list(rawDemands#77004, 0, 0)]
Aggregate Attributes [1]: [buf#81850]
Results [10]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76463, stockDatetime#76987, stockBatchQuantities#76988, [7226582400000000]#81848, buf#81851]
(1967) ObjectHashAggregate
Input [10]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76463, stockDatetime#76987, stockBatchQuantities#76988, [7226582400000000]#81848, buf#81851]
Keys [9]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76463, stockDatetime#76987, stockBatchQuantities#76988, [7226582400000000]#81848]
Functions [1]: [collect_list(rawDemands#77004, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#77004, 0, 0)#69939]
Results [10]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76463, stockDatetime#76987, stockBatchQuantities#76988, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#76989, collect_list(rawDemands#77004, 0, 0)#69939 AS rawDemands#77015]
(1968) DeserializeToObject
Input [10]: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76463, stockDatetime#76987, stockBatchQuantities#76988, stockBatchShelfLifeEndDatetimes#76989, rawDemands#77015]
Arguments: createexternalrow(invoke(product#76385.toString()), invoke(plant#76386.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#76387)), if (isnull(productPlant#76397)) null else createexternalrow(invoke(productPlant#76397.systemId.toString()), invoke(productPlant#76397.internalUUID.toString()), if (isnull(productPlant#76397.plant)) null else createexternalrow(invoke(productPlant#76397.plant.internalRefUUID.toString()), invoke(productPlant#76397.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#76397.product)) null else createexternalrow(invoke(productPlant#76397.product.internalRefUUID.toString()), invoke(productPlant#76397.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#76397.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#76397.productionAspect)) null else createexternalrow(if (isnull(productPlant#76397.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#76397.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#76397.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#76397.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#76397.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#76397.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#76397.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#76397.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#76397.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#76397.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#76397.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#76397.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#76397.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#76397.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#76397.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#76397.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#76397.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#76397.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#76397.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#76397.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#76397.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#76397.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#76397.salesPlant)) null else createexternalrow(if (isnull(productPlant#76397.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#76397.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#76397.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#76397.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#76413.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#76463)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#76987)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#76988, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#76989, 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#77015, 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#69963: org.apache.spark.sql.Row
(1969) MapElements
Input [1]: [obj#69963]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@783ec352, obj#69968: org.apache.spark.sql.Row
(1970) SerializeFromObject
Input [1]: [obj#69968]
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#77018, 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#77019]
(1971) Exchange
Input [2]: [product#77018, plant#77019]
Arguments: hashpartitioning(coalesce(plant#77019, ), isnull(plant#77019), coalesce(product#77018, ), isnull(product#77018), 25), ENSURE_REQUIREMENTS, [plan_id=46904]
(1972) Sort
Input [2]: [product#77018, plant#77019]
Arguments: [coalesce(plant#77019, ) ASC NULLS FIRST, isnull(plant#77019) ASC NULLS FIRST, coalesce(product#77018, ) ASC NULLS FIRST, isnull(product#77018) ASC NULLS FIRST], false, 0
(1973) SortMergeJoin
Left keys [4]: [coalesce(plant#75736, ), isnull(plant#75736), coalesce(product#75735, ), isnull(product#75735)]
Right keys [4]: [coalesce(plant#77019, ), isnull(plant#77019), coalesce(product#77018, ), isnull(product#77018)]
Join type: LeftOuter
Join condition: None
(1974) Project
Output [3]: [product#75735, plant#75736, stockDatetime#76369]
Input [5]: [product#75735, plant#75736, stockDatetime#76369, product#77018, plant#77019]
(1975) Scan parquet
Output [6]: [internalUUID#77023, id#77024, supplier#77026, isMarkedForDeletion#77029, items#77030, systemId#77022]
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>>>>>
(1976) Filter
Input [6]: [internalUUID#77023, id#77024, supplier#77026, isMarkedForDeletion#77029, items#77030, systemId#77022]
Condition : (((isnotnull(isMarkedForDeletion#77029) AND NOT isMarkedForDeletion#77029) AND (size(items#77030, true) > 0)) AND isnotnull(items#77030))
(1977) Project
Output [4]: [internalUUID#77023, id#77024, supplier#77026, items#77030]
Input [6]: [internalUUID#77023, id#77024, supplier#77026, isMarkedForDeletion#77029, items#77030, systemId#77022]
(1978) Exchange
Input [4]: [internalUUID#77023, id#77024, supplier#77026, items#77030]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=43891]
(1979) Generate
Input [4]: [internalUUID#77023, id#77024, supplier#77026, items#77030]
Arguments: explode(items#77030), [internalUUID#77023, id#77024, supplier#77026], false, [item#77031]
(1980) Filter
Input [4]: [internalUUID#77023, id#77024, supplier#77026, item#77031]
Condition : ((((isnotnull(item#77031.deletionIndicator) AND isnotnull(item#77031.completeIndicator)) AND isnotnull(item#77031.returnIndicator)) AND ((NOT item#77031.deletionIndicator AND NOT item#77031.completeIndicator) AND NOT item#77031.returnIndicator)) AND isnotnull(item#77031.product.internalRefUUID))
(1981) Project
Output [9]: [id#77024, internalUUID#77023, supplier#77026.internalRefUUID AS supplierUuid#77032, item#77031.product.internalRefUUID AS product#77038, item#77031.quantityUnit.code AS quantityUom#77042, item#77031.quantityUnit.internalRefUUID AS quantityUomUuid#77043, item#77031.quantityNumerator AS quantityNumerator#77044, item#77031.quantityDenominator AS quantityDenominator#77045, item#77031.scheduleLines AS scheduleLines#77046]
Input [4]: [internalUUID#77023, id#77024, supplier#77026, item#77031]
(1982) BroadcastExchange
Input [9]: [id#77024, internalUUID#77023, supplierUuid#77032, product#77038, quantityUom#77042, quantityUomUuid#77043, quantityNumerator#77044, quantityDenominator#77045, scheduleLines#77046]
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=46932]
(1983) BroadcastHashJoin
Left keys [4]: [coalesce(product#75735, ), isnull(product#75735), coalesce(plant#75736, ), isnull(plant#75736)]
Right keys [4]: [coalesce(product#77038, ), isnull(product#77038), coalesce(supplierUuid#77032, ), isnull(supplierUuid#77032)]
Join type: Inner
Join condition: None
(1984) Project
Output [3]: [product#77038, plant#75736, filter(transform(filter(transform(scheduleLines#77046, lambdafunction(struct(openQty, (greatest((lambda x_20#75652.quantity - coalesce(lambda x_20#75652.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_20#75652.productAvailabilityDateTime, lambda x_20#75652.deliveryAt)), lambda x_20#75652, false)), lambdafunction((lambda x_22#75655.availabilityDatetime < stockDatetime#76369), lambda x_22#75655, false)), lambdafunction(struct(documentId, id#77024, documentUuid, internalUUID#77023, openQty, lambda x_23#75657.openQty, openQtyInBaseUnit, ((lambda x_23#75657.openQty * quantityNumerator#77044) / quantityDenominator#77045), qtyUom, quantityUom#77042, qtyUomUuid, quantityUomUuid#77043, availabilityDatetime, lambda x_23#75657.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_23#75657, false)), lambdafunction(NOT (lambda x_25#75659.openQty = 0.0), lambda x_25#75659, false)) AS openGoodsMovements#75651]
Input [12]: [product#75735, plant#75736, stockDatetime#76369, id#77024, internalUUID#77023, supplierUuid#77032, product#77038, quantityUom#77042, quantityUomUuid#77043, quantityNumerator#77044, quantityDenominator#77045, scheduleLines#77046]
(1985) ObjectHashAggregate
Input [3]: [product#77038, plant#75736, openGoodsMovements#75651]
Keys [2]: [product#77038, plant#75736]
Functions [1]: [partial_collect_list(openGoodsMovements#75651, 0, 0)]
Aggregate Attributes [1]: [buf#81830]
Results [3]: [product#77038, plant#75736, buf#81831]
(1986) Exchange
Input [3]: [product#77038, plant#75736, buf#81831]
Arguments: hashpartitioning(product#77038, plant#75736, 25), ENSURE_REQUIREMENTS, [plan_id=47007]
(1987) ObjectHashAggregate
Input [3]: [product#77038, plant#75736, buf#81831]
Keys [2]: [product#77038, plant#75736]
Functions [1]: [collect_list(openGoodsMovements#75651, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#75651, 0, 0)#75695]
Results [3]: [product#77038, plant#75736, flatten(collect_list(openGoodsMovements#75651, 0, 0)#75695) AS openGoodsMovements#75677]
(1988) Filter
Input [3]: [product#77038, plant#75736, openGoodsMovements#75677]
Condition : (size(openGoodsMovements#75677, false) > 0)
(1989) Union
(1990) ObjectHashAggregate
Input [3]: [product#70773, plant#70770, openGoodsMovements#75050]
Keys [2]: [product#70773, plant#70770]
Functions [1]: [partial_collect_list(openGoodsMovements#75050, 0, 0)]
Aggregate Attributes [1]: [buf#81828]
Results [3]: [product#70773, plant#70770, buf#81829]
(1991) Exchange
Input [3]: [product#70773, plant#70770, buf#81829]
Arguments: hashpartitioning(product#70773, plant#70770, 25), ENSURE_REQUIREMENTS, [plan_id=47029]
(1992) ObjectHashAggregate
Input [3]: [product#70773, plant#70770, buf#81829]
Keys [2]: [product#70773, plant#70770]
Functions [1]: [collect_list(openGoodsMovements#75050, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#75050, 0, 0)#77179]
Results [3]: [product#70773, plant#70770, flatten(collect_list(openGoodsMovements#75050, 0, 0)#77179) AS openGoodsMovements#77170]
(1993) Project
Output [5]: [product#70773, plant#70770, openGoodsMovements#77170.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#79909, openGoodsMovements#77170.availabilityDatetime AS _extract_availabilityDatetime#79910, openGoodsMovements#77170.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#79911]
Input [3]: [product#70773, plant#70770, openGoodsMovements#77170]
(1994) Sort
Input [5]: [product#70773, plant#70770, _extract_openQtyInBaseUnit#79909, _extract_availabilityDatetime#79910, _extract_shelfLifeEndDatetime#79911]
Arguments: [product#70773 ASC NULLS FIRST, plant#70770 ASC NULLS FIRST], false, 0
(1995) SortMergeJoin
Left keys [2]: [product#69019, plant#69020]
Right keys [2]: [product#70773, plant#70770]
Join type: LeftOuter
Join condition: None
(1996) Project
Output [16]: [product#69019, plant#69020, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#69871, dayBucketDemands#69975, pointInTimeDemands#69976, coalesce(_extract_openQtyInBaseUnit#79909, []) AS openGoodsMovementQuantities#78608, coalesce(_extract_availabilityDatetime#79910, []) AS openGoodsMovementAvailabilityDatetimes#78609, coalesce(_extract_shelfLifeEndDatetime#79911, []) AS openGoodsMovementShelfLifeEndDatetimes#78610, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#78818, concat([ListingPeriod], CASE WHEN isnotnull(_extract_minimumSafetyStock#80225) THEN [MinStock] ELSE [] END) AS timeDependentSettingsName#79226, concat([-2208988800000000], CASE WHEN isnotnull(_extract_minimumSafetyStock#80225) THEN [-2208988800000000] ELSE [] END) AS timeDependentSettingsStartDatetime#79228, concat([7226582400000000], CASE WHEN isnotnull(_extract_minimumSafetyStock#80225) THEN [7226582400000000] ELSE [] END) AS timeDependentSettingsEndDatetime#79260, concat([1.0], CASE WHEN isnotnull(_extract_minimumSafetyStock#80225) THEN array(_extract_minimumSafetyStock#80225) ELSE [] END) AS timeDependentSettingsValue#79262]
Input [13]: [product#69019, plant#69020, _extract_minimumSafetyStock#80225, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, dayBucketDemands#69975, pointInTimeDemands#69976, product#70773, plant#70770, _extract_openQtyInBaseUnit#79909, _extract_availabilityDatetime#79910, _extract_shelfLifeEndDatetime#79911]
(1997) AdaptiveSparkPlan
Output [16]: [product#69019, plant#69020, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871, dayBucketDemands#69975, pointInTimeDemands#69976, openGoodsMovementQuantities#78608, openGoodsMovementAvailabilityDatetimes#78609, openGoodsMovementShelfLifeEndDatetimes#78610, configuration#78818, timeDependentSettingsName#79226, timeDependentSettingsStartDatetime#79228, timeDependentSettingsEndDatetime#79260, timeDependentSettingsValue#79262]
Arguments: isFinalPlan=false