== Physical Plan ==
AdaptiveSparkPlan (919)
+- == Final Plan ==
ResultQueryStage (917), Statistics(sizeInBytes=8.0 EiB)
+- CollectLimit (916)
+- TableCacheQueryStage (915), Statistics(sizeInBytes=49.6 KiB, rowCount=205)
+- InMemoryTableScan (1)
+- InMemoryRelation (2)
+- AdaptiveSparkPlan (914)
+- == Final Plan ==
ResultQueryStage (51)
+- * HashAggregate (50)
+- ShuffleQueryStage (49), Statistics(sizeInBytes=54.5 KiB, rowCount=205)
+- Exchange (48)
+- * HashAggregate (47)
+- * Project (46)
+- * Filter (45)
+- * BroadcastHashJoin LeftOuter BuildRight (44)
:- * Project (38)
: +- * Generate (37)
: +- * Project (36)
: +- * Generate (35)
: +- Project (34)
: +- * BroadcastHashJoin LeftOuter BuildRight (33)
: :- * Project (24)
: : +- * BroadcastHashJoin LeftOuter BuildRight (23)
: : :- * BroadcastHashJoin LeftOuter BuildRight (15)
: : : :- ShuffleQueryStage (6), Statistics(sizeInBytes=17.6 KiB, rowCount=205)
: : : : +- Exchange (5)
: : : : +- * ColumnarToRow (4)
: : : : +- Scan parquet (3)
: : : +- BroadcastQueryStage (14), Statistics(sizeInBytes=4.1 MiB, rowCount=2.75E+3)
: : : +- BroadcastExchange (13)
: : : +- * Project (12)
: : : +- ShuffleQueryStage (11), Statistics(sizeInBytes=2.0 MiB, rowCount=2.75E+3)
: : : +- Exchange (10)
: : : +- * Project (9)
: : : +- * ColumnarToRow (8)
: : : +- Scan parquet (7)
: : +- BroadcastQueryStage (22), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : +- BroadcastExchange (21)
: : +- ShuffleQueryStage (20), Statistics(sizeInBytes=2.9 KiB, rowCount=62)
: : +- Exchange (19)
: : +- * Project (18)
: : +- * ColumnarToRow (17)
: : +- Scan parquet (16)
: +- BroadcastQueryStage (32), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: +- BroadcastExchange (31)
: +- ShuffleQueryStage (30), Statistics(sizeInBytes=92.7 KiB, rowCount=159)
: +- Exchange (29)
: +- * Project (28)
: +- * Filter (27)
: +- * ColumnarToRow (26)
: +- Scan parquet (25)
+- BroadcastQueryStage (43), Statistics(sizeInBytes=2.0 MiB, rowCount=205)
+- BroadcastExchange (42)
+- * Filter (41)
+- * ColumnarToRow (40)
+- Scan parquet (39)
+- == Initial Plan ==
Union (913)
:- HashAggregate (80)
: +- Exchange (79)
: +- HashAggregate (78)
: +- Project (77)
: +- Filter (76)
: +- BroadcastHashJoin LeftOuter BuildRight (75)
: :- Project (72)
: : +- Generate (71)
: : +- Project (70)
: : +- Generate (69)
: : +- Project (68)
: : +- BroadcastHashJoin LeftOuter BuildRight (67)
: : :- Project (62)
: : : +- BroadcastHashJoin LeftOuter BuildRight (61)
: : : :- BroadcastHashJoin LeftOuter BuildRight (57)
: : : : :- Exchange (52)
: : : : : +- Scan parquet (3)
: : : : +- BroadcastExchange (56)
: : : : +- Project (55)
: : : : +- Exchange (54)
: : : : +- Project (53)
: : : : +- Scan parquet (7)
: : : +- BroadcastExchange (60)
: : : +- Exchange (59)
: : : +- Project (58)
: : : +- Scan parquet (16)
: : +- BroadcastExchange (66)
: : +- Exchange (65)
: : +- Project (64)
: : +- Filter (63)
: : +- Scan parquet (25)
: +- BroadcastExchange (74)
: +- Filter (73)
: +- Scan parquet (39)
+- HashAggregate (912)
+- Exchange (911)
+- HashAggregate (910)
+- Project (909)
+- BroadcastNestedLoopJoin Cross BuildLeft (908)
:- BroadcastExchange (897)
: +- SerializeFromObject (896)
: +- MapPartitions (895)
: +- DeserializeToObject (894)
: +- Project (893)
: +- InMemoryTableScan (81)
: +- InMemoryRelation (82)
: +- AdaptiveSparkPlan (892)
+- == Final Plan ==
ResultQueryStage (399)
+- Project (398)
+- * BroadcastHashJoin Inner BuildRight (397)
:- * Project (385)
: +- * BroadcastHashJoin Inner BuildLeft (384)
: :- BroadcastQueryStage (368), Statistics(sizeInBytes=2.0 MiB, rowCount=205)
: : +- BroadcastExchange (367)
: : +- AQEShuffleRead (366)
: : +- ShuffleQueryStage (365), Statistics(sizeInBytes=24.0 KiB, rowCount=205)
: : +- Exchange (364)
: : +- * Project (363)
: : +- * BroadcastHashJoin LeftOuter BuildRight (362)
: : :- AQEShuffleRead (256)
: : : +- ShuffleQueryStage (255), Statistics(sizeInBytes=24.0 KiB, rowCount=205)
: : : +- Exchange (254)
: : : +- * Project (253)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (252)
: : : :- * Project (120)
: : : : +- * Generate (119)
: : : : +- * Project (118)
: : : : +- * Generate (117)
: : : : +- Project (116)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (115)
: : : : :- * Project (106)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (105)
: : : : : :- * Project (97)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (96)
: : : : : : :- ShuffleQueryStage (87), Statistics(sizeInBytes=19.2 KiB, rowCount=205)
: : : : : : : +- Exchange (86)
: : : : : : : +- * Filter (85)
: : : : : : : +- * ColumnarToRow (84)
: : : : : : : +- Scan parquet (83)
: : : : : : +- BroadcastQueryStage (95), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (94)
: : : : : : +- * Project (93)
: : : : : : +- ShuffleQueryStage (92), Statistics(sizeInBytes=339.5 KiB, rowCount=2.75E+3)
: : : : : : +- Exchange (91)
: : : : : : +- * Project (90)
: : : : : : +- * ColumnarToRow (89)
: : : : : : +- Scan parquet (88)
: : : : : +- BroadcastQueryStage (104), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- BroadcastExchange (103)
: : : : : +- ShuffleQueryStage (102), Statistics(sizeInBytes=4.4 KiB, rowCount=62)
: : : : : +- Exchange (101)
: : : : : +- * Project (100)
: : : : : +- * ColumnarToRow (99)
: : : : : +- Scan parquet (98)
: : : : +- BroadcastQueryStage (114), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- BroadcastExchange (113)
: : : : +- ShuffleQueryStage (112), Statistics(sizeInBytes=92.7 KiB, rowCount=159)
: : : : +- Exchange (111)
: : : : +- * Project (110)
: : : : +- * Filter (109)
: : : : +- * ColumnarToRow (108)
: : : : +- Scan parquet (107)
: : : +- BroadcastQueryStage (251), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
: : : +- BroadcastExchange (250)
: : : +- * HashAggregate (249)
: : : +- AQEShuffleRead (248)
: : : +- ShuffleQueryStage (247), Statistics(sizeInBytes=4.1 KiB, rowCount=44)
: : : +- Exchange (246)
: : : +- * HashAggregate (245)
: : : +- * Project (244)
: : : +- * BroadcastHashJoin Inner BuildLeft (243)
: : : :- BroadcastQueryStage (215), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
: : : : +- BroadcastExchange (214)
: : : : +- AQEShuffleRead (213)
: : : : +- ShuffleQueryStage (212), Statistics(sizeInBytes=4.8 KiB, rowCount=44)
: : : : +- Exchange (211)
: : : : +- * Project (210)
: : : : +- * BroadcastHashJoin Inner BuildLeft (209)
: : : : :- BroadcastQueryStage (187), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : : +- BroadcastExchange (186)
: : : : : +- AQEShuffleRead (185)
: : : : : +- ShuffleQueryStage (184), Statistics(sizeInBytes=43.1 KiB, rowCount=394)
: : : : : +- Exchange (183)
: : : : : +- * Project (182)
: : : : : +- * Filter (181)
: : : : : +- * Generate (180)
: : : : : +- * Filter (179)
: : : : : +- ObjectHashAggregate (178)
: : : : : +- ObjectHashAggregate (177)
: : : : : +- Generate (176)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (175)
: : : : : :- BroadcastQueryStage (128), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- BroadcastExchange (127)
: : : : : : +- ShuffleQueryStage (126), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : : : +- Exchange (125)
: : : : : : +- * Project (124)
: : : : : : +- * Filter (123)
: : : : : : +- * ColumnarToRow (122)
: : : : : : +- Scan parquet (121)
: : : : : +- * Project (174)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (173)
: : : : : :- BroadcastQueryStage (141), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- BroadcastExchange (140)
: : : : : : +- * Project (139)
: : : : : : +- * Generate (138)
: : : : : : +- * Project (137)
: : : : : : +- * Filter (136)
: : : : : : +- * Generate (135)
: : : : : : +- ShuffleQueryStage (134), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : : : : : +- Exchange (133)
: : : : : : +- * Project (132)
: : : : : : +- * Filter (131)
: : : : : : +- * ColumnarToRow (130)
: : : : : : +- Scan parquet (129)
: : : : : +- * HashAggregate (172)
: : : : : +- AQEShuffleRead (171)
: : : : : +- ShuffleQueryStage (170), Statistics(sizeInBytes=7.2 KiB, rowCount=153)
: : : : : +- Exchange (169)
: : : : : +- * HashAggregate (168)
: : : : : +- * Project (167)
: : : : : +- * Generate (166)
: : : : : +- * Project (165)
: : : : : +- * Generate (164)
: : : : : +- Project (163)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (162)
: : : : : :- * Project (159)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (158)
: : : : : : :- * Project (150)
: : : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (149)
: : : : : : : :- ShuffleQueryStage (146), Statistics(sizeInBytes=17.6 KiB, rowCount=205)
: : : : : : : : +- Exchange (145)
: : : : : : : : +- * Filter (144)
: : : : : : : : +- * ColumnarToRow (143)
: : : : : : : : +- Scan parquet (142)
: : : : : : : +- BroadcastQueryStage (148), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : : +- ReusedExchange (147)
: : : : : : +- BroadcastQueryStage (157), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : : +- BroadcastExchange (156)
: : : : : : +- ShuffleQueryStage (155), Statistics(sizeInBytes=2.9 KiB, rowCount=62)
: : : : : : +- Exchange (154)
: : : : : : +- * Project (153)
: : : : : : +- * ColumnarToRow (152)
: : : : : : +- Scan parquet (151)
: : : : : +- BroadcastQueryStage (161), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : : +- ReusedExchange (160)
: : : : +- * Project (208)
: : : : +- * Generate (207)
: : : : +- * Project (206)
: : : : +- * Generate (205)
: : : : +- Project (204)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (203)
: : : : :- * Project (200)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (199)
: : : : : :- * Project (196)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (195)
: : : : : : :- ShuffleQueryStage (192), Statistics(sizeInBytes=19.2 KiB, rowCount=205)
: : : : : : : +- Exchange (191)
: : : : : : : +- * Filter (190)
: : : : : : : +- * ColumnarToRow (189)
: : : : : : : +- Scan parquet (188)
: : : : : : +- BroadcastQueryStage (194), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- ReusedExchange (193)
: : : : : +- BroadcastQueryStage (198), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (197)
: : : : +- BroadcastQueryStage (202), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (201)
: : : +- AQEShuffleRead (242)
: : : +- ShuffleQueryStage (241), Statistics(sizeInBytes=4.8 KiB, rowCount=44)
: : : +- Exchange (240)
: : : +- * HashAggregate (239)
: : : +- * HashAggregate (238)
: : : +- * Project (237)
: : : +- * BroadcastHashJoin Inner BuildLeft (236)
: : : :- BroadcastQueryStage (217), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : +- ReusedExchange (216)
: : : +- * Project (235)
: : : +- * Generate (234)
: : : +- * Project (233)
: : : +- * Generate (232)
: : : +- Project (231)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (230)
: : : :- * Project (227)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (226)
: : : : :- * Project (223)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (222)
: : : : : :- ShuffleQueryStage (219), Statistics(sizeInBytes=19.2 KiB, rowCount=205)
: : : : : : +- ReusedExchange (218)
: : : : : +- BroadcastQueryStage (221), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : +- ReusedExchange (220)
: : : : +- BroadcastQueryStage (225), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : +- ReusedExchange (224)
: : : +- BroadcastQueryStage (229), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : +- ReusedExchange (228)
: : +- BroadcastQueryStage (361), Statistics(sizeInBytes=2.0 MiB, rowCount=205)
: : +- BroadcastExchange (360)
: : +- AQEShuffleRead (359)
: : +- ShuffleQueryStage (358), Statistics(sizeInBytes=17.6 KiB, rowCount=205)
: : +- Exchange (357)
: : +- * SerializeFromObject (356)
: : +- * MapElements (355)
: : +- * DeserializeToObject (354)
: : +- ObjectHashAggregate (353)
: : +- ObjectHashAggregate (352)
: : +- * Project (351)
: : +- * BroadcastHashJoin LeftOuter BuildRight (350)
: : :- * Project (344)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (343)
: : : :- * Project (282)
: : : : +- * Project (281)
: : : : +- * Generate (280)
: : : : +- * Generate (279)
: : : : +- * Project (278)
: : : : +- Project (277)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (276)
: : : : :- * Project (273)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (272)
: : : : : :- * BroadcastHashJoin LeftOuter BuildRight (269)
: : : : : : :- ShuffleQueryStage (260), Statistics(sizeInBytes=19.2 KiB, rowCount=205)
: : : : : : : +- Exchange (259)
: : : : : : : +- * ColumnarToRow (258)
: : : : : : : +- Scan parquet (257)
: : : : : : +- BroadcastQueryStage (268), Statistics(sizeInBytes=4.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (267)
: : : : : : +- * Project (266)
: : : : : : +- ShuffleQueryStage (265), Statistics(sizeInBytes=2.0 MiB, rowCount=2.75E+3)
: : : : : : +- Exchange (264)
: : : : : : +- * Project (263)
: : : : : : +- * ColumnarToRow (262)
: : : : : : +- Scan parquet (261)
: : : : : +- BroadcastQueryStage (271), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (270)
: : : : +- BroadcastQueryStage (275), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (274)
: : : +- BroadcastQueryStage (342), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
: : : +- BroadcastExchange (341)
: : : +- * HashAggregate (340)
: : : +- AQEShuffleRead (339)
: : : +- ShuffleQueryStage (338), Statistics(sizeInBytes=4.5 KiB, rowCount=44)
: : : +- Exchange (337)
: : : +- * HashAggregate (336)
: : : +- * Project (335)
: : : +- * BroadcastHashJoin Inner BuildLeft (334)
: : : :- BroadcastQueryStage (330), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
: : : : +- BroadcastExchange (329)
: : : : +- AQEShuffleRead (328)
: : : : +- ShuffleQueryStage (327), Statistics(sizeInBytes=5.2 KiB, rowCount=44)
: : : : +- Exchange (326)
: : : : +- * Project (325)
: : : : +- * BroadcastHashJoin Inner BuildLeft (324)
: : : : :- BroadcastQueryStage (305), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : : +- BroadcastExchange (304)
: : : : : +- AQEShuffleRead (303)
: : : : : +- ShuffleQueryStage (302), Statistics(sizeInBytes=46.2 KiB, rowCount=394)
: : : : : +- Exchange (301)
: : : : : +- * Project (300)
: : : : : +- * Filter (299)
: : : : : +- * Generate (298)
: : : : : +- * Filter (297)
: : : : : +- ObjectHashAggregate (296)
: : : : : +- ObjectHashAggregate (295)
: : : : : +- Generate (294)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (293)
: : : : : :- BroadcastQueryStage (284), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- ReusedExchange (283)
: : : : : +- * Project (292)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (291)
: : : : : :- BroadcastQueryStage (286), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- ReusedExchange (285)
: : : : : +- * HashAggregate (290)
: : : : : +- AQEShuffleRead (289)
: : : : : +- ShuffleQueryStage (288), Statistics(sizeInBytes=7.2 KiB, rowCount=153)
: : : : : +- ReusedExchange (287)
: : : : +- * Project (323)
: : : : +- * Generate (322)
: : : : +- * Project (321)
: : : : +- * Generate (320)
: : : : +- Project (319)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (318)
: : : : :- * Project (315)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (314)
: : : : : :- * Project (311)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (310)
: : : : : : :- ShuffleQueryStage (307), Statistics(sizeInBytes=19.2 KiB, rowCount=205)
: : : : : : : +- ReusedExchange (306)
: : : : : : +- BroadcastQueryStage (309), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- ReusedExchange (308)
: : : : : +- BroadcastQueryStage (313), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (312)
: : : : +- BroadcastQueryStage (317), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (316)
: : : +- AQEShuffleRead (333)
: : : +- ShuffleQueryStage (332), Statistics(sizeInBytes=4.8 KiB, rowCount=44)
: : : +- ReusedExchange (331)
: : +- BroadcastQueryStage (349), Statistics(sizeInBytes=2.0 MiB, rowCount=205)
: : +- BroadcastExchange (348)
: : +- * Filter (347)
: : +- * ColumnarToRow (346)
: : +- Scan parquet (345)
: +- * Project (383)
: +- * BroadcastHashJoin Inner BuildLeft (382)
: :- BroadcastQueryStage (378), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : +- BroadcastExchange (377)
: : +- * Project (376)
: : +- * Filter (375)
: : +- * Generate (374)
: : +- * Project (373)
: : +- * Filter (372)
: : +- * Generate (371)
: : +- ShuffleQueryStage (370), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : +- ReusedExchange (369)
: +- * HashAggregate (381)
: +- ShuffleQueryStage (380), Statistics(sizeInBytes=7.2 KiB, rowCount=153)
: +- ReusedExchange (379)
+- BroadcastQueryStage (396), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
+- BroadcastExchange (395)
+- * Project (394)
+- * Filter (393)
+- * Generate (392)
+- ShuffleQueryStage (391), Statistics(sizeInBytes=29.9 KiB, rowCount=9)
+- Exchange (390)
+- * Project (389)
+- * Filter (388)
+- * ColumnarToRow (387)
+- Scan parquet (386)
+- == Initial Plan ==
Project (891)
+- BroadcastHashJoin Inner BuildRight (890)
:- Project (882)
: +- SortMergeJoin Inner (881)
: :- Sort (836)
: : +- Exchange (835)
: : +- Project (834)
: : +- SortMergeJoin LeftOuter (833)
: : :- Sort (608)
: : : +- Exchange (607)
: : : +- Project (606)
: : : +- SortMergeJoin LeftOuter (605)
: : : :- Sort (423)
: : : : +- Project (422)
: : : : +- Generate (421)
: : : : +- Project (420)
: : : : +- Generate (419)
: : : : +- Project (418)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (417)
: : : : :- Project (412)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (411)
: : : : : :- Project (407)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (406)
: : : : : : :- Exchange (401)
: : : : : : : +- Filter (400)
: : : : : : : +- Scan parquet (83)
: : : : : : +- BroadcastExchange (405)
: : : : : : +- Project (404)
: : : : : : +- Exchange (403)
: : : : : : +- Project (402)
: : : : : : +- Scan parquet (88)
: : : : : +- BroadcastExchange (410)
: : : : : +- Exchange (409)
: : : : : +- Project (408)
: : : : : +- Scan parquet (98)
: : : : +- BroadcastExchange (416)
: : : : +- Exchange (415)
: : : : +- Project (414)
: : : : +- Filter (413)
: : : : +- Scan parquet (107)
: : : +- Sort (604)
: : : +- HashAggregate (603)
: : : +- Exchange (602)
: : : +- HashAggregate (601)
: : : +- Project (600)
: : : +- SortMergeJoin Inner (599)
: : : :- Sort (507)
: : : : +- Exchange (506)
: : : : +- Project (505)
: : : : +- SortMergeJoin Inner (504)
: : : : :- Sort (476)
: : : : : +- Exchange (475)
: : : : : +- Project (474)
: : : : : +- Filter (473)
: : : : : +- Generate (472)
: : : : : +- Filter (471)
: : : : : +- ObjectHashAggregate (470)
: : : : : +- ObjectHashAggregate (469)
: : : : : +- Generate (468)
: : : : : +- BroadcastHashJoin Inner BuildLeft (467)
: : : : : :- BroadcastExchange (427)
: : : : : : +- Exchange (426)
: : : : : : +- Project (425)
: : : : : : +- Filter (424)
: : : : : : +- Scan parquet (121)
: : : : : +- Project (466)
: : : : : +- BroadcastHashJoin Inner BuildLeft (465)
: : : : : :- BroadcastExchange (436)
: : : : : : +- Project (435)
: : : : : : +- Generate (434)
: : : : : : +- Project (433)
: : : : : : +- Filter (432)
: : : : : : +- Generate (431)
: : : : : : +- Exchange (430)
: : : : : : +- Project (429)
: : : : : : +- Filter (428)
: : : : : : +- Scan parquet (129)
: : : : : +- HashAggregate (464)
: : : : : +- Exchange (463)
: : : : : +- HashAggregate (462)
: : : : : +- Project (461)
: : : : : +- Generate (460)
: : : : : +- Project (459)
: : : : : +- Generate (458)
: : : : : +- Project (457)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (456)
: : : : : :- Project (450)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (449)
: : : : : : :- Project (445)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (444)
: : : : : : : :- Exchange (438)
: : : : : : : : +- Filter (437)
: : : : : : : : +- Scan parquet (142)
: : : : : : : +- BroadcastExchange (443)
: : : : : : : +- Project (442)
: : : : : : : +- Exchange (441)
: : : : : : : +- Project (440)
: : : : : : : +- Scan parquet (439)
: : : : : : +- BroadcastExchange (448)
: : : : : : +- Exchange (447)
: : : : : : +- Project (446)
: : : : : : +- Scan parquet (151)
: : : : : +- BroadcastExchange (455)
: : : : : +- Exchange (454)
: : : : : +- Project (453)
: : : : : +- Filter (452)
: : : : : +- Scan parquet (451)
: : : : +- Sort (503)
: : : : +- Project (502)
: : : : +- Generate (501)
: : : : +- Project (500)
: : : : +- Generate (499)
: : : : +- Project (498)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (497)
: : : : :- Project (491)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (490)
: : : : : :- Project (485)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (484)
: : : : : : :- Exchange (478)
: : : : : : : +- Filter (477)
: : : : : : : +- Scan parquet (188)
: : : : : : +- BroadcastExchange (483)
: : : : : : +- Project (482)
: : : : : : +- Exchange (481)
: : : : : : +- Project (480)
: : : : : : +- Scan parquet (479)
: : : : : +- BroadcastExchange (489)
: : : : : +- Exchange (488)
: : : : : +- Project (487)
: : : : : +- Scan parquet (486)
: : : : +- BroadcastExchange (496)
: : : : +- Exchange (495)
: : : : +- Project (494)
: : : : +- Filter (493)
: : : : +- Scan parquet (492)
: : : +- Sort (598)
: : : +- Exchange (597)
: : : +- HashAggregate (596)
: : : +- HashAggregate (595)
: : : +- Project (594)
: : : +- SortMergeJoin Inner (593)
: : : :- Sort (564)
: : : : +- Exchange (563)
: : : : +- Project (562)
: : : : +- Filter (561)
: : : : +- Generate (560)
: : : : +- Filter (559)
: : : : +- ObjectHashAggregate (558)
: : : : +- ObjectHashAggregate (557)
: : : : +- Generate (556)
: : : : +- BroadcastHashJoin Inner BuildLeft (555)
: : : : :- BroadcastExchange (512)
: : : : : +- Exchange (511)
: : : : : +- Project (510)
: : : : : +- Filter (509)
: : : : : +- Scan parquet (508)
: : : : +- Project (554)
: : : : +- BroadcastHashJoin Inner BuildLeft (553)
: : : : :- BroadcastExchange (522)
: : : : : +- Project (521)
: : : : : +- Generate (520)
: : : : : +- Project (519)
: : : : : +- Filter (518)
: : : : : +- Generate (517)
: : : : : +- Exchange (516)
: : : : : +- Project (515)
: : : : : +- Filter (514)
: : : : : +- Scan parquet (513)
: : : : +- HashAggregate (552)
: : : : +- Exchange (551)
: : : : +- HashAggregate (550)
: : : : +- Project (549)
: : : : +- Generate (548)
: : : : +- Project (547)
: : : : +- Generate (546)
: : : : +- Project (545)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (544)
: : : : :- Project (538)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (537)
: : : : : :- Project (532)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (531)
: : : : : : :- Exchange (525)
: : : : : : : +- Filter (524)
: : : : : : : +- Scan parquet (523)
: : : : : : +- BroadcastExchange (530)
: : : : : : +- Project (529)
: : : : : : +- Exchange (528)
: : : : : : +- Project (527)
: : : : : : +- Scan parquet (526)
: : : : : +- BroadcastExchange (536)
: : : : : +- Exchange (535)
: : : : : +- Project (534)
: : : : : +- Scan parquet (533)
: : : : +- BroadcastExchange (543)
: : : : +- Exchange (542)
: : : : +- Project (541)
: : : : +- Filter (540)
: : : : +- Scan parquet (539)
: : : +- Sort (592)
: : : +- Project (591)
: : : +- Generate (590)
: : : +- Project (589)
: : : +- Generate (588)
: : : +- Project (587)
: : : +- BroadcastHashJoin LeftOuter BuildRight (586)
: : : :- Project (580)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (579)
: : : : :- Project (574)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (573)
: : : : : :- Exchange (567)
: : : : : : +- Filter (566)
: : : : : : +- Scan parquet (565)
: : : : : +- BroadcastExchange (572)
: : : : : +- Project (571)
: : : : : +- Exchange (570)
: : : : : +- Project (569)
: : : : : +- Scan parquet (568)
: : : : +- BroadcastExchange (578)
: : : : +- Exchange (577)
: : : : +- Project (576)
: : : : +- Scan parquet (575)
: : : +- BroadcastExchange (585)
: : : +- Exchange (584)
: : : +- Project (583)
: : : +- Filter (582)
: : : +- Scan parquet (581)
: : +- Sort (832)
: : +- Exchange (831)
: : +- SerializeFromObject (830)
: : +- MapElements (829)
: : +- DeserializeToObject (828)
: : +- ObjectHashAggregate (827)
: : +- ObjectHashAggregate (826)
: : +- Project (825)
: : +- BroadcastHashJoin LeftOuter BuildRight (824)
: : :- Project (821)
: : : +- SortMergeJoin LeftOuter (820)
: : : :- Sort (633)
: : : : +- Project (632)
: : : : +- Project (631)
: : : : +- Generate (630)
: : : : +- Generate (629)
: : : : +- Project (628)
: : : : +- Project (627)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (626)
: : : : :- Project (620)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (619)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (614)
: : : : : : :- Exchange (609)
: : : : : : : +- Scan parquet (257)
: : : : : : +- BroadcastExchange (613)
: : : : : : +- Project (612)
: : : : : : +- Exchange (611)
: : : : : : +- Project (610)
: : : : : : +- Scan parquet (261)
: : : : : +- BroadcastExchange (618)
: : : : : +- Exchange (617)
: : : : : +- Project (616)
: : : : : +- Scan parquet (615)
: : : : +- BroadcastExchange (625)
: : : : +- Exchange (624)
: : : : +- Project (623)
: : : : +- Filter (622)
: : : : +- Scan parquet (621)
: : : +- Sort (819)
: : : +- HashAggregate (818)
: : : +- Exchange (817)
: : : +- HashAggregate (816)
: : : +- Project (815)
: : : +- SortMergeJoin Inner (814)
: : : :- Sort (722)
: : : : +- Exchange (721)
: : : : +- Project (720)
: : : : +- SortMergeJoin Inner (719)
: : : : :- Sort (690)
: : : : : +- Exchange (689)
: : : : : +- Project (688)
: : : : : +- Filter (687)
: : : : : +- Generate (686)
: : : : : +- Filter (685)
: : : : : +- ObjectHashAggregate (684)
: : : : : +- ObjectHashAggregate (683)
: : : : : +- Generate (682)
: : : : : +- BroadcastHashJoin Inner BuildLeft (681)
: : : : : :- BroadcastExchange (638)
: : : : : : +- Exchange (637)
: : : : : : +- Project (636)
: : : : : : +- Filter (635)
: : : : : : +- Scan parquet (634)
: : : : : +- Project (680)
: : : : : +- BroadcastHashJoin Inner BuildLeft (679)
: : : : : :- BroadcastExchange (648)
: : : : : : +- Project (647)
: : : : : : +- Generate (646)
: : : : : : +- Project (645)
: : : : : : +- Filter (644)
: : : : : : +- Generate (643)
: : : : : : +- Exchange (642)
: : : : : : +- Project (641)
: : : : : : +- Filter (640)
: : : : : : +- Scan parquet (639)
: : : : : +- HashAggregate (678)
: : : : : +- Exchange (677)
: : : : : +- HashAggregate (676)
: : : : : +- Project (675)
: : : : : +- Generate (674)
: : : : : +- Project (673)
: : : : : +- Generate (672)
: : : : : +- Project (671)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (670)
: : : : : :- Project (664)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (663)
: : : : : : :- Project (658)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (657)
: : : : : : : :- Exchange (651)
: : : : : : : : +- Filter (650)
: : : : : : : : +- Scan parquet (649)
: : : : : : : +- BroadcastExchange (656)
: : : : : : : +- Project (655)
: : : : : : : +- Exchange (654)
: : : : : : : +- Project (653)
: : : : : : : +- Scan parquet (652)
: : : : : : +- BroadcastExchange (662)
: : : : : : +- Exchange (661)
: : : : : : +- Project (660)
: : : : : : +- Scan parquet (659)
: : : : : +- BroadcastExchange (669)
: : : : : +- Exchange (668)
: : : : : +- Project (667)
: : : : : +- Filter (666)
: : : : : +- Scan parquet (665)
: : : : +- Sort (718)
: : : : +- Project (717)
: : : : +- Generate (716)
: : : : +- Project (715)
: : : : +- Generate (714)
: : : : +- Project (713)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (712)
: : : : :- Project (706)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (705)
: : : : : :- Project (700)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (699)
: : : : : : :- Exchange (693)
: : : : : : : +- Filter (692)
: : : : : : : +- Scan parquet (691)
: : : : : : +- BroadcastExchange (698)
: : : : : : +- Project (697)
: : : : : : +- Exchange (696)
: : : : : : +- Project (695)
: : : : : : +- Scan parquet (694)
: : : : : +- BroadcastExchange (704)
: : : : : +- Exchange (703)
: : : : : +- Project (702)
: : : : : +- Scan parquet (701)
: : : : +- BroadcastExchange (711)
: : : : +- Exchange (710)
: : : : +- Project (709)
: : : : +- Filter (708)
: : : : +- Scan parquet (707)
: : : +- Sort (813)
: : : +- Exchange (812)
: : : +- HashAggregate (811)
: : : +- HashAggregate (810)
: : : +- Project (809)
: : : +- SortMergeJoin Inner (808)
: : : :- Sort (779)
: : : : +- Exchange (778)
: : : : +- Project (777)
: : : : +- Filter (776)
: : : : +- Generate (775)
: : : : +- Filter (774)
: : : : +- ObjectHashAggregate (773)
: : : : +- ObjectHashAggregate (772)
: : : : +- Generate (771)
: : : : +- BroadcastHashJoin Inner BuildLeft (770)
: : : : :- BroadcastExchange (727)
: : : : : +- Exchange (726)
: : : : : +- Project (725)
: : : : : +- Filter (724)
: : : : : +- Scan parquet (723)
: : : : +- Project (769)
: : : : +- BroadcastHashJoin Inner BuildLeft (768)
: : : : :- BroadcastExchange (737)
: : : : : +- Project (736)
: : : : : +- Generate (735)
: : : : : +- Project (734)
: : : : : +- Filter (733)
: : : : : +- Generate (732)
: : : : : +- Exchange (731)
: : : : : +- Project (730)
: : : : : +- Filter (729)
: : : : : +- Scan parquet (728)
: : : : +- HashAggregate (767)
: : : : +- Exchange (766)
: : : : +- HashAggregate (765)
: : : : +- Project (764)
: : : : +- Generate (763)
: : : : +- Project (762)
: : : : +- Generate (761)
: : : : +- Project (760)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (759)
: : : : :- Project (753)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (752)
: : : : : :- Project (747)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (746)
: : : : : : :- Exchange (740)
: : : : : : : +- Filter (739)
: : : : : : : +- Scan parquet (738)
: : : : : : +- BroadcastExchange (745)
: : : : : : +- Project (744)
: : : : : : +- Exchange (743)
: : : : : : +- Project (742)
: : : : : : +- Scan parquet (741)
: : : : : +- BroadcastExchange (751)
: : : : : +- Exchange (750)
: : : : : +- Project (749)
: : : : : +- Scan parquet (748)
: : : : +- BroadcastExchange (758)
: : : : +- Exchange (757)
: : : : +- Project (756)
: : : : +- Filter (755)
: : : : +- Scan parquet (754)
: : : +- Sort (807)
: : : +- Project (806)
: : : +- Generate (805)
: : : +- Project (804)
: : : +- Generate (803)
: : : +- Project (802)
: : : +- BroadcastHashJoin LeftOuter BuildRight (801)
: : : :- Project (795)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (794)
: : : : :- Project (789)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (788)
: : : : : :- Exchange (782)
: : : : : : +- Filter (781)
: : : : : : +- Scan parquet (780)
: : : : : +- BroadcastExchange (787)
: : : : : +- Project (786)
: : : : : +- Exchange (785)
: : : : : +- Project (784)
: : : : : +- Scan parquet (783)
: : : : +- BroadcastExchange (793)
: : : : +- Exchange (792)
: : : : +- Project (791)
: : : : +- Scan parquet (790)
: : : +- BroadcastExchange (800)
: : : +- Exchange (799)
: : : +- Project (798)
: : : +- Filter (797)
: : : +- Scan parquet (796)
: : +- BroadcastExchange (823)
: : +- Filter (822)
: : +- Scan parquet (345)
: +- Sort (880)
: +- Project (879)
: +- BroadcastHashJoin Inner BuildLeft (878)
: :- BroadcastExchange (847)
: : +- Project (846)
: : +- Filter (845)
: : +- Generate (844)
: : +- Project (843)
: : +- Filter (842)
: : +- Generate (841)
: : +- Exchange (840)
: : +- Project (839)
: : +- Filter (838)
: : +- Scan parquet (837)
: +- HashAggregate (877)
: +- Exchange (876)
: +- HashAggregate (875)
: +- Project (874)
: +- Generate (873)
: +- Project (872)
: +- Generate (871)
: +- Project (870)
: +- BroadcastHashJoin LeftOuter BuildRight (869)
: :- Project (863)
: : +- BroadcastHashJoin LeftOuter BuildRight (862)
: : :- Project (857)
: : : +- BroadcastHashJoin LeftOuter BuildRight (856)
: : : :- Exchange (850)
: : : : +- Filter (849)
: : : : +- Scan parquet (848)
: : : +- BroadcastExchange (855)
: : : +- Project (854)
: : : +- Exchange (853)
: : : +- Project (852)
: : : +- Scan parquet (851)
: : +- BroadcastExchange (861)
: : +- Exchange (860)
: : +- Project (859)
: : +- Scan parquet (858)
: +- BroadcastExchange (868)
: +- Exchange (867)
: +- Project (866)
: +- Filter (865)
: +- Scan parquet (864)
+- BroadcastExchange (889)
+- Project (888)
+- Filter (887)
+- Generate (886)
+- Exchange (885)
+- Project (884)
+- Filter (883)
+- Scan parquet (386)
+- Project (907)
+- Filter (906)
+- SortAggregate (905)
+- Sort (904)
+- Exchange (903)
+- SortAggregate (902)
+- Sort (901)
+- Exchange (900)
+- Filter (899)
+- Scan parquet (898)
+- == Initial Plan ==
CollectLimit (918)
+- InMemoryTableScan (1)
+- InMemoryRelation (2)
+- AdaptiveSparkPlan (914)
+- == Final Plan ==
ResultQueryStage (51)
+- * HashAggregate (50)
+- ShuffleQueryStage (49), Statistics(sizeInBytes=54.5 KiB, rowCount=205)
+- Exchange (48)
+- * HashAggregate (47)
+- * Project (46)
+- * Filter (45)
+- * BroadcastHashJoin LeftOuter BuildRight (44)
:- * Project (38)
: +- * Generate (37)
: +- * Project (36)
: +- * Generate (35)
: +- Project (34)
: +- * BroadcastHashJoin LeftOuter BuildRight (33)
: :- * Project (24)
: : +- * BroadcastHashJoin LeftOuter BuildRight (23)
: : :- * BroadcastHashJoin LeftOuter BuildRight (15)
: : : :- ShuffleQueryStage (6), Statistics(sizeInBytes=17.6 KiB, rowCount=205)
: : : : +- Exchange (5)
: : : : +- * ColumnarToRow (4)
: : : : +- Scan parquet (3)
: : : +- BroadcastQueryStage (14), Statistics(sizeInBytes=4.1 MiB, rowCount=2.75E+3)
: : : +- BroadcastExchange (13)
: : : +- * Project (12)
: : : +- ShuffleQueryStage (11), Statistics(sizeInBytes=2.0 MiB, rowCount=2.75E+3)
: : : +- Exchange (10)
: : : +- * Project (9)
: : : +- * ColumnarToRow (8)
: : : +- Scan parquet (7)
: : +- BroadcastQueryStage (22), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : +- BroadcastExchange (21)
: : +- ShuffleQueryStage (20), Statistics(sizeInBytes=2.9 KiB, rowCount=62)
: : +- Exchange (19)
: : +- * Project (18)
: : +- * ColumnarToRow (17)
: : +- Scan parquet (16)
: +- BroadcastQueryStage (32), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: +- BroadcastExchange (31)
: +- ShuffleQueryStage (30), Statistics(sizeInBytes=92.7 KiB, rowCount=159)
: +- Exchange (29)
: +- * Project (28)
: +- * Filter (27)
: +- * ColumnarToRow (26)
: +- Scan parquet (25)
+- BroadcastQueryStage (43), Statistics(sizeInBytes=2.0 MiB, rowCount=205)
+- BroadcastExchange (42)
+- * Filter (41)
+- * ColumnarToRow (40)
+- Scan parquet (39)
+- == Initial Plan ==
Union (913)
:- HashAggregate (80)
: +- Exchange (79)
: +- HashAggregate (78)
: +- Project (77)
: +- Filter (76)
: +- BroadcastHashJoin LeftOuter BuildRight (75)
: :- Project (72)
: : +- Generate (71)
: : +- Project (70)
: : +- Generate (69)
: : +- Project (68)
: : +- BroadcastHashJoin LeftOuter BuildRight (67)
: : :- Project (62)
: : : +- BroadcastHashJoin LeftOuter BuildRight (61)
: : : :- BroadcastHashJoin LeftOuter BuildRight (57)
: : : : :- Exchange (52)
: : : : : +- Scan parquet (3)
: : : : +- BroadcastExchange (56)
: : : : +- Project (55)
: : : : +- Exchange (54)
: : : : +- Project (53)
: : : : +- Scan parquet (7)
: : : +- BroadcastExchange (60)
: : : +- Exchange (59)
: : : +- Project (58)
: : : +- Scan parquet (16)
: : +- BroadcastExchange (66)
: : +- Exchange (65)
: : +- Project (64)
: : +- Filter (63)
: : +- Scan parquet (25)
: +- BroadcastExchange (74)
: +- Filter (73)
: +- Scan parquet (39)
+- HashAggregate (912)
+- Exchange (911)
+- HashAggregate (910)
+- Project (909)
+- BroadcastNestedLoopJoin Cross BuildLeft (908)
:- BroadcastExchange (897)
: +- SerializeFromObject (896)
: +- MapPartitions (895)
: +- DeserializeToObject (894)
: +- Project (893)
: +- InMemoryTableScan (81)
: +- InMemoryRelation (82)
: +- AdaptiveSparkPlan (892)
+- == Final Plan ==
ResultQueryStage (399)
+- Project (398)
+- * BroadcastHashJoin Inner BuildRight (397)
:- * Project (385)
: +- * BroadcastHashJoin Inner BuildLeft (384)
: :- BroadcastQueryStage (368), Statistics(sizeInBytes=2.0 MiB, rowCount=205)
: : +- BroadcastExchange (367)
: : +- AQEShuffleRead (366)
: : +- ShuffleQueryStage (365), Statistics(sizeInBytes=24.0 KiB, rowCount=205)
: : +- Exchange (364)
: : +- * Project (363)
: : +- * BroadcastHashJoin LeftOuter BuildRight (362)
: : :- AQEShuffleRead (256)
: : : +- ShuffleQueryStage (255), Statistics(sizeInBytes=24.0 KiB, rowCount=205)
: : : +- Exchange (254)
: : : +- * Project (253)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (252)
: : : :- * Project (120)
: : : : +- * Generate (119)
: : : : +- * Project (118)
: : : : +- * Generate (117)
: : : : +- Project (116)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (115)
: : : : :- * Project (106)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (105)
: : : : : :- * Project (97)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (96)
: : : : : : :- ShuffleQueryStage (87), Statistics(sizeInBytes=19.2 KiB, rowCount=205)
: : : : : : : +- Exchange (86)
: : : : : : : +- * Filter (85)
: : : : : : : +- * ColumnarToRow (84)
: : : : : : : +- Scan parquet (83)
: : : : : : +- BroadcastQueryStage (95), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (94)
: : : : : : +- * Project (93)
: : : : : : +- ShuffleQueryStage (92), Statistics(sizeInBytes=339.5 KiB, rowCount=2.75E+3)
: : : : : : +- Exchange (91)
: : : : : : +- * Project (90)
: : : : : : +- * ColumnarToRow (89)
: : : : : : +- Scan parquet (88)
: : : : : +- BroadcastQueryStage (104), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- BroadcastExchange (103)
: : : : : +- ShuffleQueryStage (102), Statistics(sizeInBytes=4.4 KiB, rowCount=62)
: : : : : +- Exchange (101)
: : : : : +- * Project (100)
: : : : : +- * ColumnarToRow (99)
: : : : : +- Scan parquet (98)
: : : : +- BroadcastQueryStage (114), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- BroadcastExchange (113)
: : : : +- ShuffleQueryStage (112), Statistics(sizeInBytes=92.7 KiB, rowCount=159)
: : : : +- Exchange (111)
: : : : +- * Project (110)
: : : : +- * Filter (109)
: : : : +- * ColumnarToRow (108)
: : : : +- Scan parquet (107)
: : : +- BroadcastQueryStage (251), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
: : : +- BroadcastExchange (250)
: : : +- * HashAggregate (249)
: : : +- AQEShuffleRead (248)
: : : +- ShuffleQueryStage (247), Statistics(sizeInBytes=4.1 KiB, rowCount=44)
: : : +- Exchange (246)
: : : +- * HashAggregate (245)
: : : +- * Project (244)
: : : +- * BroadcastHashJoin Inner BuildLeft (243)
: : : :- BroadcastQueryStage (215), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
: : : : +- BroadcastExchange (214)
: : : : +- AQEShuffleRead (213)
: : : : +- ShuffleQueryStage (212), Statistics(sizeInBytes=4.8 KiB, rowCount=44)
: : : : +- Exchange (211)
: : : : +- * Project (210)
: : : : +- * BroadcastHashJoin Inner BuildLeft (209)
: : : : :- BroadcastQueryStage (187), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : : +- BroadcastExchange (186)
: : : : : +- AQEShuffleRead (185)
: : : : : +- ShuffleQueryStage (184), Statistics(sizeInBytes=43.1 KiB, rowCount=394)
: : : : : +- Exchange (183)
: : : : : +- * Project (182)
: : : : : +- * Filter (181)
: : : : : +- * Generate (180)
: : : : : +- * Filter (179)
: : : : : +- ObjectHashAggregate (178)
: : : : : +- ObjectHashAggregate (177)
: : : : : +- Generate (176)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (175)
: : : : : :- BroadcastQueryStage (128), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- BroadcastExchange (127)
: : : : : : +- ShuffleQueryStage (126), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : : : +- Exchange (125)
: : : : : : +- * Project (124)
: : : : : : +- * Filter (123)
: : : : : : +- * ColumnarToRow (122)
: : : : : : +- Scan parquet (121)
: : : : : +- * Project (174)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (173)
: : : : : :- BroadcastQueryStage (141), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- BroadcastExchange (140)
: : : : : : +- * Project (139)
: : : : : : +- * Generate (138)
: : : : : : +- * Project (137)
: : : : : : +- * Filter (136)
: : : : : : +- * Generate (135)
: : : : : : +- ShuffleQueryStage (134), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : : : : : +- Exchange (133)
: : : : : : +- * Project (132)
: : : : : : +- * Filter (131)
: : : : : : +- * ColumnarToRow (130)
: : : : : : +- Scan parquet (129)
: : : : : +- * HashAggregate (172)
: : : : : +- AQEShuffleRead (171)
: : : : : +- ShuffleQueryStage (170), Statistics(sizeInBytes=7.2 KiB, rowCount=153)
: : : : : +- Exchange (169)
: : : : : +- * HashAggregate (168)
: : : : : +- * Project (167)
: : : : : +- * Generate (166)
: : : : : +- * Project (165)
: : : : : +- * Generate (164)
: : : : : +- Project (163)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (162)
: : : : : :- * Project (159)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (158)
: : : : : : :- * Project (150)
: : : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (149)
: : : : : : : :- ShuffleQueryStage (146), Statistics(sizeInBytes=17.6 KiB, rowCount=205)
: : : : : : : : +- Exchange (145)
: : : : : : : : +- * Filter (144)
: : : : : : : : +- * ColumnarToRow (143)
: : : : : : : : +- Scan parquet (142)
: : : : : : : +- BroadcastQueryStage (148), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : : +- ReusedExchange (147)
: : : : : : +- BroadcastQueryStage (157), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : : +- BroadcastExchange (156)
: : : : : : +- ShuffleQueryStage (155), Statistics(sizeInBytes=2.9 KiB, rowCount=62)
: : : : : : +- Exchange (154)
: : : : : : +- * Project (153)
: : : : : : +- * ColumnarToRow (152)
: : : : : : +- Scan parquet (151)
: : : : : +- BroadcastQueryStage (161), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : : +- ReusedExchange (160)
: : : : +- * Project (208)
: : : : +- * Generate (207)
: : : : +- * Project (206)
: : : : +- * Generate (205)
: : : : +- Project (204)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (203)
: : : : :- * Project (200)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (199)
: : : : : :- * Project (196)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (195)
: : : : : : :- ShuffleQueryStage (192), Statistics(sizeInBytes=19.2 KiB, rowCount=205)
: : : : : : : +- Exchange (191)
: : : : : : : +- * Filter (190)
: : : : : : : +- * ColumnarToRow (189)
: : : : : : : +- Scan parquet (188)
: : : : : : +- BroadcastQueryStage (194), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- ReusedExchange (193)
: : : : : +- BroadcastQueryStage (198), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (197)
: : : : +- BroadcastQueryStage (202), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (201)
: : : +- AQEShuffleRead (242)
: : : +- ShuffleQueryStage (241), Statistics(sizeInBytes=4.8 KiB, rowCount=44)
: : : +- Exchange (240)
: : : +- * HashAggregate (239)
: : : +- * HashAggregate (238)
: : : +- * Project (237)
: : : +- * BroadcastHashJoin Inner BuildLeft (236)
: : : :- BroadcastQueryStage (217), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : +- ReusedExchange (216)
: : : +- * Project (235)
: : : +- * Generate (234)
: : : +- * Project (233)
: : : +- * Generate (232)
: : : +- Project (231)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (230)
: : : :- * Project (227)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (226)
: : : : :- * Project (223)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (222)
: : : : : :- ShuffleQueryStage (219), Statistics(sizeInBytes=19.2 KiB, rowCount=205)
: : : : : : +- ReusedExchange (218)
: : : : : +- BroadcastQueryStage (221), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : +- ReusedExchange (220)
: : : : +- BroadcastQueryStage (225), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : +- ReusedExchange (224)
: : : +- BroadcastQueryStage (229), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : +- ReusedExchange (228)
: : +- BroadcastQueryStage (361), Statistics(sizeInBytes=2.0 MiB, rowCount=205)
: : +- BroadcastExchange (360)
: : +- AQEShuffleRead (359)
: : +- ShuffleQueryStage (358), Statistics(sizeInBytes=17.6 KiB, rowCount=205)
: : +- Exchange (357)
: : +- * SerializeFromObject (356)
: : +- * MapElements (355)
: : +- * DeserializeToObject (354)
: : +- ObjectHashAggregate (353)
: : +- ObjectHashAggregate (352)
: : +- * Project (351)
: : +- * BroadcastHashJoin LeftOuter BuildRight (350)
: : :- * Project (344)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (343)
: : : :- * Project (282)
: : : : +- * Project (281)
: : : : +- * Generate (280)
: : : : +- * Generate (279)
: : : : +- * Project (278)
: : : : +- Project (277)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (276)
: : : : :- * Project (273)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (272)
: : : : : :- * BroadcastHashJoin LeftOuter BuildRight (269)
: : : : : : :- ShuffleQueryStage (260), Statistics(sizeInBytes=19.2 KiB, rowCount=205)
: : : : : : : +- Exchange (259)
: : : : : : : +- * ColumnarToRow (258)
: : : : : : : +- Scan parquet (257)
: : : : : : +- BroadcastQueryStage (268), Statistics(sizeInBytes=4.1 MiB, rowCount=2.75E+3)
: : : : : : +- BroadcastExchange (267)
: : : : : : +- * Project (266)
: : : : : : +- ShuffleQueryStage (265), Statistics(sizeInBytes=2.0 MiB, rowCount=2.75E+3)
: : : : : : +- Exchange (264)
: : : : : : +- * Project (263)
: : : : : : +- * ColumnarToRow (262)
: : : : : : +- Scan parquet (261)
: : : : : +- BroadcastQueryStage (271), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (270)
: : : : +- BroadcastQueryStage (275), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (274)
: : : +- BroadcastQueryStage (342), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
: : : +- BroadcastExchange (341)
: : : +- * HashAggregate (340)
: : : +- AQEShuffleRead (339)
: : : +- ShuffleQueryStage (338), Statistics(sizeInBytes=4.5 KiB, rowCount=44)
: : : +- Exchange (337)
: : : +- * HashAggregate (336)
: : : +- * Project (335)
: : : +- * BroadcastHashJoin Inner BuildLeft (334)
: : : :- BroadcastQueryStage (330), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
: : : : +- BroadcastExchange (329)
: : : : +- AQEShuffleRead (328)
: : : : +- ShuffleQueryStage (327), Statistics(sizeInBytes=5.2 KiB, rowCount=44)
: : : : +- Exchange (326)
: : : : +- * Project (325)
: : : : +- * BroadcastHashJoin Inner BuildLeft (324)
: : : : :- BroadcastQueryStage (305), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : : +- BroadcastExchange (304)
: : : : : +- AQEShuffleRead (303)
: : : : : +- ShuffleQueryStage (302), Statistics(sizeInBytes=46.2 KiB, rowCount=394)
: : : : : +- Exchange (301)
: : : : : +- * Project (300)
: : : : : +- * Filter (299)
: : : : : +- * Generate (298)
: : : : : +- * Filter (297)
: : : : : +- ObjectHashAggregate (296)
: : : : : +- ObjectHashAggregate (295)
: : : : : +- Generate (294)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (293)
: : : : : :- BroadcastQueryStage (284), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- ReusedExchange (283)
: : : : : +- * Project (292)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (291)
: : : : : :- BroadcastQueryStage (286), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- ReusedExchange (285)
: : : : : +- * HashAggregate (290)
: : : : : +- AQEShuffleRead (289)
: : : : : +- ShuffleQueryStage (288), Statistics(sizeInBytes=7.2 KiB, rowCount=153)
: : : : : +- ReusedExchange (287)
: : : : +- * Project (323)
: : : : +- * Generate (322)
: : : : +- * Project (321)
: : : : +- * Generate (320)
: : : : +- Project (319)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (318)
: : : : :- * Project (315)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (314)
: : : : : :- * Project (311)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (310)
: : : : : : :- ShuffleQueryStage (307), Statistics(sizeInBytes=19.2 KiB, rowCount=205)
: : : : : : : +- ReusedExchange (306)
: : : : : : +- BroadcastQueryStage (309), Statistics(sizeInBytes=2.1 MiB, rowCount=2.75E+3)
: : : : : : +- ReusedExchange (308)
: : : : : +- BroadcastQueryStage (313), Statistics(sizeInBytes=2.0 MiB, rowCount=62)
: : : : : +- ReusedExchange (312)
: : : : +- BroadcastQueryStage (317), Statistics(sizeInBytes=2.0 MiB, rowCount=159)
: : : : +- ReusedExchange (316)
: : : +- AQEShuffleRead (333)
: : : +- ShuffleQueryStage (332), Statistics(sizeInBytes=4.8 KiB, rowCount=44)
: : : +- ReusedExchange (331)
: : +- BroadcastQueryStage (349), Statistics(sizeInBytes=2.0 MiB, rowCount=205)
: : +- BroadcastExchange (348)
: : +- * Filter (347)
: : +- * ColumnarToRow (346)
: : +- Scan parquet (345)
: +- * Project (383)
: +- * BroadcastHashJoin Inner BuildLeft (382)
: :- BroadcastQueryStage (378), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : +- BroadcastExchange (377)
: : +- * Project (376)
: : +- * Filter (375)
: : +- * Generate (374)
: : +- * Project (373)
: : +- * Filter (372)
: : +- * Generate (371)
: : +- ShuffleQueryStage (370), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : +- ReusedExchange (369)
: +- * HashAggregate (381)
: +- ShuffleQueryStage (380), Statistics(sizeInBytes=7.2 KiB, rowCount=153)
: +- ReusedExchange (379)
+- BroadcastQueryStage (396), Statistics(sizeInBytes=2.0 MiB, rowCount=44)
+- BroadcastExchange (395)
+- * Project (394)
+- * Filter (393)
+- * Generate (392)
+- ShuffleQueryStage (391), Statistics(sizeInBytes=29.9 KiB, rowCount=9)
+- Exchange (390)
+- * Project (389)
+- * Filter (388)
+- * ColumnarToRow (387)
+- Scan parquet (386)
+- == Initial Plan ==
Project (891)
+- BroadcastHashJoin Inner BuildRight (890)
:- Project (882)
: +- SortMergeJoin Inner (881)
: :- Sort (836)
: : +- Exchange (835)
: : +- Project (834)
: : +- SortMergeJoin LeftOuter (833)
: : :- Sort (608)
: : : +- Exchange (607)
: : : +- Project (606)
: : : +- SortMergeJoin LeftOuter (605)
: : : :- Sort (423)
: : : : +- Project (422)
: : : : +- Generate (421)
: : : : +- Project (420)
: : : : +- Generate (419)
: : : : +- Project (418)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (417)
: : : : :- Project (412)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (411)
: : : : : :- Project (407)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (406)
: : : : : : :- Exchange (401)
: : : : : : : +- Filter (400)
: : : : : : : +- Scan parquet (83)
: : : : : : +- BroadcastExchange (405)
: : : : : : +- Project (404)
: : : : : : +- Exchange (403)
: : : : : : +- Project (402)
: : : : : : +- Scan parquet (88)
: : : : : +- BroadcastExchange (410)
: : : : : +- Exchange (409)
: : : : : +- Project (408)
: : : : : +- Scan parquet (98)
: : : : +- BroadcastExchange (416)
: : : : +- Exchange (415)
: : : : +- Project (414)
: : : : +- Filter (413)
: : : : +- Scan parquet (107)
: : : +- Sort (604)
: : : +- HashAggregate (603)
: : : +- Exchange (602)
: : : +- HashAggregate (601)
: : : +- Project (600)
: : : +- SortMergeJoin Inner (599)
: : : :- Sort (507)
: : : : +- Exchange (506)
: : : : +- Project (505)
: : : : +- SortMergeJoin Inner (504)
: : : : :- Sort (476)
: : : : : +- Exchange (475)
: : : : : +- Project (474)
: : : : : +- Filter (473)
: : : : : +- Generate (472)
: : : : : +- Filter (471)
: : : : : +- ObjectHashAggregate (470)
: : : : : +- ObjectHashAggregate (469)
: : : : : +- Generate (468)
: : : : : +- BroadcastHashJoin Inner BuildLeft (467)
: : : : : :- BroadcastExchange (427)
: : : : : : +- Exchange (426)
: : : : : : +- Project (425)
: : : : : : +- Filter (424)
: : : : : : +- Scan parquet (121)
: : : : : +- Project (466)
: : : : : +- BroadcastHashJoin Inner BuildLeft (465)
: : : : : :- BroadcastExchange (436)
: : : : : : +- Project (435)
: : : : : : +- Generate (434)
: : : : : : +- Project (433)
: : : : : : +- Filter (432)
: : : : : : +- Generate (431)
: : : : : : +- Exchange (430)
: : : : : : +- Project (429)
: : : : : : +- Filter (428)
: : : : : : +- Scan parquet (129)
: : : : : +- HashAggregate (464)
: : : : : +- Exchange (463)
: : : : : +- HashAggregate (462)
: : : : : +- Project (461)
: : : : : +- Generate (460)
: : : : : +- Project (459)
: : : : : +- Generate (458)
: : : : : +- Project (457)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (456)
: : : : : :- Project (450)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (449)
: : : : : : :- Project (445)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (444)
: : : : : : : :- Exchange (438)
: : : : : : : : +- Filter (437)
: : : : : : : : +- Scan parquet (142)
: : : : : : : +- BroadcastExchange (443)
: : : : : : : +- Project (442)
: : : : : : : +- Exchange (441)
: : : : : : : +- Project (440)
: : : : : : : +- Scan parquet (439)
: : : : : : +- BroadcastExchange (448)
: : : : : : +- Exchange (447)
: : : : : : +- Project (446)
: : : : : : +- Scan parquet (151)
: : : : : +- BroadcastExchange (455)
: : : : : +- Exchange (454)
: : : : : +- Project (453)
: : : : : +- Filter (452)
: : : : : +- Scan parquet (451)
: : : : +- Sort (503)
: : : : +- Project (502)
: : : : +- Generate (501)
: : : : +- Project (500)
: : : : +- Generate (499)
: : : : +- Project (498)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (497)
: : : : :- Project (491)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (490)
: : : : : :- Project (485)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (484)
: : : : : : :- Exchange (478)
: : : : : : : +- Filter (477)
: : : : : : : +- Scan parquet (188)
: : : : : : +- BroadcastExchange (483)
: : : : : : +- Project (482)
: : : : : : +- Exchange (481)
: : : : : : +- Project (480)
: : : : : : +- Scan parquet (479)
: : : : : +- BroadcastExchange (489)
: : : : : +- Exchange (488)
: : : : : +- Project (487)
: : : : : +- Scan parquet (486)
: : : : +- BroadcastExchange (496)
: : : : +- Exchange (495)
: : : : +- Project (494)
: : : : +- Filter (493)
: : : : +- Scan parquet (492)
: : : +- Sort (598)
: : : +- Exchange (597)
: : : +- HashAggregate (596)
: : : +- HashAggregate (595)
: : : +- Project (594)
: : : +- SortMergeJoin Inner (593)
: : : :- Sort (564)
: : : : +- Exchange (563)
: : : : +- Project (562)
: : : : +- Filter (561)
: : : : +- Generate (560)
: : : : +- Filter (559)
: : : : +- ObjectHashAggregate (558)
: : : : +- ObjectHashAggregate (557)
: : : : +- Generate (556)
: : : : +- BroadcastHashJoin Inner BuildLeft (555)
: : : : :- BroadcastExchange (512)
: : : : : +- Exchange (511)
: : : : : +- Project (510)
: : : : : +- Filter (509)
: : : : : +- Scan parquet (508)
: : : : +- Project (554)
: : : : +- BroadcastHashJoin Inner BuildLeft (553)
: : : : :- BroadcastExchange (522)
: : : : : +- Project (521)
: : : : : +- Generate (520)
: : : : : +- Project (519)
: : : : : +- Filter (518)
: : : : : +- Generate (517)
: : : : : +- Exchange (516)
: : : : : +- Project (515)
: : : : : +- Filter (514)
: : : : : +- Scan parquet (513)
: : : : +- HashAggregate (552)
: : : : +- Exchange (551)
: : : : +- HashAggregate (550)
: : : : +- Project (549)
: : : : +- Generate (548)
: : : : +- Project (547)
: : : : +- Generate (546)
: : : : +- Project (545)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (544)
: : : : :- Project (538)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (537)
: : : : : :- Project (532)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (531)
: : : : : : :- Exchange (525)
: : : : : : : +- Filter (524)
: : : : : : : +- Scan parquet (523)
: : : : : : +- BroadcastExchange (530)
: : : : : : +- Project (529)
: : : : : : +- Exchange (528)
: : : : : : +- Project (527)
: : : : : : +- Scan parquet (526)
: : : : : +- BroadcastExchange (536)
: : : : : +- Exchange (535)
: : : : : +- Project (534)
: : : : : +- Scan parquet (533)
: : : : +- BroadcastExchange (543)
: : : : +- Exchange (542)
: : : : +- Project (541)
: : : : +- Filter (540)
: : : : +- Scan parquet (539)
: : : +- Sort (592)
: : : +- Project (591)
: : : +- Generate (590)
: : : +- Project (589)
: : : +- Generate (588)
: : : +- Project (587)
: : : +- BroadcastHashJoin LeftOuter BuildRight (586)
: : : :- Project (580)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (579)
: : : : :- Project (574)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (573)
: : : : : :- Exchange (567)
: : : : : : +- Filter (566)
: : : : : : +- Scan parquet (565)
: : : : : +- BroadcastExchange (572)
: : : : : +- Project (571)
: : : : : +- Exchange (570)
: : : : : +- Project (569)
: : : : : +- Scan parquet (568)
: : : : +- BroadcastExchange (578)
: : : : +- Exchange (577)
: : : : +- Project (576)
: : : : +- Scan parquet (575)
: : : +- BroadcastExchange (585)
: : : +- Exchange (584)
: : : +- Project (583)
: : : +- Filter (582)
: : : +- Scan parquet (581)
: : +- Sort (832)
: : +- Exchange (831)
: : +- SerializeFromObject (830)
: : +- MapElements (829)
: : +- DeserializeToObject (828)
: : +- ObjectHashAggregate (827)
: : +- ObjectHashAggregate (826)
: : +- Project (825)
: : +- BroadcastHashJoin LeftOuter BuildRight (824)
: : :- Project (821)
: : : +- SortMergeJoin LeftOuter (820)
: : : :- Sort (633)
: : : : +- Project (632)
: : : : +- Project (631)
: : : : +- Generate (630)
: : : : +- Generate (629)
: : : : +- Project (628)
: : : : +- Project (627)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (626)
: : : : :- Project (620)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (619)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (614)
: : : : : : :- Exchange (609)
: : : : : : : +- Scan parquet (257)
: : : : : : +- BroadcastExchange (613)
: : : : : : +- Project (612)
: : : : : : +- Exchange (611)
: : : : : : +- Project (610)
: : : : : : +- Scan parquet (261)
: : : : : +- BroadcastExchange (618)
: : : : : +- Exchange (617)
: : : : : +- Project (616)
: : : : : +- Scan parquet (615)
: : : : +- BroadcastExchange (625)
: : : : +- Exchange (624)
: : : : +- Project (623)
: : : : +- Filter (622)
: : : : +- Scan parquet (621)
: : : +- Sort (819)
: : : +- HashAggregate (818)
: : : +- Exchange (817)
: : : +- HashAggregate (816)
: : : +- Project (815)
: : : +- SortMergeJoin Inner (814)
: : : :- Sort (722)
: : : : +- Exchange (721)
: : : : +- Project (720)
: : : : +- SortMergeJoin Inner (719)
: : : : :- Sort (690)
: : : : : +- Exchange (689)
: : : : : +- Project (688)
: : : : : +- Filter (687)
: : : : : +- Generate (686)
: : : : : +- Filter (685)
: : : : : +- ObjectHashAggregate (684)
: : : : : +- ObjectHashAggregate (683)
: : : : : +- Generate (682)
: : : : : +- BroadcastHashJoin Inner BuildLeft (681)
: : : : : :- BroadcastExchange (638)
: : : : : : +- Exchange (637)
: : : : : : +- Project (636)
: : : : : : +- Filter (635)
: : : : : : +- Scan parquet (634)
: : : : : +- Project (680)
: : : : : +- BroadcastHashJoin Inner BuildLeft (679)
: : : : : :- BroadcastExchange (648)
: : : : : : +- Project (647)
: : : : : : +- Generate (646)
: : : : : : +- Project (645)
: : : : : : +- Filter (644)
: : : : : : +- Generate (643)
: : : : : : +- Exchange (642)
: : : : : : +- Project (641)
: : : : : : +- Filter (640)
: : : : : : +- Scan parquet (639)
: : : : : +- HashAggregate (678)
: : : : : +- Exchange (677)
: : : : : +- HashAggregate (676)
: : : : : +- Project (675)
: : : : : +- Generate (674)
: : : : : +- Project (673)
: : : : : +- Generate (672)
: : : : : +- Project (671)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (670)
: : : : : :- Project (664)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (663)
: : : : : : :- Project (658)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (657)
: : : : : : : :- Exchange (651)
: : : : : : : : +- Filter (650)
: : : : : : : : +- Scan parquet (649)
: : : : : : : +- BroadcastExchange (656)
: : : : : : : +- Project (655)
: : : : : : : +- Exchange (654)
: : : : : : : +- Project (653)
: : : : : : : +- Scan parquet (652)
: : : : : : +- BroadcastExchange (662)
: : : : : : +- Exchange (661)
: : : : : : +- Project (660)
: : : : : : +- Scan parquet (659)
: : : : : +- BroadcastExchange (669)
: : : : : +- Exchange (668)
: : : : : +- Project (667)
: : : : : +- Filter (666)
: : : : : +- Scan parquet (665)
: : : : +- Sort (718)
: : : : +- Project (717)
: : : : +- Generate (716)
: : : : +- Project (715)
: : : : +- Generate (714)
: : : : +- Project (713)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (712)
: : : : :- Project (706)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (705)
: : : : : :- Project (700)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (699)
: : : : : : :- Exchange (693)
: : : : : : : +- Filter (692)
: : : : : : : +- Scan parquet (691)
: : : : : : +- BroadcastExchange (698)
: : : : : : +- Project (697)
: : : : : : +- Exchange (696)
: : : : : : +- Project (695)
: : : : : : +- Scan parquet (694)
: : : : : +- BroadcastExchange (704)
: : : : : +- Exchange (703)
: : : : : +- Project (702)
: : : : : +- Scan parquet (701)
: : : : +- BroadcastExchange (711)
: : : : +- Exchange (710)
: : : : +- Project (709)
: : : : +- Filter (708)
: : : : +- Scan parquet (707)
: : : +- Sort (813)
: : : +- Exchange (812)
: : : +- HashAggregate (811)
: : : +- HashAggregate (810)
: : : +- Project (809)
: : : +- SortMergeJoin Inner (808)
: : : :- Sort (779)
: : : : +- Exchange (778)
: : : : +- Project (777)
: : : : +- Filter (776)
: : : : +- Generate (775)
: : : : +- Filter (774)
: : : : +- ObjectHashAggregate (773)
: : : : +- ObjectHashAggregate (772)
: : : : +- Generate (771)
: : : : +- BroadcastHashJoin Inner BuildLeft (770)
: : : : :- BroadcastExchange (727)
: : : : : +- Exchange (726)
: : : : : +- Project (725)
: : : : : +- Filter (724)
: : : : : +- Scan parquet (723)
: : : : +- Project (769)
: : : : +- BroadcastHashJoin Inner BuildLeft (768)
: : : : :- BroadcastExchange (737)
: : : : : +- Project (736)
: : : : : +- Generate (735)
: : : : : +- Project (734)
: : : : : +- Filter (733)
: : : : : +- Generate (732)
: : : : : +- Exchange (731)
: : : : : +- Project (730)
: : : : : +- Filter (729)
: : : : : +- Scan parquet (728)
: : : : +- HashAggregate (767)
: : : : +- Exchange (766)
: : : : +- HashAggregate (765)
: : : : +- Project (764)
: : : : +- Generate (763)
: : : : +- Project (762)
: : : : +- Generate (761)
: : : : +- Project (760)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (759)
: : : : :- Project (753)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (752)
: : : : : :- Project (747)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (746)
: : : : : : :- Exchange (740)
: : : : : : : +- Filter (739)
: : : : : : : +- Scan parquet (738)
: : : : : : +- BroadcastExchange (745)
: : : : : : +- Project (744)
: : : : : : +- Exchange (743)
: : : : : : +- Project (742)
: : : : : : +- Scan parquet (741)
: : : : : +- BroadcastExchange (751)
: : : : : +- Exchange (750)
: : : : : +- Project (749)
: : : : : +- Scan parquet (748)
: : : : +- BroadcastExchange (758)
: : : : +- Exchange (757)
: : : : +- Project (756)
: : : : +- Filter (755)
: : : : +- Scan parquet (754)
: : : +- Sort (807)
: : : +- Project (806)
: : : +- Generate (805)
: : : +- Project (804)
: : : +- Generate (803)
: : : +- Project (802)
: : : +- BroadcastHashJoin LeftOuter BuildRight (801)
: : : :- Project (795)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (794)
: : : : :- Project (789)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (788)
: : : : : :- Exchange (782)
: : : : : : +- Filter (781)
: : : : : : +- Scan parquet (780)
: : : : : +- BroadcastExchange (787)
: : : : : +- Project (786)
: : : : : +- Exchange (785)
: : : : : +- Project (784)
: : : : : +- Scan parquet (783)
: : : : +- BroadcastExchange (793)
: : : : +- Exchange (792)
: : : : +- Project (791)
: : : : +- Scan parquet (790)
: : : +- BroadcastExchange (800)
: : : +- Exchange (799)
: : : +- Project (798)
: : : +- Filter (797)
: : : +- Scan parquet (796)
: : +- BroadcastExchange (823)
: : +- Filter (822)
: : +- Scan parquet (345)
: +- Sort (880)
: +- Project (879)
: +- BroadcastHashJoin Inner BuildLeft (878)
: :- BroadcastExchange (847)
: : +- Project (846)
: : +- Filter (845)
: : +- Generate (844)
: : +- Project (843)
: : +- Filter (842)
: : +- Generate (841)
: : +- Exchange (840)
: : +- Project (839)
: : +- Filter (838)
: : +- Scan parquet (837)
: +- HashAggregate (877)
: +- Exchange (876)
: +- HashAggregate (875)
: +- Project (874)
: +- Generate (873)
: +- Project (872)
: +- Generate (871)
: +- Project (870)
: +- BroadcastHashJoin LeftOuter BuildRight (869)
: :- Project (863)
: : +- BroadcastHashJoin LeftOuter BuildRight (862)
: : :- Project (857)
: : : +- BroadcastHashJoin LeftOuter BuildRight (856)
: : : :- Exchange (850)
: : : : +- Filter (849)
: : : : +- Scan parquet (848)
: : : +- BroadcastExchange (855)
: : : +- Project (854)
: : : +- Exchange (853)
: : : +- Project (852)
: : : +- Scan parquet (851)
: : +- BroadcastExchange (861)
: : +- Exchange (860)
: : +- Project (859)
: : +- Scan parquet (858)
: +- BroadcastExchange (868)
: +- Exchange (867)
: +- Project (866)
: +- Filter (865)
: +- Scan parquet (864)
+- BroadcastExchange (889)
+- Project (888)
+- Filter (887)
+- Generate (886)
+- Exchange (885)
+- Project (884)
+- Filter (883)
+- Scan parquet (386)
+- Project (907)
+- Filter (906)
+- SortAggregate (905)
+- Sort (904)
+- Exchange (903)
+- SortAggregate (902)
+- Sort (901)
+- Exchange (900)
+- Filter (899)
+- Scan parquet (898)
(1) InMemoryTableScan
Output: []
(2) InMemoryRelation
Arguments: [name#69914, configurationVersion#69913, executionId#69940, createdAt#69962, marketUnit#69941, businessContext#69919, messageVariables#69920], StorageLevel(disk, memory, deserialized, 1 replicas)
(3) Scan parquet
Output [2]: [product#69015, plant#69016]
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/10000002107/shardId=0_1_10000002107]
ReadSchema: struct<product:string,plant:string>
(4) ColumnarToRow [codegen id : 1]
Input [2]: [product#69015, plant#69016]
(5) Exchange
Input [2]: [product#69015, plant#69016]
Arguments: hashpartitioning(product#69015, plant#69016, 25), REPARTITION_BY_NUM, [plan_id=190459]
(6) ShuffleQueryStage
Output [2]: [product#69015, plant#69016]
Arguments: 0
(7) Scan parquet
Output [8]: [internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039, systemId#69026]
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>>>
(8) ColumnarToRow [codegen id : 2]
Input [8]: [internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039, systemId#69026]
(9) Project [codegen id : 2]
Output [8]: [systemId#69026, internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039]
Input [8]: [internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039, systemId#69026]
(10) Exchange
Input [8]: [systemId#69026, internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=190491]
(11) ShuffleQueryStage
Output [8]: [systemId#69026, internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039]
Arguments: 1
(12) Project [codegen id : 9]
Output [1]: [struct(systemId, systemId#69026, internalUUID, internalUUID#69028, plant, plant#69030, product, product#69032, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69033, productionAspect, productionAspect#69035, salesPlant, salesPlant#69037, listing, listing#69039) AS productPlant#69043]
Input [8]: [systemId#69026, internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039]
(13) BroadcastExchange
Input [1]: [productPlant#69043]
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=193280]
(14) BroadcastQueryStage
Output [1]: [productPlant#69043]
Arguments: 11
(15) BroadcastHashJoin [codegen id : 10]
Left keys [4]: [coalesce(product#69015, ), isnull(product#69015), coalesce(plant#69016, ), isnull(plant#69016)]
Right keys [4]: [coalesce(productPlant#69043.product.internalRefUUID, ), isnull(productPlant#69043.product.internalRefUUID), coalesce(productPlant#69043.plant.internalRefUUID, ), isnull(productPlant#69043.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(16) Scan parquet
Output [2]: [internalUUID#69050, systemId#69049]
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>
(17) ColumnarToRow [codegen id : 3]
Input [2]: [internalUUID#69050, systemId#69049]
(18) Project [codegen id : 3]
Output [1]: [internalUUID#69050]
Input [2]: [internalUUID#69050, systemId#69049]
(19) Exchange
Input [1]: [internalUUID#69050]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=190534]
(20) ShuffleQueryStage
Output [1]: [internalUUID#69050]
Arguments: 2
(21) BroadcastExchange
Input [1]: [internalUUID#69050]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=191964]
(22) BroadcastQueryStage
Output [1]: [internalUUID#69050]
Arguments: 9
(23) BroadcastHashJoin [codegen id : 10]
Left keys [2]: [coalesce(plant#69016, ), isnull(plant#69016)]
Right keys [2]: [coalesce(internalUUID#69050, ), isnull(internalUUID#69050)]
Join type: LeftOuter
Join condition: None
(24) Project [codegen id : 10]
Output [3]: [product#69015, plant#69016, productPlant#69043]
Input [4]: [product#69015, plant#69016, productPlant#69043, internalUUID#69050]
(25) Scan parquet
Output [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
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>>>
(26) ColumnarToRow [codegen id : 4]
Input [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
(27) Filter [codegen id : 4]
Input [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
Condition : isnotnull(internalUUID#69082)
(28) Project [codegen id : 4]
Output [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Input [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
(29) Exchange
Input [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=190581]
(30) ShuffleQueryStage
Output [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: 3
(31) BroadcastExchange
Input [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=192685]
(32) BroadcastQueryStage
Output [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: 10
(33) BroadcastHashJoin [codegen id : 10]
Left keys [1]: [product#69015]
Right keys [1]: [internalUUID#69082]
Join type: LeftOuter
Join condition: None
(34) Project
Output [4]: [product#69015, plant#69016, productPlant#69043, filter(unitOfMeasureConversions#69088, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#69043.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#69043.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#69086.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69086.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#69108]
Input [6]: [product#69015, plant#69016, productPlant#69043, internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
(35) Generate [codegen id : 11]
Input [4]: [product#69015, plant#69016, productPlant#69043, filteredUnitOfMeasureConversions#69108]
Arguments: explode(filteredUnitOfMeasureConversions#69108.quantityNumerator), [product#69015, plant#69016, productPlant#69043, filteredUnitOfMeasureConversions#69108], true, [quantityNumerator#69123]
(36) Project [codegen id : 11]
Output [4]: [product#69015, plant#69016, productPlant#69043, filteredUnitOfMeasureConversions#69108.quantityDenominator AS _extract_quantityDenominator#88526]
Input [5]: [product#69015, plant#69016, productPlant#69043, filteredUnitOfMeasureConversions#69108, quantityNumerator#69123]
(37) Generate [codegen id : 11]
Input [4]: [product#69015, plant#69016, productPlant#69043, _extract_quantityDenominator#88526]
Arguments: explode(_extract_quantityDenominator#88526), [product#69015, plant#69016, productPlant#69043], true, [quantityDenominator#69130]
(38) Project [codegen id : 11]
Output [4]: [product#69015, plant#69016, productPlant#69043.product.id AS _extract_id#88549, productPlant#69043.plant.id AS _extract_id#88550]
Input [4]: [product#69015, plant#69016, productPlant#69043, quantityDenominator#69130]
(39) Scan parquet
Output [4]: [product#69898, plant#69899, demandTimeBuckets#69903, demandPointInTime#69906]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000002107/0_1_10000002107]
PushedFilters: [IsNotNull(product), IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,demandTimeBuckets:array<struct<demandStartDateTime:timestamp,demandQuantity:double,demandVariance:double>>,demandPointInTime:array<struct<demandDateTime:timestamp,demandQuantity:double,demandVariance:double>>>
(40) ColumnarToRow [codegen id : 5]
Input [4]: [product#69898, plant#69899, demandTimeBuckets#69903, demandPointInTime#69906]
(41) Filter [codegen id : 5]
Input [4]: [product#69898, plant#69899, demandTimeBuckets#69903, demandPointInTime#69906]
Condition : (isnotnull(product#69898) AND isnotnull(plant#69899))
(42) BroadcastExchange
Input [4]: [product#69898, plant#69899, demandTimeBuckets#69903, demandPointInTime#69906]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=190621]
(43) BroadcastQueryStage
Output [4]: [product#69898, plant#69899, demandTimeBuckets#69903, demandPointInTime#69906]
Arguments: 4
(44) BroadcastHashJoin [codegen id : 11]
Left keys [2]: [product#69015, plant#69016]
Right keys [2]: [product#69898, plant#69899]
Join type: LeftOuter
Join condition: None
(45) Filter [codegen id : 11]
Input [8]: [product#69015, plant#69016, _extract_id#88549, _extract_id#88550, product#69898, plant#69899, demandTimeBuckets#69903, demandPointInTime#69906]
Condition : (((size(demandTimeBuckets#69903, true) = 0) OR isnull(demandTimeBuckets#69903)) AND ((size(demandPointInTime#69906, true) = 0) OR isnull(demandPointInTime#69906)))
(46) Project [codegen id : 11]
Output [3]: [_extract_id#88549 AS product#69909, _extract_id#88550 AS plant#69910, array(struct(name, PRODUCT, value, _extract_id#88549), struct(name, PLANT, value, _extract_id#88550)) AS businessContext#69919]
Input [8]: [product#69015, plant#69016, _extract_id#88549, _extract_id#88550, product#69898, plant#69899, demandTimeBuckets#69903, demandPointInTime#69906]
(47) HashAggregate [codegen id : 11]
Input [3]: [product#69909, plant#69910, businessContext#69919]
Keys [6]: [businessContext#69919, [] AS []#90105, 1 AS 1#90106, product#69909, plant#69910, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION AS UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#90107]
Functions: []
Aggregate Attributes: []
Results [6]: [businessContext#69919, []#90105, 1#90106, product#69909, plant#69910, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#90107]
(48) Exchange
Input [6]: [businessContext#69919, []#90105, 1#90106, product#69909, plant#69910, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#90107]
Arguments: hashpartitioning(businessContext#69919, []#90105, 1#90106, product#69909, plant#69910, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#90107, 25), ENSURE_REQUIREMENTS, [plan_id=194336]
(49) ShuffleQueryStage
Output [6]: [businessContext#69919, []#90105, 1#90106, product#69909, plant#69910, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#90107]
Arguments: 12
(50) HashAggregate [codegen id : 12]
Input [6]: [businessContext#69919, []#90105, 1#90106, product#69909, plant#69910, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#90107]
Keys [6]: [businessContext#69919, []#90105, 1#90106, product#69909, plant#69910, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#90107]
Functions: []
Aggregate Attributes: []
Results [7]: [UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION AS name#69914, 1 AS configurationVersion#69913, 10000002107 AS executionId#69940, 2026-08-10T09:23:51.581Z AS createdAt#69962, Daily_grocery AS marketUnit#69941, businessContext#69919, [] AS messageVariables#69920]
(51) ResultQueryStage
Output [7]: [name#69914, configurationVersion#69913, executionId#69940, createdAt#69962, marketUnit#69941, businessContext#69919, messageVariables#69920]
Arguments: 13
(52) Exchange
Input [2]: [product#69015, plant#69016]
Arguments: hashpartitioning(product#69015, plant#69016, 25), REPARTITION_BY_NUM, [plan_id=190116]
(53) Project
Output [8]: [systemId#69026, internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039]
Input [8]: [internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039, systemId#69026]
(54) Exchange
Input [8]: [systemId#69026, internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=190122]
(55) Project
Output [1]: [struct(systemId, systemId#69026, internalUUID, internalUUID#69028, plant, plant#69030, product, product#69032, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69033, productionAspect, productionAspect#69035, salesPlant, salesPlant#69037, listing, listing#69039) AS productPlant#69043]
Input [8]: [systemId#69026, internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039]
(56) BroadcastExchange
Input [1]: [productPlant#69043]
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=190241]
(57) BroadcastHashJoin
Left keys [4]: [coalesce(product#69015, ), isnull(product#69015), coalesce(plant#69016, ), isnull(plant#69016)]
Right keys [4]: [coalesce(productPlant#69043.product.internalRefUUID, ), isnull(productPlant#69043.product.internalRefUUID), coalesce(productPlant#69043.plant.internalRefUUID, ), isnull(productPlant#69043.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(58) Project
Output [1]: [internalUUID#69050]
Input [2]: [internalUUID#69050, systemId#69049]
(59) Exchange
Input [1]: [internalUUID#69050]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=190131]
(60) BroadcastExchange
Input [1]: [internalUUID#69050]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=190248]
(61) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69016, ), isnull(plant#69016)]
Right keys [2]: [coalesce(internalUUID#69050, ), isnull(internalUUID#69050)]
Join type: LeftOuter
Join condition: None
(62) Project
Output [3]: [product#69015, plant#69016, productPlant#69043]
Input [4]: [product#69015, plant#69016, productPlant#69043, internalUUID#69050]
(63) Filter
Input [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
Condition : isnotnull(internalUUID#69082)
(64) Project
Output [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Input [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
(65) Exchange
Input [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=190143]
(66) BroadcastExchange
Input [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=190256]
(67) BroadcastHashJoin
Left keys [1]: [product#69015]
Right keys [1]: [internalUUID#69082]
Join type: LeftOuter
Join condition: None
(68) Project
Output [4]: [product#69015, plant#69016, productPlant#69043, filter(unitOfMeasureConversions#69088, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#69043.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#69043.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#69086.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69086.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#69108]
Input [6]: [product#69015, plant#69016, productPlant#69043, internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
(69) Generate
Input [4]: [product#69015, plant#69016, productPlant#69043, filteredUnitOfMeasureConversions#69108]
Arguments: explode(filteredUnitOfMeasureConversions#69108.quantityNumerator), [product#69015, plant#69016, productPlant#69043, filteredUnitOfMeasureConversions#69108], true, [quantityNumerator#69123]
(70) Project
Output [4]: [product#69015, plant#69016, productPlant#69043, filteredUnitOfMeasureConversions#69108.quantityDenominator AS _extract_quantityDenominator#88526]
Input [5]: [product#69015, plant#69016, productPlant#69043, filteredUnitOfMeasureConversions#69108, quantityNumerator#69123]
(71) Generate
Input [4]: [product#69015, plant#69016, productPlant#69043, _extract_quantityDenominator#88526]
Arguments: explode(_extract_quantityDenominator#88526), [product#69015, plant#69016, productPlant#69043], true, [quantityDenominator#69130]
(72) Project
Output [4]: [product#69015, plant#69016, productPlant#69043.product.id AS _extract_id#88549, productPlant#69043.plant.id AS _extract_id#88550]
Input [4]: [product#69015, plant#69016, productPlant#69043, quantityDenominator#69130]
(73) Filter
Input [4]: [product#69898, plant#69899, demandTimeBuckets#69903, demandPointInTime#69906]
Condition : (isnotnull(product#69898) AND isnotnull(plant#69899))
(74) BroadcastExchange
Input [4]: [product#69898, plant#69899, demandTimeBuckets#69903, demandPointInTime#69906]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=190271]
(75) BroadcastHashJoin
Left keys [2]: [product#69015, plant#69016]
Right keys [2]: [product#69898, plant#69899]
Join type: LeftOuter
Join condition: None
(76) Filter
Input [8]: [product#69015, plant#69016, _extract_id#88549, _extract_id#88550, product#69898, plant#69899, demandTimeBuckets#69903, demandPointInTime#69906]
Condition : (((size(demandTimeBuckets#69903, true) = 0) OR isnull(demandTimeBuckets#69903)) AND ((size(demandPointInTime#69906, true) = 0) OR isnull(demandPointInTime#69906)))
(77) Project
Output [3]: [_extract_id#88549 AS product#69909, _extract_id#88550 AS plant#69910, array(struct(name, PRODUCT, value, _extract_id#88549), struct(name, PLANT, value, _extract_id#88550)) AS businessContext#69919]
Input [8]: [product#69015, plant#69016, _extract_id#88549, _extract_id#88550, product#69898, plant#69899, demandTimeBuckets#69903, demandPointInTime#69906]
(78) HashAggregate
Input [3]: [product#69909, plant#69910, businessContext#69919]
Keys [6]: [businessContext#69919, [] AS []#89449, 1 AS 1#89451, product#69909, plant#69910, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION AS UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#89453]
Functions: []
Aggregate Attributes: []
Results [6]: [businessContext#69919, []#89449, 1#89451, product#69909, plant#69910, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#89453]
(79) Exchange
Input [6]: [businessContext#69919, []#89449, 1#89451, product#69909, plant#69910, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#89453]
Arguments: hashpartitioning(businessContext#69919, []#89449, 1#89451, product#69909, plant#69910, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#89453, 25), ENSURE_REQUIREMENTS, [plan_id=190283]
(80) HashAggregate
Input [6]: [businessContext#69919, []#89449, 1#89451, product#69909, plant#69910, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#89453]
Keys [6]: [businessContext#69919, []#89449, 1#89451, product#69909, plant#69910, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#89453]
Functions: []
Aggregate Attributes: []
Results [7]: [UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION AS name#69914, 1 AS configurationVersion#69913, 10000002107 AS executionId#69940, 2026-08-10T09:23:51.581Z AS createdAt#69962, Daily_grocery AS marketUnit#69941, businessContext#69919, [] AS messageVariables#69920]
(81) InMemoryTableScan
Output [7]: [externalPlantId#70765, externalProductId#70766, id#70740, quantityUom#70768, scheduleLines#70774, timezonecode#74320, validConfirmations#70964]
Arguments: [externalPlantId#70765, externalProductId#70766, id#70740, quantityUom#70768, scheduleLines#70774, timezonecode#74320, validConfirmations#70964]
(82) InMemoryRelation
Arguments: [id#70740, internalUUID#70739, supplierUuid#70749, plant#70763, product#70764, externalPlantId#70765, externalProductId#70766, storageLocUuid#70767, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, confirmations#70776, stockDatetime#74617, timezonecode#74320, validConfirmations#70964], StorageLevel(disk, memory, deserialized, 1 replicas)
(83) Scan parquet
Output [3]: [product#69015, plant#69016, orderDateTime#69017]
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/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(84) ColumnarToRow [codegen id : 1]
Input [3]: [product#69015, plant#69016, orderDateTime#69017]
(85) Filter [codegen id : 1]
Input [3]: [product#69015, plant#69016, orderDateTime#69017]
Condition : (isnotnull(plant#69016) AND isnotnull(product#69015))
(86) Exchange
Input [3]: [product#69015, plant#69016, orderDateTime#69017]
Arguments: hashpartitioning(product#69015, plant#69016, 25), REPARTITION_BY_NUM, [plan_id=45442]
(87) ShuffleQueryStage
Output [3]: [product#69015, plant#69016, orderDateTime#69017]
Arguments: 0
(88) Scan parquet
Output [4]: [plant#69030, product#69032, productionAspect#69035, systemId#69026]
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>>>>
(89) ColumnarToRow [codegen id : 2]
Input [4]: [plant#69030, product#69032, productionAspect#69035, systemId#69026]
(90) Project [codegen id : 2]
Output [4]: [plant#69030.internalRefUUID AS _extract_internalRefUUID#71356, product#69032.internalRefUUID AS _extract_internalRefUUID#71355, productionAspect#69035.productMovementPlants.unitOfIssue.code AS _extract_code#71358, productionAspect#69035.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71359]
Input [4]: [plant#69030, product#69032, productionAspect#69035, systemId#69026]
(91) Exchange
Input [4]: [_extract_internalRefUUID#71356, _extract_internalRefUUID#71355, _extract_code#71358, _extract_internalRefUUID#71359]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=45462]
(92) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#71356, _extract_internalRefUUID#71355, _extract_code#71358, _extract_internalRefUUID#71359]
Arguments: 1
(93) Project [codegen id : 56]
Output [4]: [_extract_code#71358, _extract_internalRefUUID#71359, _extract_internalRefUUID#71355, _extract_internalRefUUID#71356]
Input [4]: [_extract_internalRefUUID#71356, _extract_internalRefUUID#71355, _extract_code#71358, _extract_internalRefUUID#71359]
(94) BroadcastExchange
Input [4]: [_extract_code#71358, _extract_internalRefUUID#71359, _extract_internalRefUUID#71355, _extract_internalRefUUID#71356]
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=60476]
(95) BroadcastQueryStage
Output [4]: [_extract_code#71358, _extract_internalRefUUID#71359, _extract_internalRefUUID#71355, _extract_internalRefUUID#71356]
Arguments: 119
(96) BroadcastHashJoin [codegen id : 106]
Left keys [4]: [coalesce(product#69015, ), isnull(product#69015), coalesce(plant#69016, ), isnull(plant#69016)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71355, ), isnull(_extract_internalRefUUID#71355), coalesce(_extract_internalRefUUID#71356, ), isnull(_extract_internalRefUUID#71356)]
Join type: LeftOuter
Join condition: None
(97) Project [codegen id : 106]
Output [5]: [product#69015, plant#69016, orderDateTime#69017, _extract_code#71358, _extract_internalRefUUID#71359]
Input [7]: [product#69015, plant#69016, orderDateTime#69017, _extract_code#71358, _extract_internalRefUUID#71359, _extract_internalRefUUID#71355, _extract_internalRefUUID#71356]
(98) Scan parquet
Output [3]: [internalUUID#69050, address#69056, systemId#69049]
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>>>
(99) ColumnarToRow [codegen id : 3]
Input [3]: [internalUUID#69050, address#69056, systemId#69049]
(100) Project [codegen id : 3]
Output [2]: [internalUUID#69050, address#69056.timeZone.code AS timezonecode#69073]
Input [3]: [internalUUID#69050, address#69056, systemId#69049]
(101) Exchange
Input [2]: [internalUUID#69050, timezonecode#69073]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=45486]
(102) ShuffleQueryStage
Output [2]: [internalUUID#69050, timezonecode#69073]
Arguments: 2
(103) BroadcastExchange
Input [2]: [internalUUID#69050, timezonecode#69073]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=56025]
(104) BroadcastQueryStage
Output [2]: [internalUUID#69050, timezonecode#69073]
Arguments: 108
(105) BroadcastHashJoin [codegen id : 106]
Left keys [2]: [coalesce(plant#69016, ), isnull(plant#69016)]
Right keys [2]: [coalesce(internalUUID#69050, ), isnull(internalUUID#69050)]
Join type: LeftOuter
Join condition: None
(106) Project [codegen id : 106]
Output [6]: [product#69015, plant#69016, orderDateTime#69017, _extract_code#71358, _extract_internalRefUUID#71359, CASE WHEN isnotnull(timezonecode#69073) THEN timezonecode#69073 ELSE UTC END AS timezonecode#69080]
Input [7]: [product#69015, plant#69016, orderDateTime#69017, _extract_code#71358, _extract_internalRefUUID#71359, internalUUID#69050, timezonecode#69073]
(107) Scan parquet
Output [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
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>>>
(108) ColumnarToRow [codegen id : 4]
Input [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
(109) Filter [codegen id : 4]
Input [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
Condition : isnotnull(internalUUID#69082)
(110) Project [codegen id : 4]
Output [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Input [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
(111) Exchange
Input [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=45516]
(112) ShuffleQueryStage
Output [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: 3
(113) BroadcastExchange
Input [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=54084]
(114) BroadcastQueryStage
Output [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: 97
(115) BroadcastHashJoin [codegen id : 106]
Left keys [1]: [product#69015]
Right keys [1]: [internalUUID#69082]
Join type: LeftOuter
Join condition: None
(116) Project
Output [5]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, filter(unitOfMeasureConversions#69088, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71358) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71359)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#69086.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69086.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#69108]
Input [9]: [product#69015, plant#69016, orderDateTime#69017, _extract_code#71358, _extract_internalRefUUID#71359, timezonecode#69080, internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
(117) Generate [codegen id : 107]
Input [5]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, filteredUnitOfMeasureConversions#69108]
Arguments: explode(filteredUnitOfMeasureConversions#69108.quantityNumerator), [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, filteredUnitOfMeasureConversions#69108], true, [quantityNumerator#69123]
(118) Project [codegen id : 107]
Output [5]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, filteredUnitOfMeasureConversions#69108.quantityDenominator AS _extract_quantityDenominator#70967]
Input [6]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, filteredUnitOfMeasureConversions#69108, quantityNumerator#69123]
(119) Generate [codegen id : 107]
Input [5]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, _extract_quantityDenominator#70967]
Arguments: explode(_extract_quantityDenominator#70967), [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080], true, [quantityDenominator#69130]
(120) Project [codegen id : 107]
Output [4]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080]
Input [5]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, quantityDenominator#69130]
(121) Scan parquet
Output [6]: [internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, systemId#69251]
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>>>>>
(122) ColumnarToRow [codegen id : 5]
Input [6]: [internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, systemId#69251]
(123) Filter [codegen id : 5]
Input [6]: [internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, systemId#69251]
Condition : (isnotnull(plant#69254.internalRefUUID) AND isnotnull(product#69253.internalRefUUID))
(124) Project [codegen id : 5]
Output [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
Input [6]: [internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, systemId#69251]
(125) Exchange
Input [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=45551]
(126) ShuffleQueryStage
Output [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
Arguments: 4
(127) BroadcastExchange
Input [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
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=80250]
(128) BroadcastQueryStage
Output [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
Arguments: 148
(129) Scan parquet
Output [2]: [marketUnit#69147, distributionCenters#69161]
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>>>>>
(130) ColumnarToRow [codegen id : 6]
Input [2]: [marketUnit#69147, distributionCenters#69161]
(131) Filter [codegen id : 6]
Input [2]: [marketUnit#69147, distributionCenters#69161]
Condition : (((marketUnit#69147 <=> Daily_grocery) AND (size(distributionCenters#69161, true) > 0)) AND isnotnull(distributionCenters#69161))
(132) Project [codegen id : 6]
Output [1]: [distributionCenters#69161]
Input [2]: [marketUnit#69147, distributionCenters#69161]
(133) Exchange
Input [1]: [distributionCenters#69161]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=45575]
(134) ShuffleQueryStage
Output [1]: [distributionCenters#69161]
Arguments: 5
(135) Generate [codegen id : 57]
Input [1]: [distributionCenters#69161]
Arguments: explode(distributionCenters#69161), false, [distributionCenters#69184]
(136) Filter [codegen id : 57]
Input [1]: [distributionCenters#69184]
Condition : (((size(distributionCenters#69184.storageLocations, true) > 0) AND isnotnull(distributionCenters#69184.storageLocations)) AND isnotnull(distributionCenters#69184.internalRefUUID))
(137) Project [codegen id : 57]
Output [2]: [distributionCenters#69184.internalRefUUID AS _extract_internalRefUUID#70975, distributionCenters#69184.storageLocations AS _extract_storageLocations#70976]
Input [1]: [distributionCenters#69184]
(138) Generate [codegen id : 57]
Input [2]: [_extract_internalRefUUID#70975, _extract_storageLocations#70976]
Arguments: explode(_extract_storageLocations#70976), [_extract_internalRefUUID#70975], false, [storageLocations#69198]
(139) Project [codegen id : 57]
Output [3]: [_extract_internalRefUUID#70975 AS plantUuid#69189, storageLocations#69198.id AS storageLocId#69201, storageLocations#69198.internalRefUUID AS storageLocUuid#69202]
Input [2]: [_extract_internalRefUUID#70975, storageLocations#69198]
(140) BroadcastExchange
Input [3]: [plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=60501]
(141) BroadcastQueryStage
Output [3]: [plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
Arguments: 120
(142) Scan parquet
Output [2]: [product#69783, plant#69784]
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/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(143) ColumnarToRow [codegen id : 7]
Input [2]: [product#69783, plant#69784]
(144) Filter [codegen id : 7]
Input [2]: [product#69783, plant#69784]
Condition : isnotnull(plant#69784)
(145) Exchange
Input [2]: [product#69783, plant#69784]
Arguments: hashpartitioning(product#69783, plant#69784, 25), REPARTITION_BY_NUM, [plan_id=45603]
(146) ShuffleQueryStage
Output [2]: [product#69783, plant#69784]
Arguments: 6
(147) ReusedExchange [Reuses operator id: 94]
Output [4]: [_extract_code#71364, _extract_internalRefUUID#71365, _extract_internalRefUUID#71363, _extract_internalRefUUID#71366]
(148) BroadcastQueryStage
Output [4]: [_extract_code#71364, _extract_internalRefUUID#71365, _extract_internalRefUUID#71363, _extract_internalRefUUID#71366]
Arguments: 122
(149) BroadcastHashJoin [codegen id : 73]
Left keys [4]: [coalesce(product#69783, ), isnull(product#69783), coalesce(plant#69784, ), isnull(plant#69784)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71363, ), isnull(_extract_internalRefUUID#71363), coalesce(_extract_internalRefUUID#71366, ), isnull(_extract_internalRefUUID#71366)]
Join type: LeftOuter
Join condition: None
(150) Project [codegen id : 73]
Output [4]: [product#69783, plant#69784, _extract_code#71364, _extract_internalRefUUID#71365]
Input [6]: [product#69783, plant#69784, _extract_code#71364, _extract_internalRefUUID#71365, _extract_internalRefUUID#71363, _extract_internalRefUUID#71366]
(151) Scan parquet
Output [2]: [internalUUID#69810, systemId#69809]
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>
(152) ColumnarToRow [codegen id : 9]
Input [2]: [internalUUID#69810, systemId#69809]
(153) Project [codegen id : 9]
Output [1]: [internalUUID#69810]
Input [2]: [internalUUID#69810, systemId#69809]
(154) Exchange
Input [1]: [internalUUID#69810]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=45644]
(155) ShuffleQueryStage
Output [1]: [internalUUID#69810]
Arguments: 9
(156) BroadcastExchange
Input [1]: [internalUUID#69810]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=57778]
(157) BroadcastQueryStage
Output [1]: [internalUUID#69810]
Arguments: 110
(158) BroadcastHashJoin [codegen id : 73]
Left keys [2]: [coalesce(plant#69784, ), isnull(plant#69784)]
Right keys [2]: [coalesce(internalUUID#69810, ), isnull(internalUUID#69810)]
Join type: LeftOuter
Join condition: None
(159) Project [codegen id : 73]
Output [4]: [product#69783, plant#69784, _extract_code#71364, _extract_internalRefUUID#71365]
Input [5]: [product#69783, plant#69784, _extract_code#71364, _extract_internalRefUUID#71365, internalUUID#69810]
(160) ReusedExchange [Reuses operator id: 113]
Output [3]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844]
(161) BroadcastQueryStage
Output [3]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844]
Arguments: 98
(162) BroadcastHashJoin [codegen id : 73]
Left keys [1]: [product#69783]
Right keys [1]: [internalUUID#69838]
Join type: LeftOuter
Join condition: None
(163) Project
Output [2]: [plant#69784, filter(unitOfMeasureConversions#69844, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71364) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71365)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#69842.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69842.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#69850]
Input [7]: [product#69783, plant#69784, _extract_code#71364, _extract_internalRefUUID#71365, internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844]
(164) Generate [codegen id : 74]
Input [2]: [plant#69784, filteredUnitOfMeasureConversions#69850]
Arguments: explode(filteredUnitOfMeasureConversions#69850.quantityNumerator), [plant#69784, filteredUnitOfMeasureConversions#69850], true, [quantityNumerator#69852]
(165) Project [codegen id : 74]
Output [2]: [plant#69784, filteredUnitOfMeasureConversions#69850.quantityDenominator AS _extract_quantityDenominator#70979]
Input [3]: [plant#69784, filteredUnitOfMeasureConversions#69850, quantityNumerator#69852]
(166) Generate [codegen id : 74]
Input [2]: [plant#69784, _extract_quantityDenominator#70979]
Arguments: explode(_extract_quantityDenominator#70979), [plant#69784], true, [quantityDenominator#69853]
(167) Project [codegen id : 74]
Output [1]: [plant#69784]
Input [2]: [plant#69784, quantityDenominator#69853]
(168) HashAggregate [codegen id : 74]
Input [1]: [plant#69784]
Keys [1]: [plant#69784]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69784]
(169) Exchange
Input [1]: [plant#69784]
Arguments: hashpartitioning(plant#69784, 25), ENSURE_REQUIREMENTS, [plan_id=91603]
(170) ShuffleQueryStage
Output [1]: [plant#69784]
Arguments: 152
(171) AQEShuffleRead
Input [1]: [plant#69784]
Arguments: coalesced
(172) HashAggregate
Input [1]: [plant#69784]
Keys [1]: [plant#69784]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69784]
(173) BroadcastHashJoin
Left keys [1]: [plantUuid#69189]
Right keys [1]: [plant#69784]
Join type: Inner
Join condition: None
(174) Project
Output [3]: [plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
Input [4]: [plantUuid#69189, storageLocId#69201, storageLocUuid#69202, plant#69784]
(175) BroadcastHashJoin [codegen id : 83]
Left keys [2]: [coalesce(plant#69254.internalRefUUID, ), isnull(plant#69254.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#69189, ), isnull(plantUuid#69189)]
Join type: Inner
Join condition: None
(176) Generate
Input [9]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
Arguments: explode(filter(stockQuantities#69256, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#69202) AND (lambda x#69270.storageLocation.Id = storageLocId#69201)), lambda x#69270, false))), [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, plantUuid#69189], false, [stockQuantity#69271]
(177) ObjectHashAggregate
Input [7]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, plantUuid#69189, stockQuantity#69271]
Keys [5]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251]
Functions [2]: [partial_first(calculationDateTime#69255, false), partial_collect_list(stockQuantity#69271, 0, 0)]
Aggregate Attributes [3]: [first#73908, valueSet#73909, buf#73910]
Results [8]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251, first#73911, valueSet#73912, buf#73913]
(178) ObjectHashAggregate
Input [8]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251, first#73911, valueSet#73912, buf#73913]
Keys [5]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251]
Functions [2]: [first(calculationDateTime#69255, false), collect_list(stockQuantity#69271, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#69255)()#69321, collect_list(stockQuantity#69271, 0, 0)#69322]
Results [4]: [product#69253, plant#69254, first(calculationDateTime#69255)()#69321 AS calculationDateTime#69308, collect_list(stockQuantity#69271, 0, 0)#69322 AS stockQuantities#69309]
(179) Filter [codegen id : 84]
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantities#69309]
Condition : ((size(stockQuantities#69309, true) > 0) AND isnotnull(calculationDateTime#69308))
(180) Generate [codegen id : 84]
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantities#69309]
Arguments: explode(stockQuantities#69309), [product#69253, plant#69254, calculationDateTime#69308], false, [stockQuantity#69367]
(181) Filter [codegen id : 84]
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantity#69367]
Condition : (((isnotnull(stockQuantity#69367.specialStockIndicator.code) AND isnotnull(stockQuantity#69367.stockType.code)) AND (stockQuantity#69367.specialStockIndicator.code = )) AND (stockQuantity#69367.stockType.code = 01))
(182) Project [codegen id : 84]
Output [4]: [plant#69254.internalRefUUID AS plantUuid#69370, product#69253.internalRefUUID AS productUuid#69372, calculationDateTime#69308, stockQuantity#69367.storagelocation.id AS storageLocId#69373]
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantity#69367]
(183) Exchange
Input [4]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373]
Arguments: hashpartitioning(productUuid#69372, plantUuid#69370, 25), ENSURE_REQUIREMENTS, [plan_id=114438]
(184) ShuffleQueryStage
Output [4]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373]
Arguments: 161
(185) AQEShuffleRead
Input [4]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373]
Arguments: local
(186) BroadcastExchange
Input [4]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=121339]
(187) BroadcastQueryStage
Output [4]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373]
Arguments: 168
(188) Scan parquet
Output [3]: [product#69391, plant#69392, orderDateTime#69393]
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/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(189) ColumnarToRow [codegen id : 11]
Input [3]: [product#69391, plant#69392, orderDateTime#69393]
(190) Filter [codegen id : 11]
Input [3]: [product#69391, plant#69392, orderDateTime#69393]
Condition : ((isnotnull(orderDateTime#69393) AND isnotnull(plant#69392)) AND isnotnull(product#69391))
(191) Exchange
Input [3]: [product#69391, plant#69392, orderDateTime#69393]
Arguments: hashpartitioning(product#69391, plant#69392, 25), REPARTITION_BY_NUM, [plan_id=45719]
(192) ShuffleQueryStage
Output [3]: [product#69391, plant#69392, orderDateTime#69393]
Arguments: 12
(193) ReusedExchange [Reuses operator id: 94]
Output [4]: [_extract_code#71372, _extract_internalRefUUID#71373, _extract_internalRefUUID#71371, _extract_internalRefUUID#71374]
(194) BroadcastQueryStage
Output [4]: [_extract_code#71372, _extract_internalRefUUID#71373, _extract_internalRefUUID#71371, _extract_internalRefUUID#71374]
Arguments: 124
(195) BroadcastHashJoin [codegen id : 93]
Left keys [4]: [coalesce(product#69391, ), isnull(product#69391), coalesce(plant#69392, ), isnull(plant#69392)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71371, ), isnull(_extract_internalRefUUID#71371), coalesce(_extract_internalRefUUID#71374, ), isnull(_extract_internalRefUUID#71374)]
Join type: LeftOuter
Join condition: None
(196) Project [codegen id : 93]
Output [5]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#71372, _extract_internalRefUUID#71373]
Input [7]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#71372, _extract_internalRefUUID#71373, _extract_internalRefUUID#71371, _extract_internalRefUUID#71374]
(197) ReusedExchange [Reuses operator id: 156]
Output [1]: [internalUUID#69405]
(198) BroadcastQueryStage
Output [1]: [internalUUID#69405]
Arguments: 111
(199) BroadcastHashJoin [codegen id : 93]
Left keys [2]: [coalesce(plant#69392, ), isnull(plant#69392)]
Right keys [2]: [coalesce(internalUUID#69405, ), isnull(internalUUID#69405)]
Join type: LeftOuter
Join condition: None
(200) Project [codegen id : 93]
Output [5]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#71372, _extract_internalRefUUID#71373]
Input [6]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#71372, _extract_internalRefUUID#71373, internalUUID#69405]
(201) ReusedExchange [Reuses operator id: 113]
Output [3]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425]
(202) BroadcastQueryStage
Output [3]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425]
Arguments: 99
(203) BroadcastHashJoin [codegen id : 93]
Left keys [1]: [product#69391]
Right keys [1]: [internalUUID#69419]
Join type: LeftOuter
Join condition: None
(204) Project
Output [4]: [product#69391, plant#69392, orderDateTime#69393, filter(unitOfMeasureConversions#69425, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71372) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71373)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#69423.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69423.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#69430]
Input [8]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#71372, _extract_internalRefUUID#71373, internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425]
(205) Generate
Input [4]: [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430]
Arguments: explode(filteredUnitOfMeasureConversions#69430.quantityNumerator), [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430], true, [quantityNumerator#69431]
(206) Project
Output [4]: [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430.quantityDenominator AS _extract_quantityDenominator#70987]
Input [5]: [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430, quantityNumerator#69431]
(207) Generate
Input [4]: [product#69391, plant#69392, orderDateTime#69393, _extract_quantityDenominator#70987]
Arguments: explode(_extract_quantityDenominator#70987), [product#69391, plant#69392, orderDateTime#69393], true, [quantityDenominator#69432]
(208) Project
Output [3]: [product#69391, plant#69392, orderDateTime#69393]
Input [4]: [product#69391, plant#69392, orderDateTime#69393, quantityDenominator#69432]
(209) BroadcastHashJoin [codegen id : 94]
Left keys [2]: [plantUuid#69370, productUuid#69372]
Right keys [2]: [plant#69392, product#69391]
Join type: Inner
Join condition: (calculationDateTime#69308 <= orderDateTime#69393)
(210) Project [codegen id : 94]
Output [4]: [plantUuid#69370 AS plant#69448, productUuid#69372 AS product#69449, storageLocId#69373, calculationDateTime#69308]
Input [7]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373, product#69391, plant#69392, orderDateTime#69393]
(211) Exchange
Input [4]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308]
Arguments: hashpartitioning(coalesce(plant#69448, ), isnull(plant#69448), coalesce(product#69449, ), isnull(product#69449), coalesce(storageLocId#69373, ), isnull(storageLocId#69373), coalesce(calculationDateTime#69308, 1970-01-01 00:00:00), isnull(calculationDateTime#69308), 25), ENSURE_REQUIREMENTS, [plan_id=122715]
(212) ShuffleQueryStage
Output [4]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308]
Arguments: 174
(213) AQEShuffleRead
Input [4]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308]
Arguments: local
(214) BroadcastExchange
Input [4]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308]
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=125325]
(215) BroadcastQueryStage
Output [4]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308]
Arguments: 179
(216) ReusedExchange [Reuses operator id: 186]
Output [4]: [plantUuid#69677, productUuid#69679, calculationDateTime#69673, storageLocId#69680]
(217) BroadcastQueryStage
Output [4]: [plantUuid#69677, productUuid#69679, calculationDateTime#69673, storageLocId#69680]
Arguments: 170
(218) ReusedExchange [Reuses operator id: 191]
Output [3]: [product#69685, plant#69686, orderDateTime#69687]
(219) ShuffleQueryStage
Output [3]: [product#69685, plant#69686, orderDateTime#69687]
Arguments: 32
(220) ReusedExchange [Reuses operator id: 94]
Output [4]: [_extract_code#71385, _extract_internalRefUUID#71386, _extract_internalRefUUID#71384, _extract_internalRefUUID#71383]
(221) BroadcastQueryStage
Output [4]: [_extract_code#71385, _extract_internalRefUUID#71386, _extract_internalRefUUID#71384, _extract_internalRefUUID#71383]
Arguments: 130
(222) BroadcastHashJoin [codegen id : 95]
Left keys [4]: [coalesce(product#69685, ), isnull(product#69685), coalesce(plant#69686, ), isnull(plant#69686)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71384, ), isnull(_extract_internalRefUUID#71384), coalesce(_extract_internalRefUUID#71383, ), isnull(_extract_internalRefUUID#71383)]
Join type: LeftOuter
Join condition: None
(223) Project [codegen id : 95]
Output [5]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#71385, _extract_internalRefUUID#71386]
Input [7]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#71385, _extract_internalRefUUID#71386, _extract_internalRefUUID#71384, _extract_internalRefUUID#71383]
(224) ReusedExchange [Reuses operator id: 156]
Output [1]: [internalUUID#69699]
(225) BroadcastQueryStage
Output [1]: [internalUUID#69699]
Arguments: 113
(226) BroadcastHashJoin [codegen id : 95]
Left keys [2]: [coalesce(plant#69686, ), isnull(plant#69686)]
Right keys [2]: [coalesce(internalUUID#69699, ), isnull(internalUUID#69699)]
Join type: LeftOuter
Join condition: None
(227) Project [codegen id : 95]
Output [5]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#71385, _extract_internalRefUUID#71386]
Input [6]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#71385, _extract_internalRefUUID#71386, internalUUID#69699]
(228) ReusedExchange [Reuses operator id: 113]
Output [3]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719]
(229) BroadcastQueryStage
Output [3]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719]
Arguments: 101
(230) BroadcastHashJoin [codegen id : 95]
Left keys [1]: [product#69685]
Right keys [1]: [internalUUID#69713]
Join type: LeftOuter
Join condition: None
(231) Project
Output [4]: [product#69685, plant#69686, orderDateTime#69687, filter(unitOfMeasureConversions#69719, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71385) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71386)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#69717.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69717.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#69724]
Input [8]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#71385, _extract_internalRefUUID#71386, internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719]
(232) Generate
Input [4]: [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724]
Arguments: explode(filteredUnitOfMeasureConversions#69724.quantityNumerator), [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724], true, [quantityNumerator#69725]
(233) Project
Output [4]: [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724.quantityDenominator AS _extract_quantityDenominator#71006]
Input [5]: [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724, quantityNumerator#69725]
(234) Generate
Input [4]: [product#69685, plant#69686, orderDateTime#69687, _extract_quantityDenominator#71006]
Arguments: explode(_extract_quantityDenominator#71006), [product#69685, plant#69686, orderDateTime#69687], true, [quantityDenominator#69726]
(235) Project
Output [3]: [product#69685, plant#69686, orderDateTime#69687]
Input [4]: [product#69685, plant#69686, orderDateTime#69687, quantityDenominator#69726]
(236) BroadcastHashJoin [codegen id : 96]
Left keys [2]: [plantUuid#69677, productUuid#69679]
Right keys [2]: [plant#69686, product#69685]
Join type: Inner
Join condition: (calculationDateTime#69673 <= orderDateTime#69687)
(237) Project [codegen id : 96]
Output [4]: [plantUuid#69677 AS plant#69729, productUuid#69679 AS product#69730, storageLocId#69680, calculationDateTime#69673]
Input [7]: [plantUuid#69677, productUuid#69679, calculationDateTime#69673, storageLocId#69680, product#69685, plant#69686, orderDateTime#69687]
(238) HashAggregate [codegen id : 96]
Input [4]: [plant#69729, product#69730, storageLocId#69680, calculationDateTime#69673]
Keys [3]: [plant#69729, product#69730, storageLocId#69680]
Functions [1]: [partial_max(calculationDateTime#69673)]
Aggregate Attributes [1]: [max#73916]
Results [4]: [plant#69729, product#69730, storageLocId#69680, max#73917]
(239) HashAggregate [codegen id : 96]
Input [4]: [plant#69729, product#69730, storageLocId#69680, max#73917]
Keys [3]: [plant#69729, product#69730, storageLocId#69680]
Functions [1]: [max(calculationDateTime#69673)]
Aggregate Attributes [1]: [max(calculationDateTime#69673)#69456]
Results [4]: [plant#69729, product#69730, storageLocId#69680, max(calculationDateTime#69673)#69456 AS max_calc_datetime#69450]
(240) Exchange
Input [4]: [plant#69729, product#69730, storageLocId#69680, max_calc_datetime#69450]
Arguments: hashpartitioning(coalesce(plant#69729, ), isnull(plant#69729), coalesce(product#69730, ), isnull(product#69730), coalesce(storageLocId#69680, ), isnull(storageLocId#69680), coalesce(max_calc_datetime#69450, 1970-01-01 00:00:00), isnull(max_calc_datetime#69450), 25), ENSURE_REQUIREMENTS, [plan_id=122774]
(241) ShuffleQueryStage
Output [4]: [plant#69729, product#69730, storageLocId#69680, max_calc_datetime#69450]
Arguments: 175
(242) AQEShuffleRead
Input [4]: [plant#69729, product#69730, storageLocId#69680, max_calc_datetime#69450]
Arguments: local
(243) BroadcastHashJoin [codegen id : 99]
Left keys [8]: [coalesce(plant#69448, ), isnull(plant#69448), coalesce(product#69449, ), isnull(product#69449), coalesce(storageLocId#69373, ), isnull(storageLocId#69373), coalesce(calculationDateTime#69308, 1970-01-01 00:00:00), isnull(calculationDateTime#69308)]
Right keys [8]: [coalesce(plant#69729, ), isnull(plant#69729), coalesce(product#69730, ), isnull(product#69730), coalesce(storageLocId#69680, ), isnull(storageLocId#69680), coalesce(max_calc_datetime#69450, 1970-01-01 00:00:00), isnull(max_calc_datetime#69450)]
Join type: Inner
Join condition: None
(244) Project [codegen id : 99]
Output [3]: [plant#69448, product#69449, calculationDateTime#69308]
Input [8]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308, plant#69729, product#69730, storageLocId#69680, max_calc_datetime#69450]
(245) HashAggregate [codegen id : 99]
Input [3]: [plant#69448, product#69449, calculationDateTime#69308]
Keys [2]: [product#69449, plant#69448]
Functions [1]: [partial_min(calculationDateTime#69308)]
Aggregate Attributes [1]: [min#73906]
Results [3]: [product#69449, plant#69448, min#73907]
(246) Exchange
Input [3]: [product#69449, plant#69448, min#73907]
Arguments: hashpartitioning(product#69449, plant#69448, 25), ENSURE_REQUIREMENTS, [plan_id=126301]
(247) ShuffleQueryStage
Output [3]: [product#69449, plant#69448, min#73907]
Arguments: 180
(248) AQEShuffleRead
Input [3]: [product#69449, plant#69448, min#73907]
Arguments: coalesced
(249) HashAggregate [codegen id : 102]
Input [3]: [product#69449, plant#69448, min#73907]
Keys [2]: [product#69449, plant#69448]
Functions [1]: [min(calculationDateTime#69308)]
Aggregate Attributes [1]: [min(calculationDateTime#69308)#69768]
Results [3]: [product#69449, plant#69448, min(calculationDateTime#69308)#69768 AS minCalculationDateTime#69754]
(250) BroadcastExchange
Input [3]: [product#69449, plant#69448, minCalculationDateTime#69754]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=127737]
(251) BroadcastQueryStage
Output [3]: [product#69449, plant#69448, minCalculationDateTime#69754]
Arguments: 183
(252) BroadcastHashJoin [codegen id : 107]
Left keys [2]: [plant#69016, product#69015]
Right keys [2]: [plant#69448, product#69449]
Join type: LeftOuter
Join condition: None
(253) Project [codegen id : 107]
Output [4]: [product#69015, plant#69016, timezonecode#69080, CASE WHEN isnotnull(minCalculationDateTime#69754) THEN minCalculationDateTime#69754 ELSE orderDateTime#69017 END AS stockDatetime#69867]
Input [7]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, product#69449, plant#69448, minCalculationDateTime#69754]
(254) Exchange
Input [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: hashpartitioning(coalesce(plant#69016, ), isnull(plant#69016), coalesce(product#69015, ), isnull(product#69015), 25), ENSURE_REQUIREMENTS, [plan_id=128760]
(255) ShuffleQueryStage
Output [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: 185
(256) AQEShuffleRead
Input [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: local
(257) Scan parquet
Output [3]: [product#70356, plant#70357, orderDateTime#70358]
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/10000002107/shardId=0_1_10000002107]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(258) ColumnarToRow [codegen id : 25]
Input [3]: [product#70356, plant#70357, orderDateTime#70358]
(259) Exchange
Input [3]: [product#70356, plant#70357, orderDateTime#70358]
Arguments: hashpartitioning(product#70356, plant#70357, 25), REPARTITION_BY_NUM, [plan_id=46130]
(260) ShuffleQueryStage
Output [3]: [product#70356, plant#70357, orderDateTime#70358]
Arguments: 39
(261) Scan parquet
Output [8]: [internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367, systemId#70360]
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>>>
(262) ColumnarToRow [codegen id : 26]
Input [8]: [internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367, systemId#70360]
(263) Project [codegen id : 26]
Output [8]: [systemId#70360, internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367]
Input [8]: [internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367, systemId#70360]
(264) Exchange
Input [8]: [systemId#70360, internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=46149]
(265) ShuffleQueryStage
Output [8]: [systemId#70360, internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367]
Arguments: 40
(266) Project [codegen id : 71]
Output [1]: [struct(systemId, systemId#70360, internalUUID, internalUUID#70361, plant, plant#70362, product, product#70363, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70364, productionAspect, productionAspect#70365, salesPlant, salesPlant#70366, listing, listing#70367) AS productPlant#70368]
Input [8]: [systemId#70360, internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367]
(267) BroadcastExchange
Input [1]: [productPlant#70368]
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=62270]
(268) BroadcastQueryStage
Output [1]: [productPlant#70368]
Arguments: 146
(269) BroadcastHashJoin [codegen id : 103]
Left keys [4]: [coalesce(product#70356, ), isnull(product#70356), coalesce(plant#70357, ), isnull(plant#70357)]
Right keys [4]: [coalesce(productPlant#70368.product.internalRefUUID, ), isnull(productPlant#70368.product.internalRefUUID), coalesce(productPlant#70368.plant.internalRefUUID, ), isnull(productPlant#70368.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(270) ReusedExchange [Reuses operator id: 103]
Output [2]: [internalUUID#70370, timezonecode#70381]
(271) BroadcastQueryStage
Output [2]: [internalUUID#70370, timezonecode#70381]
Arguments: 109
(272) BroadcastHashJoin [codegen id : 103]
Left keys [2]: [coalesce(plant#70357, ), isnull(plant#70357)]
Right keys [2]: [coalesce(internalUUID#70370, ), isnull(internalUUID#70370)]
Join type: LeftOuter
Join condition: None
(273) Project [codegen id : 103]
Output [5]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, CASE WHEN isnotnull(timezonecode#70381) THEN timezonecode#70381 ELSE UTC END AS timezonecode#70382]
Input [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, internalUUID#70370, timezonecode#70381]
(274) ReusedExchange [Reuses operator id: 113]
Output [3]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390]
(275) BroadcastQueryStage
Output [3]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390]
Arguments: 102
(276) BroadcastHashJoin [codegen id : 103]
Left keys [1]: [product#70356]
Right keys [1]: [internalUUID#70384]
Join type: LeftOuter
Join condition: None
(277) Project
Output [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, filter(unitOfMeasureConversions#70390, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#70368.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#70368.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#70388.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70388.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#70396]
Input [8]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390]
(278) Project [codegen id : 104]
Output [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, filteredUnitOfMeasureConversions#70396.quantityDenominator AS _extract_quantityDenominator#71131, filteredUnitOfMeasureConversions#70396.quantityNumerator AS _extract_quantityNumerator#71132]
Input [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, filteredUnitOfMeasureConversions#70396]
(279) Generate [codegen id : 104]
Input [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, _extract_quantityDenominator#71131, _extract_quantityNumerator#71132]
Arguments: explode(_extract_quantityNumerator#71132), [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, _extract_quantityDenominator#71131], true, [quantityNumerator#70398]
(280) Generate [codegen id : 104]
Input [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, _extract_quantityDenominator#71131, quantityNumerator#70398]
Arguments: explode(_extract_quantityDenominator#71131), [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, quantityNumerator#70398], true, [quantityDenominator#70399]
(281) Project [codegen id : 104]
Output [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, (cast(quantityNumerator#70398 as double) / cast(quantityDenominator#70399 as double)) AS outboundUnit#70400]
Input [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, quantityNumerator#70398, quantityDenominator#70399]
(282) Project [codegen id : 104]
Output [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, CASE WHEN (isnull(outboundUnit#70400) OR (outboundUnit#70400 <= 0.0)) THEN 1.0 ELSE outboundUnit#70400 END AS outboundUnit#70401]
Input [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70400]
(283) ReusedExchange [Reuses operator id: 127]
Output [6]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407]
(284) BroadcastQueryStage
Output [6]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407]
Arguments: 150
(285) ReusedExchange [Reuses operator id: 140]
Output [3]: [plantUuid#70433, storageLocId#70434, storageLocUuid#70435]
(286) BroadcastQueryStage
Output [3]: [plantUuid#70433, storageLocId#70434, storageLocUuid#70435]
Arguments: 132
(287) ReusedExchange [Reuses operator id: 169]
Output [1]: [plant#70438]
(288) ShuffleQueryStage
Output [1]: [plant#70438]
Arguments: 156
(289) AQEShuffleRead
Input [1]: [plant#70438]
Arguments: coalesced
(290) HashAggregate
Input [1]: [plant#70438]
Keys [1]: [plant#70438]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70438]
(291) BroadcastHashJoin
Left keys [1]: [plantUuid#70433]
Right keys [1]: [plant#70438]
Join type: Inner
Join condition: None
(292) Project
Output [3]: [plantUuid#70433, storageLocId#70434, storageLocUuid#70435]
Input [4]: [plantUuid#70433, storageLocId#70434, storageLocUuid#70435, plant#70438]
(293) BroadcastHashJoin [codegen id : 87]
Left keys [2]: [coalesce(plant#70405.internalRefUUID, ), isnull(plant#70405.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#70433, ), isnull(plantUuid#70433)]
Join type: Inner
Join condition: None
(294) Generate
Input [9]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407, plantUuid#70433, storageLocId#70434, storageLocUuid#70435]
Arguments: explode(filter(stockQuantities#70407, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#70435) AND (lambda x#69270.storageLocation.Id = storageLocId#70434)), lambda x#69270, false))), [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, plantUuid#70433], false, [stockQuantity#70498]
(295) ObjectHashAggregate
Input [7]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, plantUuid#70433, stockQuantity#70498]
Keys [5]: [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402]
Functions [2]: [partial_first(calculationDateTime#70406, false), partial_collect_list(stockQuantity#70498, 0, 0)]
Aggregate Attributes [3]: [first#73946, valueSet#73947, buf#73948]
Results [8]: [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402, first#73949, valueSet#73950, buf#73951]
(296) ObjectHashAggregate
Input [8]: [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402, first#73949, valueSet#73950, buf#73951]
Keys [5]: [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402]
Functions [2]: [first(calculationDateTime#70406, false), collect_list(stockQuantity#70498, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#70406)()#69321, collect_list(stockQuantity#70498, 0, 0)#69322]
Results [4]: [product#70404, plant#70405, first(calculationDateTime#70406)()#69321 AS calculationDateTime#70499, collect_list(stockQuantity#70498, 0, 0)#69322 AS stockQuantities#70500]
(297) Filter [codegen id : 88]
Input [4]: [product#70404, plant#70405, calculationDateTime#70499, stockQuantities#70500]
Condition : ((size(stockQuantities#70500, true) > 0) AND isnotnull(calculationDateTime#70499))
(298) Generate [codegen id : 88]
Input [4]: [product#70404, plant#70405, calculationDateTime#70499, stockQuantities#70500]
Arguments: explode(stockQuantities#70500), [product#70404, plant#70405, calculationDateTime#70499], false, [stockQuantity#70501]
(299) Filter [codegen id : 88]
Input [4]: [product#70404, plant#70405, calculationDateTime#70499, stockQuantity#70501]
Condition : (((isnotnull(stockQuantity#70501.specialStockIndicator.code) AND isnotnull(stockQuantity#70501.stockType.code)) AND (stockQuantity#70501.specialStockIndicator.code = )) AND (stockQuantity#70501.stockType.code = 01))
(300) Project [codegen id : 88]
Output [5]: [plant#70405.internalRefUUID AS plantUuid#70503, product#70404.internalRefUUID AS productUuid#70505, calculationDateTime#70499, stockQuantity#70501.storagelocation.id AS storageLocId#70506, stockQuantity#70501.quantity.measure AS quantity#70508]
Input [4]: [product#70404, plant#70405, calculationDateTime#70499, stockQuantity#70501]
(301) Exchange
Input [5]: [plantUuid#70503, productUuid#70505, calculationDateTime#70499, storageLocId#70506, quantity#70508]
Arguments: hashpartitioning(productUuid#70505, plantUuid#70503, 25), ENSURE_REQUIREMENTS, [plan_id=114769]
(302) ShuffleQueryStage
Output [5]: [plantUuid#70503, productUuid#70505, calculationDateTime#70499, storageLocId#70506, quantity#70508]
Arguments: 164
(303) AQEShuffleRead
Input [5]: [plantUuid#70503, productUuid#70505, calculationDateTime#70499, storageLocId#70506, quantity#70508]
Arguments: local
(304) BroadcastExchange
Input [5]: [plantUuid#70503, productUuid#70505, calculationDateTime#70499, storageLocId#70506, quantity#70508]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=120649]
(305) BroadcastQueryStage
Output [5]: [plantUuid#70503, productUuid#70505, calculationDateTime#70499, storageLocId#70506, quantity#70508]
Arguments: 167
(306) ReusedExchange [Reuses operator id: 191]
Output [3]: [product#70513, plant#70514, orderDateTime#70515]
(307) ShuffleQueryStage
Output [3]: [product#70513, plant#70514, orderDateTime#70515]
Arguments: 58
(308) ReusedExchange [Reuses operator id: 94]
Output [4]: [_extract_code#71399, _extract_internalRefUUID#71400, _extract_internalRefUUID#71402, _extract_internalRefUUID#71401]
(309) BroadcastQueryStage
Output [4]: [_extract_code#71399, _extract_internalRefUUID#71400, _extract_internalRefUUID#71402, _extract_internalRefUUID#71401]
Arguments: 136
(310) BroadcastHashJoin [codegen id : 91]
Left keys [4]: [coalesce(product#70513, ), isnull(product#70513), coalesce(plant#70514, ), isnull(plant#70514)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71402, ), isnull(_extract_internalRefUUID#71402), coalesce(_extract_internalRefUUID#71401, ), isnull(_extract_internalRefUUID#71401)]
Join type: LeftOuter
Join condition: None
(311) Project [codegen id : 91]
Output [5]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#71399, _extract_internalRefUUID#71400]
Input [7]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#71399, _extract_internalRefUUID#71400, _extract_internalRefUUID#71402, _extract_internalRefUUID#71401]
(312) ReusedExchange [Reuses operator id: 156]
Output [1]: [internalUUID#70529]
(313) BroadcastQueryStage
Output [1]: [internalUUID#70529]
Arguments: 115
(314) BroadcastHashJoin [codegen id : 91]
Left keys [2]: [coalesce(plant#70514, ), isnull(plant#70514)]
Right keys [2]: [coalesce(internalUUID#70529, ), isnull(internalUUID#70529)]
Join type: LeftOuter
Join condition: None
(315) Project [codegen id : 91]
Output [5]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#71399, _extract_internalRefUUID#71400]
Input [6]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#71399, _extract_internalRefUUID#71400, internalUUID#70529]
(316) ReusedExchange [Reuses operator id: 113]
Output [3]: [internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549]
(317) BroadcastQueryStage
Output [3]: [internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549]
Arguments: 104
(318) BroadcastHashJoin [codegen id : 91]
Left keys [1]: [product#70513]
Right keys [1]: [internalUUID#70543]
Join type: LeftOuter
Join condition: None
(319) Project
Output [4]: [product#70513, plant#70514, orderDateTime#70515, filter(unitOfMeasureConversions#70549, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71399) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71400)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#70547.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70547.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#70554]
Input [8]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#71399, _extract_internalRefUUID#71400, internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549]
(320) Generate
Input [4]: [product#70513, plant#70514, orderDateTime#70515, filteredUnitOfMeasureConversions#70554]
Arguments: explode(filteredUnitOfMeasureConversions#70554.quantityNumerator), [product#70513, plant#70514, orderDateTime#70515, filteredUnitOfMeasureConversions#70554], true, [quantityNumerator#70555]
(321) Project
Output [4]: [product#70513, plant#70514, orderDateTime#70515, filteredUnitOfMeasureConversions#70554.quantityDenominator AS _extract_quantityDenominator#71032]
Input [5]: [product#70513, plant#70514, orderDateTime#70515, filteredUnitOfMeasureConversions#70554, quantityNumerator#70555]
(322) Generate
Input [4]: [product#70513, plant#70514, orderDateTime#70515, _extract_quantityDenominator#71032]
Arguments: explode(_extract_quantityDenominator#71032), [product#70513, plant#70514, orderDateTime#70515], true, [quantityDenominator#70556]
(323) Project
Output [3]: [product#70513, plant#70514, orderDateTime#70515]
Input [4]: [product#70513, plant#70514, orderDateTime#70515, quantityDenominator#70556]
(324) BroadcastHashJoin [codegen id : 92]
Left keys [2]: [plantUuid#70503, productUuid#70505]
Right keys [2]: [plant#70514, product#70513]
Join type: Inner
Join condition: (calculationDateTime#70499 <= orderDateTime#70515)
(325) Project [codegen id : 92]
Output [5]: [plantUuid#70503 AS plant#70559, productUuid#70505 AS product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
Input [8]: [plantUuid#70503, productUuid#70505, calculationDateTime#70499, storageLocId#70506, quantity#70508, product#70513, plant#70514, orderDateTime#70515]
(326) Exchange
Input [5]: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
Arguments: hashpartitioning(coalesce(plant#70559, ), isnull(plant#70559), coalesce(product#70560, ), isnull(product#70560), coalesce(storageLocId#70506, ), isnull(storageLocId#70506), coalesce(calculationDateTime#70499, 1970-01-01 00:00:00), isnull(calculationDateTime#70499), 25), ENSURE_REQUIREMENTS, [plan_id=122067]
(327) ShuffleQueryStage
Output [5]: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
Arguments: 173
(328) AQEShuffleRead
Input [5]: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
Arguments: local
(329) BroadcastExchange
Input [5]: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
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=124975]
(330) BroadcastQueryStage
Output [5]: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
Arguments: 178
(331) ReusedExchange [Reuses operator id: 240]
Output [4]: [plant#70696, product#70697, storageLocId#70647, max_calc_datetime#70698]
(332) ShuffleQueryStage
Output [4]: [plant#70696, product#70697, storageLocId#70647, max_calc_datetime#70698]
Arguments: 177
(333) AQEShuffleRead
Input [4]: [plant#70696, product#70697, storageLocId#70647, max_calc_datetime#70698]
Arguments: local
(334) BroadcastHashJoin [codegen id : 100]
Left keys [8]: [coalesce(plant#70559, ), isnull(plant#70559), coalesce(product#70560, ), isnull(product#70560), coalesce(storageLocId#70506, ), isnull(storageLocId#70506), coalesce(calculationDateTime#70499, 1970-01-01 00:00:00), isnull(calculationDateTime#70499)]
Right keys [8]: [coalesce(plant#70696, ), isnull(plant#70696), coalesce(product#70697, ), isnull(product#70697), coalesce(storageLocId#70647, ), isnull(storageLocId#70647), coalesce(max_calc_datetime#70698, 1970-01-01 00:00:00), isnull(max_calc_datetime#70698)]
Join type: Inner
Join condition: None
(335) Project [codegen id : 100]
Output [4]: [plant#70559, product#70560, calculationDateTime#70499, quantity#70508]
Input [9]: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508, plant#70696, product#70697, storageLocId#70647, max_calc_datetime#70698]
(336) HashAggregate [codegen id : 100]
Input [4]: [plant#70559, product#70560, calculationDateTime#70499, quantity#70508]
Keys [2]: [product#70560, plant#70559]
Functions [2]: [partial_min(calculationDateTime#70499), partial_sum(quantity#70508)]
Aggregate Attributes [2]: [min#73942, sum#73943]
Results [4]: [product#70560, plant#70559, min#73944, sum#73945]
(337) Exchange
Input [4]: [product#70560, plant#70559, min#73944, sum#73945]
Arguments: hashpartitioning(product#70560, plant#70559, 25), ENSURE_REQUIREMENTS, [plan_id=126336]
(338) ShuffleQueryStage
Output [4]: [product#70560, plant#70559, min#73944, sum#73945]
Arguments: 181
(339) AQEShuffleRead
Input [4]: [product#70560, plant#70559, min#73944, sum#73945]
Arguments: coalesced
(340) HashAggregate [codegen id : 101]
Input [4]: [product#70560, plant#70559, min#73944, sum#73945]
Keys [2]: [product#70560, plant#70559]
Functions [2]: [min(calculationDateTime#70499), sum(quantity#70508)]
Aggregate Attributes [2]: [min(calculationDateTime#70499)#69768, sum(quantity#70508)#69767]
Results [4]: [product#70560, plant#70559, min(calculationDateTime#70499)#69768 AS minCalculationDateTime#70700, round(sum(quantity#70508)#69767, 0) AS roundedQuantitySum#70701]
(341) BroadcastExchange
Input [4]: [product#70560, plant#70559, minCalculationDateTime#70700, roundedQuantitySum#70701]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=127464]
(342) BroadcastQueryStage
Output [4]: [product#70560, plant#70559, minCalculationDateTime#70700, roundedQuantitySum#70701]
Arguments: 182
(343) BroadcastHashJoin [codegen id : 104]
Left keys [2]: [plant#70357, product#70356]
Right keys [2]: [plant#70559, product#70560]
Join type: LeftOuter
Join condition: None
(344) Project [codegen id : 104]
Output [8]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, CASE WHEN isnotnull(minCalculationDateTime#70700) THEN minCalculationDateTime#70700 ELSE orderDateTime#70358 END AS stockDatetime#70702, CASE WHEN isnotnull(roundedQuantitySum#70701) THEN array(roundedQuantitySum#70701) ELSE [0.0] END AS stockBatchQuantities#70703]
Input [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, product#70560, plant#70559, minCalculationDateTime#70700, roundedQuantitySum#70701]
(345) Scan parquet
Output [9]: [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000002107/0_1_10000002107]
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>>>
(346) ColumnarToRow [codegen id : 49]
Input [9]: [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
(347) Filter [codegen id : 49]
Input [9]: [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
Condition : (isnotnull(product#69898) AND isnotnull(plant#69899))
(348) BroadcastExchange
Input [9]: [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=46806]
(349) BroadcastQueryStage
Output [9]: [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
Arguments: 85
(350) BroadcastHashJoin [codegen id : 104]
Left keys [2]: [product#70356, plant#70357]
Right keys [2]: [product#69898, plant#69899]
Join type: LeftOuter
Join condition: None
(351) Project [codegen id : 104]
Output [9]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, CASE WHEN isnotnull(product#69898) THEN struct(demandChannel, demandChannel#69900, demandStream, demandStream#69901, considerVariance, considerVariance#69902, demandTimeBuckets, demandTimeBuckets#69903, demandPointInTimeStart, demandPointInTimeStart#69904, demandPointInTimeEnd, demandPointInTimeEnd#69905, demandPointInTime, demandPointInTime#69906) END AS rawDemands#69977]
Input [17]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
(352) ObjectHashAggregate
Input [9]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, rawDemands#69977]
Keys [9]: [product#70356, plant#70357, orderDateTime#70358, knownfloatingpointnormalized(if (isnull(productPlant#70368)) null else named_struct(systemId, productPlant#70368.systemId, internalUUID, productPlant#70368.internalUUID, plant, productPlant#70368.plant, product, productPlant#70368.product, blockedForReplenishmentStartingFrom, productPlant#70368.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#70368.productionAspect)) null else named_struct(productMovementPlants, productPlant#70368.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#70368.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#70368.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#70368.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#70368.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#70368.productionAspect.productPlanningPlants.minimumLotSize)), minimumSafetyStock, knownfloatingpointnormalized(normalizenanandzero(productPlant#70368.productionAspect.productPlanningPlants.minimumSafetyStock)), logisticalRoundingProfile, productPlant#70368.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#70368.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#70368.salesPlant, listing, productPlant#70368.listing)) AS productPlant#70368, timezonecode#70382, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#70401)) AS outboundUnit#70401, stockDatetime#70702, knownfloatingpointnormalized(transform(stockBatchQuantities#70703, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#85171)), lambda arg#85171, false))) AS stockBatchQuantities#70703, [7226582400000000] AS [7226582400000000]#85170]
Functions [1]: [partial_collect_list(rawDemands#69977, 0, 0)]
Aggregate Attributes [1]: [buf#73940]
Results [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000]#85170, buf#73941]
(353) ObjectHashAggregate
Input [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000]#85170, buf#73941]
Keys [9]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000]#85170]
Functions [1]: [collect_list(rawDemands#69977, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#69977, 0, 0)#70170]
Results [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#70704, collect_list(rawDemands#69977, 0, 0)#70170 AS rawDemands#70004]
(354) DeserializeToObject [codegen id : 105]
Input [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, stockBatchShelfLifeEndDatetimes#70704, rawDemands#70004]
Arguments: createexternalrow(invoke(product#70356.toString()), invoke(plant#70357.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#70358)), if (isnull(productPlant#70368)) null else createexternalrow(invoke(productPlant#70368.systemId.toString()), invoke(productPlant#70368.internalUUID.toString()), if (isnull(productPlant#70368.plant)) null else createexternalrow(invoke(productPlant#70368.plant.internalRefUUID.toString()), invoke(productPlant#70368.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#70368.product)) null else createexternalrow(invoke(productPlant#70368.product.internalRefUUID.toString()), invoke(productPlant#70368.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#70368.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#70368.productionAspect)) null else createexternalrow(if (isnull(productPlant#70368.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#70368.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#70368.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#70368.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#70368.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#70368.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#70368.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#70368.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#70368.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#70368.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#70368.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#70368.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#70368.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#70368.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#70368.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#70368.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#70368.salesPlant)) null else createexternalrow(if (isnull(productPlant#70368.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#70368.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#70368.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#70368.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#70382.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#70401)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#70702)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#70703, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#70704, 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#70004, 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#70342: org.apache.spark.sql.Row
(355) MapElements [codegen id : 105]
Input [1]: [obj#70342]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@22b451ac, obj#70347: org.apache.spark.sql.Row
(356) SerializeFromObject [codegen id : 105]
Input [1]: [obj#70347]
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#70352, 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#70353]
(357) Exchange
Input [2]: [product#70352, plant#70353]
Arguments: hashpartitioning(coalesce(plant#70353, ), isnull(plant#70353), coalesce(product#70352, ), isnull(product#70352), 25), ENSURE_REQUIREMENTS, [plan_id=128578]
(358) ShuffleQueryStage
Output [2]: [product#70352, plant#70353]
Arguments: 184
(359) AQEShuffleRead
Input [2]: [product#70352, plant#70353]
Arguments: local
(360) BroadcastExchange
Input [2]: [product#70352, plant#70353]
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=129190]
(361) BroadcastQueryStage
Output [2]: [product#70352, plant#70353]
Arguments: 186
(362) BroadcastHashJoin [codegen id : 108]
Left keys [4]: [coalesce(plant#69016, ), isnull(plant#69016), coalesce(product#69015, ), isnull(product#69015)]
Right keys [4]: [coalesce(plant#70353, ), isnull(plant#70353), coalesce(product#70352, ), isnull(product#70352)]
Join type: LeftOuter
Join condition: None
(363) Project [codegen id : 108]
Output [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Input [6]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867, product#70352, plant#70353]
(364) Exchange
Input [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: hashpartitioning(plant#69016, 25), ENSURE_REQUIREMENTS, [plan_id=129261]
(365) ShuffleQueryStage
Output [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: 187
(366) AQEShuffleRead
Input [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: local
(367) BroadcastExchange
Input [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true]),false), [plan_id=129311]
(368) BroadcastQueryStage
Output [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: 188
(369) ReusedExchange [Reuses operator id: 133]
Output [1]: [distributionCenters#70837]
(370) ShuffleQueryStage
Output [1]: [distributionCenters#70837]
Arguments: 87
(371) Generate [codegen id : 69]
Input [1]: [distributionCenters#70837]
Arguments: explode(distributionCenters#70837), false, [distributionCenters#70853]
(372) Filter [codegen id : 69]
Input [1]: [distributionCenters#70853]
Condition : (((size(distributionCenters#70853.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#70853.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#70853.internalRefUUID))
(373) Project [codegen id : 69]
Output [2]: [distributionCenters#70853.internalRefUUID AS _extract_internalRefUUID#71059, distributionCenters#70853.storageLocations.internalRefUUID AS _extract_internalRefUUID#71430]
Input [1]: [distributionCenters#70853]
(374) Generate [codegen id : 69]
Input [2]: [_extract_internalRefUUID#71059, _extract_internalRefUUID#71430]
Arguments: explode(_extract_internalRefUUID#71430), [_extract_internalRefUUID#71059], false, [storageLocations#70856]
(375) Filter [codegen id : 69]
Input [2]: [_extract_internalRefUUID#71059, storageLocations#70856]
Condition : isnotnull(storageLocations#70856)
(376) Project [codegen id : 69]
Output [2]: [_extract_internalRefUUID#71059 AS plantUuid#70860, storageLocations#70856 AS storageLocUuid#70864]
Input [2]: [_extract_internalRefUUID#71059, storageLocations#70856]
(377) BroadcastExchange
Input [2]: [plantUuid#70860, storageLocUuid#70864]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=60900]
(378) BroadcastQueryStage
Output [2]: [plantUuid#70860, storageLocUuid#70864]
Arguments: 143
(379) ReusedExchange [Reuses operator id: 169]
Output [1]: [plant#70870]
(380) ShuffleQueryStage
Output [1]: [plant#70870]
Arguments: 160
(381) HashAggregate
Input [1]: [plant#70870]
Keys [1]: [plant#70870]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70870]
(382) BroadcastHashJoin
Left keys [1]: [plantUuid#70860]
Right keys [1]: [plant#70870]
Join type: Inner
Join condition: None
(383) Project
Output [2]: [plantUuid#70860 AS plant#70808, storageLocUuid#70864]
Input [3]: [plantUuid#70860, storageLocUuid#70864, plant#70870]
(384) BroadcastHashJoin [codegen id : 109]
Left keys [1]: [plant#69016]
Right keys [1]: [plant#70808]
Join type: Inner
Join condition: None
(385) Project [codegen id : 109]
Output [5]: [plant#69016, product#69015, timezonecode#69080, stockDatetime#69867, storageLocUuid#70864]
Input [6]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867, plant#70808, storageLocUuid#70864]
(386) Scan parquet
Output [6]: [internalUUID#70739, id#70740, supplier#70742, isMarkedForDeletion#70745, items#70746, systemId#70738]
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>>>>>
(387) ColumnarToRow [codegen id : 55]
Input [6]: [internalUUID#70739, id#70740, supplier#70742, isMarkedForDeletion#70745, items#70746, systemId#70738]
(388) Filter [codegen id : 55]
Input [6]: [internalUUID#70739, id#70740, supplier#70742, isMarkedForDeletion#70745, items#70746, systemId#70738]
Condition : (((isnotnull(isMarkedForDeletion#70745) AND NOT isMarkedForDeletion#70745) AND (size(items#70746, true) > 0)) AND isnotnull(items#70746))
(389) Project [codegen id : 55]
Output [4]: [internalUUID#70739, id#70740, supplier#70742, items#70746]
Input [6]: [internalUUID#70739, id#70740, supplier#70742, isMarkedForDeletion#70745, items#70746, systemId#70738]
(390) Exchange
Input [4]: [internalUUID#70739, id#70740, supplier#70742, items#70746]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=47082]
(391) ShuffleQueryStage
Output [4]: [internalUUID#70739, id#70740, supplier#70742, items#70746]
Arguments: 96
(392) Generate [codegen id : 72]
Input [4]: [internalUUID#70739, id#70740, supplier#70742, items#70746]
Arguments: explode(items#70746), [internalUUID#70739, id#70740, supplier#70742], false, [item#70754]
(393) Filter [codegen id : 72]
Input [4]: [internalUUID#70739, id#70740, supplier#70742, item#70754]
Condition : ((((isnotnull(item#70754.deletionIndicator) AND isnotnull(item#70754.completeIndicator)) AND isnotnull(item#70754.returnIndicator)) AND ((NOT item#70754.deletionIndicator AND NOT item#70754.completeIndicator) AND NOT item#70754.returnIndicator)) AND ((isnotnull(item#70754.product.internalRefUUID) AND isnotnull(item#70754.plant.internalRefUUID)) AND isnotnull(item#70754.storageLocation.internalRefUUID)))
(394) Project [codegen id : 72]
Output [14]: [id#70740, internalUUID#70739, supplier#70742.internalRefUUID AS supplierUuid#70749, item#70754.plant.internalRefUUID AS plant#70763, item#70754.product.internalRefUUID AS product#70764, item#70754.plant.id AS externalPlantId#70765, item#70754.product.id AS externalProductId#70766, item#70754.storageLocation.internalRefUUID AS storageLocUuid#70767, item#70754.quantityUnit.code AS quantityUom#70768, item#70754.quantityUnit.internalRefUUID AS quantityUomUuid#70769, item#70754.quantityNumerator AS quantityNumerator#70771, item#70754.quantityDenominator AS quantityDenominator#70772, item#70754.scheduleLines AS scheduleLines#70774, item#70754.confirmations AS confirmations#70776]
Input [4]: [internalUUID#70739, id#70740, supplier#70742, item#70754]
(395) BroadcastExchange
Input [14]: [id#70740, internalUUID#70739, supplierUuid#70749, plant#70763, product#70764, externalPlantId#70765, externalProductId#70766, storageLocUuid#70767, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, confirmations#70776]
Arguments: HashedRelationBroadcastMode(List(input[4, string, true], input[3, string, true], input[7, string, true]),false), [plan_id=63658]
(396) BroadcastQueryStage
Output [14]: [id#70740, internalUUID#70739, supplierUuid#70749, plant#70763, product#70764, externalPlantId#70765, externalProductId#70766, storageLocUuid#70767, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, confirmations#70776]
Arguments: 147
(397) BroadcastHashJoin [codegen id : 109]
Left keys [3]: [product#69015, plant#69016, storageLocUuid#70864]
Right keys [3]: [product#70764, plant#70763, storageLocUuid#70767]
Join type: Inner
Join condition: None
(398) Project
Output [17]: [id#70740, internalUUID#70739, supplierUuid#70749, plant#70763, product#70764, externalPlantId#70765, externalProductId#70766, storageLocUuid#70767, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, confirmations#70776, stockDatetime#69867, timezonecode#69080, filter(confirmations#70776, lambdafunction(((NOT lambda x_1#70965.deletionIndicator AND lambda x_1#70965.isRelevantForConfirmation) AND isnotnull(lambda x_1#70965.confirmedDeliveryAt)), lambda x_1#70965, false)) AS validConfirmations#70964]
Input [19]: [plant#69016, product#69015, timezonecode#69080, stockDatetime#69867, storageLocUuid#70864, id#70740, internalUUID#70739, supplierUuid#70749, plant#70763, product#70764, externalPlantId#70765, externalProductId#70766, storageLocUuid#70767, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, confirmations#70776]
(399) ResultQueryStage
Output [17]: [id#70740, internalUUID#70739, supplierUuid#70749, plant#70763, product#70764, externalPlantId#70765, externalProductId#70766, storageLocUuid#70767, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, confirmations#70776, stockDatetime#69867, timezonecode#69080, validConfirmations#70964]
Arguments: 189
(400) Filter
Input [3]: [product#69015, plant#69016, orderDateTime#69017]
Condition : (isnotnull(plant#69016) AND isnotnull(product#69015))
(401) Exchange
Input [3]: [product#69015, plant#69016, orderDateTime#69017]
Arguments: hashpartitioning(product#69015, plant#69016, 25), REPARTITION_BY_NUM, [plan_id=31626]
(402) Project
Output [4]: [plant#69030.internalRefUUID AS _extract_internalRefUUID#71356, product#69032.internalRefUUID AS _extract_internalRefUUID#71355, productionAspect#69035.productMovementPlants.unitOfIssue.code AS _extract_code#71358, productionAspect#69035.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71359]
Input [4]: [plant#69030, product#69032, productionAspect#69035, systemId#69026]
(403) Exchange
Input [4]: [_extract_internalRefUUID#71356, _extract_internalRefUUID#71355, _extract_code#71358, _extract_internalRefUUID#71359]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30733]
(404) Project
Output [4]: [_extract_code#71358, _extract_internalRefUUID#71359, _extract_internalRefUUID#71355, _extract_internalRefUUID#71356]
Input [4]: [_extract_internalRefUUID#71356, _extract_internalRefUUID#71355, _extract_code#71358, _extract_internalRefUUID#71359]
(405) BroadcastExchange
Input [4]: [_extract_code#71358, _extract_internalRefUUID#71359, _extract_internalRefUUID#71355, _extract_internalRefUUID#71356]
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=32025]
(406) BroadcastHashJoin
Left keys [4]: [coalesce(product#69015, ), isnull(product#69015), coalesce(plant#69016, ), isnull(plant#69016)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71355, ), isnull(_extract_internalRefUUID#71355), coalesce(_extract_internalRefUUID#71356, ), isnull(_extract_internalRefUUID#71356)]
Join type: LeftOuter
Join condition: None
(407) Project
Output [5]: [product#69015, plant#69016, orderDateTime#69017, _extract_code#71358, _extract_internalRefUUID#71359]
Input [7]: [product#69015, plant#69016, orderDateTime#69017, _extract_code#71358, _extract_internalRefUUID#71359, _extract_internalRefUUID#71355, _extract_internalRefUUID#71356]
(408) Project
Output [2]: [internalUUID#69050, address#69056.timeZone.code AS timezonecode#69073]
Input [3]: [internalUUID#69050, address#69056, systemId#69049]
(409) Exchange
Input [2]: [internalUUID#69050, timezonecode#69073]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30739]
(410) BroadcastExchange
Input [2]: [internalUUID#69050, timezonecode#69073]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32032]
(411) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69016, ), isnull(plant#69016)]
Right keys [2]: [coalesce(internalUUID#69050, ), isnull(internalUUID#69050)]
Join type: LeftOuter
Join condition: None
(412) Project
Output [6]: [product#69015, plant#69016, orderDateTime#69017, _extract_code#71358, _extract_internalRefUUID#71359, CASE WHEN isnotnull(timezonecode#69073) THEN timezonecode#69073 ELSE UTC END AS timezonecode#69080]
Input [7]: [product#69015, plant#69016, orderDateTime#69017, _extract_code#71358, _extract_internalRefUUID#71359, internalUUID#69050, timezonecode#69073]
(413) Filter
Input [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
Condition : isnotnull(internalUUID#69082)
(414) Project
Output [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Input [4]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088, systemId#69081]
(415) Exchange
Input [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30749]
(416) BroadcastExchange
Input [3]: [internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32040]
(417) BroadcastHashJoin
Left keys [1]: [product#69015]
Right keys [1]: [internalUUID#69082]
Join type: LeftOuter
Join condition: None
(418) Project
Output [5]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, filter(unitOfMeasureConversions#69088, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71358) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71359)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#69086.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69086.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#69108]
Input [9]: [product#69015, plant#69016, orderDateTime#69017, _extract_code#71358, _extract_internalRefUUID#71359, timezonecode#69080, internalUUID#69082, baseUnitOfMeasure#69086, unitOfMeasureConversions#69088]
(419) Generate
Input [5]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, filteredUnitOfMeasureConversions#69108]
Arguments: explode(filteredUnitOfMeasureConversions#69108.quantityNumerator), [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, filteredUnitOfMeasureConversions#69108], true, [quantityNumerator#69123]
(420) Project
Output [5]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, filteredUnitOfMeasureConversions#69108.quantityDenominator AS _extract_quantityDenominator#70967]
Input [6]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, filteredUnitOfMeasureConversions#69108, quantityNumerator#69123]
(421) Generate
Input [5]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, _extract_quantityDenominator#70967]
Arguments: explode(_extract_quantityDenominator#70967), [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080], true, [quantityDenominator#69130]
(422) Project
Output [4]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080]
Input [5]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, quantityDenominator#69130]
(423) Sort
Input [4]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080]
Arguments: [product#69015 ASC NULLS FIRST, plant#69016 ASC NULLS FIRST], false, 0
(424) Filter
Input [6]: [internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, systemId#69251]
Condition : (isnotnull(plant#69254.internalRefUUID) AND isnotnull(product#69253.internalRefUUID))
(425) Project
Output [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
Input [6]: [internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, systemId#69251]
(426) Exchange
Input [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30761]
(427) BroadcastExchange
Input [6]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256]
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=32102]
(428) Filter
Input [2]: [marketUnit#69147, distributionCenters#69161]
Condition : (((marketUnit#69147 <=> Daily_grocery) AND (size(distributionCenters#69161, true) > 0)) AND isnotnull(distributionCenters#69161))
(429) Project
Output [1]: [distributionCenters#69161]
Input [2]: [marketUnit#69147, distributionCenters#69161]
(430) Exchange
Input [1]: [distributionCenters#69161]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30765]
(431) Generate
Input [1]: [distributionCenters#69161]
Arguments: explode(distributionCenters#69161), false, [distributionCenters#69184]
(432) Filter
Input [1]: [distributionCenters#69184]
Condition : (((size(distributionCenters#69184.storageLocations, true) > 0) AND isnotnull(distributionCenters#69184.storageLocations)) AND isnotnull(distributionCenters#69184.internalRefUUID))
(433) Project
Output [2]: [distributionCenters#69184.internalRefUUID AS _extract_internalRefUUID#70975, distributionCenters#69184.storageLocations AS _extract_storageLocations#70976]
Input [1]: [distributionCenters#69184]
(434) Generate
Input [2]: [_extract_internalRefUUID#70975, _extract_storageLocations#70976]
Arguments: explode(_extract_storageLocations#70976), [_extract_internalRefUUID#70975], false, [storageLocations#69198]
(435) Project
Output [3]: [_extract_internalRefUUID#70975 AS plantUuid#69189, storageLocations#69198.id AS storageLocId#69201, storageLocations#69198.internalRefUUID AS storageLocUuid#69202]
Input [2]: [_extract_internalRefUUID#70975, storageLocations#69198]
(436) BroadcastExchange
Input [3]: [plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32091]
(437) Filter
Input [2]: [product#69783, plant#69784]
Condition : isnotnull(plant#69784)
(438) Exchange
Input [2]: [product#69783, plant#69784]
Arguments: hashpartitioning(product#69783, plant#69784, 25), REPARTITION_BY_NUM, [plan_id=31649]
(439) Scan parquet
Output [4]: [plant#69789, product#69790, productionAspect#69792, systemId#69787]
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>>>>
(440) Project
Output [4]: [plant#69789.internalRefUUID AS _extract_internalRefUUID#71366, product#69790.internalRefUUID AS _extract_internalRefUUID#71363, productionAspect#69792.productMovementPlants.unitOfIssue.code AS _extract_code#71364, productionAspect#69792.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71365]
Input [4]: [plant#69789, product#69790, productionAspect#69792, systemId#69787]
(441) Exchange
Input [4]: [_extract_internalRefUUID#71366, _extract_internalRefUUID#71363, _extract_code#71364, _extract_internalRefUUID#71365]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30777]
(442) Project
Output [4]: [_extract_code#71364, _extract_internalRefUUID#71365, _extract_internalRefUUID#71363, _extract_internalRefUUID#71366]
Input [4]: [_extract_internalRefUUID#71366, _extract_internalRefUUID#71363, _extract_code#71364, _extract_internalRefUUID#71365]
(443) BroadcastExchange
Input [4]: [_extract_code#71364, _extract_internalRefUUID#71365, _extract_internalRefUUID#71363, _extract_internalRefUUID#71366]
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=32054]
(444) BroadcastHashJoin
Left keys [4]: [coalesce(product#69783, ), isnull(product#69783), coalesce(plant#69784, ), isnull(plant#69784)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71363, ), isnull(_extract_internalRefUUID#71363), coalesce(_extract_internalRefUUID#71366, ), isnull(_extract_internalRefUUID#71366)]
Join type: LeftOuter
Join condition: None
(445) Project
Output [4]: [product#69783, plant#69784, _extract_code#71364, _extract_internalRefUUID#71365]
Input [6]: [product#69783, plant#69784, _extract_code#71364, _extract_internalRefUUID#71365, _extract_internalRefUUID#71363, _extract_internalRefUUID#71366]
(446) Project
Output [1]: [internalUUID#69810]
Input [2]: [internalUUID#69810, systemId#69809]
(447) Exchange
Input [1]: [internalUUID#69810]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30783]
(448) BroadcastExchange
Input [1]: [internalUUID#69810]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32058]
(449) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69784, ), isnull(plant#69784)]
Right keys [2]: [coalesce(internalUUID#69810, ), isnull(internalUUID#69810)]
Join type: LeftOuter
Join condition: None
(450) Project
Output [4]: [product#69783, plant#69784, _extract_code#71364, _extract_internalRefUUID#71365]
Input [5]: [product#69783, plant#69784, _extract_code#71364, _extract_internalRefUUID#71365, internalUUID#69810]
(451) Scan parquet
Output [4]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844, systemId#69837]
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>>>
(452) Filter
Input [4]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844, systemId#69837]
Condition : isnotnull(internalUUID#69838)
(453) Project
Output [3]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844]
Input [4]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844, systemId#69837]
(454) Exchange
Input [3]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30789]
(455) BroadcastExchange
Input [3]: [internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32065]
(456) BroadcastHashJoin
Left keys [1]: [product#69783]
Right keys [1]: [internalUUID#69838]
Join type: LeftOuter
Join condition: None
(457) Project
Output [2]: [plant#69784, filter(unitOfMeasureConversions#69844, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71364) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71365)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#69842.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69842.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#69850]
Input [7]: [product#69783, plant#69784, _extract_code#71364, _extract_internalRefUUID#71365, internalUUID#69838, baseUnitOfMeasure#69842, unitOfMeasureConversions#69844]
(458) Generate
Input [2]: [plant#69784, filteredUnitOfMeasureConversions#69850]
Arguments: explode(filteredUnitOfMeasureConversions#69850.quantityNumerator), [plant#69784, filteredUnitOfMeasureConversions#69850], true, [quantityNumerator#69852]
(459) Project
Output [2]: [plant#69784, filteredUnitOfMeasureConversions#69850.quantityDenominator AS _extract_quantityDenominator#70979]
Input [3]: [plant#69784, filteredUnitOfMeasureConversions#69850, quantityNumerator#69852]
(460) Generate
Input [2]: [plant#69784, _extract_quantityDenominator#70979]
Arguments: explode(_extract_quantityDenominator#70979), [plant#69784], true, [quantityDenominator#69853]
(461) Project
Output [1]: [plant#69784]
Input [2]: [plant#69784, quantityDenominator#69853]
(462) HashAggregate
Input [1]: [plant#69784]
Keys [1]: [plant#69784]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69784]
(463) Exchange
Input [1]: [plant#69784]
Arguments: hashpartitioning(plant#69784, 25), ENSURE_REQUIREMENTS, [plan_id=32087]
(464) HashAggregate
Input [1]: [plant#69784]
Keys [1]: [plant#69784]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69784]
(465) BroadcastHashJoin
Left keys [1]: [plantUuid#69189]
Right keys [1]: [plant#69784]
Join type: Inner
Join condition: None
(466) Project
Output [3]: [plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
Input [4]: [plantUuid#69189, storageLocId#69201, storageLocUuid#69202, plant#69784]
(467) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69254.internalRefUUID, ), isnull(plant#69254.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#69189, ), isnull(plantUuid#69189)]
Join type: Inner
Join condition: None
(468) Generate
Input [9]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
Arguments: explode(filter(stockQuantities#69256, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#69202) AND (lambda x#69270.storageLocation.Id = storageLocId#69201)), lambda x#69270, false))), [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, plantUuid#69189], false, [stockQuantity#69271]
(469) ObjectHashAggregate
Input [7]: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, plantUuid#69189, stockQuantity#69271]
Keys [5]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251]
Functions [2]: [partial_first(calculationDateTime#69255, false), partial_collect_list(stockQuantity#69271, 0, 0)]
Aggregate Attributes [3]: [first#73908, valueSet#73909, buf#73910]
Results [8]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251, first#73911, valueSet#73912, buf#73913]
(470) ObjectHashAggregate
Input [8]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251, first#73911, valueSet#73912, buf#73913]
Keys [5]: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251]
Functions [2]: [first(calculationDateTime#69255, false), collect_list(stockQuantity#69271, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#69255)()#69321, collect_list(stockQuantity#69271, 0, 0)#69322]
Results [4]: [product#69253, plant#69254, first(calculationDateTime#69255)()#69321 AS calculationDateTime#69308, collect_list(stockQuantity#69271, 0, 0)#69322 AS stockQuantities#69309]
(471) Filter
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantities#69309]
Condition : ((size(stockQuantities#69309, true) > 0) AND isnotnull(calculationDateTime#69308))
(472) Generate
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantities#69309]
Arguments: explode(stockQuantities#69309), [product#69253, plant#69254, calculationDateTime#69308], false, [stockQuantity#69367]
(473) Filter
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantity#69367]
Condition : (((isnotnull(stockQuantity#69367.specialStockIndicator.code) AND isnotnull(stockQuantity#69367.stockType.code)) AND (stockQuantity#69367.specialStockIndicator.code = )) AND (stockQuantity#69367.stockType.code = 01))
(474) Project
Output [4]: [plant#69254.internalRefUUID AS plantUuid#69370, product#69253.internalRefUUID AS productUuid#69372, calculationDateTime#69308, stockQuantity#69367.storagelocation.id AS storageLocId#69373]
Input [4]: [product#69253, plant#69254, calculationDateTime#69308, stockQuantity#69367]
(475) Exchange
Input [4]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373]
Arguments: hashpartitioning(productUuid#69372, plantUuid#69370, 25), ENSURE_REQUIREMENTS, [plan_id=32155]
(476) Sort
Input [4]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373]
Arguments: [productUuid#69372 ASC NULLS FIRST, plantUuid#69370 ASC NULLS FIRST], false, 0
(477) Filter
Input [3]: [product#69391, plant#69392, orderDateTime#69393]
Condition : ((isnotnull(orderDateTime#69393) AND isnotnull(plant#69392)) AND isnotnull(product#69391))
(478) Exchange
Input [3]: [product#69391, plant#69392, orderDateTime#69393]
Arguments: hashpartitioning(product#69391, plant#69392, 25), REPARTITION_BY_NUM, [plan_id=31694]
(479) Scan parquet
Output [4]: [plant#69397, product#69398, productionAspect#69400, systemId#69395]
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>>>>
(480) Project
Output [4]: [plant#69397.internalRefUUID AS _extract_internalRefUUID#71374, product#69398.internalRefUUID AS _extract_internalRefUUID#71371, productionAspect#69400.productMovementPlants.unitOfIssue.code AS _extract_code#71372, productionAspect#69400.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71373]
Input [4]: [plant#69397, product#69398, productionAspect#69400, systemId#69395]
(481) Exchange
Input [4]: [_extract_internalRefUUID#71374, _extract_internalRefUUID#71371, _extract_code#71372, _extract_internalRefUUID#71373]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30828]
(482) Project
Output [4]: [_extract_code#71372, _extract_internalRefUUID#71373, _extract_internalRefUUID#71371, _extract_internalRefUUID#71374]
Input [4]: [_extract_internalRefUUID#71374, _extract_internalRefUUID#71371, _extract_code#71372, _extract_internalRefUUID#71373]
(483) BroadcastExchange
Input [4]: [_extract_code#71372, _extract_internalRefUUID#71373, _extract_internalRefUUID#71371, _extract_internalRefUUID#71374]
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=32120]
(484) BroadcastHashJoin
Left keys [4]: [coalesce(product#69391, ), isnull(product#69391), coalesce(plant#69392, ), isnull(plant#69392)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71371, ), isnull(_extract_internalRefUUID#71371), coalesce(_extract_internalRefUUID#71374, ), isnull(_extract_internalRefUUID#71374)]
Join type: LeftOuter
Join condition: None
(485) Project
Output [5]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#71372, _extract_internalRefUUID#71373]
Input [7]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#71372, _extract_internalRefUUID#71373, _extract_internalRefUUID#71371, _extract_internalRefUUID#71374]
(486) Scan parquet
Output [2]: [internalUUID#69405, systemId#69404]
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>
(487) Project
Output [1]: [internalUUID#69405]
Input [2]: [internalUUID#69405, systemId#69404]
(488) Exchange
Input [1]: [internalUUID#69405]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30834]
(489) BroadcastExchange
Input [1]: [internalUUID#69405]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32140]
(490) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69392, ), isnull(plant#69392)]
Right keys [2]: [coalesce(internalUUID#69405, ), isnull(internalUUID#69405)]
Join type: LeftOuter
Join condition: None
(491) Project
Output [5]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#71372, _extract_internalRefUUID#71373]
Input [6]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#71372, _extract_internalRefUUID#71373, internalUUID#69405]
(492) Scan parquet
Output [4]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425, systemId#69418]
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>>>
(493) Filter
Input [4]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425, systemId#69418]
Condition : isnotnull(internalUUID#69419)
(494) Project
Output [3]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425]
Input [4]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425, systemId#69418]
(495) Exchange
Input [3]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30840]
(496) BroadcastExchange
Input [3]: [internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32144]
(497) BroadcastHashJoin
Left keys [1]: [product#69391]
Right keys [1]: [internalUUID#69419]
Join type: LeftOuter
Join condition: None
(498) Project
Output [4]: [product#69391, plant#69392, orderDateTime#69393, filter(unitOfMeasureConversions#69425, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71372) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71373)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#69423.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69423.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#69430]
Input [8]: [product#69391, plant#69392, orderDateTime#69393, _extract_code#71372, _extract_internalRefUUID#71373, internalUUID#69419, baseUnitOfMeasure#69423, unitOfMeasureConversions#69425]
(499) Generate
Input [4]: [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430]
Arguments: explode(filteredUnitOfMeasureConversions#69430.quantityNumerator), [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430], true, [quantityNumerator#69431]
(500) Project
Output [4]: [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430.quantityDenominator AS _extract_quantityDenominator#70987]
Input [5]: [product#69391, plant#69392, orderDateTime#69393, filteredUnitOfMeasureConversions#69430, quantityNumerator#69431]
(501) Generate
Input [4]: [product#69391, plant#69392, orderDateTime#69393, _extract_quantityDenominator#70987]
Arguments: explode(_extract_quantityDenominator#70987), [product#69391, plant#69392, orderDateTime#69393], true, [quantityDenominator#69432]
(502) Project
Output [3]: [product#69391, plant#69392, orderDateTime#69393]
Input [4]: [product#69391, plant#69392, orderDateTime#69393, quantityDenominator#69432]
(503) Sort
Input [3]: [product#69391, plant#69392, orderDateTime#69393]
Arguments: [product#69391 ASC NULLS FIRST, plant#69392 ASC NULLS FIRST], false, 0
(504) SortMergeJoin
Left keys [2]: [productUuid#69372, plantUuid#69370]
Right keys [2]: [product#69391, plant#69392]
Join type: Inner
Join condition: (calculationDateTime#69308 <= orderDateTime#69393)
(505) Project
Output [4]: [plantUuid#69370 AS plant#69448, productUuid#69372 AS product#69449, storageLocId#69373, calculationDateTime#69308]
Input [7]: [plantUuid#69370, productUuid#69372, calculationDateTime#69308, storageLocId#69373, product#69391, plant#69392, orderDateTime#69393]
(506) Exchange
Input [4]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308]
Arguments: hashpartitioning(coalesce(plant#69448, ), isnull(plant#69448), coalesce(product#69449, ), isnull(product#69449), coalesce(storageLocId#69373, ), isnull(storageLocId#69373), coalesce(calculationDateTime#69308, 1970-01-01 00:00:00), isnull(calculationDateTime#69308), 25), ENSURE_REQUIREMENTS, [plan_id=32282]
(507) Sort
Input [4]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308]
Arguments: [coalesce(plant#69448, ) ASC NULLS FIRST, isnull(plant#69448) ASC NULLS FIRST, coalesce(product#69449, ) ASC NULLS FIRST, isnull(product#69449) ASC NULLS FIRST, coalesce(storageLocId#69373, ) ASC NULLS FIRST, isnull(storageLocId#69373) ASC NULLS FIRST, coalesce(calculationDateTime#69308, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#69308) ASC NULLS FIRST], false, 0
(508) Scan parquet
Output [6]: [internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597, systemId#69592]
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>>>>>
(509) Filter
Input [6]: [internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597, systemId#69592]
Condition : (isnotnull(plant#69595.internalRefUUID) AND isnotnull(product#69594.internalRefUUID))
(510) Project
Output [6]: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597]
Input [6]: [internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597, systemId#69592]
(511) Exchange
Input [6]: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30859]
(512) BroadcastExchange
Input [6]: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597]
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=32213]
(513) Scan parquet
Output [2]: [marketUnit#69598, distributionCenters#69604]
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>>>>>
(514) Filter
Input [2]: [marketUnit#69598, distributionCenters#69604]
Condition : (((marketUnit#69598 <=> Daily_grocery) AND (size(distributionCenters#69604, true) > 0)) AND isnotnull(distributionCenters#69604))
(515) Project
Output [1]: [distributionCenters#69604]
Input [2]: [marketUnit#69598, distributionCenters#69604]
(516) Exchange
Input [1]: [distributionCenters#69604]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30863]
(517) Generate
Input [1]: [distributionCenters#69604]
Arguments: explode(distributionCenters#69604), false, [distributionCenters#69622]
(518) Filter
Input [1]: [distributionCenters#69622]
Condition : (((size(distributionCenters#69622.storageLocations, true) > 0) AND isnotnull(distributionCenters#69622.storageLocations)) AND isnotnull(distributionCenters#69622.internalRefUUID))
(519) Project
Output [2]: [distributionCenters#69622.internalRefUUID AS _extract_internalRefUUID#70995, distributionCenters#69622.storageLocations AS _extract_storageLocations#70996]
Input [1]: [distributionCenters#69622]
(520) Generate
Input [2]: [_extract_internalRefUUID#70995, _extract_storageLocations#70996]
Arguments: explode(_extract_storageLocations#70996), [_extract_internalRefUUID#70995], false, [storageLocations#69623]
(521) Project
Output [3]: [_extract_internalRefUUID#70995 AS plantUuid#69625, storageLocations#69623.id AS storageLocId#69626, storageLocations#69623.internalRefUUID AS storageLocUuid#69627]
Input [2]: [_extract_internalRefUUID#70995, storageLocations#69623]
(522) BroadcastExchange
Input [3]: [plantUuid#69625, storageLocId#69626, storageLocUuid#69627]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32205]
(523) Scan parquet
Output [2]: [product#69628, plant#69629]
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/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(524) Filter
Input [2]: [product#69628, plant#69629]
Condition : isnotnull(plant#69629)
(525) Exchange
Input [2]: [product#69628, plant#69629]
Arguments: hashpartitioning(product#69628, plant#69629, 25), REPARTITION_BY_NUM, [plan_id=31721]
(526) Scan parquet
Output [4]: [plant#69634, product#69635, productionAspect#69637, systemId#69632]
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>>>>
(527) Project
Output [4]: [plant#69634.internalRefUUID AS _extract_internalRefUUID#71382, product#69635.internalRefUUID AS _extract_internalRefUUID#71381, productionAspect#69637.productMovementPlants.unitOfIssue.code AS _extract_code#71379, productionAspect#69637.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71380]
Input [4]: [plant#69634, product#69635, productionAspect#69637, systemId#69632]
(528) Exchange
Input [4]: [_extract_internalRefUUID#71382, _extract_internalRefUUID#71381, _extract_code#71379, _extract_internalRefUUID#71380]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30875]
(529) Project
Output [4]: [_extract_code#71379, _extract_internalRefUUID#71380, _extract_internalRefUUID#71381, _extract_internalRefUUID#71382]
Input [4]: [_extract_internalRefUUID#71382, _extract_internalRefUUID#71381, _extract_code#71379, _extract_internalRefUUID#71380]
(530) BroadcastExchange
Input [4]: [_extract_code#71379, _extract_internalRefUUID#71380, _extract_internalRefUUID#71381, _extract_internalRefUUID#71382]
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=32165]
(531) BroadcastHashJoin
Left keys [4]: [coalesce(product#69628, ), isnull(product#69628), coalesce(plant#69629, ), isnull(plant#69629)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71381, ), isnull(_extract_internalRefUUID#71381), coalesce(_extract_internalRefUUID#71382, ), isnull(_extract_internalRefUUID#71382)]
Join type: LeftOuter
Join condition: None
(532) Project
Output [4]: [product#69628, plant#69629, _extract_code#71379, _extract_internalRefUUID#71380]
Input [6]: [product#69628, plant#69629, _extract_code#71379, _extract_internalRefUUID#71380, _extract_internalRefUUID#71381, _extract_internalRefUUID#71382]
(533) Scan parquet
Output [2]: [internalUUID#69642, systemId#69641]
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>
(534) Project
Output [1]: [internalUUID#69642]
Input [2]: [internalUUID#69642, systemId#69641]
(535) Exchange
Input [1]: [internalUUID#69642]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30881]
(536) BroadcastExchange
Input [1]: [internalUUID#69642]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32173]
(537) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69629, ), isnull(plant#69629)]
Right keys [2]: [coalesce(internalUUID#69642, ), isnull(internalUUID#69642)]
Join type: LeftOuter
Join condition: None
(538) Project
Output [4]: [product#69628, plant#69629, _extract_code#71379, _extract_internalRefUUID#71380]
Input [5]: [product#69628, plant#69629, _extract_code#71379, _extract_internalRefUUID#71380, internalUUID#69642]
(539) Scan parquet
Output [4]: [internalUUID#69656, baseUnitOfMeasure#69660, unitOfMeasureConversions#69662, systemId#69655]
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>>>
(540) Filter
Input [4]: [internalUUID#69656, baseUnitOfMeasure#69660, unitOfMeasureConversions#69662, systemId#69655]
Condition : isnotnull(internalUUID#69656)
(541) Project
Output [3]: [internalUUID#69656, baseUnitOfMeasure#69660, unitOfMeasureConversions#69662]
Input [4]: [internalUUID#69656, baseUnitOfMeasure#69660, unitOfMeasureConversions#69662, systemId#69655]
(542) Exchange
Input [3]: [internalUUID#69656, baseUnitOfMeasure#69660, unitOfMeasureConversions#69662]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30887]
(543) BroadcastExchange
Input [3]: [internalUUID#69656, baseUnitOfMeasure#69660, unitOfMeasureConversions#69662]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32183]
(544) BroadcastHashJoin
Left keys [1]: [product#69628]
Right keys [1]: [internalUUID#69656]
Join type: LeftOuter
Join condition: None
(545) Project
Output [2]: [plant#69629, filter(unitOfMeasureConversions#69662, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71379) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71380)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#69660.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69660.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#69667]
Input [7]: [product#69628, plant#69629, _extract_code#71379, _extract_internalRefUUID#71380, internalUUID#69656, baseUnitOfMeasure#69660, unitOfMeasureConversions#69662]
(546) Generate
Input [2]: [plant#69629, filteredUnitOfMeasureConversions#69667]
Arguments: explode(filteredUnitOfMeasureConversions#69667.quantityNumerator), [plant#69629, filteredUnitOfMeasureConversions#69667], true, [quantityNumerator#69668]
(547) Project
Output [2]: [plant#69629, filteredUnitOfMeasureConversions#69667.quantityDenominator AS _extract_quantityDenominator#70999]
Input [3]: [plant#69629, filteredUnitOfMeasureConversions#69667, quantityNumerator#69668]
(548) Generate
Input [2]: [plant#69629, _extract_quantityDenominator#70999]
Arguments: explode(_extract_quantityDenominator#70999), [plant#69629], true, [quantityDenominator#69669]
(549) Project
Output [1]: [plant#69629]
Input [2]: [plant#69629, quantityDenominator#69669]
(550) HashAggregate
Input [1]: [plant#69629]
Keys [1]: [plant#69629]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69629]
(551) Exchange
Input [1]: [plant#69629]
Arguments: hashpartitioning(plant#69629, 25), ENSURE_REQUIREMENTS, [plan_id=32199]
(552) HashAggregate
Input [1]: [plant#69629]
Keys [1]: [plant#69629]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69629]
(553) BroadcastHashJoin
Left keys [1]: [plantUuid#69625]
Right keys [1]: [plant#69629]
Join type: Inner
Join condition: None
(554) Project
Output [3]: [plantUuid#69625, storageLocId#69626, storageLocUuid#69627]
Input [4]: [plantUuid#69625, storageLocId#69626, storageLocUuid#69627, plant#69629]
(555) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69595.internalRefUUID, ), isnull(plant#69595.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#69625, ), isnull(plantUuid#69625)]
Join type: Inner
Join condition: None
(556) Generate
Input [9]: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597, plantUuid#69625, storageLocId#69626, storageLocUuid#69627]
Arguments: explode(filter(stockQuantities#69597, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#69627) AND (lambda x#69270.storageLocation.Id = storageLocId#69626)), lambda x#69270, false))), [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, plantUuid#69625], false, [stockQuantity#69672]
(557) ObjectHashAggregate
Input [7]: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, plantUuid#69625, stockQuantity#69672]
Keys [5]: [plantUuid#69625, internalUUID#69593, plant#69595, product#69594, systemId#69592]
Functions [2]: [partial_first(calculationDateTime#69596, false), partial_collect_list(stockQuantity#69672, 0, 0)]
Aggregate Attributes [3]: [first#73918, valueSet#73919, buf#73920]
Results [8]: [plantUuid#69625, internalUUID#69593, plant#69595, product#69594, systemId#69592, first#73921, valueSet#73922, buf#73923]
(558) ObjectHashAggregate
Input [8]: [plantUuid#69625, internalUUID#69593, plant#69595, product#69594, systemId#69592, first#73921, valueSet#73922, buf#73923]
Keys [5]: [plantUuid#69625, internalUUID#69593, plant#69595, product#69594, systemId#69592]
Functions [2]: [first(calculationDateTime#69596, false), collect_list(stockQuantity#69672, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#69596)()#69321, collect_list(stockQuantity#69672, 0, 0)#69322]
Results [4]: [product#69594, plant#69595, first(calculationDateTime#69596)()#69321 AS calculationDateTime#69673, collect_list(stockQuantity#69672, 0, 0)#69322 AS stockQuantities#69674]
(559) Filter
Input [4]: [product#69594, plant#69595, calculationDateTime#69673, stockQuantities#69674]
Condition : ((size(stockQuantities#69674, true) > 0) AND isnotnull(calculationDateTime#69673))
(560) Generate
Input [4]: [product#69594, plant#69595, calculationDateTime#69673, stockQuantities#69674]
Arguments: explode(stockQuantities#69674), [product#69594, plant#69595, calculationDateTime#69673], false, [stockQuantity#69675]
(561) Filter
Input [4]: [product#69594, plant#69595, calculationDateTime#69673, stockQuantity#69675]
Condition : (((isnotnull(stockQuantity#69675.specialStockIndicator.code) AND isnotnull(stockQuantity#69675.stockType.code)) AND (stockQuantity#69675.specialStockIndicator.code = )) AND (stockQuantity#69675.stockType.code = 01))
(562) Project
Output [4]: [plant#69595.internalRefUUID AS plantUuid#69677, product#69594.internalRefUUID AS productUuid#69679, calculationDateTime#69673, stockQuantity#69675.storagelocation.id AS storageLocId#69680]
Input [4]: [product#69594, plant#69595, calculationDateTime#69673, stockQuantity#69675]
(563) Exchange
Input [4]: [plantUuid#69677, productUuid#69679, calculationDateTime#69673, storageLocId#69680]
Arguments: hashpartitioning(productUuid#69679, plantUuid#69677, 25), ENSURE_REQUIREMENTS, [plan_id=32265]
(564) Sort
Input [4]: [plantUuid#69677, productUuid#69679, calculationDateTime#69673, storageLocId#69680]
Arguments: [productUuid#69679 ASC NULLS FIRST, plantUuid#69677 ASC NULLS FIRST], false, 0
(565) Scan parquet
Output [3]: [product#69685, plant#69686, orderDateTime#69687]
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/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(566) Filter
Input [3]: [product#69685, plant#69686, orderDateTime#69687]
Condition : ((isnotnull(orderDateTime#69687) AND isnotnull(plant#69686)) AND isnotnull(product#69685))
(567) Exchange
Input [3]: [product#69685, plant#69686, orderDateTime#69687]
Arguments: hashpartitioning(product#69685, plant#69686, 25), REPARTITION_BY_NUM, [plan_id=31766]
(568) Scan parquet
Output [4]: [plant#69691, product#69692, productionAspect#69694, systemId#69689]
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>>>>
(569) Project
Output [4]: [plant#69691.internalRefUUID AS _extract_internalRefUUID#71383, product#69692.internalRefUUID AS _extract_internalRefUUID#71384, productionAspect#69694.productMovementPlants.unitOfIssue.code AS _extract_code#71385, productionAspect#69694.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71386]
Input [4]: [plant#69691, product#69692, productionAspect#69694, systemId#69689]
(570) Exchange
Input [4]: [_extract_internalRefUUID#71383, _extract_internalRefUUID#71384, _extract_code#71385, _extract_internalRefUUID#71386]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30912]
(571) Project
Output [4]: [_extract_code#71385, _extract_internalRefUUID#71386, _extract_internalRefUUID#71384, _extract_internalRefUUID#71383]
Input [4]: [_extract_internalRefUUID#71383, _extract_internalRefUUID#71384, _extract_code#71385, _extract_internalRefUUID#71386]
(572) BroadcastExchange
Input [4]: [_extract_code#71385, _extract_internalRefUUID#71386, _extract_internalRefUUID#71384, _extract_internalRefUUID#71383]
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=32230]
(573) BroadcastHashJoin
Left keys [4]: [coalesce(product#69685, ), isnull(product#69685), coalesce(plant#69686, ), isnull(plant#69686)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71384, ), isnull(_extract_internalRefUUID#71384), coalesce(_extract_internalRefUUID#71383, ), isnull(_extract_internalRefUUID#71383)]
Join type: LeftOuter
Join condition: None
(574) Project
Output [5]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#71385, _extract_internalRefUUID#71386]
Input [7]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#71385, _extract_internalRefUUID#71386, _extract_internalRefUUID#71384, _extract_internalRefUUID#71383]
(575) Scan parquet
Output [2]: [internalUUID#69699, systemId#69698]
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>
(576) Project
Output [1]: [internalUUID#69699]
Input [2]: [internalUUID#69699, systemId#69698]
(577) Exchange
Input [1]: [internalUUID#69699]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30918]
(578) BroadcastExchange
Input [1]: [internalUUID#69699]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32238]
(579) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69686, ), isnull(plant#69686)]
Right keys [2]: [coalesce(internalUUID#69699, ), isnull(internalUUID#69699)]
Join type: LeftOuter
Join condition: None
(580) Project
Output [5]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#71385, _extract_internalRefUUID#71386]
Input [6]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#71385, _extract_internalRefUUID#71386, internalUUID#69699]
(581) Scan parquet
Output [4]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719, systemId#69712]
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>>>
(582) Filter
Input [4]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719, systemId#69712]
Condition : isnotnull(internalUUID#69713)
(583) Project
Output [3]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719]
Input [4]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719, systemId#69712]
(584) Exchange
Input [3]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30924]
(585) BroadcastExchange
Input [3]: [internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32247]
(586) BroadcastHashJoin
Left keys [1]: [product#69685]
Right keys [1]: [internalUUID#69713]
Join type: LeftOuter
Join condition: None
(587) Project
Output [4]: [product#69685, plant#69686, orderDateTime#69687, filter(unitOfMeasureConversions#69719, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71385) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71386)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#69717.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69717.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#69724]
Input [8]: [product#69685, plant#69686, orderDateTime#69687, _extract_code#71385, _extract_internalRefUUID#71386, internalUUID#69713, baseUnitOfMeasure#69717, unitOfMeasureConversions#69719]
(588) Generate
Input [4]: [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724]
Arguments: explode(filteredUnitOfMeasureConversions#69724.quantityNumerator), [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724], true, [quantityNumerator#69725]
(589) Project
Output [4]: [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724.quantityDenominator AS _extract_quantityDenominator#71006]
Input [5]: [product#69685, plant#69686, orderDateTime#69687, filteredUnitOfMeasureConversions#69724, quantityNumerator#69725]
(590) Generate
Input [4]: [product#69685, plant#69686, orderDateTime#69687, _extract_quantityDenominator#71006]
Arguments: explode(_extract_quantityDenominator#71006), [product#69685, plant#69686, orderDateTime#69687], true, [quantityDenominator#69726]
(591) Project
Output [3]: [product#69685, plant#69686, orderDateTime#69687]
Input [4]: [product#69685, plant#69686, orderDateTime#69687, quantityDenominator#69726]
(592) Sort
Input [3]: [product#69685, plant#69686, orderDateTime#69687]
Arguments: [product#69685 ASC NULLS FIRST, plant#69686 ASC NULLS FIRST], false, 0
(593) SortMergeJoin
Left keys [2]: [productUuid#69679, plantUuid#69677]
Right keys [2]: [product#69685, plant#69686]
Join type: Inner
Join condition: (calculationDateTime#69673 <= orderDateTime#69687)
(594) Project
Output [4]: [plantUuid#69677 AS plant#69729, productUuid#69679 AS product#69730, storageLocId#69680, calculationDateTime#69673]
Input [7]: [plantUuid#69677, productUuid#69679, calculationDateTime#69673, storageLocId#69680, product#69685, plant#69686, orderDateTime#69687]
(595) HashAggregate
Input [4]: [plant#69729, product#69730, storageLocId#69680, calculationDateTime#69673]
Keys [3]: [plant#69729, product#69730, storageLocId#69680]
Functions [1]: [partial_max(calculationDateTime#69673)]
Aggregate Attributes [1]: [max#73916]
Results [4]: [plant#69729, product#69730, storageLocId#69680, max#73917]
(596) HashAggregate
Input [4]: [plant#69729, product#69730, storageLocId#69680, max#73917]
Keys [3]: [plant#69729, product#69730, storageLocId#69680]
Functions [1]: [max(calculationDateTime#69673)]
Aggregate Attributes [1]: [max(calculationDateTime#69673)#69456]
Results [4]: [plant#69729, product#69730, storageLocId#69680, max(calculationDateTime#69673)#69456 AS max_calc_datetime#69450]
(597) Exchange
Input [4]: [plant#69729, product#69730, storageLocId#69680, max_calc_datetime#69450]
Arguments: hashpartitioning(coalesce(plant#69729, ), isnull(plant#69729), coalesce(product#69730, ), isnull(product#69730), coalesce(storageLocId#69680, ), isnull(storageLocId#69680), coalesce(max_calc_datetime#69450, 1970-01-01 00:00:00), isnull(max_calc_datetime#69450), 25), ENSURE_REQUIREMENTS, [plan_id=32284]
(598) Sort
Input [4]: [plant#69729, product#69730, storageLocId#69680, max_calc_datetime#69450]
Arguments: [coalesce(plant#69729, ) ASC NULLS FIRST, isnull(plant#69729) ASC NULLS FIRST, coalesce(product#69730, ) ASC NULLS FIRST, isnull(product#69730) ASC NULLS FIRST, coalesce(storageLocId#69680, ) ASC NULLS FIRST, isnull(storageLocId#69680) ASC NULLS FIRST, coalesce(max_calc_datetime#69450, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#69450) ASC NULLS FIRST], false, 0
(599) SortMergeJoin
Left keys [8]: [coalesce(plant#69448, ), isnull(plant#69448), coalesce(product#69449, ), isnull(product#69449), coalesce(storageLocId#69373, ), isnull(storageLocId#69373), coalesce(calculationDateTime#69308, 1970-01-01 00:00:00), isnull(calculationDateTime#69308)]
Right keys [8]: [coalesce(plant#69729, ), isnull(plant#69729), coalesce(product#69730, ), isnull(product#69730), coalesce(storageLocId#69680, ), isnull(storageLocId#69680), coalesce(max_calc_datetime#69450, 1970-01-01 00:00:00), isnull(max_calc_datetime#69450)]
Join type: Inner
Join condition: None
(600) Project
Output [3]: [plant#69448, product#69449, calculationDateTime#69308]
Input [8]: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308, plant#69729, product#69730, storageLocId#69680, max_calc_datetime#69450]
(601) HashAggregate
Input [3]: [plant#69448, product#69449, calculationDateTime#69308]
Keys [2]: [product#69449, plant#69448]
Functions [1]: [partial_min(calculationDateTime#69308)]
Aggregate Attributes [1]: [min#73906]
Results [3]: [product#69449, plant#69448, min#73907]
(602) Exchange
Input [3]: [product#69449, plant#69448, min#73907]
Arguments: hashpartitioning(product#69449, plant#69448, 25), ENSURE_REQUIREMENTS, [plan_id=32298]
(603) HashAggregate
Input [3]: [product#69449, plant#69448, min#73907]
Keys [2]: [product#69449, plant#69448]
Functions [1]: [min(calculationDateTime#69308)]
Aggregate Attributes [1]: [min(calculationDateTime#69308)#69768]
Results [3]: [product#69449, plant#69448, min(calculationDateTime#69308)#69768 AS minCalculationDateTime#69754]
(604) Sort
Input [3]: [product#69449, plant#69448, minCalculationDateTime#69754]
Arguments: [product#69449 ASC NULLS FIRST, plant#69448 ASC NULLS FIRST], false, 0
(605) SortMergeJoin
Left keys [2]: [product#69015, plant#69016]
Right keys [2]: [product#69449, plant#69448]
Join type: LeftOuter
Join condition: None
(606) Project
Output [4]: [product#69015, plant#69016, timezonecode#69080, CASE WHEN isnotnull(minCalculationDateTime#69754) THEN minCalculationDateTime#69754 ELSE orderDateTime#69017 END AS stockDatetime#69867]
Input [7]: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, product#69449, plant#69448, minCalculationDateTime#69754]
(607) Exchange
Input [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: hashpartitioning(coalesce(plant#69016, ), isnull(plant#69016), coalesce(product#69015, ), isnull(product#69015), 25), ENSURE_REQUIREMENTS, [plan_id=32620]
(608) Sort
Input [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: [coalesce(plant#69016, ) ASC NULLS FIRST, isnull(plant#69016) ASC NULLS FIRST, coalesce(product#69015, ) ASC NULLS FIRST, isnull(product#69015) ASC NULLS FIRST], false, 0
(609) Exchange
Input [3]: [product#70356, plant#70357, orderDateTime#70358]
Arguments: hashpartitioning(product#70356, plant#70357, 25), REPARTITION_BY_NUM, [plan_id=30944]
(610) Project
Output [8]: [systemId#70360, internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367]
Input [8]: [internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367, systemId#70360]
(611) Exchange
Input [8]: [systemId#70360, internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30947]
(612) Project
Output [1]: [struct(systemId, systemId#70360, internalUUID, internalUUID#70361, plant, plant#70362, product, product#70363, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70364, productionAspect, productionAspect#70365, salesPlant, salesPlant#70366, listing, listing#70367) AS productPlant#70368]
Input [8]: [systemId#70360, internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367]
(613) BroadcastExchange
Input [1]: [productPlant#70368]
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=32314]
(614) BroadcastHashJoin
Left keys [4]: [coalesce(product#70356, ), isnull(product#70356), coalesce(plant#70357, ), isnull(plant#70357)]
Right keys [4]: [coalesce(productPlant#70368.product.internalRefUUID, ), isnull(productPlant#70368.product.internalRefUUID), coalesce(productPlant#70368.plant.internalRefUUID, ), isnull(productPlant#70368.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(615) Scan parquet
Output [3]: [internalUUID#70370, address#70376, systemId#70369]
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>>>
(616) Project
Output [2]: [internalUUID#70370, address#70376.timeZone.code AS timezonecode#70381]
Input [3]: [internalUUID#70370, address#70376, systemId#70369]
(617) Exchange
Input [2]: [internalUUID#70370, timezonecode#70381]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30952]
(618) BroadcastExchange
Input [2]: [internalUUID#70370, timezonecode#70381]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32332]
(619) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70357, ), isnull(plant#70357)]
Right keys [2]: [coalesce(internalUUID#70370, ), isnull(internalUUID#70370)]
Join type: LeftOuter
Join condition: None
(620) Project
Output [5]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, CASE WHEN isnotnull(timezonecode#70381) THEN timezonecode#70381 ELSE UTC END AS timezonecode#70382]
Input [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, internalUUID#70370, timezonecode#70381]
(621) Scan parquet
Output [4]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390, systemId#70383]
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>>>
(622) Filter
Input [4]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390, systemId#70383]
Condition : isnotnull(internalUUID#70384)
(623) Project
Output [3]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390]
Input [4]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390, systemId#70383]
(624) Exchange
Input [3]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30960]
(625) BroadcastExchange
Input [3]: [internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32339]
(626) BroadcastHashJoin
Left keys [1]: [product#70356]
Right keys [1]: [internalUUID#70384]
Join type: LeftOuter
Join condition: None
(627) Project
Output [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, filter(unitOfMeasureConversions#70390, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#70368.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#70368.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#70388.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70388.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#70396]
Input [8]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, internalUUID#70384, baseUnitOfMeasure#70388, unitOfMeasureConversions#70390]
(628) Project
Output [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, filteredUnitOfMeasureConversions#70396.quantityDenominator AS _extract_quantityDenominator#71131, filteredUnitOfMeasureConversions#70396.quantityNumerator AS _extract_quantityNumerator#71132]
Input [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, filteredUnitOfMeasureConversions#70396]
(629) Generate
Input [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, _extract_quantityDenominator#71131, _extract_quantityNumerator#71132]
Arguments: explode(_extract_quantityNumerator#71132), [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, _extract_quantityDenominator#71131], true, [quantityNumerator#70398]
(630) Generate
Input [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, _extract_quantityDenominator#71131, quantityNumerator#70398]
Arguments: explode(_extract_quantityDenominator#71131), [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, quantityNumerator#70398], true, [quantityDenominator#70399]
(631) Project
Output [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, (cast(quantityNumerator#70398 as double) / cast(quantityDenominator#70399 as double)) AS outboundUnit#70400]
Input [7]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, quantityNumerator#70398, quantityDenominator#70399]
(632) Project
Output [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, CASE WHEN (isnull(outboundUnit#70400) OR (outboundUnit#70400 <= 0.0)) THEN 1.0 ELSE outboundUnit#70400 END AS outboundUnit#70401]
Input [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70400]
(633) Sort
Input [6]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401]
Arguments: [product#70356 ASC NULLS FIRST, plant#70357 ASC NULLS FIRST], false, 0
(634) Scan parquet
Output [6]: [internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407, systemId#70402]
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>>>>>
(635) Filter
Input [6]: [internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407, systemId#70402]
Condition : (isnotnull(plant#70405.internalRefUUID) AND isnotnull(product#70404.internalRefUUID))
(636) Project
Output [6]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407]
Input [6]: [internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407, systemId#70402]
(637) Exchange
Input [6]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30994]
(638) BroadcastExchange
Input [6]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407]
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=32399]
(639) Scan parquet
Output [2]: [marketUnit#70408, distributionCenters#70414]
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>>>>>
(640) Filter
Input [2]: [marketUnit#70408, distributionCenters#70414]
Condition : (((marketUnit#70408 <=> Daily_grocery) AND (size(distributionCenters#70414, true) > 0)) AND isnotnull(distributionCenters#70414))
(641) Project
Output [1]: [distributionCenters#70414]
Input [2]: [marketUnit#70408, distributionCenters#70414]
(642) Exchange
Input [1]: [distributionCenters#70414]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31002]
(643) Generate
Input [1]: [distributionCenters#70414]
Arguments: explode(distributionCenters#70414), false, [distributionCenters#70430]
(644) Filter
Input [1]: [distributionCenters#70430]
Condition : (((size(distributionCenters#70430.storageLocations, true) > 0) AND isnotnull(distributionCenters#70430.storageLocations)) AND isnotnull(distributionCenters#70430.internalRefUUID))
(645) Project
Output [2]: [distributionCenters#70430.internalRefUUID AS _extract_internalRefUUID#71019, distributionCenters#70430.storageLocations AS _extract_storageLocations#71020]
Input [1]: [distributionCenters#70430]
(646) Generate
Input [2]: [_extract_internalRefUUID#71019, _extract_storageLocations#71020]
Arguments: explode(_extract_storageLocations#71020), [_extract_internalRefUUID#71019], false, [storageLocations#70431]
(647) Project
Output [3]: [_extract_internalRefUUID#71019 AS plantUuid#70433, storageLocations#70431.id AS storageLocId#70434, storageLocations#70431.internalRefUUID AS storageLocUuid#70435]
Input [2]: [_extract_internalRefUUID#71019, storageLocations#70431]
(648) BroadcastExchange
Input [3]: [plantUuid#70433, storageLocId#70434, storageLocUuid#70435]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32393]
(649) Scan parquet
Output [2]: [product#70437, plant#70438]
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/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(650) Filter
Input [2]: [product#70437, plant#70438]
Condition : isnotnull(plant#70438)
(651) Exchange
Input [2]: [product#70437, plant#70438]
Arguments: hashpartitioning(product#70437, plant#70438, 25), REPARTITION_BY_NUM, [plan_id=31808]
(652) Scan parquet
Output [4]: [plant#70444, product#70445, productionAspect#70447, systemId#70442]
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>>>>
(653) Project
Output [4]: [plant#70444.internalRefUUID AS _extract_internalRefUUID#71396, product#70445.internalRefUUID AS _extract_internalRefUUID#71395, productionAspect#70447.productMovementPlants.unitOfIssue.code AS _extract_code#71397, productionAspect#70447.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71398]
Input [4]: [plant#70444, product#70445, productionAspect#70447, systemId#70442]
(654) Exchange
Input [4]: [_extract_internalRefUUID#71396, _extract_internalRefUUID#71395, _extract_code#71397, _extract_internalRefUUID#71398]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31023]
(655) Project
Output [4]: [_extract_code#71397, _extract_internalRefUUID#71398, _extract_internalRefUUID#71395, _extract_internalRefUUID#71396]
Input [4]: [_extract_internalRefUUID#71396, _extract_internalRefUUID#71395, _extract_code#71397, _extract_internalRefUUID#71398]
(656) BroadcastExchange
Input [4]: [_extract_code#71397, _extract_internalRefUUID#71398, _extract_internalRefUUID#71395, _extract_internalRefUUID#71396]
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=32361]
(657) BroadcastHashJoin
Left keys [4]: [coalesce(product#70437, ), isnull(product#70437), coalesce(plant#70438, ), isnull(plant#70438)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71395, ), isnull(_extract_internalRefUUID#71395), coalesce(_extract_internalRefUUID#71396, ), isnull(_extract_internalRefUUID#71396)]
Join type: LeftOuter
Join condition: None
(658) Project
Output [4]: [product#70437, plant#70438, _extract_code#71397, _extract_internalRefUUID#71398]
Input [6]: [product#70437, plant#70438, _extract_code#71397, _extract_internalRefUUID#71398, _extract_internalRefUUID#71395, _extract_internalRefUUID#71396]
(659) Scan parquet
Output [2]: [internalUUID#70454, systemId#70453]
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>
(660) Project
Output [1]: [internalUUID#70454]
Input [2]: [internalUUID#70454, systemId#70453]
(661) Exchange
Input [1]: [internalUUID#70454]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31033]
(662) BroadcastExchange
Input [1]: [internalUUID#70454]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32367]
(663) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70438, ), isnull(plant#70438)]
Right keys [2]: [coalesce(internalUUID#70454, ), isnull(internalUUID#70454)]
Join type: LeftOuter
Join condition: None
(664) Project
Output [4]: [product#70437, plant#70438, _extract_code#71397, _extract_internalRefUUID#71398]
Input [5]: [product#70437, plant#70438, _extract_code#71397, _extract_internalRefUUID#71398, internalUUID#70454]
(665) Scan parquet
Output [4]: [internalUUID#70472, baseUnitOfMeasure#70476, unitOfMeasureConversions#70478, systemId#70471]
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>>>
(666) Filter
Input [4]: [internalUUID#70472, baseUnitOfMeasure#70476, unitOfMeasureConversions#70478, systemId#70471]
Condition : isnotnull(internalUUID#70472)
(667) Project
Output [3]: [internalUUID#70472, baseUnitOfMeasure#70476, unitOfMeasureConversions#70478]
Input [4]: [internalUUID#70472, baseUnitOfMeasure#70476, unitOfMeasureConversions#70478, systemId#70471]
(668) Exchange
Input [3]: [internalUUID#70472, baseUnitOfMeasure#70476, unitOfMeasureConversions#70478]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31046]
(669) BroadcastExchange
Input [3]: [internalUUID#70472, baseUnitOfMeasure#70476, unitOfMeasureConversions#70478]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32375]
(670) BroadcastHashJoin
Left keys [1]: [product#70437]
Right keys [1]: [internalUUID#70472]
Join type: LeftOuter
Join condition: None
(671) Project
Output [2]: [plant#70438, filter(unitOfMeasureConversions#70478, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71397) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71398)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#70476.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70476.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#70483]
Input [7]: [product#70437, plant#70438, _extract_code#71397, _extract_internalRefUUID#71398, internalUUID#70472, baseUnitOfMeasure#70476, unitOfMeasureConversions#70478]
(672) Generate
Input [2]: [plant#70438, filteredUnitOfMeasureConversions#70483]
Arguments: explode(filteredUnitOfMeasureConversions#70483.quantityNumerator), [plant#70438, filteredUnitOfMeasureConversions#70483], true, [quantityNumerator#70484]
(673) Project
Output [2]: [plant#70438, filteredUnitOfMeasureConversions#70483.quantityDenominator AS _extract_quantityDenominator#71023]
Input [3]: [plant#70438, filteredUnitOfMeasureConversions#70483, quantityNumerator#70484]
(674) Generate
Input [2]: [plant#70438, _extract_quantityDenominator#71023]
Arguments: explode(_extract_quantityDenominator#71023), [plant#70438], true, [quantityDenominator#70487]
(675) Project
Output [1]: [plant#70438]
Input [2]: [plant#70438, quantityDenominator#70487]
(676) HashAggregate
Input [1]: [plant#70438]
Keys [1]: [plant#70438]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70438]
(677) Exchange
Input [1]: [plant#70438]
Arguments: hashpartitioning(plant#70438, 25), ENSURE_REQUIREMENTS, [plan_id=32389]
(678) HashAggregate
Input [1]: [plant#70438]
Keys [1]: [plant#70438]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70438]
(679) BroadcastHashJoin
Left keys [1]: [plantUuid#70433]
Right keys [1]: [plant#70438]
Join type: Inner
Join condition: None
(680) Project
Output [3]: [plantUuid#70433, storageLocId#70434, storageLocUuid#70435]
Input [4]: [plantUuid#70433, storageLocId#70434, storageLocUuid#70435, plant#70438]
(681) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70405.internalRefUUID, ), isnull(plant#70405.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#70433, ), isnull(plantUuid#70433)]
Join type: Inner
Join condition: None
(682) Generate
Input [9]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407, plantUuid#70433, storageLocId#70434, storageLocUuid#70435]
Arguments: explode(filter(stockQuantities#70407, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#70435) AND (lambda x#69270.storageLocation.Id = storageLocId#70434)), lambda x#69270, false))), [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, plantUuid#70433], false, [stockQuantity#70498]
(683) ObjectHashAggregate
Input [7]: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, plantUuid#70433, stockQuantity#70498]
Keys [5]: [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402]
Functions [2]: [partial_first(calculationDateTime#70406, false), partial_collect_list(stockQuantity#70498, 0, 0)]
Aggregate Attributes [3]: [first#73946, valueSet#73947, buf#73948]
Results [8]: [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402, first#73949, valueSet#73950, buf#73951]
(684) ObjectHashAggregate
Input [8]: [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402, first#73949, valueSet#73950, buf#73951]
Keys [5]: [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402]
Functions [2]: [first(calculationDateTime#70406, false), collect_list(stockQuantity#70498, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#70406)()#69321, collect_list(stockQuantity#70498, 0, 0)#69322]
Results [4]: [product#70404, plant#70405, first(calculationDateTime#70406)()#69321 AS calculationDateTime#70499, collect_list(stockQuantity#70498, 0, 0)#69322 AS stockQuantities#70500]
(685) Filter
Input [4]: [product#70404, plant#70405, calculationDateTime#70499, stockQuantities#70500]
Condition : ((size(stockQuantities#70500, true) > 0) AND isnotnull(calculationDateTime#70499))
(686) Generate
Input [4]: [product#70404, plant#70405, calculationDateTime#70499, stockQuantities#70500]
Arguments: explode(stockQuantities#70500), [product#70404, plant#70405, calculationDateTime#70499], false, [stockQuantity#70501]
(687) Filter
Input [4]: [product#70404, plant#70405, calculationDateTime#70499, stockQuantity#70501]
Condition : (((isnotnull(stockQuantity#70501.specialStockIndicator.code) AND isnotnull(stockQuantity#70501.stockType.code)) AND (stockQuantity#70501.specialStockIndicator.code = )) AND (stockQuantity#70501.stockType.code = 01))
(688) Project
Output [5]: [plant#70405.internalRefUUID AS plantUuid#70503, product#70404.internalRefUUID AS productUuid#70505, calculationDateTime#70499, stockQuantity#70501.storagelocation.id AS storageLocId#70506, stockQuantity#70501.quantity.measure AS quantity#70508]
Input [4]: [product#70404, plant#70405, calculationDateTime#70499, stockQuantity#70501]
(689) Exchange
Input [5]: [plantUuid#70503, productUuid#70505, calculationDateTime#70499, storageLocId#70506, quantity#70508]
Arguments: hashpartitioning(productUuid#70505, plantUuid#70503, 25), ENSURE_REQUIREMENTS, [plan_id=32445]
(690) Sort
Input [5]: [plantUuid#70503, productUuid#70505, calculationDateTime#70499, storageLocId#70506, quantity#70508]
Arguments: [productUuid#70505 ASC NULLS FIRST, plantUuid#70503 ASC NULLS FIRST], false, 0
(691) Scan parquet
Output [3]: [product#70513, plant#70514, orderDateTime#70515]
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/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(692) Filter
Input [3]: [product#70513, plant#70514, orderDateTime#70515]
Condition : ((isnotnull(orderDateTime#70515) AND isnotnull(plant#70514)) AND isnotnull(product#70513))
(693) Exchange
Input [3]: [product#70513, plant#70514, orderDateTime#70515]
Arguments: hashpartitioning(product#70513, plant#70514, 25), REPARTITION_BY_NUM, [plan_id=31854]
(694) Scan parquet
Output [4]: [plant#70519, product#70520, productionAspect#70522, systemId#70517]
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>>>>
(695) Project
Output [4]: [plant#70519.internalRefUUID AS _extract_internalRefUUID#71401, product#70520.internalRefUUID AS _extract_internalRefUUID#71402, productionAspect#70522.productMovementPlants.unitOfIssue.code AS _extract_code#71399, productionAspect#70522.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71400]
Input [4]: [plant#70519, product#70520, productionAspect#70522, systemId#70517]
(696) Exchange
Input [4]: [_extract_internalRefUUID#71401, _extract_internalRefUUID#71402, _extract_code#71399, _extract_internalRefUUID#71400]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31097]
(697) Project
Output [4]: [_extract_code#71399, _extract_internalRefUUID#71400, _extract_internalRefUUID#71402, _extract_internalRefUUID#71401]
Input [4]: [_extract_internalRefUUID#71401, _extract_internalRefUUID#71402, _extract_code#71399, _extract_internalRefUUID#71400]
(698) BroadcastExchange
Input [4]: [_extract_code#71399, _extract_internalRefUUID#71400, _extract_internalRefUUID#71402, _extract_internalRefUUID#71401]
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=32423]
(699) BroadcastHashJoin
Left keys [4]: [coalesce(product#70513, ), isnull(product#70513), coalesce(plant#70514, ), isnull(plant#70514)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71402, ), isnull(_extract_internalRefUUID#71402), coalesce(_extract_internalRefUUID#71401, ), isnull(_extract_internalRefUUID#71401)]
Join type: LeftOuter
Join condition: None
(700) Project
Output [5]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#71399, _extract_internalRefUUID#71400]
Input [7]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#71399, _extract_internalRefUUID#71400, _extract_internalRefUUID#71402, _extract_internalRefUUID#71401]
(701) Scan parquet
Output [2]: [internalUUID#70529, systemId#70528]
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>
(702) Project
Output [1]: [internalUUID#70529]
Input [2]: [internalUUID#70529, systemId#70528]
(703) Exchange
Input [1]: [internalUUID#70529]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31105]
(704) BroadcastExchange
Input [1]: [internalUUID#70529]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32429]
(705) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70514, ), isnull(plant#70514)]
Right keys [2]: [coalesce(internalUUID#70529, ), isnull(internalUUID#70529)]
Join type: LeftOuter
Join condition: None
(706) Project
Output [5]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#71399, _extract_internalRefUUID#71400]
Input [6]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#71399, _extract_internalRefUUID#71400, internalUUID#70529]
(707) Scan parquet
Output [4]: [internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549, systemId#70542]
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>>>
(708) Filter
Input [4]: [internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549, systemId#70542]
Condition : isnotnull(internalUUID#70543)
(709) Project
Output [3]: [internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549]
Input [4]: [internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549, systemId#70542]
(710) Exchange
Input [3]: [internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31115]
(711) BroadcastExchange
Input [3]: [internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32434]
(712) BroadcastHashJoin
Left keys [1]: [product#70513]
Right keys [1]: [internalUUID#70543]
Join type: LeftOuter
Join condition: None
(713) Project
Output [4]: [product#70513, plant#70514, orderDateTime#70515, filter(unitOfMeasureConversions#70549, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71399) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71400)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#70547.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70547.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#70554]
Input [8]: [product#70513, plant#70514, orderDateTime#70515, _extract_code#71399, _extract_internalRefUUID#71400, internalUUID#70543, baseUnitOfMeasure#70547, unitOfMeasureConversions#70549]
(714) Generate
Input [4]: [product#70513, plant#70514, orderDateTime#70515, filteredUnitOfMeasureConversions#70554]
Arguments: explode(filteredUnitOfMeasureConversions#70554.quantityNumerator), [product#70513, plant#70514, orderDateTime#70515, filteredUnitOfMeasureConversions#70554], true, [quantityNumerator#70555]
(715) Project
Output [4]: [product#70513, plant#70514, orderDateTime#70515, filteredUnitOfMeasureConversions#70554.quantityDenominator AS _extract_quantityDenominator#71032]
Input [5]: [product#70513, plant#70514, orderDateTime#70515, filteredUnitOfMeasureConversions#70554, quantityNumerator#70555]
(716) Generate
Input [4]: [product#70513, plant#70514, orderDateTime#70515, _extract_quantityDenominator#71032]
Arguments: explode(_extract_quantityDenominator#71032), [product#70513, plant#70514, orderDateTime#70515], true, [quantityDenominator#70556]
(717) Project
Output [3]: [product#70513, plant#70514, orderDateTime#70515]
Input [4]: [product#70513, plant#70514, orderDateTime#70515, quantityDenominator#70556]
(718) Sort
Input [3]: [product#70513, plant#70514, orderDateTime#70515]
Arguments: [product#70513 ASC NULLS FIRST, plant#70514 ASC NULLS FIRST], false, 0
(719) SortMergeJoin
Left keys [2]: [productUuid#70505, plantUuid#70503]
Right keys [2]: [product#70513, plant#70514]
Join type: Inner
Join condition: (calculationDateTime#70499 <= orderDateTime#70515)
(720) Project
Output [5]: [plantUuid#70503 AS plant#70559, productUuid#70505 AS product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
Input [8]: [plantUuid#70503, productUuid#70505, calculationDateTime#70499, storageLocId#70506, quantity#70508, product#70513, plant#70514, orderDateTime#70515]
(721) Exchange
Input [5]: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
Arguments: hashpartitioning(coalesce(plant#70559, ), isnull(plant#70559), coalesce(product#70560, ), isnull(product#70560), coalesce(storageLocId#70506, ), isnull(storageLocId#70506), coalesce(calculationDateTime#70499, 1970-01-01 00:00:00), isnull(calculationDateTime#70499), 25), ENSURE_REQUIREMENTS, [plan_id=32569]
(722) Sort
Input [5]: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
Arguments: [coalesce(plant#70559, ) ASC NULLS FIRST, isnull(plant#70559) ASC NULLS FIRST, coalesce(product#70560, ) ASC NULLS FIRST, isnull(product#70560) ASC NULLS FIRST, coalesce(storageLocId#70506, ) ASC NULLS FIRST, isnull(storageLocId#70506) ASC NULLS FIRST, coalesce(calculationDateTime#70499, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#70499) ASC NULLS FIRST], false, 0
(723) Scan parquet
Output [6]: [internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566, systemId#70561]
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>>>>>
(724) Filter
Input [6]: [internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566, systemId#70561]
Condition : (isnotnull(plant#70564.internalRefUUID) AND isnotnull(product#70563.internalRefUUID))
(725) Project
Output [6]: [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566]
Input [6]: [internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566, systemId#70561]
(726) Exchange
Input [6]: [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31148]
(727) BroadcastExchange
Input [6]: [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566]
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=32502]
(728) Scan parquet
Output [2]: [marketUnit#70567, distributionCenters#70573]
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>>>>>
(729) Filter
Input [2]: [marketUnit#70567, distributionCenters#70573]
Condition : (((marketUnit#70567 <=> Daily_grocery) AND (size(distributionCenters#70573, true) > 0)) AND isnotnull(distributionCenters#70573))
(730) Project
Output [1]: [distributionCenters#70573]
Input [2]: [marketUnit#70567, distributionCenters#70573]
(731) Exchange
Input [1]: [distributionCenters#70573]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31152]
(732) Generate
Input [1]: [distributionCenters#70573]
Arguments: explode(distributionCenters#70573), false, [distributionCenters#70589]
(733) Filter
Input [1]: [distributionCenters#70589]
Condition : (((size(distributionCenters#70589.storageLocations, true) > 0) AND isnotnull(distributionCenters#70589.storageLocations)) AND isnotnull(distributionCenters#70589.internalRefUUID))
(734) Project
Output [2]: [distributionCenters#70589.internalRefUUID AS _extract_internalRefUUID#71039, distributionCenters#70589.storageLocations AS _extract_storageLocations#71040]
Input [1]: [distributionCenters#70589]
(735) Generate
Input [2]: [_extract_internalRefUUID#71039, _extract_storageLocations#71040]
Arguments: explode(_extract_storageLocations#71040), [_extract_internalRefUUID#71039], false, [storageLocations#70590]
(736) Project
Output [3]: [_extract_internalRefUUID#71039 AS plantUuid#70592, storageLocations#70590.id AS storageLocId#70593, storageLocations#70590.internalRefUUID AS storageLocUuid#70594]
Input [2]: [_extract_internalRefUUID#71039, storageLocations#70590]
(737) BroadcastExchange
Input [3]: [plantUuid#70592, storageLocId#70593, storageLocUuid#70594]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32495]
(738) Scan parquet
Output [2]: [product#70595, plant#70596]
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/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(739) Filter
Input [2]: [product#70595, plant#70596]
Condition : isnotnull(plant#70596)
(740) Exchange
Input [2]: [product#70595, plant#70596]
Arguments: hashpartitioning(product#70595, plant#70596, 25), REPARTITION_BY_NUM, [plan_id=31880]
(741) Scan parquet
Output [4]: [plant#70601, product#70602, productionAspect#70604, systemId#70599]
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>>>>
(742) Project
Output [4]: [plant#70601.internalRefUUID AS _extract_internalRefUUID#71412, product#70602.internalRefUUID AS _extract_internalRefUUID#71411, productionAspect#70604.productMovementPlants.unitOfIssue.code AS _extract_code#71413, productionAspect#70604.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71414]
Input [4]: [plant#70601, product#70602, productionAspect#70604, systemId#70599]
(743) Exchange
Input [4]: [_extract_internalRefUUID#71412, _extract_internalRefUUID#71411, _extract_code#71413, _extract_internalRefUUID#71414]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31177]
(744) Project
Output [4]: [_extract_code#71413, _extract_internalRefUUID#71414, _extract_internalRefUUID#71411, _extract_internalRefUUID#71412]
Input [4]: [_extract_internalRefUUID#71412, _extract_internalRefUUID#71411, _extract_code#71413, _extract_internalRefUUID#71414]
(745) BroadcastExchange
Input [4]: [_extract_code#71413, _extract_internalRefUUID#71414, _extract_internalRefUUID#71411, _extract_internalRefUUID#71412]
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=32457]
(746) BroadcastHashJoin
Left keys [4]: [coalesce(product#70595, ), isnull(product#70595), coalesce(plant#70596, ), isnull(plant#70596)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71411, ), isnull(_extract_internalRefUUID#71411), coalesce(_extract_internalRefUUID#71412, ), isnull(_extract_internalRefUUID#71412)]
Join type: LeftOuter
Join condition: None
(747) Project
Output [4]: [product#70595, plant#70596, _extract_code#71413, _extract_internalRefUUID#71414]
Input [6]: [product#70595, plant#70596, _extract_code#71413, _extract_internalRefUUID#71414, _extract_internalRefUUID#71411, _extract_internalRefUUID#71412]
(748) Scan parquet
Output [2]: [internalUUID#70609, systemId#70608]
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>
(749) Project
Output [1]: [internalUUID#70609]
Input [2]: [internalUUID#70609, systemId#70608]
(750) Exchange
Input [1]: [internalUUID#70609]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31184]
(751) BroadcastExchange
Input [1]: [internalUUID#70609]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32465]
(752) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70596, ), isnull(plant#70596)]
Right keys [2]: [coalesce(internalUUID#70609, ), isnull(internalUUID#70609)]
Join type: LeftOuter
Join condition: None
(753) Project
Output [4]: [product#70595, plant#70596, _extract_code#71413, _extract_internalRefUUID#71414]
Input [5]: [product#70595, plant#70596, _extract_code#71413, _extract_internalRefUUID#71414, internalUUID#70609]
(754) Scan parquet
Output [4]: [internalUUID#70623, baseUnitOfMeasure#70627, unitOfMeasureConversions#70629, systemId#70622]
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>>>
(755) Filter
Input [4]: [internalUUID#70623, baseUnitOfMeasure#70627, unitOfMeasureConversions#70629, systemId#70622]
Condition : isnotnull(internalUUID#70623)
(756) Project
Output [3]: [internalUUID#70623, baseUnitOfMeasure#70627, unitOfMeasureConversions#70629]
Input [4]: [internalUUID#70623, baseUnitOfMeasure#70627, unitOfMeasureConversions#70629, systemId#70622]
(757) Exchange
Input [3]: [internalUUID#70623, baseUnitOfMeasure#70627, unitOfMeasureConversions#70629]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31195]
(758) BroadcastExchange
Input [3]: [internalUUID#70623, baseUnitOfMeasure#70627, unitOfMeasureConversions#70629]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32474]
(759) BroadcastHashJoin
Left keys [1]: [product#70595]
Right keys [1]: [internalUUID#70623]
Join type: LeftOuter
Join condition: None
(760) Project
Output [2]: [plant#70596, filter(unitOfMeasureConversions#70629, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71413) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71414)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#70627.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70627.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#70634]
Input [7]: [product#70595, plant#70596, _extract_code#71413, _extract_internalRefUUID#71414, internalUUID#70623, baseUnitOfMeasure#70627, unitOfMeasureConversions#70629]
(761) Generate
Input [2]: [plant#70596, filteredUnitOfMeasureConversions#70634]
Arguments: explode(filteredUnitOfMeasureConversions#70634.quantityNumerator), [plant#70596, filteredUnitOfMeasureConversions#70634], true, [quantityNumerator#70635]
(762) Project
Output [2]: [plant#70596, filteredUnitOfMeasureConversions#70634.quantityDenominator AS _extract_quantityDenominator#71043]
Input [3]: [plant#70596, filteredUnitOfMeasureConversions#70634, quantityNumerator#70635]
(763) Generate
Input [2]: [plant#70596, _extract_quantityDenominator#71043]
Arguments: explode(_extract_quantityDenominator#71043), [plant#70596], true, [quantityDenominator#70636]
(764) Project
Output [1]: [plant#70596]
Input [2]: [plant#70596, quantityDenominator#70636]
(765) HashAggregate
Input [1]: [plant#70596]
Keys [1]: [plant#70596]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70596]
(766) Exchange
Input [1]: [plant#70596]
Arguments: hashpartitioning(plant#70596, 25), ENSURE_REQUIREMENTS, [plan_id=32491]
(767) HashAggregate
Input [1]: [plant#70596]
Keys [1]: [plant#70596]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70596]
(768) BroadcastHashJoin
Left keys [1]: [plantUuid#70592]
Right keys [1]: [plant#70596]
Join type: Inner
Join condition: None
(769) Project
Output [3]: [plantUuid#70592, storageLocId#70593, storageLocUuid#70594]
Input [4]: [plantUuid#70592, storageLocId#70593, storageLocUuid#70594, plant#70596]
(770) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70564.internalRefUUID, ), isnull(plant#70564.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#70592, ), isnull(plantUuid#70592)]
Join type: Inner
Join condition: None
(771) Generate
Input [9]: [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566, plantUuid#70592, storageLocId#70593, storageLocUuid#70594]
Arguments: explode(filter(stockQuantities#70566, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#70594) AND (lambda x#69270.storageLocation.Id = storageLocId#70593)), lambda x#69270, false))), [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, plantUuid#70592], false, [stockQuantity#70639]
(772) ObjectHashAggregate
Input [7]: [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, plantUuid#70592, stockQuantity#70639]
Keys [5]: [plantUuid#70592, internalUUID#70562, plant#70564, product#70563, systemId#70561]
Functions [2]: [partial_first(calculationDateTime#70565, false), partial_collect_list(stockQuantity#70639, 0, 0)]
Aggregate Attributes [3]: [first#73968, valueSet#73969, buf#73970]
Results [8]: [plantUuid#70592, internalUUID#70562, plant#70564, product#70563, systemId#70561, first#73971, valueSet#73972, buf#73973]
(773) ObjectHashAggregate
Input [8]: [plantUuid#70592, internalUUID#70562, plant#70564, product#70563, systemId#70561, first#73971, valueSet#73972, buf#73973]
Keys [5]: [plantUuid#70592, internalUUID#70562, plant#70564, product#70563, systemId#70561]
Functions [2]: [first(calculationDateTime#70565, false), collect_list(stockQuantity#70639, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#70565)()#69321, collect_list(stockQuantity#70639, 0, 0)#69322]
Results [4]: [product#70563, plant#70564, first(calculationDateTime#70565)()#69321 AS calculationDateTime#70640, collect_list(stockQuantity#70639, 0, 0)#69322 AS stockQuantities#70641]
(774) Filter
Input [4]: [product#70563, plant#70564, calculationDateTime#70640, stockQuantities#70641]
Condition : ((size(stockQuantities#70641, true) > 0) AND isnotnull(calculationDateTime#70640))
(775) Generate
Input [4]: [product#70563, plant#70564, calculationDateTime#70640, stockQuantities#70641]
Arguments: explode(stockQuantities#70641), [product#70563, plant#70564, calculationDateTime#70640], false, [stockQuantity#70642]
(776) Filter
Input [4]: [product#70563, plant#70564, calculationDateTime#70640, stockQuantity#70642]
Condition : (((isnotnull(stockQuantity#70642.specialStockIndicator.code) AND isnotnull(stockQuantity#70642.stockType.code)) AND (stockQuantity#70642.specialStockIndicator.code = )) AND (stockQuantity#70642.stockType.code = 01))
(777) Project
Output [4]: [plant#70564.internalRefUUID AS plantUuid#70644, product#70563.internalRefUUID AS productUuid#70646, calculationDateTime#70640, stockQuantity#70642.storagelocation.id AS storageLocId#70647]
Input [4]: [product#70563, plant#70564, calculationDateTime#70640, stockQuantity#70642]
(778) Exchange
Input [4]: [plantUuid#70644, productUuid#70646, calculationDateTime#70640, storageLocId#70647]
Arguments: hashpartitioning(productUuid#70646, plantUuid#70644, 25), ENSURE_REQUIREMENTS, [plan_id=32553]
(779) Sort
Input [4]: [plantUuid#70644, productUuid#70646, calculationDateTime#70640, storageLocId#70647]
Arguments: [productUuid#70646 ASC NULLS FIRST, plantUuid#70644 ASC NULLS FIRST], false, 0
(780) Scan parquet
Output [3]: [product#70652, plant#70653, orderDateTime#70654]
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/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(781) Filter
Input [3]: [product#70652, plant#70653, orderDateTime#70654]
Condition : ((isnotnull(orderDateTime#70654) AND isnotnull(plant#70653)) AND isnotnull(product#70652))
(782) Exchange
Input [3]: [product#70652, plant#70653, orderDateTime#70654]
Arguments: hashpartitioning(product#70652, plant#70653, 25), REPARTITION_BY_NUM, [plan_id=31926]
(783) Scan parquet
Output [4]: [plant#70658, product#70659, productionAspect#70661, systemId#70656]
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>>>>
(784) Project
Output [4]: [plant#70658.internalRefUUID AS _extract_internalRefUUID#71415, product#70659.internalRefUUID AS _extract_internalRefUUID#71418, productionAspect#70661.productMovementPlants.unitOfIssue.code AS _extract_code#71416, productionAspect#70661.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71417]
Input [4]: [plant#70658, product#70659, productionAspect#70661, systemId#70656]
(785) Exchange
Input [4]: [_extract_internalRefUUID#71415, _extract_internalRefUUID#71418, _extract_code#71416, _extract_internalRefUUID#71417]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31251]
(786) Project
Output [4]: [_extract_code#71416, _extract_internalRefUUID#71417, _extract_internalRefUUID#71418, _extract_internalRefUUID#71415]
Input [4]: [_extract_internalRefUUID#71415, _extract_internalRefUUID#71418, _extract_code#71416, _extract_internalRefUUID#71417]
(787) BroadcastExchange
Input [4]: [_extract_code#71416, _extract_internalRefUUID#71417, _extract_internalRefUUID#71418, _extract_internalRefUUID#71415]
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=32520]
(788) BroadcastHashJoin
Left keys [4]: [coalesce(product#70652, ), isnull(product#70652), coalesce(plant#70653, ), isnull(plant#70653)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71418, ), isnull(_extract_internalRefUUID#71418), coalesce(_extract_internalRefUUID#71415, ), isnull(_extract_internalRefUUID#71415)]
Join type: LeftOuter
Join condition: None
(789) Project
Output [5]: [product#70652, plant#70653, orderDateTime#70654, _extract_code#71416, _extract_internalRefUUID#71417]
Input [7]: [product#70652, plant#70653, orderDateTime#70654, _extract_code#71416, _extract_internalRefUUID#71417, _extract_internalRefUUID#71418, _extract_internalRefUUID#71415]
(790) Scan parquet
Output [2]: [internalUUID#70666, systemId#70665]
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>
(791) Project
Output [1]: [internalUUID#70666]
Input [2]: [internalUUID#70666, systemId#70665]
(792) Exchange
Input [1]: [internalUUID#70666]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31257]
(793) BroadcastExchange
Input [1]: [internalUUID#70666]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32528]
(794) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70653, ), isnull(plant#70653)]
Right keys [2]: [coalesce(internalUUID#70666, ), isnull(internalUUID#70666)]
Join type: LeftOuter
Join condition: None
(795) Project
Output [5]: [product#70652, plant#70653, orderDateTime#70654, _extract_code#71416, _extract_internalRefUUID#71417]
Input [6]: [product#70652, plant#70653, orderDateTime#70654, _extract_code#71416, _extract_internalRefUUID#71417, internalUUID#70666]
(796) Scan parquet
Output [4]: [internalUUID#70680, baseUnitOfMeasure#70684, unitOfMeasureConversions#70686, systemId#70679]
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>>>
(797) Filter
Input [4]: [internalUUID#70680, baseUnitOfMeasure#70684, unitOfMeasureConversions#70686, systemId#70679]
Condition : isnotnull(internalUUID#70680)
(798) Project
Output [3]: [internalUUID#70680, baseUnitOfMeasure#70684, unitOfMeasureConversions#70686]
Input [4]: [internalUUID#70680, baseUnitOfMeasure#70684, unitOfMeasureConversions#70686, systemId#70679]
(799) Exchange
Input [3]: [internalUUID#70680, baseUnitOfMeasure#70684, unitOfMeasureConversions#70686]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31267]
(800) BroadcastExchange
Input [3]: [internalUUID#70680, baseUnitOfMeasure#70684, unitOfMeasureConversions#70686]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32536]
(801) BroadcastHashJoin
Left keys [1]: [product#70652]
Right keys [1]: [internalUUID#70680]
Join type: LeftOuter
Join condition: None
(802) Project
Output [4]: [product#70652, plant#70653, orderDateTime#70654, filter(unitOfMeasureConversions#70686, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71416) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71417)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#70684.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70684.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#70691]
Input [8]: [product#70652, plant#70653, orderDateTime#70654, _extract_code#71416, _extract_internalRefUUID#71417, internalUUID#70680, baseUnitOfMeasure#70684, unitOfMeasureConversions#70686]
(803) Generate
Input [4]: [product#70652, plant#70653, orderDateTime#70654, filteredUnitOfMeasureConversions#70691]
Arguments: explode(filteredUnitOfMeasureConversions#70691.quantityNumerator), [product#70652, plant#70653, orderDateTime#70654, filteredUnitOfMeasureConversions#70691], true, [quantityNumerator#70692]
(804) Project
Output [4]: [product#70652, plant#70653, orderDateTime#70654, filteredUnitOfMeasureConversions#70691.quantityDenominator AS _extract_quantityDenominator#71051]
Input [5]: [product#70652, plant#70653, orderDateTime#70654, filteredUnitOfMeasureConversions#70691, quantityNumerator#70692]
(805) Generate
Input [4]: [product#70652, plant#70653, orderDateTime#70654, _extract_quantityDenominator#71051]
Arguments: explode(_extract_quantityDenominator#71051), [product#70652, plant#70653, orderDateTime#70654], true, [quantityDenominator#70693]
(806) Project
Output [3]: [product#70652, plant#70653, orderDateTime#70654]
Input [4]: [product#70652, plant#70653, orderDateTime#70654, quantityDenominator#70693]
(807) Sort
Input [3]: [product#70652, plant#70653, orderDateTime#70654]
Arguments: [product#70652 ASC NULLS FIRST, plant#70653 ASC NULLS FIRST], false, 0
(808) SortMergeJoin
Left keys [2]: [productUuid#70646, plantUuid#70644]
Right keys [2]: [product#70652, plant#70653]
Join type: Inner
Join condition: (calculationDateTime#70640 <= orderDateTime#70654)
(809) Project
Output [4]: [plantUuid#70644 AS plant#70696, productUuid#70646 AS product#70697, storageLocId#70647, calculationDateTime#70640]
Input [7]: [plantUuid#70644, productUuid#70646, calculationDateTime#70640, storageLocId#70647, product#70652, plant#70653, orderDateTime#70654]
(810) HashAggregate
Input [4]: [plant#70696, product#70697, storageLocId#70647, calculationDateTime#70640]
Keys [3]: [plant#70696, product#70697, storageLocId#70647]
Functions [1]: [partial_max(calculationDateTime#70640)]
Aggregate Attributes [1]: [max#73960]
Results [4]: [plant#70696, product#70697, storageLocId#70647, max#73961]
(811) HashAggregate
Input [4]: [plant#70696, product#70697, storageLocId#70647, max#73961]
Keys [3]: [plant#70696, product#70697, storageLocId#70647]
Functions [1]: [max(calculationDateTime#70640)]
Aggregate Attributes [1]: [max(calculationDateTime#70640)#69456]
Results [4]: [plant#70696, product#70697, storageLocId#70647, max(calculationDateTime#70640)#69456 AS max_calc_datetime#70698]
(812) Exchange
Input [4]: [plant#70696, product#70697, storageLocId#70647, max_calc_datetime#70698]
Arguments: hashpartitioning(coalesce(plant#70696, ), isnull(plant#70696), coalesce(product#70697, ), isnull(product#70697), coalesce(storageLocId#70647, ), isnull(storageLocId#70647), coalesce(max_calc_datetime#70698, 1970-01-01 00:00:00), isnull(max_calc_datetime#70698), 25), ENSURE_REQUIREMENTS, [plan_id=32570]
(813) Sort
Input [4]: [plant#70696, product#70697, storageLocId#70647, max_calc_datetime#70698]
Arguments: [coalesce(plant#70696, ) ASC NULLS FIRST, isnull(plant#70696) ASC NULLS FIRST, coalesce(product#70697, ) ASC NULLS FIRST, isnull(product#70697) ASC NULLS FIRST, coalesce(storageLocId#70647, ) ASC NULLS FIRST, isnull(storageLocId#70647) ASC NULLS FIRST, coalesce(max_calc_datetime#70698, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#70698) ASC NULLS FIRST], false, 0
(814) SortMergeJoin
Left keys [8]: [coalesce(plant#70559, ), isnull(plant#70559), coalesce(product#70560, ), isnull(product#70560), coalesce(storageLocId#70506, ), isnull(storageLocId#70506), coalesce(calculationDateTime#70499, 1970-01-01 00:00:00), isnull(calculationDateTime#70499)]
Right keys [8]: [coalesce(plant#70696, ), isnull(plant#70696), coalesce(product#70697, ), isnull(product#70697), coalesce(storageLocId#70647, ), isnull(storageLocId#70647), coalesce(max_calc_datetime#70698, 1970-01-01 00:00:00), isnull(max_calc_datetime#70698)]
Join type: Inner
Join condition: None
(815) Project
Output [4]: [plant#70559, product#70560, calculationDateTime#70499, quantity#70508]
Input [9]: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508, plant#70696, product#70697, storageLocId#70647, max_calc_datetime#70698]
(816) HashAggregate
Input [4]: [plant#70559, product#70560, calculationDateTime#70499, quantity#70508]
Keys [2]: [product#70560, plant#70559]
Functions [2]: [partial_min(calculationDateTime#70499), partial_sum(quantity#70508)]
Aggregate Attributes [2]: [min#73942, sum#73943]
Results [4]: [product#70560, plant#70559, min#73944, sum#73945]
(817) Exchange
Input [4]: [product#70560, plant#70559, min#73944, sum#73945]
Arguments: hashpartitioning(product#70560, plant#70559, 25), ENSURE_REQUIREMENTS, [plan_id=32580]
(818) HashAggregate
Input [4]: [product#70560, plant#70559, min#73944, sum#73945]
Keys [2]: [product#70560, plant#70559]
Functions [2]: [min(calculationDateTime#70499), sum(quantity#70508)]
Aggregate Attributes [2]: [min(calculationDateTime#70499)#69768, sum(quantity#70508)#69767]
Results [4]: [product#70560, plant#70559, min(calculationDateTime#70499)#69768 AS minCalculationDateTime#70700, round(sum(quantity#70508)#69767, 0) AS roundedQuantitySum#70701]
(819) Sort
Input [4]: [product#70560, plant#70559, minCalculationDateTime#70700, roundedQuantitySum#70701]
Arguments: [product#70560 ASC NULLS FIRST, plant#70559 ASC NULLS FIRST], false, 0
(820) SortMergeJoin
Left keys [2]: [product#70356, plant#70357]
Right keys [2]: [product#70560, plant#70559]
Join type: LeftOuter
Join condition: None
(821) Project
Output [8]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, CASE WHEN isnotnull(minCalculationDateTime#70700) THEN minCalculationDateTime#70700 ELSE orderDateTime#70358 END AS stockDatetime#70702, CASE WHEN isnotnull(roundedQuantitySum#70701) THEN array(roundedQuantitySum#70701) ELSE [0.0] END AS stockBatchQuantities#70703]
Input [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, product#70560, plant#70559, minCalculationDateTime#70700, roundedQuantitySum#70701]
(822) Filter
Input [9]: [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
Condition : (isnotnull(product#69898) AND isnotnull(plant#69899))
(823) BroadcastExchange
Input [9]: [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=32601]
(824) BroadcastHashJoin
Left keys [2]: [product#70356, plant#70357]
Right keys [2]: [product#69898, plant#69899]
Join type: LeftOuter
Join condition: None
(825) Project
Output [9]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, CASE WHEN isnotnull(product#69898) THEN struct(demandChannel, demandChannel#69900, demandStream, demandStream#69901, considerVariance, considerVariance#69902, demandTimeBuckets, demandTimeBuckets#69903, demandPointInTimeStart, demandPointInTimeStart#69904, demandPointInTimeEnd, demandPointInTimeEnd#69905, demandPointInTime, demandPointInTime#69906) END AS rawDemands#69977]
Input [17]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906]
(826) ObjectHashAggregate
Input [9]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, rawDemands#69977]
Keys [9]: [product#70356, plant#70357, orderDateTime#70358, knownfloatingpointnormalized(if (isnull(productPlant#70368)) null else named_struct(systemId, productPlant#70368.systemId, internalUUID, productPlant#70368.internalUUID, plant, productPlant#70368.plant, product, productPlant#70368.product, blockedForReplenishmentStartingFrom, productPlant#70368.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#70368.productionAspect)) null else named_struct(productMovementPlants, productPlant#70368.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#70368.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#70368.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#70368.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#70368.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#70368.productionAspect.productPlanningPlants.minimumLotSize)), minimumSafetyStock, knownfloatingpointnormalized(normalizenanandzero(productPlant#70368.productionAspect.productPlanningPlants.minimumSafetyStock)), logisticalRoundingProfile, productPlant#70368.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#70368.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#70368.salesPlant, listing, productPlant#70368.listing)) AS productPlant#70368, timezonecode#70382, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#70401)) AS outboundUnit#70401, stockDatetime#70702, knownfloatingpointnormalized(transform(stockBatchQuantities#70703, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#73933)), lambda arg#73933, false))) AS stockBatchQuantities#70703, [7226582400000000] AS [7226582400000000]#73932]
Functions [1]: [partial_collect_list(rawDemands#69977, 0, 0)]
Aggregate Attributes [1]: [buf#73940]
Results [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000]#73932, buf#73941]
(827) ObjectHashAggregate
Input [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000]#73932, buf#73941]
Keys [9]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000]#73932]
Functions [1]: [collect_list(rawDemands#69977, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#69977, 0, 0)#70170]
Results [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#70704, collect_list(rawDemands#69977, 0, 0)#70170 AS rawDemands#70004]
(828) DeserializeToObject
Input [10]: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, stockBatchShelfLifeEndDatetimes#70704, rawDemands#70004]
Arguments: createexternalrow(invoke(product#70356.toString()), invoke(plant#70357.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#70358)), if (isnull(productPlant#70368)) null else createexternalrow(invoke(productPlant#70368.systemId.toString()), invoke(productPlant#70368.internalUUID.toString()), if (isnull(productPlant#70368.plant)) null else createexternalrow(invoke(productPlant#70368.plant.internalRefUUID.toString()), invoke(productPlant#70368.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#70368.product)) null else createexternalrow(invoke(productPlant#70368.product.internalRefUUID.toString()), invoke(productPlant#70368.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#70368.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#70368.productionAspect)) null else createexternalrow(if (isnull(productPlant#70368.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#70368.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#70368.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#70368.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#70368.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#70368.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#70368.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#70368.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#70368.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#70368.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#70368.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#70368.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#70368.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#70368.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#70368.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#70368.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#70368.salesPlant)) null else createexternalrow(if (isnull(productPlant#70368.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#70368.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#70368.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#70368.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#70382.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#70401)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#70702)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#70703, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#70704, 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#70004, 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#70342: org.apache.spark.sql.Row
(829) MapElements
Input [1]: [obj#70342]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@22b451ac, obj#70347: org.apache.spark.sql.Row
(830) SerializeFromObject
Input [1]: [obj#70347]
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#70352, 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#70353]
(831) Exchange
Input [2]: [product#70352, plant#70353]
Arguments: hashpartitioning(coalesce(plant#70353, ), isnull(plant#70353), coalesce(product#70352, ), isnull(product#70352), 25), ENSURE_REQUIREMENTS, [plan_id=32621]
(832) Sort
Input [2]: [product#70352, plant#70353]
Arguments: [coalesce(plant#70353, ) ASC NULLS FIRST, isnull(plant#70353) ASC NULLS FIRST, coalesce(product#70352, ) ASC NULLS FIRST, isnull(product#70352) ASC NULLS FIRST], false, 0
(833) SortMergeJoin
Left keys [4]: [coalesce(plant#69016, ), isnull(plant#69016), coalesce(product#69015, ), isnull(product#69015)]
Right keys [4]: [coalesce(plant#70353, ), isnull(plant#70353), coalesce(product#70352, ), isnull(product#70352)]
Join type: LeftOuter
Join condition: None
(834) Project
Output [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Input [6]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867, product#70352, plant#70353]
(835) Exchange
Input [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: hashpartitioning(plant#69016, 25), ENSURE_REQUIREMENTS, [plan_id=32684]
(836) Sort
Input [4]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867]
Arguments: [plant#69016 ASC NULLS FIRST], false, 0
(837) Scan parquet
Output [2]: [marketUnit#70831, distributionCenters#70837]
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>>>>>
(838) Filter
Input [2]: [marketUnit#70831, distributionCenters#70837]
Condition : (((marketUnit#70831 <=> Daily_grocery) AND (size(distributionCenters#70837, true) > 0)) AND isnotnull(distributionCenters#70837))
(839) Project
Output [1]: [distributionCenters#70837]
Input [2]: [marketUnit#70831, distributionCenters#70837]
(840) Exchange
Input [1]: [distributionCenters#70837]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31353]
(841) Generate
Input [1]: [distributionCenters#70837]
Arguments: explode(distributionCenters#70837), false, [distributionCenters#70853]
(842) Filter
Input [1]: [distributionCenters#70853]
Condition : (((size(distributionCenters#70853.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#70853.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#70853.internalRefUUID))
(843) Project
Output [2]: [distributionCenters#70853.internalRefUUID AS _extract_internalRefUUID#71059, distributionCenters#70853.storageLocations.internalRefUUID AS _extract_internalRefUUID#71430]
Input [1]: [distributionCenters#70853]
(844) Generate
Input [2]: [_extract_internalRefUUID#71059, _extract_internalRefUUID#71430]
Arguments: explode(_extract_internalRefUUID#71430), [_extract_internalRefUUID#71059], false, [storageLocations#70856]
(845) Filter
Input [2]: [_extract_internalRefUUID#71059, storageLocations#70856]
Condition : isnotnull(storageLocations#70856)
(846) Project
Output [2]: [_extract_internalRefUUID#71059 AS plantUuid#70860, storageLocations#70856 AS storageLocUuid#70864]
Input [2]: [_extract_internalRefUUID#71059, storageLocations#70856]
(847) BroadcastExchange
Input [2]: [plantUuid#70860, storageLocUuid#70864]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32671]
(848) Scan parquet
Output [2]: [product#70869, plant#70870]
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/10000002107/shardId=0_1_10000002107]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(849) Filter
Input [2]: [product#70869, plant#70870]
Condition : isnotnull(plant#70870)
(850) Exchange
Input [2]: [product#70869, plant#70870]
Arguments: hashpartitioning(product#70869, plant#70870, 25), REPARTITION_BY_NUM, [plan_id=32005]
(851) Scan parquet
Output [4]: [plant#70875, product#70876, productionAspect#70878, systemId#70873]
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>>>>
(852) Project
Output [4]: [plant#70875.internalRefUUID AS _extract_internalRefUUID#71438, product#70876.internalRefUUID AS _extract_internalRefUUID#71435, productionAspect#70878.productMovementPlants.unitOfIssue.code AS _extract_code#71436, productionAspect#70878.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71437]
Input [4]: [plant#70875, product#70876, productionAspect#70878, systemId#70873]
(853) Exchange
Input [4]: [_extract_internalRefUUID#71438, _extract_internalRefUUID#71435, _extract_code#71436, _extract_internalRefUUID#71437]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31370]
(854) Project
Output [4]: [_extract_code#71436, _extract_internalRefUUID#71437, _extract_internalRefUUID#71435, _extract_internalRefUUID#71438]
Input [4]: [_extract_internalRefUUID#71438, _extract_internalRefUUID#71435, _extract_code#71436, _extract_internalRefUUID#71437]
(855) BroadcastExchange
Input [4]: [_extract_code#71436, _extract_internalRefUUID#71437, _extract_internalRefUUID#71435, _extract_internalRefUUID#71438]
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=32634]
(856) BroadcastHashJoin
Left keys [4]: [coalesce(product#70869, ), isnull(product#70869), coalesce(plant#70870, ), isnull(plant#70870)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71435, ), isnull(_extract_internalRefUUID#71435), coalesce(_extract_internalRefUUID#71438, ), isnull(_extract_internalRefUUID#71438)]
Join type: LeftOuter
Join condition: None
(857) Project
Output [4]: [product#70869, plant#70870, _extract_code#71436, _extract_internalRefUUID#71437]
Input [6]: [product#70869, plant#70870, _extract_code#71436, _extract_internalRefUUID#71437, _extract_internalRefUUID#71435, _extract_internalRefUUID#71438]
(858) Scan parquet
Output [2]: [internalUUID#70905, systemId#70904]
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>
(859) Project
Output [1]: [internalUUID#70905]
Input [2]: [internalUUID#70905, systemId#70904]
(860) Exchange
Input [1]: [internalUUID#70905]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31382]
(861) BroadcastExchange
Input [1]: [internalUUID#70905]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32642]
(862) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70870, ), isnull(plant#70870)]
Right keys [2]: [coalesce(internalUUID#70905, ), isnull(internalUUID#70905)]
Join type: LeftOuter
Join condition: None
(863) Project
Output [4]: [product#70869, plant#70870, _extract_code#71436, _extract_internalRefUUID#71437]
Input [5]: [product#70869, plant#70870, _extract_code#71436, _extract_internalRefUUID#71437, internalUUID#70905]
(864) Scan parquet
Output [4]: [internalUUID#70932, baseUnitOfMeasure#70936, unitOfMeasureConversions#70938, systemId#70931]
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>>>
(865) Filter
Input [4]: [internalUUID#70932, baseUnitOfMeasure#70936, unitOfMeasureConversions#70938, systemId#70931]
Condition : isnotnull(internalUUID#70932)
(866) Project
Output [3]: [internalUUID#70932, baseUnitOfMeasure#70936, unitOfMeasureConversions#70938]
Input [4]: [internalUUID#70932, baseUnitOfMeasure#70936, unitOfMeasureConversions#70938, systemId#70931]
(867) Exchange
Input [3]: [internalUUID#70932, baseUnitOfMeasure#70936, unitOfMeasureConversions#70938]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31391]
(868) BroadcastExchange
Input [3]: [internalUUID#70932, baseUnitOfMeasure#70936, unitOfMeasureConversions#70938]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32646]
(869) BroadcastHashJoin
Left keys [1]: [product#70869]
Right keys [1]: [internalUUID#70932]
Join type: LeftOuter
Join condition: None
(870) Project
Output [2]: [plant#70870, filter(unitOfMeasureConversions#70938, lambdafunction((((lambda u#69110.measurementUnit1.code = _extract_code#71436) AND (lambda u#69110.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71437)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#70936.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70936.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#70945]
Input [7]: [product#70869, plant#70870, _extract_code#71436, _extract_internalRefUUID#71437, internalUUID#70932, baseUnitOfMeasure#70936, unitOfMeasureConversions#70938]
(871) Generate
Input [2]: [plant#70870, filteredUnitOfMeasureConversions#70945]
Arguments: explode(filteredUnitOfMeasureConversions#70945.quantityNumerator), [plant#70870, filteredUnitOfMeasureConversions#70945], true, [quantityNumerator#70947]
(872) Project
Output [2]: [plant#70870, filteredUnitOfMeasureConversions#70945.quantityDenominator AS _extract_quantityDenominator#71063]
Input [3]: [plant#70870, filteredUnitOfMeasureConversions#70945, quantityNumerator#70947]
(873) Generate
Input [2]: [plant#70870, _extract_quantityDenominator#71063]
Arguments: explode(_extract_quantityDenominator#71063), [plant#70870], true, [quantityDenominator#70948]
(874) Project
Output [1]: [plant#70870]
Input [2]: [plant#70870, quantityDenominator#70948]
(875) HashAggregate
Input [1]: [plant#70870]
Keys [1]: [plant#70870]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70870]
(876) Exchange
Input [1]: [plant#70870]
Arguments: hashpartitioning(plant#70870, 25), ENSURE_REQUIREMENTS, [plan_id=32667]
(877) HashAggregate
Input [1]: [plant#70870]
Keys [1]: [plant#70870]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70870]
(878) BroadcastHashJoin
Left keys [1]: [plantUuid#70860]
Right keys [1]: [plant#70870]
Join type: Inner
Join condition: None
(879) Project
Output [2]: [plantUuid#70860 AS plant#70808, storageLocUuid#70864]
Input [3]: [plantUuid#70860, storageLocUuid#70864, plant#70870]
(880) Sort
Input [2]: [plant#70808, storageLocUuid#70864]
Arguments: [plant#70808 ASC NULLS FIRST], false, 0
(881) SortMergeJoin
Left keys [1]: [plant#69016]
Right keys [1]: [plant#70808]
Join type: Inner
Join condition: None
(882) Project
Output [5]: [plant#69016, product#69015, timezonecode#69080, stockDatetime#69867, storageLocUuid#70864]
Input [6]: [product#69015, plant#69016, timezonecode#69080, stockDatetime#69867, plant#70808, storageLocUuid#70864]
(883) Filter
Input [6]: [internalUUID#70739, id#70740, supplier#70742, isMarkedForDeletion#70745, items#70746, systemId#70738]
Condition : (((isnotnull(isMarkedForDeletion#70745) AND NOT isMarkedForDeletion#70745) AND (size(items#70746, true) > 0)) AND isnotnull(items#70746))
(884) Project
Output [4]: [internalUUID#70739, id#70740, supplier#70742, items#70746]
Input [6]: [internalUUID#70739, id#70740, supplier#70742, isMarkedForDeletion#70745, items#70746, systemId#70738]
(885) Exchange
Input [4]: [internalUUID#70739, id#70740, supplier#70742, items#70746]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31424]
(886) Generate
Input [4]: [internalUUID#70739, id#70740, supplier#70742, items#70746]
Arguments: explode(items#70746), [internalUUID#70739, id#70740, supplier#70742], false, [item#70754]
(887) Filter
Input [4]: [internalUUID#70739, id#70740, supplier#70742, item#70754]
Condition : ((((isnotnull(item#70754.deletionIndicator) AND isnotnull(item#70754.completeIndicator)) AND isnotnull(item#70754.returnIndicator)) AND ((NOT item#70754.deletionIndicator AND NOT item#70754.completeIndicator) AND NOT item#70754.returnIndicator)) AND ((isnotnull(item#70754.product.internalRefUUID) AND isnotnull(item#70754.plant.internalRefUUID)) AND isnotnull(item#70754.storageLocation.internalRefUUID)))
(888) Project
Output [14]: [id#70740, internalUUID#70739, supplier#70742.internalRefUUID AS supplierUuid#70749, item#70754.plant.internalRefUUID AS plant#70763, item#70754.product.internalRefUUID AS product#70764, item#70754.plant.id AS externalPlantId#70765, item#70754.product.id AS externalProductId#70766, item#70754.storageLocation.internalRefUUID AS storageLocUuid#70767, item#70754.quantityUnit.code AS quantityUom#70768, item#70754.quantityUnit.internalRefUUID AS quantityUomUuid#70769, item#70754.quantityNumerator AS quantityNumerator#70771, item#70754.quantityDenominator AS quantityDenominator#70772, item#70754.scheduleLines AS scheduleLines#70774, item#70754.confirmations AS confirmations#70776]
Input [4]: [internalUUID#70739, id#70740, supplier#70742, item#70754]
(889) BroadcastExchange
Input [14]: [id#70740, internalUUID#70739, supplierUuid#70749, plant#70763, product#70764, externalPlantId#70765, externalProductId#70766, storageLocUuid#70767, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, confirmations#70776]
Arguments: HashedRelationBroadcastMode(List(input[4, string, true], input[3, string, true], input[7, string, true]),false), [plan_id=32690]
(890) BroadcastHashJoin
Left keys [3]: [product#69015, plant#69016, storageLocUuid#70864]
Right keys [3]: [product#70764, plant#70763, storageLocUuid#70767]
Join type: Inner
Join condition: None
(891) Project
Output [17]: [id#70740, internalUUID#70739, supplierUuid#70749, plant#70763, product#70764, externalPlantId#70765, externalProductId#70766, storageLocUuid#70767, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, confirmations#70776, stockDatetime#69867, timezonecode#69080, filter(confirmations#70776, lambdafunction(((NOT lambda x_1#70965.deletionIndicator AND lambda x_1#70965.isRelevantForConfirmation) AND isnotnull(lambda x_1#70965.confirmedDeliveryAt)), lambda x_1#70965, false)) AS validConfirmations#70964]
Input [19]: [plant#69016, product#69015, timezonecode#69080, stockDatetime#69867, storageLocUuid#70864, id#70740, internalUUID#70739, supplierUuid#70749, plant#70763, product#70764, externalPlantId#70765, externalProductId#70766, storageLocUuid#70767, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, confirmations#70776]
(892) AdaptiveSparkPlan
Output [17]: [id#70740, internalUUID#70739, supplierUuid#70749, plant#70763, product#70764, externalPlantId#70765, externalProductId#70766, storageLocUuid#70767, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, confirmations#70776, stockDatetime#69867, timezonecode#69080, validConfirmations#70964]
Arguments: isFinalPlan=true
(893) Project
Output [6]: [id#70740, externalProductId#70766, externalPlantId#70765, quantityUom#70768, transform(filter(scheduleLines#70774, lambdafunction(isnotnull(lambda x_3#74155.deliveryAt), lambda x_3#74155, false)), lambdafunction(struct(scheduledDate, cast(from_utc_timestamp(lambda x_4#74156.deliveryAt, timezonecode#74320) as date), scheduledQuantity, lambda x_4#74156.quantity), lambda x_4#74156, false)) AS scheds#74154, transform(filter(validConfirmations#70964, lambdafunction(isnotnull(lambda x_7#74164.confirmedDeliveryAt), lambda x_7#74164, false)), lambdafunction(struct(confirmedDate, cast(from_utc_timestamp(lambda x_8#74166.confirmedDeliveryAt, timezonecode#74320) as date), confirmedQuantity, lambda x_8#74166.confirmedQuantity), lambda x_8#74166, false)) AS confs#74162]
Input [7]: [externalPlantId#70765, externalProductId#70766, id#70740, quantityUom#70768, scheduleLines#70774, timezonecode#74320, validConfirmations#70964]
(894) DeserializeToObject
Input [6]: [id#70740, externalProductId#70766, externalPlantId#70765, quantityUom#70768, scheds#74154, confs#74162]
Arguments: createexternalrow(invoke(id#70740.toString()), invoke(externalProductId#70766.toString()), invoke(externalPlantId#70765.toString()), invoke(quantityUom#70768.toString()), mapobjects(lambdavariable(MapObject, StructField(scheduledDate,DateType,true), StructField(scheduledQuantity,DoubleType,true), false, -1), createexternalrow(static_invoke(DateTimeUtils.toJavaDate(lambdavariable(MapObject, StructField(scheduledDate,DateType,true), StructField(scheduledQuantity,DoubleType,true), false, -1).scheduledDate)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(scheduledDate,DateType,true), StructField(scheduledQuantity,DoubleType,true), false, -1).scheduledQuantity)), StructField(scheduledDate,DateType,true), StructField(scheduledQuantity,DoubleType,true)), scheds#74154, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(confirmedDate,DateType,true), StructField(confirmedQuantity,DoubleType,true), false, -2), createexternalrow(static_invoke(DateTimeUtils.toJavaDate(lambdavariable(MapObject, StructField(confirmedDate,DateType,true), StructField(confirmedQuantity,DoubleType,true), false, -2).confirmedDate)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(confirmedDate,DateType,true), StructField(confirmedQuantity,DoubleType,true), false, -2).confirmedQuantity)), StructField(confirmedDate,DateType,true), StructField(confirmedQuantity,DoubleType,true)), confs#74162, Some(class scala.collection.mutable.ArraySeq)), StructField(id,StringType,true), StructField(externalProductId,StringType,true), StructField(externalPlantId,StringType,true), StructField(quantityUom,StringType,true), StructField(scheds,ArrayType(StructType(StructField(scheduledDate,DateType,true),StructField(scheduledQuantity,DoubleType,true)),false),true), StructField(confs,ArrayType(StructType(StructField(confirmedDate,DateType,true),StructField(confirmedQuantity,DoubleType,true)),false),true)), obj#74184: org.apache.spark.sql.Row
(895) MapPartitions
Input [1]: [obj#74184]
Arguments: org.apache.spark.sql.internal.UDFAdaptors$$$Lambda/0x00000008024c8f20@55cc2817, obj#74193: org.apache.spark.sql.Row
(896) SerializeFromObject
Input [1]: [obj#74193]
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, id), StringType, ObjectType(class java.lang.String)))) AS id#74202, 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, externalProductId), StringType, ObjectType(class java.lang.String)))) AS externalProductId#74203, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 2, externalPlantId), StringType, ObjectType(class java.lang.String)))) AS externalPlantId#74204, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 3, quantityUom), StringType, ObjectType(class java.lang.String)))) AS quantityUom#74205, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(4))) null else static_invoke(DateTimeUtils.fromJavaDate(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 4, scheduledDate), DateType, ObjectType(class java.sql.Date)))) AS scheduledDate#74206, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(5))) null else invoke(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, scheduledQuantity), DoubleType, ObjectType(class java.lang.Double)).doubleValue()) AS scheduledQuantity#74207, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(6))) null else static_invoke(DateTimeUtils.fromJavaDate(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 6, confirmedDate), DateType, ObjectType(class java.sql.Date)))) AS confirmedDate#74208, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(7))) null else invoke(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 7, confirmedQuantity), DoubleType, ObjectType(class java.lang.Double)).doubleValue()) AS confirmedQuantity#74209]
(897) BroadcastExchange
Input [8]: [id#74202, externalProductId#74203, externalPlantId#74204, quantityUom#74205, scheduledDate#74206, scheduledQuantity#74207, confirmedDate#74208, confirmedQuantity#74209]
Arguments: IdentityBroadcastMode, [plan_id=190305]
(898) Scan parquet
Output [4]: [name#68965, status#68970, configurationVersion#68972, settings#68976]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/insight-configuration]
PushedFilters: [IsNotNull(name), IsNotNull(configurationVersion), EqualTo(name,OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF)]
ReadSchema: struct<name:string,status:string,configurationVersion:string,settings:array<struct<name:string,type:string,value:string>>>
(899) Filter
Input [4]: [name#68965, status#68970, configurationVersion#68972, settings#68976]
Condition : ((isnotnull(name#68965) AND isnotnull(configurationVersion#68972)) AND (name#68965 = OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF))
(900) Exchange
Input [4]: [name#68965, status#68970, configurationVersion#68972, settings#68976]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=190222]
(901) Sort
Input [4]: [name#68965, status#68970, configurationVersion#68972, settings#68976]
Arguments: [name#68965 ASC NULLS FIRST], false, 0
(902) SortAggregate
Input [4]: [name#68965, status#68970, configurationVersion#68972, settings#68976]
Keys [1]: [name#68965]
Functions [1]: [partial_max(struct(configurationVersion, configurationVersion#68972, status, status#68970, settings, settings#68976))]
Aggregate Attributes [1]: [max#89456]
Results [2]: [name#68965, max#89459]
(903) Exchange
Input [2]: [name#68965, max#89459]
Arguments: hashpartitioning(name#68965, 25), ENSURE_REQUIREMENTS, [plan_id=190293]
(904) Sort
Input [2]: [name#68965, max#89459]
Arguments: [name#68965 ASC NULLS FIRST], false, 0
(905) SortAggregate
Input [2]: [name#68965, max#89459]
Keys [1]: [name#68965]
Functions [1]: [max(struct(configurationVersion, configurationVersion#68972, status, status#68970, settings, settings#68976))]
Aggregate Attributes [1]: [max(struct(configurationVersion, configurationVersion#68972, status, status#68970, settings, settings#68976))#69002]
Results [1]: [max(struct(configurationVersion, configurationVersion#68972, status, status#68970, settings, settings#68976))#69002 AS latest#68984]
(906) Filter
Input [1]: [latest#68984]
Condition : (isnotnull(latest#68984.status) AND (latest#68984.status = ACTIVE))
(907) Project
Output [1]: [latest#68984.configurationVersion AS configurationVersion#69003]
Input [1]: [latest#68984]
(908) BroadcastNestedLoopJoin
Join type: Cross
Join condition: None
(909) Project
Output [11]: [id#74202, externalProductId#74203, externalPlantId#74204, quantityUom#74205, scheduledDate#74206, scheduledQuantity#74207, confirmedDate#74208, confirmedQuantity#74209, configurationVersion#69003, array(struct(name, PURCHASE_ORDER, value, id#74202), struct(name, PRODUCT, value, externalProductId#74203), struct(name, PLANT, value, externalPlantId#74204)) AS businessContext#74255, array(struct(variableName, PO_QTY, variableValue, cast(scheduledQuantity#74207 as string)), struct(variableName, PO_UOM, variableValue, quantityUom#74205), struct(variableName, PO_DELIVERY_DATE, variableValue, cast(scheduledDate#74206 as string)), struct(variableName, CO_QTY, variableValue, cast(confirmedQuantity#74209 as string)), struct(variableName, CO_UOM, variableValue, quantityUom#74205), struct(variableName, CO_DELIVERY_DATE, variableValue, cast(confirmedDate#74208 as string))) AS messageVariables#74269]
Input [9]: [id#74202, externalProductId#74203, externalPlantId#74204, quantityUom#74205, scheduledDate#74206, scheduledQuantity#74207, confirmedDate#74208, confirmedQuantity#74209, configurationVersion#69003]
(910) HashAggregate
Input [11]: [id#74202, externalProductId#74203, externalPlantId#74204, quantityUom#74205, scheduledDate#74206, scheduledQuantity#74207, confirmedDate#74208, confirmedQuantity#74209, configurationVersion#69003, businessContext#74255, messageVariables#74269]
Keys [12]: [OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF AS OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF#89454, quantityUom#74205, knownfloatingpointnormalized(normalizenanandzero(scheduledQuantity#74207)) AS scheduledQuantity#74207, externalPlantId#74204, id#74202, configurationVersion#69003, knownfloatingpointnormalized(normalizenanandzero(confirmedQuantity#74209)) AS confirmedQuantity#74209, confirmedDate#74208, scheduledDate#74206, businessContext#74255, messageVariables#74269, externalProductId#74203]
Functions: []
Aggregate Attributes: []
Results [12]: [OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF#89454, quantityUom#74205, scheduledQuantity#74207, externalPlantId#74204, id#74202, configurationVersion#69003, confirmedQuantity#74209, confirmedDate#74208, scheduledDate#74206, businessContext#74255, messageVariables#74269, externalProductId#74203]
(911) Exchange
Input [12]: [OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF#89454, quantityUom#74205, scheduledQuantity#74207, externalPlantId#74204, id#74202, configurationVersion#69003, confirmedQuantity#74209, confirmedDate#74208, scheduledDate#74206, businessContext#74255, messageVariables#74269, externalProductId#74203]
Arguments: hashpartitioning(OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF#89454, quantityUom#74205, scheduledQuantity#74207, externalPlantId#74204, id#74202, configurationVersion#69003, confirmedQuantity#74209, confirmedDate#74208, scheduledDate#74206, businessContext#74255, messageVariables#74269, externalProductId#74203, 25), ENSURE_REQUIREMENTS, [plan_id=190315]
(912) HashAggregate
Input [12]: [OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF#89454, quantityUom#74205, scheduledQuantity#74207, externalPlantId#74204, id#74202, configurationVersion#69003, confirmedQuantity#74209, confirmedDate#74208, scheduledDate#74206, businessContext#74255, messageVariables#74269, externalProductId#74203]
Keys [12]: [OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF#89454, quantityUom#74205, scheduledQuantity#74207, externalPlantId#74204, id#74202, configurationVersion#69003, confirmedQuantity#74209, confirmedDate#74208, scheduledDate#74206, businessContext#74255, messageVariables#74269, externalProductId#74203]
Functions: []
Aggregate Attributes: []
Results [7]: [OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF AS name#74248, configurationVersion#69003, 10000002107 AS executionId#74277, 2026-08-10T09:24:03.269Z AS createdAt#74292, Daily_grocery AS marketUnit#74290, businessContext#74255, messageVariables#74269]
(913) Union
(914) AdaptiveSparkPlan
Output [7]: [name#69914, configurationVersion#69913, executionId#69940, createdAt#69962, marketUnit#69941, businessContext#69919, messageVariables#69920]
Arguments: isFinalPlan=true
(915) TableCacheQueryStage
Output: []
Arguments: 0
(916) CollectLimit
Input: []
Arguments: 1
(917) ResultQueryStage
Output: []
Arguments: 1
(918) CollectLimit
Input: []
Arguments: 1
(919) AdaptiveSparkPlan
Output: []
Arguments: isFinalPlan=true