== Physical Plan ==
AdaptiveSparkPlan (919)
+- == Final Plan ==
ResultQueryStage (917), Statistics(sizeInBytes=8.0 EiB)
+- CollectLimit (916)
+- TableCacheQueryStage (915), Statistics(sizeInBytes=237.3 KiB, rowCount=980)
+- InMemoryTableScan (1)
+- InMemoryRelation (2)
+- AdaptiveSparkPlan (914)
+- == Final Plan ==
ResultQueryStage (51)
+- * HashAggregate (50)
+- ShuffleQueryStage (49), Statistics(sizeInBytes=260.3 KiB, rowCount=980)
+- 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=84.2 KiB, rowCount=980)
: : : : +- 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=980)
+- 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 BuildRight (908)
:- 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=980)
: : +- BroadcastExchange (367)
: : +- AQEShuffleRead (366)
: : +- ShuffleQueryStage (365), Statistics(sizeInBytes=114.8 KiB, rowCount=980)
: : +- Exchange (364)
: : +- * Project (363)
: : +- * BroadcastHashJoin LeftOuter BuildRight (362)
: : :- AQEShuffleRead (256)
: : : +- ShuffleQueryStage (255), Statistics(sizeInBytes=114.8 KiB, rowCount=980)
: : : +- 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=91.9 KiB, rowCount=980)
: : : : : : : +- 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=295)
: : : +- BroadcastExchange (250)
: : : +- * HashAggregate (249)
: : : +- AQEShuffleRead (248)
: : : +- ShuffleQueryStage (247), Statistics(sizeInBytes=27.7 KiB, rowCount=295)
: : : +- Exchange (246)
: : : +- * HashAggregate (245)
: : : +- * Project (244)
: : : +- * BroadcastHashJoin Inner BuildLeft (243)
: : : :- BroadcastQueryStage (215), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : : +- BroadcastExchange (214)
: : : : +- AQEShuffleRead (213)
: : : : +- ShuffleQueryStage (212), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : : +- 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=11.5 KiB, rowCount=245)
: : : : : +- 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=84.2 KiB, rowCount=980)
: : : : : : : : +- 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=91.9 KiB, rowCount=980)
: : : : : : : +- 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=32.3 KiB, rowCount=295)
: : : +- 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=91.9 KiB, rowCount=980)
: : : : : : +- 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=980)
: : +- BroadcastExchange (360)
: : +- AQEShuffleRead (359)
: : +- ShuffleQueryStage (358), Statistics(sizeInBytes=84.2 KiB, rowCount=980)
: : +- 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=91.9 KiB, rowCount=980)
: : : : : : : +- 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=295)
: : : +- BroadcastExchange (341)
: : : +- * HashAggregate (340)
: : : +- AQEShuffleRead (339)
: : : +- ShuffleQueryStage (338), Statistics(sizeInBytes=30.0 KiB, rowCount=295)
: : : +- Exchange (337)
: : : +- * HashAggregate (336)
: : : +- * Project (335)
: : : +- * BroadcastHashJoin Inner BuildLeft (334)
: : : :- BroadcastQueryStage (330), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : : +- BroadcastExchange (329)
: : : : +- AQEShuffleRead (328)
: : : : +- ShuffleQueryStage (327), Statistics(sizeInBytes=34.6 KiB, rowCount=295)
: : : : +- 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=11.5 KiB, rowCount=245)
: : : : : +- 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=91.9 KiB, rowCount=980)
: : : : : : : +- 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=32.3 KiB, rowCount=295)
: : : +- ReusedExchange (331)
: : +- BroadcastQueryStage (349), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- 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=11.5 KiB, rowCount=245)
: +- 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)
+- BroadcastExchange (907)
+- Project (906)
+- Filter (905)
+- SortAggregate (904)
+- Sort (903)
+- Exchange (902)
+- SortAggregate (901)
+- Sort (900)
+- Exchange (899)
+- Filter (898)
+- Scan parquet (897)
+- == Initial Plan ==
CollectLimit (918)
+- InMemoryTableScan (1)
+- InMemoryRelation (2)
+- AdaptiveSparkPlan (914)
+- == Final Plan ==
ResultQueryStage (51)
+- * HashAggregate (50)
+- ShuffleQueryStage (49), Statistics(sizeInBytes=260.3 KiB, rowCount=980)
+- 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=84.2 KiB, rowCount=980)
: : : : +- 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=980)
+- 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 BuildRight (908)
:- 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=980)
: : +- BroadcastExchange (367)
: : +- AQEShuffleRead (366)
: : +- ShuffleQueryStage (365), Statistics(sizeInBytes=114.8 KiB, rowCount=980)
: : +- Exchange (364)
: : +- * Project (363)
: : +- * BroadcastHashJoin LeftOuter BuildRight (362)
: : :- AQEShuffleRead (256)
: : : +- ShuffleQueryStage (255), Statistics(sizeInBytes=114.8 KiB, rowCount=980)
: : : +- 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=91.9 KiB, rowCount=980)
: : : : : : : +- 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=295)
: : : +- BroadcastExchange (250)
: : : +- * HashAggregate (249)
: : : +- AQEShuffleRead (248)
: : : +- ShuffleQueryStage (247), Statistics(sizeInBytes=27.7 KiB, rowCount=295)
: : : +- Exchange (246)
: : : +- * HashAggregate (245)
: : : +- * Project (244)
: : : +- * BroadcastHashJoin Inner BuildLeft (243)
: : : :- BroadcastQueryStage (215), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : : +- BroadcastExchange (214)
: : : : +- AQEShuffleRead (213)
: : : : +- ShuffleQueryStage (212), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : : +- 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=11.5 KiB, rowCount=245)
: : : : : +- 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=84.2 KiB, rowCount=980)
: : : : : : : : +- 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=91.9 KiB, rowCount=980)
: : : : : : : +- 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=32.3 KiB, rowCount=295)
: : : +- 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=91.9 KiB, rowCount=980)
: : : : : : +- 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=980)
: : +- BroadcastExchange (360)
: : +- AQEShuffleRead (359)
: : +- ShuffleQueryStage (358), Statistics(sizeInBytes=84.2 KiB, rowCount=980)
: : +- 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=91.9 KiB, rowCount=980)
: : : : : : : +- 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=295)
: : : +- BroadcastExchange (341)
: : : +- * HashAggregate (340)
: : : +- AQEShuffleRead (339)
: : : +- ShuffleQueryStage (338), Statistics(sizeInBytes=30.0 KiB, rowCount=295)
: : : +- Exchange (337)
: : : +- * HashAggregate (336)
: : : +- * Project (335)
: : : +- * BroadcastHashJoin Inner BuildLeft (334)
: : : :- BroadcastQueryStage (330), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : : +- BroadcastExchange (329)
: : : : +- AQEShuffleRead (328)
: : : : +- ShuffleQueryStage (327), Statistics(sizeInBytes=34.6 KiB, rowCount=295)
: : : : +- 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=11.5 KiB, rowCount=245)
: : : : : +- 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=91.9 KiB, rowCount=980)
: : : : : : : +- 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=32.3 KiB, rowCount=295)
: : : +- ReusedExchange (331)
: : +- BroadcastQueryStage (349), Statistics(sizeInBytes=2.0 MiB, rowCount=980)
: : +- 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=11.5 KiB, rowCount=245)
: +- 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)
+- BroadcastExchange (907)
+- Project (906)
+- Filter (905)
+- SortAggregate (904)
+- Sort (903)
+- Exchange (902)
+- SortAggregate (901)
+- Sort (900)
+- Exchange (899)
+- Filter (898)
+- Scan parquet (897)
(1) InMemoryTableScan
Output: []
(2) InMemoryRelation
Arguments: [name#69888, configurationVersion#69887, executionId#69895, createdAt#69897, marketUnit#69896, businessContext#69893, messageVariables#69894], StorageLevel(disk, memory, deserialized, 1 replicas)
(3) Scan parquet
Output [2]: [product#69019, plant#69020]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002106/shardId=0_1_10000002106]
ReadSchema: struct<product:string,plant:string>
(4) ColumnarToRow [codegen id : 1]
Input [2]: [product#69019, plant#69020]
(5) Exchange
Input [2]: [product#69019, plant#69020]
Arguments: hashpartitioning(product#69019, plant#69020, 25), REPARTITION_BY_NUM, [plan_id=190454]
(6) ShuffleQueryStage
Output [2]: [product#69019, plant#69020]
Arguments: 0
(7) Scan parquet
Output [8]: [internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040, systemId#69025]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>
(8) ColumnarToRow [codegen id : 2]
Input [8]: [internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040, systemId#69025]
(9) Project [codegen id : 2]
Output [8]: [systemId#69025, internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040]
Input [8]: [internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040, systemId#69025]
(10) Exchange
Input [8]: [systemId#69025, internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=190481]
(11) ShuffleQueryStage
Output [8]: [systemId#69025, internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040]
Arguments: 1
(12) Project [codegen id : 8]
Output [1]: [struct(systemId, systemId#69025, internalUUID, internalUUID#69027, plant, plant#69029, product, product#69031, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69034, productionAspect, productionAspect#69036, salesPlant, salesPlant#69038, listing, listing#69040) AS productPlant#69044]
Input [8]: [systemId#69025, internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040]
(13) BroadcastExchange
Input [1]: [productPlant#69044]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=192492]
(14) BroadcastQueryStage
Output [1]: [productPlant#69044]
Arguments: 10
(15) BroadcastHashJoin [codegen id : 11]
Left keys [4]: [coalesce(product#69019, ), isnull(product#69019), coalesce(plant#69020, ), isnull(plant#69020)]
Right keys [4]: [coalesce(productPlant#69044.product.internalRefUUID, ), isnull(productPlant#69044.product.internalRefUUID), coalesce(productPlant#69044.plant.internalRefUUID, ), isnull(productPlant#69044.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(16) Scan parquet
Output [2]: [internalUUID#69062, systemId#69061]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(17) ColumnarToRow [codegen id : 3]
Input [2]: [internalUUID#69062, systemId#69061]
(18) Project [codegen id : 3]
Output [1]: [internalUUID#69062]
Input [2]: [internalUUID#69062, systemId#69061]
(19) Exchange
Input [1]: [internalUUID#69062]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=190513]
(20) ShuffleQueryStage
Output [1]: [internalUUID#69062]
Arguments: 2
(21) BroadcastExchange
Input [1]: [internalUUID#69062]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=191269]
(22) BroadcastQueryStage
Output [1]: [internalUUID#69062]
Arguments: 7
(23) BroadcastHashJoin [codegen id : 11]
Left keys [2]: [coalesce(plant#69020, ), isnull(plant#69020)]
Right keys [2]: [coalesce(internalUUID#69062, ), isnull(internalUUID#69062)]
Join type: LeftOuter
Join condition: None
(24) Project [codegen id : 11]
Output [3]: [product#69019, plant#69020, productPlant#69044]
Input [4]: [product#69019, plant#69020, productPlant#69044, internalUUID#69062]
(25) Scan parquet
Output [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(26) ColumnarToRow [codegen id : 4]
Input [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
(27) Filter [codegen id : 4]
Input [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
Condition : isnotnull(internalUUID#69094)
(28) Project [codegen id : 4]
Output [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Input [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
(29) Exchange
Input [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=190549]
(30) ShuffleQueryStage
Output [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: 3
(31) BroadcastExchange
Input [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=192212]
(32) BroadcastQueryStage
Output [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: 9
(33) BroadcastHashJoin [codegen id : 11]
Left keys [1]: [product#69019]
Right keys [1]: [internalUUID#69094]
Join type: LeftOuter
Join condition: None
(34) Project
Output [4]: [product#69019, plant#69020, productPlant#69044, filter(unitOfMeasureConversions#69100, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#69044.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#69044.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69098.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69098.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69107]
Input [6]: [product#69019, plant#69020, productPlant#69044, internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
(35) Generate [codegen id : 12]
Input [4]: [product#69019, plant#69020, productPlant#69044, filteredUnitOfMeasureConversions#69107]
Arguments: explode(filteredUnitOfMeasureConversions#69107.quantityNumerator), [product#69019, plant#69020, productPlant#69044, filteredUnitOfMeasureConversions#69107], true, [quantityNumerator#69124]
(36) Project [codegen id : 12]
Output [4]: [product#69019, plant#69020, productPlant#69044, filteredUnitOfMeasureConversions#69107.quantityDenominator AS _extract_quantityDenominator#88315]
Input [5]: [product#69019, plant#69020, productPlant#69044, filteredUnitOfMeasureConversions#69107, quantityNumerator#69124]
(37) Generate [codegen id : 12]
Input [4]: [product#69019, plant#69020, productPlant#69044, _extract_quantityDenominator#88315]
Arguments: explode(_extract_quantityDenominator#88315), [product#69019, plant#69020, productPlant#69044], true, [quantityDenominator#69129]
(38) Project [codegen id : 12]
Output [4]: [product#69019, plant#69020, productPlant#69044.product.id AS _extract_id#88338, productPlant#69044.plant.id AS _extract_id#88339]
Input [4]: [product#69019, plant#69020, productPlant#69044, quantityDenominator#69129]
(39) Scan parquet
Output [4]: [product#69873, plant#69874, demandTimeBuckets#69878, demandPointInTime#69881]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000002106/0_1_10000002106]
PushedFilters: [IsNotNull(product), IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,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#69873, plant#69874, demandTimeBuckets#69878, demandPointInTime#69881]
(41) Filter [codegen id : 5]
Input [4]: [product#69873, plant#69874, demandTimeBuckets#69878, demandPointInTime#69881]
Condition : (isnotnull(product#69873) AND isnotnull(plant#69874))
(42) BroadcastExchange
Input [4]: [product#69873, plant#69874, demandTimeBuckets#69878, demandPointInTime#69881]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=190589]
(43) BroadcastQueryStage
Output [4]: [product#69873, plant#69874, demandTimeBuckets#69878, demandPointInTime#69881]
Arguments: 4
(44) BroadcastHashJoin [codegen id : 12]
Left keys [2]: [product#69019, plant#69020]
Right keys [2]: [product#69873, plant#69874]
Join type: LeftOuter
Join condition: None
(45) Filter [codegen id : 12]
Input [8]: [product#69019, plant#69020, _extract_id#88338, _extract_id#88339, product#69873, plant#69874, demandTimeBuckets#69878, demandPointInTime#69881]
Condition : (((size(demandTimeBuckets#69878, true) = 0) OR isnull(demandTimeBuckets#69878)) AND ((size(demandPointInTime#69881, true) = 0) OR isnull(demandPointInTime#69881)))
(46) Project [codegen id : 12]
Output [3]: [_extract_id#88338 AS product#69883, _extract_id#88339 AS plant#69884, array(struct(name, PRODUCT, value, _extract_id#88338), struct(name, PLANT, value, _extract_id#88339)) AS businessContext#69893]
Input [8]: [product#69019, plant#69020, _extract_id#88338, _extract_id#88339, product#69873, plant#69874, demandTimeBuckets#69878, demandPointInTime#69881]
(47) HashAggregate [codegen id : 12]
Input [3]: [product#69883, plant#69884, businessContext#69893]
Keys [6]: [businessContext#69893, [] AS []#90098, 1 AS 1#90099, product#69883, plant#69884, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION AS UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#90100]
Functions: []
Aggregate Attributes: []
Results [6]: [businessContext#69893, []#90098, 1#90099, product#69883, plant#69884, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#90100]
(48) Exchange
Input [6]: [businessContext#69893, []#90098, 1#90099, product#69883, plant#69884, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#90100]
Arguments: hashpartitioning(businessContext#69893, []#90098, 1#90099, product#69883, plant#69884, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#90100, 25), ENSURE_REQUIREMENTS, [plan_id=194102]
(49) ShuffleQueryStage
Output [6]: [businessContext#69893, []#90098, 1#90099, product#69883, plant#69884, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#90100]
Arguments: 12
(50) HashAggregate [codegen id : 13]
Input [6]: [businessContext#69893, []#90098, 1#90099, product#69883, plant#69884, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#90100]
Keys [6]: [businessContext#69893, []#90098, 1#90099, product#69883, plant#69884, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#90100]
Functions: []
Aggregate Attributes: []
Results [7]: [UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION AS name#69888, 1 AS configurationVersion#69887, 10000002106 AS executionId#69895, 2026-08-10T09:23:51.530Z AS createdAt#69897, Daily_grocery AS marketUnit#69896, businessContext#69893, [] AS messageVariables#69894]
(51) ResultQueryStage
Output [7]: [name#69888, configurationVersion#69887, executionId#69895, createdAt#69897, marketUnit#69896, businessContext#69893, messageVariables#69894]
Arguments: 13
(52) Exchange
Input [2]: [product#69019, plant#69020]
Arguments: hashpartitioning(product#69019, plant#69020, 25), REPARTITION_BY_NUM, [plan_id=190115]
(53) Project
Output [8]: [systemId#69025, internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040]
Input [8]: [internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040, systemId#69025]
(54) Exchange
Input [8]: [systemId#69025, internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=190121]
(55) Project
Output [1]: [struct(systemId, systemId#69025, internalUUID, internalUUID#69027, plant, plant#69029, product, product#69031, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69034, productionAspect, productionAspect#69036, salesPlant, salesPlant#69038, listing, listing#69040) AS productPlant#69044]
Input [8]: [systemId#69025, internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040]
(56) BroadcastExchange
Input [1]: [productPlant#69044]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=190242]
(57) BroadcastHashJoin
Left keys [4]: [coalesce(product#69019, ), isnull(product#69019), coalesce(plant#69020, ), isnull(plant#69020)]
Right keys [4]: [coalesce(productPlant#69044.product.internalRefUUID, ), isnull(productPlant#69044.product.internalRefUUID), coalesce(productPlant#69044.plant.internalRefUUID, ), isnull(productPlant#69044.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(58) Project
Output [1]: [internalUUID#69062]
Input [2]: [internalUUID#69062, systemId#69061]
(59) Exchange
Input [1]: [internalUUID#69062]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=190132]
(60) BroadcastExchange
Input [1]: [internalUUID#69062]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=190247]
(61) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69020, ), isnull(plant#69020)]
Right keys [2]: [coalesce(internalUUID#69062, ), isnull(internalUUID#69062)]
Join type: LeftOuter
Join condition: None
(62) Project
Output [3]: [product#69019, plant#69020, productPlant#69044]
Input [4]: [product#69019, plant#69020, productPlant#69044, internalUUID#69062]
(63) Filter
Input [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
Condition : isnotnull(internalUUID#69094)
(64) Project
Output [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Input [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
(65) Exchange
Input [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=190144]
(66) BroadcastExchange
Input [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=190255]
(67) BroadcastHashJoin
Left keys [1]: [product#69019]
Right keys [1]: [internalUUID#69094]
Join type: LeftOuter
Join condition: None
(68) Project
Output [4]: [product#69019, plant#69020, productPlant#69044, filter(unitOfMeasureConversions#69100, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#69044.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#69044.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69098.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69098.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69107]
Input [6]: [product#69019, plant#69020, productPlant#69044, internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
(69) Generate
Input [4]: [product#69019, plant#69020, productPlant#69044, filteredUnitOfMeasureConversions#69107]
Arguments: explode(filteredUnitOfMeasureConversions#69107.quantityNumerator), [product#69019, plant#69020, productPlant#69044, filteredUnitOfMeasureConversions#69107], true, [quantityNumerator#69124]
(70) Project
Output [4]: [product#69019, plant#69020, productPlant#69044, filteredUnitOfMeasureConversions#69107.quantityDenominator AS _extract_quantityDenominator#88315]
Input [5]: [product#69019, plant#69020, productPlant#69044, filteredUnitOfMeasureConversions#69107, quantityNumerator#69124]
(71) Generate
Input [4]: [product#69019, plant#69020, productPlant#69044, _extract_quantityDenominator#88315]
Arguments: explode(_extract_quantityDenominator#88315), [product#69019, plant#69020, productPlant#69044], true, [quantityDenominator#69129]
(72) Project
Output [4]: [product#69019, plant#69020, productPlant#69044.product.id AS _extract_id#88338, productPlant#69044.plant.id AS _extract_id#88339]
Input [4]: [product#69019, plant#69020, productPlant#69044, quantityDenominator#69129]
(73) Filter
Input [4]: [product#69873, plant#69874, demandTimeBuckets#69878, demandPointInTime#69881]
Condition : (isnotnull(product#69873) AND isnotnull(plant#69874))
(74) BroadcastExchange
Input [4]: [product#69873, plant#69874, demandTimeBuckets#69878, demandPointInTime#69881]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=190272]
(75) BroadcastHashJoin
Left keys [2]: [product#69019, plant#69020]
Right keys [2]: [product#69873, plant#69874]
Join type: LeftOuter
Join condition: None
(76) Filter
Input [8]: [product#69019, plant#69020, _extract_id#88338, _extract_id#88339, product#69873, plant#69874, demandTimeBuckets#69878, demandPointInTime#69881]
Condition : (((size(demandTimeBuckets#69878, true) = 0) OR isnull(demandTimeBuckets#69878)) AND ((size(demandPointInTime#69881, true) = 0) OR isnull(demandPointInTime#69881)))
(77) Project
Output [3]: [_extract_id#88338 AS product#69883, _extract_id#88339 AS plant#69884, array(struct(name, PRODUCT, value, _extract_id#88338), struct(name, PLANT, value, _extract_id#88339)) AS businessContext#69893]
Input [8]: [product#69019, plant#69020, _extract_id#88338, _extract_id#88339, product#69873, plant#69874, demandTimeBuckets#69878, demandPointInTime#69881]
(78) HashAggregate
Input [3]: [product#69883, plant#69884, businessContext#69893]
Keys [6]: [businessContext#69893, [] AS []#89448, 1 AS 1#89450, product#69883, plant#69884, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION AS UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#89452]
Functions: []
Aggregate Attributes: []
Results [6]: [businessContext#69893, []#89448, 1#89450, product#69883, plant#69884, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#89452]
(79) Exchange
Input [6]: [businessContext#69893, []#89448, 1#89450, product#69883, plant#69884, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#89452]
Arguments: hashpartitioning(businessContext#69893, []#89448, 1#89450, product#69883, plant#69884, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#89452, 25), ENSURE_REQUIREMENTS, [plan_id=190284]
(80) HashAggregate
Input [6]: [businessContext#69893, []#89448, 1#89450, product#69883, plant#69884, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#89452]
Keys [6]: [businessContext#69893, []#89448, 1#89450, product#69883, plant#69884, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#89452]
Functions: []
Aggregate Attributes: []
Results [7]: [UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION AS name#69888, 1 AS configurationVersion#69887, 10000002106 AS executionId#69895, 2026-08-10T09:23:51.530Z AS createdAt#69897, Daily_grocery AS marketUnit#69896, businessContext#69893, [] AS messageVariables#69894]
(81) InMemoryTableScan
Output [7]: [externalPlantId#70775, externalProductId#70777, id#70731, quantityUom#70779, scheduleLines#70783, timezonecode#74656, validConfirmations#70963]
Arguments: [externalPlantId#70775, externalProductId#70777, id#70731, quantityUom#70779, scheduleLines#70783, timezonecode#74656, validConfirmations#70963]
(82) InMemoryRelation
Arguments: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784, stockDatetime#74977, timezonecode#74656, validConfirmations#70963], StorageLevel(disk, memory, deserialized, 1 replicas)
(83) Scan parquet
Output [3]: [product#69019, plant#69020, orderDateTime#69021]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(84) ColumnarToRow [codegen id : 1]
Input [3]: [product#69019, plant#69020, orderDateTime#69021]
(85) Filter [codegen id : 1]
Input [3]: [product#69019, plant#69020, orderDateTime#69021]
Condition : (isnotnull(plant#69020) AND isnotnull(product#69019))
(86) Exchange
Input [3]: [product#69019, plant#69020, orderDateTime#69021]
Arguments: hashpartitioning(product#69019, plant#69020, 25), REPARTITION_BY_NUM, [plan_id=51871]
(87) ShuffleQueryStage
Output [3]: [product#69019, plant#69020, orderDateTime#69021]
Arguments: 0
(88) Scan parquet
Output [4]: [plant#69029, product#69031, productionAspect#69036, systemId#69025]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(89) ColumnarToRow [codegen id : 2]
Input [4]: [plant#69029, product#69031, productionAspect#69036, systemId#69025]
(90) Project [codegen id : 2]
Output [4]: [plant#69029.internalRefUUID AS _extract_internalRefUUID#71360, product#69031.internalRefUUID AS _extract_internalRefUUID#71357, productionAspect#69036.productMovementPlants.unitOfIssue.code AS _extract_code#71361, productionAspect#69036.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71362]
Input [4]: [plant#69029, product#69031, productionAspect#69036, systemId#69025]
(91) Exchange
Input [4]: [_extract_internalRefUUID#71360, _extract_internalRefUUID#71357, _extract_code#71361, _extract_internalRefUUID#71362]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=51887]
(92) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#71360, _extract_internalRefUUID#71357, _extract_code#71361, _extract_internalRefUUID#71362]
Arguments: 1
(93) Project [codegen id : 61]
Output [4]: [_extract_code#71361, _extract_internalRefUUID#71362, _extract_internalRefUUID#71357, _extract_internalRefUUID#71360]
Input [4]: [_extract_internalRefUUID#71360, _extract_internalRefUUID#71357, _extract_code#71361, _extract_internalRefUUID#71362]
(94) BroadcastExchange
Input [4]: [_extract_code#71361, _extract_internalRefUUID#71362, _extract_internalRefUUID#71357, _extract_internalRefUUID#71360]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=75325]
(95) BroadcastQueryStage
Output [4]: [_extract_code#71361, _extract_internalRefUUID#71362, _extract_internalRefUUID#71357, _extract_internalRefUUID#71360]
Arguments: 122
(96) BroadcastHashJoin [codegen id : 103]
Left keys [4]: [coalesce(product#69019, ), isnull(product#69019), coalesce(plant#69020, ), isnull(plant#69020)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71357, ), isnull(_extract_internalRefUUID#71357), coalesce(_extract_internalRefUUID#71360, ), isnull(_extract_internalRefUUID#71360)]
Join type: LeftOuter
Join condition: None
(97) Project [codegen id : 103]
Output [5]: [product#69019, plant#69020, orderDateTime#69021, _extract_code#71361, _extract_internalRefUUID#71362]
Input [7]: [product#69019, plant#69020, orderDateTime#69021, _extract_code#71361, _extract_internalRefUUID#71362, _extract_internalRefUUID#71357, _extract_internalRefUUID#71360]
(98) Scan parquet
Output [3]: [internalUUID#69062, address#69068, systemId#69061]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string,address:struct<timeZone:struct<code:string>>>
(99) ColumnarToRow [codegen id : 3]
Input [3]: [internalUUID#69062, address#69068, systemId#69061]
(100) Project [codegen id : 3]
Output [2]: [internalUUID#69062, address#69068.timeZone.code AS timezonecode#69074]
Input [3]: [internalUUID#69062, address#69068, systemId#69061]
(101) Exchange
Input [2]: [internalUUID#69062, timezonecode#69074]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=51906]
(102) ShuffleQueryStage
Output [2]: [internalUUID#69062, timezonecode#69074]
Arguments: 2
(103) BroadcastExchange
Input [2]: [internalUUID#69062, timezonecode#69074]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=66364]
(104) BroadcastQueryStage
Output [2]: [internalUUID#69062, timezonecode#69074]
Arguments: 105
(105) BroadcastHashJoin [codegen id : 103]
Left keys [2]: [coalesce(plant#69020, ), isnull(plant#69020)]
Right keys [2]: [coalesce(internalUUID#69062, ), isnull(internalUUID#69062)]
Join type: LeftOuter
Join condition: None
(106) Project [codegen id : 103]
Output [6]: [product#69019, plant#69020, orderDateTime#69021, _extract_code#71361, _extract_internalRefUUID#71362, CASE WHEN isnotnull(timezonecode#69074) THEN timezonecode#69074 ELSE UTC END AS timezonecode#69079]
Input [7]: [product#69019, plant#69020, orderDateTime#69021, _extract_code#71361, _extract_internalRefUUID#71362, internalUUID#69062, timezonecode#69074]
(107) Scan parquet
Output [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(108) ColumnarToRow [codegen id : 4]
Input [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
(109) Filter [codegen id : 4]
Input [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
Condition : isnotnull(internalUUID#69094)
(110) Project [codegen id : 4]
Output [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Input [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
(111) Exchange
Input [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=51926]
(112) ShuffleQueryStage
Output [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: 3
(113) BroadcastExchange
Input [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=69575]
(114) BroadcastQueryStage
Output [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: 107
(115) BroadcastHashJoin [codegen id : 103]
Left keys [1]: [product#69019]
Right keys [1]: [internalUUID#69094]
Join type: LeftOuter
Join condition: None
(116) Project
Output [5]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, filter(unitOfMeasureConversions#69100, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71361) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71362)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69098.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69098.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69107]
Input [9]: [product#69019, plant#69020, orderDateTime#69021, _extract_code#71361, _extract_internalRefUUID#71362, timezonecode#69079, internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
(117) Generate [codegen id : 104]
Input [5]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, filteredUnitOfMeasureConversions#69107]
Arguments: explode(filteredUnitOfMeasureConversions#69107.quantityNumerator), [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, filteredUnitOfMeasureConversions#69107], true, [quantityNumerator#69124]
(118) Project [codegen id : 104]
Output [5]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, filteredUnitOfMeasureConversions#69107.quantityDenominator AS _extract_quantityDenominator#70968]
Input [6]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, filteredUnitOfMeasureConversions#69107, quantityNumerator#69124]
(119) Generate [codegen id : 104]
Input [5]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, _extract_quantityDenominator#70968]
Arguments: explode(_extract_quantityDenominator#70968), [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079], true, [quantityDenominator#69129]
(120) Project [codegen id : 104]
Output [4]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079]
Input [5]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, quantityDenominator#69129]
(121) Scan parquet
Output [6]: [internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, systemId#69257]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(122) ColumnarToRow [codegen id : 5]
Input [6]: [internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, systemId#69257]
(123) Filter [codegen id : 5]
Input [6]: [internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, systemId#69257]
Condition : (isnotnull(plant#69260.internalRefUUID) AND isnotnull(product#69259.internalRefUUID))
(124) Project [codegen id : 5]
Output [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
Input [6]: [internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, systemId#69257]
(125) Exchange
Input [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=51953]
(126) ShuffleQueryStage
Output [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
Arguments: 4
(127) BroadcastExchange
Input [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=72940]
(128) BroadcastQueryStage
Output [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
Arguments: 118
(129) Scan parquet
Output [2]: [marketUnit#69135, distributionCenters#69141]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(130) ColumnarToRow [codegen id : 6]
Input [2]: [marketUnit#69135, distributionCenters#69141]
(131) Filter [codegen id : 6]
Input [2]: [marketUnit#69135, distributionCenters#69141]
Condition : (((marketUnit#69135 <=> Daily_grocery) AND (size(distributionCenters#69141, true) > 0)) AND isnotnull(distributionCenters#69141))
(132) Project [codegen id : 6]
Output [1]: [distributionCenters#69141]
Input [2]: [marketUnit#69135, distributionCenters#69141]
(133) Exchange
Input [1]: [distributionCenters#69141]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=51973]
(134) ShuffleQueryStage
Output [1]: [distributionCenters#69141]
Arguments: 5
(135) Generate [codegen id : 56]
Input [1]: [distributionCenters#69141]
Arguments: explode(distributionCenters#69141), false, [distributionCenters#69183]
(136) Filter [codegen id : 56]
Input [1]: [distributionCenters#69183]
Condition : (((size(distributionCenters#69183.storageLocations, true) > 0) AND isnotnull(distributionCenters#69183.storageLocations)) AND isnotnull(distributionCenters#69183.internalRefUUID))
(137) Project [codegen id : 56]
Output [2]: [distributionCenters#69183.internalRefUUID AS _extract_internalRefUUID#70977, distributionCenters#69183.storageLocations AS _extract_storageLocations#70978]
Input [1]: [distributionCenters#69183]
(138) Generate [codegen id : 56]
Input [2]: [_extract_internalRefUUID#70977, _extract_storageLocations#70978]
Arguments: explode(_extract_storageLocations#70978), [_extract_internalRefUUID#70977], false, [storageLocations#69197]
(139) Project [codegen id : 56]
Output [3]: [_extract_internalRefUUID#70977 AS plantUuid#69186, storageLocations#69197.id AS storageLocId#69199, storageLocations#69197.internalRefUUID AS storageLocUuid#69200]
Input [2]: [_extract_internalRefUUID#70977, storageLocations#69197]
(140) BroadcastExchange
Input [3]: [plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=65359]
(141) BroadcastQueryStage
Output [3]: [plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
Arguments: 97
(142) Scan parquet
Output [2]: [product#69771, plant#69772]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(143) ColumnarToRow [codegen id : 7]
Input [2]: [product#69771, plant#69772]
(144) Filter [codegen id : 7]
Input [2]: [product#69771, plant#69772]
Condition : isnotnull(plant#69772)
(145) Exchange
Input [2]: [product#69771, plant#69772]
Arguments: hashpartitioning(product#69771, plant#69772, 25), REPARTITION_BY_NUM, [plan_id=51996]
(146) ShuffleQueryStage
Output [2]: [product#69771, plant#69772]
Arguments: 6
(147) ReusedExchange [Reuses operator id: 94]
Output [4]: [_extract_code#71369, _extract_internalRefUUID#71370, _extract_internalRefUUID#71367, _extract_internalRefUUID#71368]
(148) BroadcastQueryStage
Output [4]: [_extract_code#71369, _extract_internalRefUUID#71370, _extract_internalRefUUID#71367, _extract_internalRefUUID#71368]
Arguments: 124
(149) BroadcastHashJoin [codegen id : 73]
Left keys [4]: [coalesce(product#69771, ), isnull(product#69771), coalesce(plant#69772, ), isnull(plant#69772)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71367, ), isnull(_extract_internalRefUUID#71367), coalesce(_extract_internalRefUUID#71368, ), isnull(_extract_internalRefUUID#71368)]
Join type: LeftOuter
Join condition: None
(150) Project [codegen id : 73]
Output [4]: [product#69771, plant#69772, _extract_code#71369, _extract_internalRefUUID#71370]
Input [6]: [product#69771, plant#69772, _extract_code#71369, _extract_internalRefUUID#71370, _extract_internalRefUUID#71367, _extract_internalRefUUID#71368]
(151) Scan parquet
Output [2]: [internalUUID#69798, systemId#69797]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(152) ColumnarToRow [codegen id : 9]
Input [2]: [internalUUID#69798, systemId#69797]
(153) Project [codegen id : 9]
Output [1]: [internalUUID#69798]
Input [2]: [internalUUID#69798, systemId#69797]
(154) Exchange
Input [1]: [internalUUID#69798]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=52033]
(155) ShuffleQueryStage
Output [1]: [internalUUID#69798]
Arguments: 9
(156) BroadcastExchange
Input [1]: [internalUUID#69798]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=85527]
(157) BroadcastQueryStage
Output [1]: [internalUUID#69798]
Arguments: 143
(158) BroadcastHashJoin [codegen id : 73]
Left keys [2]: [coalesce(plant#69772, ), isnull(plant#69772)]
Right keys [2]: [coalesce(internalUUID#69798, ), isnull(internalUUID#69798)]
Join type: LeftOuter
Join condition: None
(159) Project [codegen id : 73]
Output [4]: [product#69771, plant#69772, _extract_code#71369, _extract_internalRefUUID#71370]
Input [5]: [product#69771, plant#69772, _extract_code#71369, _extract_internalRefUUID#71370, internalUUID#69798]
(160) ReusedExchange [Reuses operator id: 113]
Output [3]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832]
(161) BroadcastQueryStage
Output [3]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832]
Arguments: 108
(162) BroadcastHashJoin [codegen id : 73]
Left keys [1]: [product#69771]
Right keys [1]: [internalUUID#69826]
Join type: LeftOuter
Join condition: None
(163) Project
Output [2]: [plant#69772, filter(unitOfMeasureConversions#69832, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71369) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71370)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69830.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69830.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69849]
Input [7]: [product#69771, plant#69772, _extract_code#71369, _extract_internalRefUUID#71370, internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832]
(164) Generate [codegen id : 74]
Input [2]: [plant#69772, filteredUnitOfMeasureConversions#69849]
Arguments: explode(filteredUnitOfMeasureConversions#69849.quantityNumerator), [plant#69772, filteredUnitOfMeasureConversions#69849], true, [quantityNumerator#69851]
(165) Project [codegen id : 74]
Output [2]: [plant#69772, filteredUnitOfMeasureConversions#69849.quantityDenominator AS _extract_quantityDenominator#70980]
Input [3]: [plant#69772, filteredUnitOfMeasureConversions#69849, quantityNumerator#69851]
(166) Generate [codegen id : 74]
Input [2]: [plant#69772, _extract_quantityDenominator#70980]
Arguments: explode(_extract_quantityDenominator#70980), [plant#69772], true, [quantityDenominator#69854]
(167) Project [codegen id : 74]
Output [1]: [plant#69772]
Input [2]: [plant#69772, quantityDenominator#69854]
(168) HashAggregate [codegen id : 74]
Input [1]: [plant#69772]
Keys [1]: [plant#69772]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69772]
(169) Exchange
Input [1]: [plant#69772]
Arguments: hashpartitioning(plant#69772, 25), ENSURE_REQUIREMENTS, [plan_id=110323]
(170) ShuffleQueryStage
Output [1]: [plant#69772]
Arguments: 152
(171) AQEShuffleRead
Input [1]: [plant#69772]
Arguments: coalesced
(172) HashAggregate
Input [1]: [plant#69772]
Keys [1]: [plant#69772]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69772]
(173) BroadcastHashJoin
Left keys [1]: [plantUuid#69186]
Right keys [1]: [plant#69772]
Join type: Inner
Join condition: None
(174) Project
Output [3]: [plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
Input [4]: [plantUuid#69186, storageLocId#69199, storageLocUuid#69200, plant#69772]
(175) BroadcastHashJoin [codegen id : 83]
Left keys [2]: [coalesce(plant#69260.internalRefUUID, ), isnull(plant#69260.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#69186, ), isnull(plantUuid#69186)]
Join type: Inner
Join condition: None
(176) Generate
Input [9]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
Arguments: explode(filter(stockQuantities#69262, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#69200) AND (lambda x#69269.storageLocation.Id = storageLocId#69199)), lambda x#69269, false))), [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, plantUuid#69186], false, [stockQuantity#69272]
(177) ObjectHashAggregate
Input [7]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, plantUuid#69186, stockQuantity#69272]
Keys [5]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257]
Functions [2]: [partial_first(calculationDateTime#69261, false), partial_collect_list(stockQuantity#69272, 0, 0)]
Aggregate Attributes [3]: [first#73924, valueSet#73925, buf#73926]
Results [8]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257, first#73927, valueSet#73928, buf#73929]
(178) ObjectHashAggregate
Input [8]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257, first#73927, valueSet#73928, buf#73929]
Keys [5]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257]
Functions [2]: [first(calculationDateTime#69261, false), collect_list(stockQuantity#69272, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#69261)()#69286, collect_list(stockQuantity#69272, 0, 0)#69287]
Results [4]: [product#69259, plant#69260, first(calculationDateTime#69261)()#69286 AS calculationDateTime#69273, collect_list(stockQuantity#69272, 0, 0)#69287 AS stockQuantities#69274]
(179) Filter [codegen id : 84]
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantities#69274]
Condition : ((size(stockQuantities#69274, true) > 0) AND isnotnull(calculationDateTime#69273))
(180) Generate [codegen id : 84]
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantities#69274]
Arguments: explode(stockQuantities#69274), [product#69259, plant#69260, calculationDateTime#69273], false, [stockQuantity#69289]
(181) Filter [codegen id : 84]
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantity#69289]
Condition : (((isnotnull(stockQuantity#69289.specialStockIndicator.code) AND isnotnull(stockQuantity#69289.stockType.code)) AND (stockQuantity#69289.specialStockIndicator.code = )) AND (stockQuantity#69289.stockType.code = 01))
(182) Project [codegen id : 84]
Output [4]: [plant#69260.internalRefUUID AS plantUuid#69291, product#69259.internalRefUUID AS productUuid#69293, calculationDateTime#69273, stockQuantity#69289.storagelocation.id AS storageLocId#69294]
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantity#69289]
(183) Exchange
Input [4]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294]
Arguments: hashpartitioning(productUuid#69293, plantUuid#69291, 25), ENSURE_REQUIREMENTS, [plan_id=115571]
(184) ShuffleQueryStage
Output [4]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294]
Arguments: 161
(185) AQEShuffleRead
Input [4]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294]
Arguments: local
(186) BroadcastExchange
Input [4]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=117880]
(187) BroadcastQueryStage
Output [4]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294]
Arguments: 167
(188) Scan parquet
Output [3]: [product#69323, plant#69324, orderDateTime#69325]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(189) ColumnarToRow [codegen id : 11]
Input [3]: [product#69323, plant#69324, orderDateTime#69325]
(190) Filter [codegen id : 11]
Input [3]: [product#69323, plant#69324, orderDateTime#69325]
Condition : ((isnotnull(orderDateTime#69325) AND isnotnull(plant#69324)) AND isnotnull(product#69323))
(191) Exchange
Input [3]: [product#69323, plant#69324, orderDateTime#69325]
Arguments: hashpartitioning(product#69323, plant#69324, 25), REPARTITION_BY_NUM, [plan_id=52094]
(192) ShuffleQueryStage
Output [3]: [product#69323, plant#69324, orderDateTime#69325]
Arguments: 12
(193) ReusedExchange [Reuses operator id: 94]
Output [4]: [_extract_code#71375, _extract_internalRefUUID#71376, _extract_internalRefUUID#71378, _extract_internalRefUUID#71377]
(194) BroadcastQueryStage
Output [4]: [_extract_code#71375, _extract_internalRefUUID#71376, _extract_internalRefUUID#71378, _extract_internalRefUUID#71377]
Arguments: 126
(195) BroadcastHashJoin [codegen id : 91]
Left keys [4]: [coalesce(product#69323, ), isnull(product#69323), coalesce(plant#69324, ), isnull(plant#69324)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71378, ), isnull(_extract_internalRefUUID#71378), coalesce(_extract_internalRefUUID#71377, ), isnull(_extract_internalRefUUID#71377)]
Join type: LeftOuter
Join condition: None
(196) Project [codegen id : 91]
Output [5]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#71375, _extract_internalRefUUID#71376]
Input [7]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#71375, _extract_internalRefUUID#71376, _extract_internalRefUUID#71378, _extract_internalRefUUID#71377]
(197) ReusedExchange [Reuses operator id: 156]
Output [1]: [internalUUID#69338]
(198) BroadcastQueryStage
Output [1]: [internalUUID#69338]
Arguments: 144
(199) BroadcastHashJoin [codegen id : 91]
Left keys [2]: [coalesce(plant#69324, ), isnull(plant#69324)]
Right keys [2]: [coalesce(internalUUID#69338, ), isnull(internalUUID#69338)]
Join type: LeftOuter
Join condition: None
(200) Project [codegen id : 91]
Output [5]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#71375, _extract_internalRefUUID#71376]
Input [6]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#71375, _extract_internalRefUUID#71376, internalUUID#69338]
(201) ReusedExchange [Reuses operator id: 113]
Output [3]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358]
(202) BroadcastQueryStage
Output [3]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358]
Arguments: 109
(203) BroadcastHashJoin [codegen id : 91]
Left keys [1]: [product#69323]
Right keys [1]: [internalUUID#69352]
Join type: LeftOuter
Join condition: None
(204) Project
Output [4]: [product#69323, plant#69324, orderDateTime#69325, filter(unitOfMeasureConversions#69358, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71375) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71376)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69356.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69356.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69363]
Input [8]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#71375, _extract_internalRefUUID#71376, internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358]
(205) Generate
Input [4]: [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363]
Arguments: explode(filteredUnitOfMeasureConversions#69363.quantityNumerator), [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363], true, [quantityNumerator#69364]
(206) Project
Output [4]: [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363.quantityDenominator AS _extract_quantityDenominator#70990]
Input [5]: [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363, quantityNumerator#69364]
(207) Generate
Input [4]: [product#69323, plant#69324, orderDateTime#69325, _extract_quantityDenominator#70990]
Arguments: explode(_extract_quantityDenominator#70990), [product#69323, plant#69324, orderDateTime#69325], true, [quantityDenominator#69365]
(208) Project
Output [3]: [product#69323, plant#69324, orderDateTime#69325]
Input [4]: [product#69323, plant#69324, orderDateTime#69325, quantityDenominator#69365]
(209) BroadcastHashJoin [codegen id : 92]
Left keys [2]: [plantUuid#69291, productUuid#69293]
Right keys [2]: [plant#69324, product#69323]
Join type: Inner
Join condition: (calculationDateTime#69273 <= orderDateTime#69325)
(210) Project [codegen id : 92]
Output [4]: [plantUuid#69291 AS plant#69435, productUuid#69293 AS product#69436, storageLocId#69294, calculationDateTime#69273]
Input [7]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294, product#69323, plant#69324, orderDateTime#69325]
(211) Exchange
Input [4]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273]
Arguments: hashpartitioning(coalesce(plant#69435, ), isnull(plant#69435), coalesce(product#69436, ), isnull(product#69436), coalesce(storageLocId#69294, ), isnull(storageLocId#69294), coalesce(calculationDateTime#69273, 1970-01-01 00:00:00), isnull(calculationDateTime#69273), 25), ENSURE_REQUIREMENTS, [plan_id=119285]
(212) ShuffleQueryStage
Output [4]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273]
Arguments: 173
(213) AQEShuffleRead
Input [4]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273]
Arguments: local
(214) BroadcastExchange
Input [4]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true]), coalesce(input[1, string, true], ), isnull(input[1, string, true]), coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, timestamp, true], 1970-01-01 00:00:00), isnull(input[3, timestamp, true])),false), [plan_id=123597]
(215) BroadcastQueryStage
Output [4]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273]
Arguments: 179
(216) ReusedExchange [Reuses operator id: 186]
Output [4]: [plantUuid#69540, productUuid#69542, calculationDateTime#69536, storageLocId#69543]
(217) BroadcastQueryStage
Output [4]: [plantUuid#69540, productUuid#69542, calculationDateTime#69536, storageLocId#69543]
Arguments: 169
(218) ReusedExchange [Reuses operator id: 191]
Output [3]: [product#69548, plant#69549, orderDateTime#69550]
(219) ShuffleQueryStage
Output [3]: [product#69548, plant#69549, orderDateTime#69550]
Arguments: 32
(220) ReusedExchange [Reuses operator id: 94]
Output [4]: [_extract_code#71393, _extract_internalRefUUID#71394, _extract_internalRefUUID#71391, _extract_internalRefUUID#71392]
(221) BroadcastQueryStage
Output [4]: [_extract_code#71393, _extract_internalRefUUID#71394, _extract_internalRefUUID#71391, _extract_internalRefUUID#71392]
Arguments: 130
(222) BroadcastHashJoin [codegen id : 93]
Left keys [4]: [coalesce(product#69548, ), isnull(product#69548), coalesce(plant#69549, ), isnull(plant#69549)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71391, ), isnull(_extract_internalRefUUID#71391), coalesce(_extract_internalRefUUID#71392, ), isnull(_extract_internalRefUUID#71392)]
Join type: LeftOuter
Join condition: None
(223) Project [codegen id : 93]
Output [5]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#71393, _extract_internalRefUUID#71394]
Input [7]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#71393, _extract_internalRefUUID#71394, _extract_internalRefUUID#71391, _extract_internalRefUUID#71392]
(224) ReusedExchange [Reuses operator id: 156]
Output [1]: [internalUUID#69562]
(225) BroadcastQueryStage
Output [1]: [internalUUID#69562]
Arguments: 146
(226) BroadcastHashJoin [codegen id : 93]
Left keys [2]: [coalesce(plant#69549, ), isnull(plant#69549)]
Right keys [2]: [coalesce(internalUUID#69562, ), isnull(internalUUID#69562)]
Join type: LeftOuter
Join condition: None
(227) Project [codegen id : 93]
Output [5]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#71393, _extract_internalRefUUID#71394]
Input [6]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#71393, _extract_internalRefUUID#71394, internalUUID#69562]
(228) ReusedExchange [Reuses operator id: 113]
Output [3]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582]
(229) BroadcastQueryStage
Output [3]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582]
Arguments: 111
(230) BroadcastHashJoin [codegen id : 93]
Left keys [1]: [product#69548]
Right keys [1]: [internalUUID#69576]
Join type: LeftOuter
Join condition: None
(231) Project
Output [4]: [product#69548, plant#69549, orderDateTime#69550, filter(unitOfMeasureConversions#69582, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71393) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71394)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69580.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69580.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69587]
Input [8]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#71393, _extract_internalRefUUID#71394, internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582]
(232) Generate
Input [4]: [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587]
Arguments: explode(filteredUnitOfMeasureConversions#69587.quantityNumerator), [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587], true, [quantityNumerator#69588]
(233) Project
Output [4]: [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587.quantityDenominator AS _extract_quantityDenominator#71011]
Input [5]: [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587, quantityNumerator#69588]
(234) Generate
Input [4]: [product#69548, plant#69549, orderDateTime#69550, _extract_quantityDenominator#71011]
Arguments: explode(_extract_quantityDenominator#71011), [product#69548, plant#69549, orderDateTime#69550], true, [quantityDenominator#69589]
(235) Project
Output [3]: [product#69548, plant#69549, orderDateTime#69550]
Input [4]: [product#69548, plant#69549, orderDateTime#69550, quantityDenominator#69589]
(236) BroadcastHashJoin [codegen id : 94]
Left keys [2]: [plantUuid#69540, productUuid#69542]
Right keys [2]: [plant#69549, product#69548]
Join type: Inner
Join condition: (calculationDateTime#69536 <= orderDateTime#69550)
(237) Project [codegen id : 94]
Output [4]: [plantUuid#69540 AS plant#69620, productUuid#69542 AS product#69621, storageLocId#69543, calculationDateTime#69536]
Input [7]: [plantUuid#69540, productUuid#69542, calculationDateTime#69536, storageLocId#69543, product#69548, plant#69549, orderDateTime#69550]
(238) HashAggregate [codegen id : 94]
Input [4]: [plant#69620, product#69621, storageLocId#69543, calculationDateTime#69536]
Keys [3]: [plant#69620, product#69621, storageLocId#69543]
Functions [1]: [partial_max(calculationDateTime#69536)]
Aggregate Attributes [1]: [max#73930]
Results [4]: [plant#69620, product#69621, storageLocId#69543, max#73931]
(239) HashAggregate [codegen id : 94]
Input [4]: [plant#69620, product#69621, storageLocId#69543, max#73931]
Keys [3]: [plant#69620, product#69621, storageLocId#69543]
Functions [1]: [max(calculationDateTime#69536)]
Aggregate Attributes [1]: [max(calculationDateTime#69536)#69447]
Results [4]: [plant#69620, product#69621, storageLocId#69543, max(calculationDateTime#69536)#69447 AS max_calc_datetime#69441]
(240) Exchange
Input [4]: [plant#69620, product#69621, storageLocId#69543, max_calc_datetime#69441]
Arguments: hashpartitioning(coalesce(plant#69620, ), isnull(plant#69620), coalesce(product#69621, ), isnull(product#69621), coalesce(storageLocId#69543, ), isnull(storageLocId#69543), coalesce(max_calc_datetime#69441, 1970-01-01 00:00:00), isnull(max_calc_datetime#69441), 25), ENSURE_REQUIREMENTS, [plan_id=119344]
(241) ShuffleQueryStage
Output [4]: [plant#69620, product#69621, storageLocId#69543, max_calc_datetime#69441]
Arguments: 174
(242) AQEShuffleRead
Input [4]: [plant#69620, product#69621, storageLocId#69543, max_calc_datetime#69441]
Arguments: local
(243) BroadcastHashJoin [codegen id : 99]
Left keys [8]: [coalesce(plant#69435, ), isnull(plant#69435), coalesce(product#69436, ), isnull(product#69436), coalesce(storageLocId#69294, ), isnull(storageLocId#69294), coalesce(calculationDateTime#69273, 1970-01-01 00:00:00), isnull(calculationDateTime#69273)]
Right keys [8]: [coalesce(plant#69620, ), isnull(plant#69620), coalesce(product#69621, ), isnull(product#69621), coalesce(storageLocId#69543, ), isnull(storageLocId#69543), coalesce(max_calc_datetime#69441, 1970-01-01 00:00:00), isnull(max_calc_datetime#69441)]
Join type: Inner
Join condition: None
(244) Project [codegen id : 99]
Output [3]: [plant#69435, product#69436, calculationDateTime#69273]
Input [8]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273, plant#69620, product#69621, storageLocId#69543, max_calc_datetime#69441]
(245) HashAggregate [codegen id : 99]
Input [3]: [plant#69435, product#69436, calculationDateTime#69273]
Keys [2]: [product#69436, plant#69435]
Functions [1]: [partial_min(calculationDateTime#69273)]
Aggregate Attributes [1]: [min#73914]
Results [3]: [product#69436, plant#69435, min#73915]
(246) Exchange
Input [3]: [product#69436, plant#69435, min#73915]
Arguments: hashpartitioning(product#69436, plant#69435, 25), ENSURE_REQUIREMENTS, [plan_id=124704]
(247) ShuffleQueryStage
Output [3]: [product#69436, plant#69435, min#73915]
Arguments: 180
(248) AQEShuffleRead
Input [3]: [product#69436, plant#69435, min#73915]
Arguments: coalesced
(249) HashAggregate [codegen id : 101]
Input [3]: [product#69436, plant#69435, min#73915]
Keys [2]: [product#69436, plant#69435]
Functions [1]: [min(calculationDateTime#69273)]
Aggregate Attributes [1]: [min(calculationDateTime#69273)#69766]
Results [3]: [product#69436, plant#69435, min(calculationDateTime#69273)#69766 AS minCalculationDateTime#69752]
(250) BroadcastExchange
Input [3]: [product#69436, plant#69435, minCalculationDateTime#69752]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=126902]
(251) BroadcastQueryStage
Output [3]: [product#69436, plant#69435, minCalculationDateTime#69752]
Arguments: 182
(252) BroadcastHashJoin [codegen id : 104]
Left keys [2]: [plant#69020, product#69019]
Right keys [2]: [plant#69435, product#69436]
Join type: LeftOuter
Join condition: None
(253) Project [codegen id : 104]
Output [4]: [product#69019, plant#69020, timezonecode#69079, CASE WHEN isnotnull(minCalculationDateTime#69752) THEN minCalculationDateTime#69752 ELSE orderDateTime#69021 END AS stockDatetime#69868]
Input [7]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, product#69436, plant#69435, minCalculationDateTime#69752]
(254) Exchange
Input [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: hashpartitioning(coalesce(plant#69020, ), isnull(plant#69020), coalesce(product#69019, ), isnull(product#69019), 25), ENSURE_REQUIREMENTS, [plan_id=128012]
(255) ShuffleQueryStage
Output [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: 184
(256) AQEShuffleRead
Input [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: local
(257) Scan parquet
Output [3]: [product#69978, plant#69979, orderDateTime#69980]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002106/shardId=0_1_10000002106]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(258) ColumnarToRow [codegen id : 25]
Input [3]: [product#69978, plant#69979, orderDateTime#69980]
(259) Exchange
Input [3]: [product#69978, plant#69979, orderDateTime#69980]
Arguments: hashpartitioning(product#69978, plant#69979, 25), REPARTITION_BY_NUM, [plan_id=52437]
(260) ShuffleQueryStage
Output [3]: [product#69978, plant#69979, orderDateTime#69980]
Arguments: 39
(261) Scan parquet
Output [8]: [internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989, systemId#69982]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>
(262) ColumnarToRow [codegen id : 26]
Input [8]: [internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989, systemId#69982]
(263) Project [codegen id : 26]
Output [8]: [systemId#69982, internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989]
Input [8]: [internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989, systemId#69982]
(264) Exchange
Input [8]: [systemId#69982, internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=52451]
(265) ShuffleQueryStage
Output [8]: [systemId#69982, internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989]
Arguments: 40
(266) Project [codegen id : 71]
Output [1]: [struct(systemId, systemId#69982, internalUUID, internalUUID#69983, plant, plant#69984, product, product#69985, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69986, productionAspect, productionAspect#69987, salesPlant, salesPlant#69988, listing, listing#69989) AS productPlant#69990]
Input [8]: [systemId#69982, internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989]
(267) BroadcastExchange
Input [1]: [productPlant#69990]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=78088]
(268) BroadcastQueryStage
Output [1]: [productPlant#69990]
Arguments: 141
(269) BroadcastHashJoin [codegen id : 105]
Left keys [4]: [coalesce(product#69978, ), isnull(product#69978), coalesce(plant#69979, ), isnull(plant#69979)]
Right keys [4]: [coalesce(productPlant#69990.product.internalRefUUID, ), isnull(productPlant#69990.product.internalRefUUID), coalesce(productPlant#69990.plant.internalRefUUID, ), isnull(productPlant#69990.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(270) ReusedExchange [Reuses operator id: 103]
Output [2]: [internalUUID#69992, timezonecode#70003]
(271) BroadcastQueryStage
Output [2]: [internalUUID#69992, timezonecode#70003]
Arguments: 106
(272) BroadcastHashJoin [codegen id : 105]
Left keys [2]: [coalesce(plant#69979, ), isnull(plant#69979)]
Right keys [2]: [coalesce(internalUUID#69992, ), isnull(internalUUID#69992)]
Join type: LeftOuter
Join condition: None
(273) Project [codegen id : 105]
Output [5]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, CASE WHEN isnotnull(timezonecode#70003) THEN timezonecode#70003 ELSE UTC END AS timezonecode#70005]
Input [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, internalUUID#69992, timezonecode#70003]
(274) ReusedExchange [Reuses operator id: 113]
Output [3]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013]
(275) BroadcastQueryStage
Output [3]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013]
Arguments: 112
(276) BroadcastHashJoin [codegen id : 105]
Left keys [1]: [product#69978]
Right keys [1]: [internalUUID#70007]
Join type: LeftOuter
Join condition: None
(277) Project
Output [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, filter(unitOfMeasureConversions#70013, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70011.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70011.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70018]
Input [8]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013]
(278) Project [codegen id : 106]
Output [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, filteredUnitOfMeasureConversions#70018.quantityDenominator AS _extract_quantityDenominator#71133, filteredUnitOfMeasureConversions#70018.quantityNumerator AS _extract_quantityNumerator#71134]
Input [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, filteredUnitOfMeasureConversions#70018]
(279) Generate [codegen id : 106]
Input [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, _extract_quantityDenominator#71133, _extract_quantityNumerator#71134]
Arguments: explode(_extract_quantityNumerator#71134), [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, _extract_quantityDenominator#71133], true, [quantityNumerator#70019]
(280) Generate [codegen id : 106]
Input [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, _extract_quantityDenominator#71133, quantityNumerator#70019]
Arguments: explode(_extract_quantityDenominator#71133), [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, quantityNumerator#70019], true, [quantityDenominator#70020]
(281) Project [codegen id : 106]
Output [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, (cast(quantityNumerator#70019 as double) / cast(quantityDenominator#70020 as double)) AS outboundUnit#70021]
Input [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, quantityNumerator#70019, quantityDenominator#70020]
(282) Project [codegen id : 106]
Output [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, CASE WHEN (isnull(outboundUnit#70021) OR (outboundUnit#70021 <= 0.0)) THEN 1.0 ELSE outboundUnit#70021 END AS outboundUnit#70022]
Input [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70021]
(283) ReusedExchange [Reuses operator id: 127]
Output [6]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028]
(284) BroadcastQueryStage
Output [6]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028]
Arguments: 120
(285) ReusedExchange [Reuses operator id: 140]
Output [3]: [plantUuid#70071, storageLocId#70072, storageLocUuid#70073]
(286) BroadcastQueryStage
Output [3]: [plantUuid#70071, storageLocId#70072, storageLocUuid#70073]
Arguments: 101
(287) ReusedExchange [Reuses operator id: 169]
Output [1]: [plant#70075]
(288) ShuffleQueryStage
Output [1]: [plant#70075]
Arguments: 156
(289) AQEShuffleRead
Input [1]: [plant#70075]
Arguments: coalesced
(290) HashAggregate
Input [1]: [plant#70075]
Keys [1]: [plant#70075]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70075]
(291) BroadcastHashJoin
Left keys [1]: [plantUuid#70071]
Right keys [1]: [plant#70075]
Join type: Inner
Join condition: None
(292) Project
Output [3]: [plantUuid#70071, storageLocId#70072, storageLocUuid#70073]
Input [4]: [plantUuid#70071, storageLocId#70072, storageLocUuid#70073, plant#70075]
(293) BroadcastHashJoin [codegen id : 87]
Left keys [2]: [coalesce(plant#70026.internalRefUUID, ), isnull(plant#70026.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#70071, ), isnull(plantUuid#70071)]
Join type: Inner
Join condition: None
(294) Generate
Input [9]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028, plantUuid#70071, storageLocId#70072, storageLocUuid#70073]
Arguments: explode(filter(stockQuantities#70028, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#70073) AND (lambda x#69269.storageLocation.Id = storageLocId#70072)), lambda x#69269, false))), [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, plantUuid#70071], false, [stockQuantity#70118]
(295) ObjectHashAggregate
Input [7]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, plantUuid#70071, stockQuantity#70118]
Keys [5]: [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023]
Functions [2]: [partial_first(calculationDateTime#70027, false), partial_collect_list(stockQuantity#70118, 0, 0)]
Aggregate Attributes [3]: [first#73962, valueSet#73963, buf#73964]
Results [8]: [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023, first#73965, valueSet#73966, buf#73967]
(296) ObjectHashAggregate
Input [8]: [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023, first#73965, valueSet#73966, buf#73967]
Keys [5]: [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023]
Functions [2]: [first(calculationDateTime#70027, false), collect_list(stockQuantity#70118, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#70027)()#69286, collect_list(stockQuantity#70118, 0, 0)#69287]
Results [4]: [product#70025, plant#70026, first(calculationDateTime#70027)()#69286 AS calculationDateTime#70119, collect_list(stockQuantity#70118, 0, 0)#69287 AS stockQuantities#70120]
(297) Filter [codegen id : 88]
Input [4]: [product#70025, plant#70026, calculationDateTime#70119, stockQuantities#70120]
Condition : ((size(stockQuantities#70120, true) > 0) AND isnotnull(calculationDateTime#70119))
(298) Generate [codegen id : 88]
Input [4]: [product#70025, plant#70026, calculationDateTime#70119, stockQuantities#70120]
Arguments: explode(stockQuantities#70120), [product#70025, plant#70026, calculationDateTime#70119], false, [stockQuantity#70121]
(299) Filter [codegen id : 88]
Input [4]: [product#70025, plant#70026, calculationDateTime#70119, stockQuantity#70121]
Condition : (((isnotnull(stockQuantity#70121.specialStockIndicator.code) AND isnotnull(stockQuantity#70121.stockType.code)) AND (stockQuantity#70121.specialStockIndicator.code = )) AND (stockQuantity#70121.stockType.code = 01))
(300) Project [codegen id : 88]
Output [5]: [plant#70026.internalRefUUID AS plantUuid#70123, product#70025.internalRefUUID AS productUuid#70125, calculationDateTime#70119, stockQuantity#70121.storagelocation.id AS storageLocId#70126, stockQuantity#70121.quantity.measure AS quantity#70128]
Input [4]: [product#70025, plant#70026, calculationDateTime#70119, stockQuantity#70121]
(301) Exchange
Input [5]: [plantUuid#70123, productUuid#70125, calculationDateTime#70119, storageLocId#70126, quantity#70128]
Arguments: hashpartitioning(productUuid#70125, plantUuid#70123, 25), ENSURE_REQUIREMENTS, [plan_id=115721]
(302) ShuffleQueryStage
Output [5]: [plantUuid#70123, productUuid#70125, calculationDateTime#70119, storageLocId#70126, quantity#70128]
Arguments: 164
(303) AQEShuffleRead
Input [5]: [plantUuid#70123, productUuid#70125, calculationDateTime#70119, storageLocId#70126, quantity#70128]
Arguments: local
(304) BroadcastExchange
Input [5]: [plantUuid#70123, productUuid#70125, calculationDateTime#70119, storageLocId#70126, quantity#70128]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=118595]
(305) BroadcastQueryStage
Output [5]: [plantUuid#70123, productUuid#70125, calculationDateTime#70119, storageLocId#70126, quantity#70128]
Arguments: 172
(306) ReusedExchange [Reuses operator id: 191]
Output [3]: [product#70131, plant#70132, orderDateTime#70133]
(307) ShuffleQueryStage
Output [3]: [product#70131, plant#70132, orderDateTime#70133]
Arguments: 58
(308) ReusedExchange [Reuses operator id: 94]
Output [4]: [_extract_code#71408, _extract_internalRefUUID#71409, _extract_internalRefUUID#71410, _extract_internalRefUUID#71407]
(309) BroadcastQueryStage
Output [4]: [_extract_code#71408, _extract_internalRefUUID#71409, _extract_internalRefUUID#71410, _extract_internalRefUUID#71407]
Arguments: 134
(310) BroadcastHashJoin [codegen id : 97]
Left keys [4]: [coalesce(product#70131, ), isnull(product#70131), coalesce(plant#70132, ), isnull(plant#70132)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71410, ), isnull(_extract_internalRefUUID#71410), coalesce(_extract_internalRefUUID#71407, ), isnull(_extract_internalRefUUID#71407)]
Join type: LeftOuter
Join condition: None
(311) Project [codegen id : 97]
Output [5]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#71408, _extract_internalRefUUID#71409]
Input [7]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#71408, _extract_internalRefUUID#71409, _extract_internalRefUUID#71410, _extract_internalRefUUID#71407]
(312) ReusedExchange [Reuses operator id: 156]
Output [1]: [internalUUID#70145]
(313) BroadcastQueryStage
Output [1]: [internalUUID#70145]
Arguments: 148
(314) BroadcastHashJoin [codegen id : 97]
Left keys [2]: [coalesce(plant#70132, ), isnull(plant#70132)]
Right keys [2]: [coalesce(internalUUID#70145, ), isnull(internalUUID#70145)]
Join type: LeftOuter
Join condition: None
(315) Project [codegen id : 97]
Output [5]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#71408, _extract_internalRefUUID#71409]
Input [6]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#71408, _extract_internalRefUUID#71409, internalUUID#70145]
(316) ReusedExchange [Reuses operator id: 113]
Output [3]: [internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165]
(317) BroadcastQueryStage
Output [3]: [internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165]
Arguments: 114
(318) BroadcastHashJoin [codegen id : 97]
Left keys [1]: [product#70131]
Right keys [1]: [internalUUID#70159]
Join type: LeftOuter
Join condition: None
(319) Project
Output [4]: [product#70131, plant#70132, orderDateTime#70133, filter(unitOfMeasureConversions#70165, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71408) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71409)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70163.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70163.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70171]
Input [8]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#71408, _extract_internalRefUUID#71409, internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165]
(320) Generate
Input [4]: [product#70131, plant#70132, orderDateTime#70133, filteredUnitOfMeasureConversions#70171]
Arguments: explode(filteredUnitOfMeasureConversions#70171.quantityNumerator), [product#70131, plant#70132, orderDateTime#70133, filteredUnitOfMeasureConversions#70171], true, [quantityNumerator#70172]
(321) Project
Output [4]: [product#70131, plant#70132, orderDateTime#70133, filteredUnitOfMeasureConversions#70171.quantityDenominator AS _extract_quantityDenominator#71031]
Input [5]: [product#70131, plant#70132, orderDateTime#70133, filteredUnitOfMeasureConversions#70171, quantityNumerator#70172]
(322) Generate
Input [4]: [product#70131, plant#70132, orderDateTime#70133, _extract_quantityDenominator#71031]
Arguments: explode(_extract_quantityDenominator#71031), [product#70131, plant#70132, orderDateTime#70133], true, [quantityDenominator#70173]
(323) Project
Output [3]: [product#70131, plant#70132, orderDateTime#70133]
Input [4]: [product#70131, plant#70132, orderDateTime#70133, quantityDenominator#70173]
(324) BroadcastHashJoin [codegen id : 98]
Left keys [2]: [plantUuid#70123, productUuid#70125]
Right keys [2]: [plant#70132, product#70131]
Join type: Inner
Join condition: (calculationDateTime#70119 <= orderDateTime#70133)
(325) Project [codegen id : 98]
Output [5]: [plantUuid#70123 AS plant#70176, productUuid#70125 AS product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
Input [8]: [plantUuid#70123, productUuid#70125, calculationDateTime#70119, storageLocId#70126, quantity#70128, product#70131, plant#70132, orderDateTime#70133]
(326) Exchange
Input [5]: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
Arguments: hashpartitioning(coalesce(plant#70176, ), isnull(plant#70176), coalesce(product#70177, ), isnull(product#70177), coalesce(storageLocId#70126, ), isnull(storageLocId#70126), coalesce(calculationDateTime#70119, 1970-01-01 00:00:00), isnull(calculationDateTime#70119), 25), ENSURE_REQUIREMENTS, [plan_id=119911]
(327) ShuffleQueryStage
Output [5]: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
Arguments: 177
(328) AQEShuffleRead
Input [5]: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
Arguments: local
(329) BroadcastExchange
Input [5]: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true]), coalesce(input[1, string, true], ), isnull(input[1, string, true]), coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, timestamp, true], 1970-01-01 00:00:00), isnull(input[3, timestamp, true])),false), [plan_id=123247]
(330) BroadcastQueryStage
Output [5]: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
Arguments: 178
(331) ReusedExchange [Reuses operator id: 240]
Output [4]: [plant#70323, product#70324, storageLocId#70264, max_calc_datetime#70325]
(332) ShuffleQueryStage
Output [4]: [plant#70323, product#70324, storageLocId#70264, max_calc_datetime#70325]
Arguments: 176
(333) AQEShuffleRead
Input [4]: [plant#70323, product#70324, storageLocId#70264, max_calc_datetime#70325]
Arguments: local
(334) BroadcastHashJoin [codegen id : 100]
Left keys [8]: [coalesce(plant#70176, ), isnull(plant#70176), coalesce(product#70177, ), isnull(product#70177), coalesce(storageLocId#70126, ), isnull(storageLocId#70126), coalesce(calculationDateTime#70119, 1970-01-01 00:00:00), isnull(calculationDateTime#70119)]
Right keys [8]: [coalesce(plant#70323, ), isnull(plant#70323), coalesce(product#70324, ), isnull(product#70324), coalesce(storageLocId#70264, ), isnull(storageLocId#70264), coalesce(max_calc_datetime#70325, 1970-01-01 00:00:00), isnull(max_calc_datetime#70325)]
Join type: Inner
Join condition: None
(335) Project [codegen id : 100]
Output [4]: [plant#70176, product#70177, calculationDateTime#70119, quantity#70128]
Input [9]: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128, plant#70323, product#70324, storageLocId#70264, max_calc_datetime#70325]
(336) HashAggregate [codegen id : 100]
Input [4]: [plant#70176, product#70177, calculationDateTime#70119, quantity#70128]
Keys [2]: [product#70177, plant#70176]
Functions [2]: [partial_min(calculationDateTime#70119), partial_sum(quantity#70128)]
Aggregate Attributes [2]: [min#73956, sum#73957]
Results [4]: [product#70177, plant#70176, min#73958, sum#73959]
(337) Exchange
Input [4]: [product#70177, plant#70176, min#73958, sum#73959]
Arguments: hashpartitioning(product#70177, plant#70176, 25), ENSURE_REQUIREMENTS, [plan_id=124782]
(338) ShuffleQueryStage
Output [4]: [product#70177, plant#70176, min#73958, sum#73959]
Arguments: 181
(339) AQEShuffleRead
Input [4]: [product#70177, plant#70176, min#73958, sum#73959]
Arguments: coalesced
(340) HashAggregate [codegen id : 102]
Input [4]: [product#70177, plant#70176, min#73958, sum#73959]
Keys [2]: [product#70177, plant#70176]
Functions [2]: [min(calculationDateTime#70119), sum(quantity#70128)]
Aggregate Attributes [2]: [min(calculationDateTime#70119)#69766, sum(quantity#70128)#69765]
Results [4]: [product#70177, plant#70176, min(calculationDateTime#70119)#69766 AS minCalculationDateTime#70327, round(sum(quantity#70128)#69765, 0) AS roundedQuantitySum#70328]
(341) BroadcastExchange
Input [4]: [product#70177, plant#70176, minCalculationDateTime#70327, roundedQuantitySum#70328]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=127175]
(342) BroadcastQueryStage
Output [4]: [product#70177, plant#70176, minCalculationDateTime#70327, roundedQuantitySum#70328]
Arguments: 183
(343) BroadcastHashJoin [codegen id : 106]
Left keys [2]: [plant#69979, product#69978]
Right keys [2]: [plant#70176, product#70177]
Join type: LeftOuter
Join condition: None
(344) Project [codegen id : 106]
Output [8]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, CASE WHEN isnotnull(minCalculationDateTime#70327) THEN minCalculationDateTime#70327 ELSE orderDateTime#69980 END AS stockDatetime#70329, CASE WHEN isnotnull(roundedQuantitySum#70328) THEN array(roundedQuantitySum#70328) ELSE [0.0] END AS stockBatchQuantities#70330]
Input [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, product#70177, plant#70176, minCalculationDateTime#70327, roundedQuantitySum#70328]
(345) Scan parquet
Output [9]: [product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000002106/0_1_10000002106]
PushedFilters: [IsNotNull(product), IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,demandChannel:string,demandStream:string,considerVariance:boolean,demandTimeBuckets:array<struct<demandStartDateTime:timestamp,demandQuantity:double,demandVariance:double>>,demandPointInTimeStart:timestamp,demandPointInTimeEnd:timestamp,demandPointInTime:array<struct<demandDateTime:timestamp,demandQuantity:double,demandVariance:double>>>
(346) ColumnarToRow [codegen id : 49]
Input [9]: [product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
(347) Filter [codegen id : 49]
Input [9]: [product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
Condition : (isnotnull(product#69873) AND isnotnull(plant#69874))
(348) BroadcastExchange
Input [9]: [product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=53015]
(349) BroadcastQueryStage
Output [9]: [product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
Arguments: 85
(350) BroadcastHashJoin [codegen id : 106]
Left keys [2]: [product#69978, plant#69979]
Right keys [2]: [product#69873, plant#69874]
Join type: LeftOuter
Join condition: None
(351) Project [codegen id : 106]
Output [9]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, CASE WHEN isnotnull(product#69873) THEN struct(demandChannel, demandChannel#69875, demandStream, demandStream#69876, considerVariance, considerVariance#69877, demandTimeBuckets, demandTimeBuckets#69878, demandPointInTimeStart, demandPointInTimeStart#69879, demandPointInTimeEnd, demandPointInTimeEnd#69880, demandPointInTime, demandPointInTime#69881) END AS rawDemands#69908]
Input [17]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
(352) ObjectHashAggregate
Input [9]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, rawDemands#69908]
Keys [9]: [product#69978, plant#69979, orderDateTime#69980, knownfloatingpointnormalized(if (isnull(productPlant#69990)) null else named_struct(systemId, productPlant#69990.systemId, internalUUID, productPlant#69990.internalUUID, plant, productPlant#69990.plant, product, productPlant#69990.product, blockedForReplenishmentStartingFrom, productPlant#69990.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#69990.productionAspect)) null else named_struct(productMovementPlants, productPlant#69990.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#69990.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#69990.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#69990.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#69990.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#69990.productionAspect.productPlanningPlants.minimumLotSize)), minimumSafetyStock, knownfloatingpointnormalized(normalizenanandzero(productPlant#69990.productionAspect.productPlanningPlants.minimumSafetyStock)), logisticalRoundingProfile, productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#69990.salesPlant, listing, productPlant#69990.listing)) AS productPlant#69990, timezonecode#70005, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#70022)) AS outboundUnit#70022, stockDatetime#70329, knownfloatingpointnormalized(transform(stockBatchQuantities#70330, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#85165)), lambda arg#85165, false))) AS stockBatchQuantities#70330, [7226582400000000] AS [7226582400000000]#85164]
Functions [1]: [partial_collect_list(rawDemands#69908, 0, 0)]
Aggregate Attributes [1]: [buf#73954]
Results [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000]#85164, buf#73955]
(353) ObjectHashAggregate
Input [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000]#85164, buf#73955]
Keys [9]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000]#85164]
Functions [1]: [collect_list(rawDemands#69908, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#69908, 0, 0)#69939]
Results [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#70331, collect_list(rawDemands#69908, 0, 0)#69939 AS rawDemands#69921]
(354) DeserializeToObject [codegen id : 107]
Input [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, stockBatchShelfLifeEndDatetimes#70331, rawDemands#69921]
Arguments: createexternalrow(invoke(product#69978.toString()), invoke(plant#69979.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#69980)), if (isnull(productPlant#69990)) null else createexternalrow(invoke(productPlant#69990.systemId.toString()), invoke(productPlant#69990.internalUUID.toString()), if (isnull(productPlant#69990.plant)) null else createexternalrow(invoke(productPlant#69990.plant.internalRefUUID.toString()), invoke(productPlant#69990.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#69990.product)) null else createexternalrow(invoke(productPlant#69990.product.internalRefUUID.toString()), invoke(productPlant#69990.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#69990.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#69990.productionAspect)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#69990.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#69990.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(minimumSafetyStock,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#69990.salesPlant)) null else createexternalrow(if (isnull(productPlant#69990.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#69990.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#69990.salesPlant.loadingGroup.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#69990.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#70005.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#70022)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#70329)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#70330, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#70331, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4), createexternalrow(invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandChannel.toString()), invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandVariance)), StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandTimeBuckets, Some(class scala.collection.mutable.ArraySeq)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandPointInTimeStart)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandVariance)), StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandPointInTime, Some(class scala.collection.mutable.ArraySeq)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)), rawDemands#69921, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#69963: org.apache.spark.sql.Row
(355) MapElements [codegen id : 107]
Input [1]: [obj#69963]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@783ec352, obj#69968: org.apache.spark.sql.Row
(356) SerializeFromObject [codegen id : 107]
Input [1]: [obj#69968]
Arguments: [if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(0))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 0, product), StringType, ObjectType(class java.lang.String)))) AS product#69973, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(1))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 1, plant), StringType, ObjectType(class java.lang.String)))) AS plant#69974]
(357) Exchange
Input [2]: [product#69973, plant#69974]
Arguments: hashpartitioning(coalesce(plant#69974, ), isnull(plant#69974), coalesce(product#69973, ), isnull(product#69973), 25), ENSURE_REQUIREMENTS, [plan_id=128251]
(358) ShuffleQueryStage
Output [2]: [product#69973, plant#69974]
Arguments: 185
(359) AQEShuffleRead
Input [2]: [product#69973, plant#69974]
Arguments: local
(360) BroadcastExchange
Input [2]: [product#69973, plant#69974]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[1, string, true], ), isnull(input[1, string, true]), coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=128969]
(361) BroadcastQueryStage
Output [2]: [product#69973, plant#69974]
Arguments: 186
(362) BroadcastHashJoin [codegen id : 108]
Left keys [4]: [coalesce(plant#69020, ), isnull(plant#69020), coalesce(product#69019, ), isnull(product#69019)]
Right keys [4]: [coalesce(plant#69974, ), isnull(plant#69974), coalesce(product#69973, ), isnull(product#69973)]
Join type: LeftOuter
Join condition: None
(363) Project [codegen id : 108]
Output [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Input [6]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868, product#69973, plant#69974]
(364) Exchange
Input [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: hashpartitioning(plant#69020, 25), ENSURE_REQUIREMENTS, [plan_id=129040]
(365) ShuffleQueryStage
Output [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: 187
(366) AQEShuffleRead
Input [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: local
(367) BroadcastExchange
Input [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true]),false), [plan_id=129090]
(368) BroadcastQueryStage
Output [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: 188
(369) ReusedExchange [Reuses operator id: 133]
Output [1]: [distributionCenters#70815]
(370) ShuffleQueryStage
Output [1]: [distributionCenters#70815]
Arguments: 87
(371) Generate [codegen id : 60]
Input [1]: [distributionCenters#70815]
Arguments: explode(distributionCenters#70815), false, [distributionCenters#70854]
(372) Filter [codegen id : 60]
Input [1]: [distributionCenters#70854]
Condition : (((size(distributionCenters#70854.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#70854.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#70854.internalRefUUID))
(373) Project [codegen id : 60]
Output [2]: [distributionCenters#70854.internalRefUUID AS _extract_internalRefUUID#71061, distributionCenters#70854.storageLocations.internalRefUUID AS _extract_internalRefUUID#71429]
Input [1]: [distributionCenters#70854]
(374) Generate [codegen id : 60]
Input [2]: [_extract_internalRefUUID#71061, _extract_internalRefUUID#71429]
Arguments: explode(_extract_internalRefUUID#71429), [_extract_internalRefUUID#71061], false, [storageLocations#70855]
(375) Filter [codegen id : 60]
Input [2]: [_extract_internalRefUUID#71061, storageLocations#70855]
Condition : isnotnull(storageLocations#70855)
(376) Project [codegen id : 60]
Output [2]: [_extract_internalRefUUID#71061 AS plantUuid#70858, storageLocations#70855 AS storageLocUuid#70862]
Input [2]: [_extract_internalRefUUID#71061, storageLocations#70855]
(377) BroadcastExchange
Input [2]: [plantUuid#70858, storageLocUuid#70862]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=65566]
(378) BroadcastQueryStage
Output [2]: [plantUuid#70858, storageLocUuid#70862]
Arguments: 104
(379) ReusedExchange [Reuses operator id: 169]
Output [1]: [plant#70866]
(380) ShuffleQueryStage
Output [1]: [plant#70866]
Arguments: 160
(381) HashAggregate
Input [1]: [plant#70866]
Keys [1]: [plant#70866]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70866]
(382) BroadcastHashJoin
Left keys [1]: [plantUuid#70858]
Right keys [1]: [plant#70866]
Join type: Inner
Join condition: None
(383) Project
Output [2]: [plantUuid#70858 AS plant#70807, storageLocUuid#70862]
Input [3]: [plantUuid#70858, storageLocUuid#70862, plant#70866]
(384) BroadcastHashJoin [codegen id : 109]
Left keys [1]: [plant#69020]
Right keys [1]: [plant#70807]
Join type: Inner
Join condition: None
(385) Project [codegen id : 109]
Output [5]: [plant#69020, product#69019, timezonecode#69079, stockDatetime#69868, storageLocUuid#70862]
Input [6]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868, plant#70807, storageLocUuid#70862]
(386) Scan parquet
Output [6]: [internalUUID#70730, id#70731, supplier#70733, isMarkedForDeletion#70736, items#70737, systemId#70729]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-procurement-purchaseorder]
PushedFilters: [IsNotNull(isMarkedForDeletion), Not(EqualTo(isMarkedForDeletion,true)), IsNotNull(items)]
ReadSchema: struct<internalUUID:string,id:string,supplier:struct<internalRefUUID:string,id:string>,isMarkedForDeletion:boolean,items:array<struct<number:string,completeIndicator:boolean,returnIndicator:boolean,deletionIndicator:boolean,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:double,quantityUnit:struct<internalRefUUID:string,code:string>,quantityNumerator:double,quantityDenominator:double,scheduleLines:array<struct<number:string,deliveryAt:timestamp,quantity:double,quantityUnit:struct<internalRefUUID:string,code:string>,receivedQuantity:double,deliveredQuantity:double,productAvailabilityDateTime:timestamp>>,confirmations:array<struct<number:string,confirmationCategory:struct<internalRefUUID:string,code:string>,confirmationDeliveryDate:date,confirmedDeliveryAt:timestamp,confirmedQuantity:double,mrpRelevantQuantity:double,confirmationCreationCategory:string,deletionIndicator:boolean,isRelevantForConfirmation:boolean,delivery:struct<internalRefUUID:string,id:string>,deliveryItemNumber:string>>>>>
(387) ColumnarToRow [codegen id : 55]
Input [6]: [internalUUID#70730, id#70731, supplier#70733, isMarkedForDeletion#70736, items#70737, systemId#70729]
(388) Filter [codegen id : 55]
Input [6]: [internalUUID#70730, id#70731, supplier#70733, isMarkedForDeletion#70736, items#70737, systemId#70729]
Condition : (((isnotnull(isMarkedForDeletion#70736) AND NOT isMarkedForDeletion#70736) AND (size(items#70737, true) > 0)) AND isnotnull(items#70737))
(389) Project [codegen id : 55]
Output [4]: [internalUUID#70730, id#70731, supplier#70733, items#70737]
Input [6]: [internalUUID#70730, id#70731, supplier#70733, isMarkedForDeletion#70736, items#70737, systemId#70729]
(390) Exchange
Input [4]: [internalUUID#70730, id#70731, supplier#70733, items#70737]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=53248]
(391) ShuffleQueryStage
Output [4]: [internalUUID#70730, id#70731, supplier#70733, items#70737]
Arguments: 96
(392) Generate [codegen id : 72]
Input [4]: [internalUUID#70730, id#70731, supplier#70733, items#70737]
Arguments: explode(items#70737), [internalUUID#70730, id#70731, supplier#70733], false, [item#70753]
(393) Filter [codegen id : 72]
Input [4]: [internalUUID#70730, id#70731, supplier#70733, item#70753]
Condition : ((((isnotnull(item#70753.deletionIndicator) AND isnotnull(item#70753.completeIndicator)) AND isnotnull(item#70753.returnIndicator)) AND ((NOT item#70753.deletionIndicator AND NOT item#70753.completeIndicator) AND NOT item#70753.returnIndicator)) AND ((isnotnull(item#70753.product.internalRefUUID) AND isnotnull(item#70753.plant.internalRefUUID)) AND isnotnull(item#70753.storageLocation.internalRefUUID)))
(394) Project [codegen id : 72]
Output [14]: [id#70731, internalUUID#70730, supplier#70733.internalRefUUID AS supplierUuid#70747, item#70753.plant.internalRefUUID AS plant#70770, item#70753.product.internalRefUUID AS product#70773, item#70753.plant.id AS externalPlantId#70775, item#70753.product.id AS externalProductId#70777, item#70753.storageLocation.internalRefUUID AS storageLocUuid#70778, item#70753.quantityUnit.code AS quantityUom#70779, item#70753.quantityUnit.internalRefUUID AS quantityUomUuid#70780, item#70753.quantityNumerator AS quantityNumerator#70781, item#70753.quantityDenominator AS quantityDenominator#70782, item#70753.scheduleLines AS scheduleLines#70783, item#70753.confirmations AS confirmations#70784]
Input [4]: [internalUUID#70730, id#70731, supplier#70733, item#70753]
(395) BroadcastExchange
Input [14]: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784]
Arguments: HashedRelationBroadcastMode(List(input[4, string, true], input[3, string, true], input[7, string, true]),false), [plan_id=79540]
(396) BroadcastQueryStage
Output [14]: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784]
Arguments: 142
(397) BroadcastHashJoin [codegen id : 109]
Left keys [3]: [product#69019, plant#69020, storageLocUuid#70862]
Right keys [3]: [product#70773, plant#70770, storageLocUuid#70778]
Join type: Inner
Join condition: None
(398) Project
Output [17]: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784, stockDatetime#69868, timezonecode#69079, filter(confirmations#70784, lambdafunction(((NOT lambda x_2#70966.deletionIndicator AND lambda x_2#70966.isRelevantForConfirmation) AND isnotnull(lambda x_2#70966.confirmedDeliveryAt)), lambda x_2#70966, false)) AS validConfirmations#70963]
Input [19]: [plant#69020, product#69019, timezonecode#69079, stockDatetime#69868, storageLocUuid#70862, id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784]
(399) ResultQueryStage
Output [17]: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784, stockDatetime#69868, timezonecode#69079, validConfirmations#70963]
Arguments: 189
(400) Filter
Input [3]: [product#69019, plant#69020, orderDateTime#69021]
Condition : (isnotnull(plant#69020) AND isnotnull(product#69019))
(401) Exchange
Input [3]: [product#69019, plant#69020, orderDateTime#69021]
Arguments: hashpartitioning(product#69019, plant#69020, 25), REPARTITION_BY_NUM, [plan_id=31627]
(402) Project
Output [4]: [plant#69029.internalRefUUID AS _extract_internalRefUUID#71360, product#69031.internalRefUUID AS _extract_internalRefUUID#71357, productionAspect#69036.productMovementPlants.unitOfIssue.code AS _extract_code#71361, productionAspect#69036.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71362]
Input [4]: [plant#69029, product#69031, productionAspect#69036, systemId#69025]
(403) Exchange
Input [4]: [_extract_internalRefUUID#71360, _extract_internalRefUUID#71357, _extract_code#71361, _extract_internalRefUUID#71362]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30972]
(404) Project
Output [4]: [_extract_code#71361, _extract_internalRefUUID#71362, _extract_internalRefUUID#71357, _extract_internalRefUUID#71360]
Input [4]: [_extract_internalRefUUID#71360, _extract_internalRefUUID#71357, _extract_code#71361, _extract_internalRefUUID#71362]
(405) BroadcastExchange
Input [4]: [_extract_code#71361, _extract_internalRefUUID#71362, _extract_internalRefUUID#71357, _extract_internalRefUUID#71360]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=32024]
(406) BroadcastHashJoin
Left keys [4]: [coalesce(product#69019, ), isnull(product#69019), coalesce(plant#69020, ), isnull(plant#69020)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71357, ), isnull(_extract_internalRefUUID#71357), coalesce(_extract_internalRefUUID#71360, ), isnull(_extract_internalRefUUID#71360)]
Join type: LeftOuter
Join condition: None
(407) Project
Output [5]: [product#69019, plant#69020, orderDateTime#69021, _extract_code#71361, _extract_internalRefUUID#71362]
Input [7]: [product#69019, plant#69020, orderDateTime#69021, _extract_code#71361, _extract_internalRefUUID#71362, _extract_internalRefUUID#71357, _extract_internalRefUUID#71360]
(408) Project
Output [2]: [internalUUID#69062, address#69068.timeZone.code AS timezonecode#69074]
Input [3]: [internalUUID#69062, address#69068, systemId#69061]
(409) Exchange
Input [2]: [internalUUID#69062, timezonecode#69074]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30978]
(410) BroadcastExchange
Input [2]: [internalUUID#69062, timezonecode#69074]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32033]
(411) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69020, ), isnull(plant#69020)]
Right keys [2]: [coalesce(internalUUID#69062, ), isnull(internalUUID#69062)]
Join type: LeftOuter
Join condition: None
(412) Project
Output [6]: [product#69019, plant#69020, orderDateTime#69021, _extract_code#71361, _extract_internalRefUUID#71362, CASE WHEN isnotnull(timezonecode#69074) THEN timezonecode#69074 ELSE UTC END AS timezonecode#69079]
Input [7]: [product#69019, plant#69020, orderDateTime#69021, _extract_code#71361, _extract_internalRefUUID#71362, internalUUID#69062, timezonecode#69074]
(413) Filter
Input [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
Condition : isnotnull(internalUUID#69094)
(414) Project
Output [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Input [4]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100, systemId#69093]
(415) Exchange
Input [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=30984]
(416) BroadcastExchange
Input [3]: [internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32041]
(417) BroadcastHashJoin
Left keys [1]: [product#69019]
Right keys [1]: [internalUUID#69094]
Join type: LeftOuter
Join condition: None
(418) Project
Output [5]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, filter(unitOfMeasureConversions#69100, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71361) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71362)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69098.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69098.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69107]
Input [9]: [product#69019, plant#69020, orderDateTime#69021, _extract_code#71361, _extract_internalRefUUID#71362, timezonecode#69079, internalUUID#69094, baseUnitOfMeasure#69098, unitOfMeasureConversions#69100]
(419) Generate
Input [5]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, filteredUnitOfMeasureConversions#69107]
Arguments: explode(filteredUnitOfMeasureConversions#69107.quantityNumerator), [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, filteredUnitOfMeasureConversions#69107], true, [quantityNumerator#69124]
(420) Project
Output [5]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, filteredUnitOfMeasureConversions#69107.quantityDenominator AS _extract_quantityDenominator#70968]
Input [6]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, filteredUnitOfMeasureConversions#69107, quantityNumerator#69124]
(421) Generate
Input [5]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, _extract_quantityDenominator#70968]
Arguments: explode(_extract_quantityDenominator#70968), [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079], true, [quantityDenominator#69129]
(422) Project
Output [4]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079]
Input [5]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, quantityDenominator#69129]
(423) Sort
Input [4]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079]
Arguments: [product#69019 ASC NULLS FIRST, plant#69020 ASC NULLS FIRST], false, 0
(424) Filter
Input [6]: [internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, systemId#69257]
Condition : (isnotnull(plant#69260.internalRefUUID) AND isnotnull(product#69259.internalRefUUID))
(425) Project
Output [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
Input [6]: [internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, systemId#69257]
(426) Exchange
Input [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31000]
(427) BroadcastExchange
Input [6]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=32103]
(428) Filter
Input [2]: [marketUnit#69135, distributionCenters#69141]
Condition : (((marketUnit#69135 <=> Daily_grocery) AND (size(distributionCenters#69141, true) > 0)) AND isnotnull(distributionCenters#69141))
(429) Project
Output [1]: [distributionCenters#69141]
Input [2]: [marketUnit#69135, distributionCenters#69141]
(430) Exchange
Input [1]: [distributionCenters#69141]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31011]
(431) Generate
Input [1]: [distributionCenters#69141]
Arguments: explode(distributionCenters#69141), false, [distributionCenters#69183]
(432) Filter
Input [1]: [distributionCenters#69183]
Condition : (((size(distributionCenters#69183.storageLocations, true) > 0) AND isnotnull(distributionCenters#69183.storageLocations)) AND isnotnull(distributionCenters#69183.internalRefUUID))
(433) Project
Output [2]: [distributionCenters#69183.internalRefUUID AS _extract_internalRefUUID#70977, distributionCenters#69183.storageLocations AS _extract_storageLocations#70978]
Input [1]: [distributionCenters#69183]
(434) Generate
Input [2]: [_extract_internalRefUUID#70977, _extract_storageLocations#70978]
Arguments: explode(_extract_storageLocations#70978), [_extract_internalRefUUID#70977], false, [storageLocations#69197]
(435) Project
Output [3]: [_extract_internalRefUUID#70977 AS plantUuid#69186, storageLocations#69197.id AS storageLocId#69199, storageLocations#69197.internalRefUUID AS storageLocUuid#69200]
Input [2]: [_extract_internalRefUUID#70977, storageLocations#69197]
(436) BroadcastExchange
Input [3]: [plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32097]
(437) Filter
Input [2]: [product#69771, plant#69772]
Condition : isnotnull(plant#69772)
(438) Exchange
Input [2]: [product#69771, plant#69772]
Arguments: hashpartitioning(product#69771, plant#69772, 25), REPARTITION_BY_NUM, [plan_id=31648]
(439) Scan parquet
Output [4]: [plant#69777, product#69778, productionAspect#69780, systemId#69775]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(440) Project
Output [4]: [plant#69777.internalRefUUID AS _extract_internalRefUUID#71368, product#69778.internalRefUUID AS _extract_internalRefUUID#71367, productionAspect#69780.productMovementPlants.unitOfIssue.code AS _extract_code#71369, productionAspect#69780.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71370]
Input [4]: [plant#69777, product#69778, productionAspect#69780, systemId#69775]
(441) Exchange
Input [4]: [_extract_internalRefUUID#71368, _extract_internalRefUUID#71367, _extract_code#71369, _extract_internalRefUUID#71370]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31038]
(442) Project
Output [4]: [_extract_code#71369, _extract_internalRefUUID#71370, _extract_internalRefUUID#71367, _extract_internalRefUUID#71368]
Input [4]: [_extract_internalRefUUID#71368, _extract_internalRefUUID#71367, _extract_code#71369, _extract_internalRefUUID#71370]
(443) BroadcastExchange
Input [4]: [_extract_code#71369, _extract_internalRefUUID#71370, _extract_internalRefUUID#71367, _extract_internalRefUUID#71368]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=32061]
(444) BroadcastHashJoin
Left keys [4]: [coalesce(product#69771, ), isnull(product#69771), coalesce(plant#69772, ), isnull(plant#69772)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71367, ), isnull(_extract_internalRefUUID#71367), coalesce(_extract_internalRefUUID#71368, ), isnull(_extract_internalRefUUID#71368)]
Join type: LeftOuter
Join condition: None
(445) Project
Output [4]: [product#69771, plant#69772, _extract_code#71369, _extract_internalRefUUID#71370]
Input [6]: [product#69771, plant#69772, _extract_code#71369, _extract_internalRefUUID#71370, _extract_internalRefUUID#71367, _extract_internalRefUUID#71368]
(446) Project
Output [1]: [internalUUID#69798]
Input [2]: [internalUUID#69798, systemId#69797]
(447) Exchange
Input [1]: [internalUUID#69798]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31049]
(448) BroadcastExchange
Input [1]: [internalUUID#69798]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32070]
(449) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69772, ), isnull(plant#69772)]
Right keys [2]: [coalesce(internalUUID#69798, ), isnull(internalUUID#69798)]
Join type: LeftOuter
Join condition: None
(450) Project
Output [4]: [product#69771, plant#69772, _extract_code#71369, _extract_internalRefUUID#71370]
Input [5]: [product#69771, plant#69772, _extract_code#71369, _extract_internalRefUUID#71370, internalUUID#69798]
(451) Scan parquet
Output [4]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832, systemId#69825]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(452) Filter
Input [4]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832, systemId#69825]
Condition : isnotnull(internalUUID#69826)
(453) Project
Output [3]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832]
Input [4]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832, systemId#69825]
(454) Exchange
Input [3]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31061]
(455) BroadcastExchange
Input [3]: [internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32076]
(456) BroadcastHashJoin
Left keys [1]: [product#69771]
Right keys [1]: [internalUUID#69826]
Join type: LeftOuter
Join condition: None
(457) Project
Output [2]: [plant#69772, filter(unitOfMeasureConversions#69832, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71369) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71370)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69830.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69830.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69849]
Input [7]: [product#69771, plant#69772, _extract_code#71369, _extract_internalRefUUID#71370, internalUUID#69826, baseUnitOfMeasure#69830, unitOfMeasureConversions#69832]
(458) Generate
Input [2]: [plant#69772, filteredUnitOfMeasureConversions#69849]
Arguments: explode(filteredUnitOfMeasureConversions#69849.quantityNumerator), [plant#69772, filteredUnitOfMeasureConversions#69849], true, [quantityNumerator#69851]
(459) Project
Output [2]: [plant#69772, filteredUnitOfMeasureConversions#69849.quantityDenominator AS _extract_quantityDenominator#70980]
Input [3]: [plant#69772, filteredUnitOfMeasureConversions#69849, quantityNumerator#69851]
(460) Generate
Input [2]: [plant#69772, _extract_quantityDenominator#70980]
Arguments: explode(_extract_quantityDenominator#70980), [plant#69772], true, [quantityDenominator#69854]
(461) Project
Output [1]: [plant#69772]
Input [2]: [plant#69772, quantityDenominator#69854]
(462) HashAggregate
Input [1]: [plant#69772]
Keys [1]: [plant#69772]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69772]
(463) Exchange
Input [1]: [plant#69772]
Arguments: hashpartitioning(plant#69772, 25), ENSURE_REQUIREMENTS, [plan_id=32092]
(464) HashAggregate
Input [1]: [plant#69772]
Keys [1]: [plant#69772]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69772]
(465) BroadcastHashJoin
Left keys [1]: [plantUuid#69186]
Right keys [1]: [plant#69772]
Join type: Inner
Join condition: None
(466) Project
Output [3]: [plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
Input [4]: [plantUuid#69186, storageLocId#69199, storageLocUuid#69200, plant#69772]
(467) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69260.internalRefUUID, ), isnull(plant#69260.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#69186, ), isnull(plantUuid#69186)]
Join type: Inner
Join condition: None
(468) Generate
Input [9]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
Arguments: explode(filter(stockQuantities#69262, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#69200) AND (lambda x#69269.storageLocation.Id = storageLocId#69199)), lambda x#69269, false))), [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, plantUuid#69186], false, [stockQuantity#69272]
(469) ObjectHashAggregate
Input [7]: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, plantUuid#69186, stockQuantity#69272]
Keys [5]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257]
Functions [2]: [partial_first(calculationDateTime#69261, false), partial_collect_list(stockQuantity#69272, 0, 0)]
Aggregate Attributes [3]: [first#73924, valueSet#73925, buf#73926]
Results [8]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257, first#73927, valueSet#73928, buf#73929]
(470) ObjectHashAggregate
Input [8]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257, first#73927, valueSet#73928, buf#73929]
Keys [5]: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257]
Functions [2]: [first(calculationDateTime#69261, false), collect_list(stockQuantity#69272, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#69261)()#69286, collect_list(stockQuantity#69272, 0, 0)#69287]
Results [4]: [product#69259, plant#69260, first(calculationDateTime#69261)()#69286 AS calculationDateTime#69273, collect_list(stockQuantity#69272, 0, 0)#69287 AS stockQuantities#69274]
(471) Filter
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantities#69274]
Condition : ((size(stockQuantities#69274, true) > 0) AND isnotnull(calculationDateTime#69273))
(472) Generate
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantities#69274]
Arguments: explode(stockQuantities#69274), [product#69259, plant#69260, calculationDateTime#69273], false, [stockQuantity#69289]
(473) Filter
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantity#69289]
Condition : (((isnotnull(stockQuantity#69289.specialStockIndicator.code) AND isnotnull(stockQuantity#69289.stockType.code)) AND (stockQuantity#69289.specialStockIndicator.code = )) AND (stockQuantity#69289.stockType.code = 01))
(474) Project
Output [4]: [plant#69260.internalRefUUID AS plantUuid#69291, product#69259.internalRefUUID AS productUuid#69293, calculationDateTime#69273, stockQuantity#69289.storagelocation.id AS storageLocId#69294]
Input [4]: [product#69259, plant#69260, calculationDateTime#69273, stockQuantity#69289]
(475) Exchange
Input [4]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294]
Arguments: hashpartitioning(productUuid#69293, plantUuid#69291, 25), ENSURE_REQUIREMENTS, [plan_id=32154]
(476) Sort
Input [4]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294]
Arguments: [productUuid#69293 ASC NULLS FIRST, plantUuid#69291 ASC NULLS FIRST], false, 0
(477) Filter
Input [3]: [product#69323, plant#69324, orderDateTime#69325]
Condition : ((isnotnull(orderDateTime#69325) AND isnotnull(plant#69324)) AND isnotnull(product#69323))
(478) Exchange
Input [3]: [product#69323, plant#69324, orderDateTime#69325]
Arguments: hashpartitioning(product#69323, plant#69324, 25), REPARTITION_BY_NUM, [plan_id=31695]
(479) Scan parquet
Output [4]: [plant#69329, product#69330, productionAspect#69332, systemId#69327]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(480) Project
Output [4]: [plant#69329.internalRefUUID AS _extract_internalRefUUID#71377, product#69330.internalRefUUID AS _extract_internalRefUUID#71378, productionAspect#69332.productMovementPlants.unitOfIssue.code AS _extract_code#71375, productionAspect#69332.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71376]
Input [4]: [plant#69329, product#69330, productionAspect#69332, systemId#69327]
(481) Exchange
Input [4]: [_extract_internalRefUUID#71377, _extract_internalRefUUID#71378, _extract_code#71375, _extract_internalRefUUID#71376]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31116]
(482) Project
Output [4]: [_extract_code#71375, _extract_internalRefUUID#71376, _extract_internalRefUUID#71378, _extract_internalRefUUID#71377]
Input [4]: [_extract_internalRefUUID#71377, _extract_internalRefUUID#71378, _extract_code#71375, _extract_internalRefUUID#71376]
(483) BroadcastExchange
Input [4]: [_extract_code#71375, _extract_internalRefUUID#71376, _extract_internalRefUUID#71378, _extract_internalRefUUID#71377]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=32123]
(484) BroadcastHashJoin
Left keys [4]: [coalesce(product#69323, ), isnull(product#69323), coalesce(plant#69324, ), isnull(plant#69324)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71378, ), isnull(_extract_internalRefUUID#71378), coalesce(_extract_internalRefUUID#71377, ), isnull(_extract_internalRefUUID#71377)]
Join type: LeftOuter
Join condition: None
(485) Project
Output [5]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#71375, _extract_internalRefUUID#71376]
Input [7]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#71375, _extract_internalRefUUID#71376, _extract_internalRefUUID#71378, _extract_internalRefUUID#71377]
(486) Scan parquet
Output [2]: [internalUUID#69338, systemId#69337]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(487) Project
Output [1]: [internalUUID#69338]
Input [2]: [internalUUID#69338, systemId#69337]
(488) Exchange
Input [1]: [internalUUID#69338]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31129]
(489) BroadcastExchange
Input [1]: [internalUUID#69338]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32127]
(490) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69324, ), isnull(plant#69324)]
Right keys [2]: [coalesce(internalUUID#69338, ), isnull(internalUUID#69338)]
Join type: LeftOuter
Join condition: None
(491) Project
Output [5]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#71375, _extract_internalRefUUID#71376]
Input [6]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#71375, _extract_internalRefUUID#71376, internalUUID#69338]
(492) Scan parquet
Output [4]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358, systemId#69351]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(493) Filter
Input [4]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358, systemId#69351]
Condition : isnotnull(internalUUID#69352)
(494) Project
Output [3]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358]
Input [4]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358, systemId#69351]
(495) Exchange
Input [3]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31136]
(496) BroadcastExchange
Input [3]: [internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32131]
(497) BroadcastHashJoin
Left keys [1]: [product#69323]
Right keys [1]: [internalUUID#69352]
Join type: LeftOuter
Join condition: None
(498) Project
Output [4]: [product#69323, plant#69324, orderDateTime#69325, filter(unitOfMeasureConversions#69358, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71375) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71376)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69356.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69356.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69363]
Input [8]: [product#69323, plant#69324, orderDateTime#69325, _extract_code#71375, _extract_internalRefUUID#71376, internalUUID#69352, baseUnitOfMeasure#69356, unitOfMeasureConversions#69358]
(499) Generate
Input [4]: [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363]
Arguments: explode(filteredUnitOfMeasureConversions#69363.quantityNumerator), [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363], true, [quantityNumerator#69364]
(500) Project
Output [4]: [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363.quantityDenominator AS _extract_quantityDenominator#70990]
Input [5]: [product#69323, plant#69324, orderDateTime#69325, filteredUnitOfMeasureConversions#69363, quantityNumerator#69364]
(501) Generate
Input [4]: [product#69323, plant#69324, orderDateTime#69325, _extract_quantityDenominator#70990]
Arguments: explode(_extract_quantityDenominator#70990), [product#69323, plant#69324, orderDateTime#69325], true, [quantityDenominator#69365]
(502) Project
Output [3]: [product#69323, plant#69324, orderDateTime#69325]
Input [4]: [product#69323, plant#69324, orderDateTime#69325, quantityDenominator#69365]
(503) Sort
Input [3]: [product#69323, plant#69324, orderDateTime#69325]
Arguments: [product#69323 ASC NULLS FIRST, plant#69324 ASC NULLS FIRST], false, 0
(504) SortMergeJoin
Left keys [2]: [productUuid#69293, plantUuid#69291]
Right keys [2]: [product#69323, plant#69324]
Join type: Inner
Join condition: (calculationDateTime#69273 <= orderDateTime#69325)
(505) Project
Output [4]: [plantUuid#69291 AS plant#69435, productUuid#69293 AS product#69436, storageLocId#69294, calculationDateTime#69273]
Input [7]: [plantUuid#69291, productUuid#69293, calculationDateTime#69273, storageLocId#69294, product#69323, plant#69324, orderDateTime#69325]
(506) Exchange
Input [4]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273]
Arguments: hashpartitioning(coalesce(plant#69435, ), isnull(plant#69435), coalesce(product#69436, ), isnull(product#69436), coalesce(storageLocId#69294, ), isnull(storageLocId#69294), coalesce(calculationDateTime#69273, 1970-01-01 00:00:00), isnull(calculationDateTime#69273), 25), ENSURE_REQUIREMENTS, [plan_id=32283]
(507) Sort
Input [4]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273]
Arguments: [coalesce(plant#69435, ) ASC NULLS FIRST, isnull(plant#69435) ASC NULLS FIRST, coalesce(product#69436, ) ASC NULLS FIRST, isnull(product#69436) ASC NULLS FIRST, coalesce(storageLocId#69294, ) ASC NULLS FIRST, isnull(storageLocId#69294) ASC NULLS FIRST, coalesce(calculationDateTime#69273, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#69273) ASC NULLS FIRST], false, 0
(508) Scan parquet
Output [6]: [internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462, systemId#69457]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(509) Filter
Input [6]: [internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462, systemId#69457]
Condition : (isnotnull(plant#69460.internalRefUUID) AND isnotnull(product#69459.internalRefUUID))
(510) Project
Output [6]: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462]
Input [6]: [internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462, systemId#69457]
(511) Exchange
Input [6]: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31161]
(512) BroadcastExchange
Input [6]: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=32212]
(513) Scan parquet
Output [2]: [marketUnit#69463, distributionCenters#69469]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(514) Filter
Input [2]: [marketUnit#69463, distributionCenters#69469]
Condition : (((marketUnit#69463 <=> Daily_grocery) AND (size(distributionCenters#69469, true) > 0)) AND isnotnull(distributionCenters#69469))
(515) Project
Output [1]: [distributionCenters#69469]
Input [2]: [marketUnit#69463, distributionCenters#69469]
(516) Exchange
Input [1]: [distributionCenters#69469]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31167]
(517) Generate
Input [1]: [distributionCenters#69469]
Arguments: explode(distributionCenters#69469), false, [distributionCenters#69485]
(518) Filter
Input [1]: [distributionCenters#69485]
Condition : (((size(distributionCenters#69485.storageLocations, true) > 0) AND isnotnull(distributionCenters#69485.storageLocations)) AND isnotnull(distributionCenters#69485.internalRefUUID))
(519) Project
Output [2]: [distributionCenters#69485.internalRefUUID AS _extract_internalRefUUID#70997, distributionCenters#69485.storageLocations AS _extract_storageLocations#70998]
Input [1]: [distributionCenters#69485]
(520) Generate
Input [2]: [_extract_internalRefUUID#70997, _extract_storageLocations#70998]
Arguments: explode(_extract_storageLocations#70998), [_extract_internalRefUUID#70997], false, [storageLocations#69486]
(521) Project
Output [3]: [_extract_internalRefUUID#70997 AS plantUuid#69488, storageLocations#69486.id AS storageLocId#69489, storageLocations#69486.internalRefUUID AS storageLocUuid#69490]
Input [2]: [_extract_internalRefUUID#70997, storageLocations#69486]
(522) BroadcastExchange
Input [3]: [plantUuid#69488, storageLocId#69489, storageLocUuid#69490]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32204]
(523) Scan parquet
Output [2]: [product#69491, plant#69492]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(524) Filter
Input [2]: [product#69491, plant#69492]
Condition : isnotnull(plant#69492)
(525) Exchange
Input [2]: [product#69491, plant#69492]
Arguments: hashpartitioning(product#69491, plant#69492, 25), REPARTITION_BY_NUM, [plan_id=31720]
(526) Scan parquet
Output [4]: [plant#69497, product#69498, productionAspect#69500, systemId#69495]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(527) Project
Output [4]: [plant#69497.internalRefUUID AS _extract_internalRefUUID#71390, product#69498.internalRefUUID AS _extract_internalRefUUID#71389, productionAspect#69500.productMovementPlants.unitOfIssue.code AS _extract_code#71387, productionAspect#69500.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71388]
Input [4]: [plant#69497, product#69498, productionAspect#69500, systemId#69495]
(528) Exchange
Input [4]: [_extract_internalRefUUID#71390, _extract_internalRefUUID#71389, _extract_code#71387, _extract_internalRefUUID#71388]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31196]
(529) Project
Output [4]: [_extract_code#71387, _extract_internalRefUUID#71388, _extract_internalRefUUID#71389, _extract_internalRefUUID#71390]
Input [4]: [_extract_internalRefUUID#71390, _extract_internalRefUUID#71389, _extract_code#71387, _extract_internalRefUUID#71388]
(530) BroadcastExchange
Input [4]: [_extract_code#71387, _extract_internalRefUUID#71388, _extract_internalRefUUID#71389, _extract_internalRefUUID#71390]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=32164]
(531) BroadcastHashJoin
Left keys [4]: [coalesce(product#69491, ), isnull(product#69491), coalesce(plant#69492, ), isnull(plant#69492)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71389, ), isnull(_extract_internalRefUUID#71389), coalesce(_extract_internalRefUUID#71390, ), isnull(_extract_internalRefUUID#71390)]
Join type: LeftOuter
Join condition: None
(532) Project
Output [4]: [product#69491, plant#69492, _extract_code#71387, _extract_internalRefUUID#71388]
Input [6]: [product#69491, plant#69492, _extract_code#71387, _extract_internalRefUUID#71388, _extract_internalRefUUID#71389, _extract_internalRefUUID#71390]
(533) Scan parquet
Output [2]: [internalUUID#69505, systemId#69504]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(534) Project
Output [1]: [internalUUID#69505]
Input [2]: [internalUUID#69505, systemId#69504]
(535) Exchange
Input [1]: [internalUUID#69505]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31209]
(536) BroadcastExchange
Input [1]: [internalUUID#69505]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32172]
(537) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69492, ), isnull(plant#69492)]
Right keys [2]: [coalesce(internalUUID#69505, ), isnull(internalUUID#69505)]
Join type: LeftOuter
Join condition: None
(538) Project
Output [4]: [product#69491, plant#69492, _extract_code#71387, _extract_internalRefUUID#71388]
Input [5]: [product#69491, plant#69492, _extract_code#71387, _extract_internalRefUUID#71388, internalUUID#69505]
(539) Scan parquet
Output [4]: [internalUUID#69519, baseUnitOfMeasure#69523, unitOfMeasureConversions#69525, systemId#69518]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(540) Filter
Input [4]: [internalUUID#69519, baseUnitOfMeasure#69523, unitOfMeasureConversions#69525, systemId#69518]
Condition : isnotnull(internalUUID#69519)
(541) Project
Output [3]: [internalUUID#69519, baseUnitOfMeasure#69523, unitOfMeasureConversions#69525]
Input [4]: [internalUUID#69519, baseUnitOfMeasure#69523, unitOfMeasureConversions#69525, systemId#69518]
(542) Exchange
Input [3]: [internalUUID#69519, baseUnitOfMeasure#69523, unitOfMeasureConversions#69525]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31218]
(543) BroadcastExchange
Input [3]: [internalUUID#69519, baseUnitOfMeasure#69523, unitOfMeasureConversions#69525]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32180]
(544) BroadcastHashJoin
Left keys [1]: [product#69491]
Right keys [1]: [internalUUID#69519]
Join type: LeftOuter
Join condition: None
(545) Project
Output [2]: [plant#69492, filter(unitOfMeasureConversions#69525, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71387) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71388)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69523.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69523.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69530]
Input [7]: [product#69491, plant#69492, _extract_code#71387, _extract_internalRefUUID#71388, internalUUID#69519, baseUnitOfMeasure#69523, unitOfMeasureConversions#69525]
(546) Generate
Input [2]: [plant#69492, filteredUnitOfMeasureConversions#69530]
Arguments: explode(filteredUnitOfMeasureConversions#69530.quantityNumerator), [plant#69492, filteredUnitOfMeasureConversions#69530], true, [quantityNumerator#69531]
(547) Project
Output [2]: [plant#69492, filteredUnitOfMeasureConversions#69530.quantityDenominator AS _extract_quantityDenominator#71002]
Input [3]: [plant#69492, filteredUnitOfMeasureConversions#69530, quantityNumerator#69531]
(548) Generate
Input [2]: [plant#69492, _extract_quantityDenominator#71002]
Arguments: explode(_extract_quantityDenominator#71002), [plant#69492], true, [quantityDenominator#69532]
(549) Project
Output [1]: [plant#69492]
Input [2]: [plant#69492, quantityDenominator#69532]
(550) HashAggregate
Input [1]: [plant#69492]
Keys [1]: [plant#69492]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69492]
(551) Exchange
Input [1]: [plant#69492]
Arguments: hashpartitioning(plant#69492, 25), ENSURE_REQUIREMENTS, [plan_id=32198]
(552) HashAggregate
Input [1]: [plant#69492]
Keys [1]: [plant#69492]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#69492]
(553) BroadcastHashJoin
Left keys [1]: [plantUuid#69488]
Right keys [1]: [plant#69492]
Join type: Inner
Join condition: None
(554) Project
Output [3]: [plantUuid#69488, storageLocId#69489, storageLocUuid#69490]
Input [4]: [plantUuid#69488, storageLocId#69489, storageLocUuid#69490, plant#69492]
(555) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69460.internalRefUUID, ), isnull(plant#69460.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#69488, ), isnull(plantUuid#69488)]
Join type: Inner
Join condition: None
(556) Generate
Input [9]: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462, plantUuid#69488, storageLocId#69489, storageLocUuid#69490]
Arguments: explode(filter(stockQuantities#69462, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#69490) AND (lambda x#69269.storageLocation.Id = storageLocId#69489)), lambda x#69269, false))), [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, plantUuid#69488], false, [stockQuantity#69535]
(557) ObjectHashAggregate
Input [7]: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, plantUuid#69488, stockQuantity#69535]
Keys [5]: [plantUuid#69488, internalUUID#69458, plant#69460, product#69459, systemId#69457]
Functions [2]: [partial_first(calculationDateTime#69461, false), partial_collect_list(stockQuantity#69535, 0, 0)]
Aggregate Attributes [3]: [first#73934, valueSet#73935, buf#73936]
Results [8]: [plantUuid#69488, internalUUID#69458, plant#69460, product#69459, systemId#69457, first#73937, valueSet#73938, buf#73939]
(558) ObjectHashAggregate
Input [8]: [plantUuid#69488, internalUUID#69458, plant#69460, product#69459, systemId#69457, first#73937, valueSet#73938, buf#73939]
Keys [5]: [plantUuid#69488, internalUUID#69458, plant#69460, product#69459, systemId#69457]
Functions [2]: [first(calculationDateTime#69461, false), collect_list(stockQuantity#69535, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#69461)()#69286, collect_list(stockQuantity#69535, 0, 0)#69287]
Results [4]: [product#69459, plant#69460, first(calculationDateTime#69461)()#69286 AS calculationDateTime#69536, collect_list(stockQuantity#69535, 0, 0)#69287 AS stockQuantities#69537]
(559) Filter
Input [4]: [product#69459, plant#69460, calculationDateTime#69536, stockQuantities#69537]
Condition : ((size(stockQuantities#69537, true) > 0) AND isnotnull(calculationDateTime#69536))
(560) Generate
Input [4]: [product#69459, plant#69460, calculationDateTime#69536, stockQuantities#69537]
Arguments: explode(stockQuantities#69537), [product#69459, plant#69460, calculationDateTime#69536], false, [stockQuantity#69538]
(561) Filter
Input [4]: [product#69459, plant#69460, calculationDateTime#69536, stockQuantity#69538]
Condition : (((isnotnull(stockQuantity#69538.specialStockIndicator.code) AND isnotnull(stockQuantity#69538.stockType.code)) AND (stockQuantity#69538.specialStockIndicator.code = )) AND (stockQuantity#69538.stockType.code = 01))
(562) Project
Output [4]: [plant#69460.internalRefUUID AS plantUuid#69540, product#69459.internalRefUUID AS productUuid#69542, calculationDateTime#69536, stockQuantity#69538.storagelocation.id AS storageLocId#69543]
Input [4]: [product#69459, plant#69460, calculationDateTime#69536, stockQuantity#69538]
(563) Exchange
Input [4]: [plantUuid#69540, productUuid#69542, calculationDateTime#69536, storageLocId#69543]
Arguments: hashpartitioning(productUuid#69542, plantUuid#69540, 25), ENSURE_REQUIREMENTS, [plan_id=32264]
(564) Sort
Input [4]: [plantUuid#69540, productUuid#69542, calculationDateTime#69536, storageLocId#69543]
Arguments: [productUuid#69542 ASC NULLS FIRST, plantUuid#69540 ASC NULLS FIRST], false, 0
(565) Scan parquet
Output [3]: [product#69548, plant#69549, orderDateTime#69550]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(566) Filter
Input [3]: [product#69548, plant#69549, orderDateTime#69550]
Condition : ((isnotnull(orderDateTime#69550) AND isnotnull(plant#69549)) AND isnotnull(product#69548))
(567) Exchange
Input [3]: [product#69548, plant#69549, orderDateTime#69550]
Arguments: hashpartitioning(product#69548, plant#69549, 25), REPARTITION_BY_NUM, [plan_id=31767]
(568) Scan parquet
Output [4]: [plant#69554, product#69555, productionAspect#69557, systemId#69552]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(569) Project
Output [4]: [plant#69554.internalRefUUID AS _extract_internalRefUUID#71392, product#69555.internalRefUUID AS _extract_internalRefUUID#71391, productionAspect#69557.productMovementPlants.unitOfIssue.code AS _extract_code#71393, productionAspect#69557.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71394]
Input [4]: [plant#69554, product#69555, productionAspect#69557, systemId#69552]
(570) Exchange
Input [4]: [_extract_internalRefUUID#71392, _extract_internalRefUUID#71391, _extract_code#71393, _extract_internalRefUUID#71394]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31272]
(571) Project
Output [4]: [_extract_code#71393, _extract_internalRefUUID#71394, _extract_internalRefUUID#71391, _extract_internalRefUUID#71392]
Input [4]: [_extract_internalRefUUID#71392, _extract_internalRefUUID#71391, _extract_code#71393, _extract_internalRefUUID#71394]
(572) BroadcastExchange
Input [4]: [_extract_code#71393, _extract_internalRefUUID#71394, _extract_internalRefUUID#71391, _extract_internalRefUUID#71392]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=32231]
(573) BroadcastHashJoin
Left keys [4]: [coalesce(product#69548, ), isnull(product#69548), coalesce(plant#69549, ), isnull(plant#69549)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71391, ), isnull(_extract_internalRefUUID#71391), coalesce(_extract_internalRefUUID#71392, ), isnull(_extract_internalRefUUID#71392)]
Join type: LeftOuter
Join condition: None
(574) Project
Output [5]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#71393, _extract_internalRefUUID#71394]
Input [7]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#71393, _extract_internalRefUUID#71394, _extract_internalRefUUID#71391, _extract_internalRefUUID#71392]
(575) Scan parquet
Output [2]: [internalUUID#69562, systemId#69561]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(576) Project
Output [1]: [internalUUID#69562]
Input [2]: [internalUUID#69562, systemId#69561]
(577) Exchange
Input [1]: [internalUUID#69562]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31283]
(578) BroadcastExchange
Input [1]: [internalUUID#69562]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32239]
(579) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69549, ), isnull(plant#69549)]
Right keys [2]: [coalesce(internalUUID#69562, ), isnull(internalUUID#69562)]
Join type: LeftOuter
Join condition: None
(580) Project
Output [5]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#71393, _extract_internalRefUUID#71394]
Input [6]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#71393, _extract_internalRefUUID#71394, internalUUID#69562]
(581) Scan parquet
Output [4]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582, systemId#69575]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(582) Filter
Input [4]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582, systemId#69575]
Condition : isnotnull(internalUUID#69576)
(583) Project
Output [3]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582]
Input [4]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582, systemId#69575]
(584) Exchange
Input [3]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31289]
(585) BroadcastExchange
Input [3]: [internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32246]
(586) BroadcastHashJoin
Left keys [1]: [product#69548]
Right keys [1]: [internalUUID#69576]
Join type: LeftOuter
Join condition: None
(587) Project
Output [4]: [product#69548, plant#69549, orderDateTime#69550, filter(unitOfMeasureConversions#69582, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71393) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71394)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69580.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69580.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69587]
Input [8]: [product#69548, plant#69549, orderDateTime#69550, _extract_code#71393, _extract_internalRefUUID#71394, internalUUID#69576, baseUnitOfMeasure#69580, unitOfMeasureConversions#69582]
(588) Generate
Input [4]: [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587]
Arguments: explode(filteredUnitOfMeasureConversions#69587.quantityNumerator), [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587], true, [quantityNumerator#69588]
(589) Project
Output [4]: [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587.quantityDenominator AS _extract_quantityDenominator#71011]
Input [5]: [product#69548, plant#69549, orderDateTime#69550, filteredUnitOfMeasureConversions#69587, quantityNumerator#69588]
(590) Generate
Input [4]: [product#69548, plant#69549, orderDateTime#69550, _extract_quantityDenominator#71011]
Arguments: explode(_extract_quantityDenominator#71011), [product#69548, plant#69549, orderDateTime#69550], true, [quantityDenominator#69589]
(591) Project
Output [3]: [product#69548, plant#69549, orderDateTime#69550]
Input [4]: [product#69548, plant#69549, orderDateTime#69550, quantityDenominator#69589]
(592) Sort
Input [3]: [product#69548, plant#69549, orderDateTime#69550]
Arguments: [product#69548 ASC NULLS FIRST, plant#69549 ASC NULLS FIRST], false, 0
(593) SortMergeJoin
Left keys [2]: [productUuid#69542, plantUuid#69540]
Right keys [2]: [product#69548, plant#69549]
Join type: Inner
Join condition: (calculationDateTime#69536 <= orderDateTime#69550)
(594) Project
Output [4]: [plantUuid#69540 AS plant#69620, productUuid#69542 AS product#69621, storageLocId#69543, calculationDateTime#69536]
Input [7]: [plantUuid#69540, productUuid#69542, calculationDateTime#69536, storageLocId#69543, product#69548, plant#69549, orderDateTime#69550]
(595) HashAggregate
Input [4]: [plant#69620, product#69621, storageLocId#69543, calculationDateTime#69536]
Keys [3]: [plant#69620, product#69621, storageLocId#69543]
Functions [1]: [partial_max(calculationDateTime#69536)]
Aggregate Attributes [1]: [max#73930]
Results [4]: [plant#69620, product#69621, storageLocId#69543, max#73931]
(596) HashAggregate
Input [4]: [plant#69620, product#69621, storageLocId#69543, max#73931]
Keys [3]: [plant#69620, product#69621, storageLocId#69543]
Functions [1]: [max(calculationDateTime#69536)]
Aggregate Attributes [1]: [max(calculationDateTime#69536)#69447]
Results [4]: [plant#69620, product#69621, storageLocId#69543, max(calculationDateTime#69536)#69447 AS max_calc_datetime#69441]
(597) Exchange
Input [4]: [plant#69620, product#69621, storageLocId#69543, max_calc_datetime#69441]
Arguments: hashpartitioning(coalesce(plant#69620, ), isnull(plant#69620), coalesce(product#69621, ), isnull(product#69621), coalesce(storageLocId#69543, ), isnull(storageLocId#69543), coalesce(max_calc_datetime#69441, 1970-01-01 00:00:00), isnull(max_calc_datetime#69441), 25), ENSURE_REQUIREMENTS, [plan_id=32285]
(598) Sort
Input [4]: [plant#69620, product#69621, storageLocId#69543, max_calc_datetime#69441]
Arguments: [coalesce(plant#69620, ) ASC NULLS FIRST, isnull(plant#69620) ASC NULLS FIRST, coalesce(product#69621, ) ASC NULLS FIRST, isnull(product#69621) ASC NULLS FIRST, coalesce(storageLocId#69543, ) ASC NULLS FIRST, isnull(storageLocId#69543) ASC NULLS FIRST, coalesce(max_calc_datetime#69441, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#69441) ASC NULLS FIRST], false, 0
(599) SortMergeJoin
Left keys [8]: [coalesce(plant#69435, ), isnull(plant#69435), coalesce(product#69436, ), isnull(product#69436), coalesce(storageLocId#69294, ), isnull(storageLocId#69294), coalesce(calculationDateTime#69273, 1970-01-01 00:00:00), isnull(calculationDateTime#69273)]
Right keys [8]: [coalesce(plant#69620, ), isnull(plant#69620), coalesce(product#69621, ), isnull(product#69621), coalesce(storageLocId#69543, ), isnull(storageLocId#69543), coalesce(max_calc_datetime#69441, 1970-01-01 00:00:00), isnull(max_calc_datetime#69441)]
Join type: Inner
Join condition: None
(600) Project
Output [3]: [plant#69435, product#69436, calculationDateTime#69273]
Input [8]: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273, plant#69620, product#69621, storageLocId#69543, max_calc_datetime#69441]
(601) HashAggregate
Input [3]: [plant#69435, product#69436, calculationDateTime#69273]
Keys [2]: [product#69436, plant#69435]
Functions [1]: [partial_min(calculationDateTime#69273)]
Aggregate Attributes [1]: [min#73914]
Results [3]: [product#69436, plant#69435, min#73915]
(602) Exchange
Input [3]: [product#69436, plant#69435, min#73915]
Arguments: hashpartitioning(product#69436, plant#69435, 25), ENSURE_REQUIREMENTS, [plan_id=32300]
(603) HashAggregate
Input [3]: [product#69436, plant#69435, min#73915]
Keys [2]: [product#69436, plant#69435]
Functions [1]: [min(calculationDateTime#69273)]
Aggregate Attributes [1]: [min(calculationDateTime#69273)#69766]
Results [3]: [product#69436, plant#69435, min(calculationDateTime#69273)#69766 AS minCalculationDateTime#69752]
(604) Sort
Input [3]: [product#69436, plant#69435, minCalculationDateTime#69752]
Arguments: [product#69436 ASC NULLS FIRST, plant#69435 ASC NULLS FIRST], false, 0
(605) SortMergeJoin
Left keys [2]: [product#69019, plant#69020]
Right keys [2]: [product#69436, plant#69435]
Join type: LeftOuter
Join condition: None
(606) Project
Output [4]: [product#69019, plant#69020, timezonecode#69079, CASE WHEN isnotnull(minCalculationDateTime#69752) THEN minCalculationDateTime#69752 ELSE orderDateTime#69021 END AS stockDatetime#69868]
Input [7]: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, product#69436, plant#69435, minCalculationDateTime#69752]
(607) Exchange
Input [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: hashpartitioning(coalesce(plant#69020, ), isnull(plant#69020), coalesce(product#69019, ), isnull(product#69019), 25), ENSURE_REQUIREMENTS, [plan_id=32632]
(608) Sort
Input [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: [coalesce(plant#69020, ) ASC NULLS FIRST, isnull(plant#69020) ASC NULLS FIRST, coalesce(product#69019, ) ASC NULLS FIRST, isnull(product#69019) ASC NULLS FIRST], false, 0
(609) Exchange
Input [3]: [product#69978, plant#69979, orderDateTime#69980]
Arguments: hashpartitioning(product#69978, plant#69979, 25), REPARTITION_BY_NUM, [plan_id=31319]
(610) Project
Output [8]: [systemId#69982, internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989]
Input [8]: [internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989, systemId#69982]
(611) Exchange
Input [8]: [systemId#69982, internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31325]
(612) Project
Output [1]: [struct(systemId, systemId#69982, internalUUID, internalUUID#69983, plant, plant#69984, product, product#69985, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69986, productionAspect, productionAspect#69987, salesPlant, salesPlant#69988, listing, listing#69989) AS productPlant#69990]
Input [8]: [systemId#69982, internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989]
(613) BroadcastExchange
Input [1]: [productPlant#69990]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=32316]
(614) BroadcastHashJoin
Left keys [4]: [coalesce(product#69978, ), isnull(product#69978), coalesce(plant#69979, ), isnull(plant#69979)]
Right keys [4]: [coalesce(productPlant#69990.product.internalRefUUID, ), isnull(productPlant#69990.product.internalRefUUID), coalesce(productPlant#69990.plant.internalRefUUID, ), isnull(productPlant#69990.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(615) Scan parquet
Output [3]: [internalUUID#69992, address#69998, systemId#69991]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string,address:struct<timeZone:struct<code:string>>>
(616) Project
Output [2]: [internalUUID#69992, address#69998.timeZone.code AS timezonecode#70003]
Input [3]: [internalUUID#69992, address#69998, systemId#69991]
(617) Exchange
Input [2]: [internalUUID#69992, timezonecode#70003]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31333]
(618) BroadcastExchange
Input [2]: [internalUUID#69992, timezonecode#70003]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32320]
(619) BroadcastHashJoin
Left keys [2]: [coalesce(plant#69979, ), isnull(plant#69979)]
Right keys [2]: [coalesce(internalUUID#69992, ), isnull(internalUUID#69992)]
Join type: LeftOuter
Join condition: None
(620) Project
Output [5]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, CASE WHEN isnotnull(timezonecode#70003) THEN timezonecode#70003 ELSE UTC END AS timezonecode#70005]
Input [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, internalUUID#69992, timezonecode#70003]
(621) Scan parquet
Output [4]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013, systemId#70006]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(622) Filter
Input [4]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013, systemId#70006]
Condition : isnotnull(internalUUID#70007)
(623) Project
Output [3]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013]
Input [4]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013, systemId#70006]
(624) Exchange
Input [3]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31342]
(625) BroadcastExchange
Input [3]: [internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32324]
(626) BroadcastHashJoin
Left keys [1]: [product#69978]
Right keys [1]: [internalUUID#70007]
Join type: LeftOuter
Join condition: None
(627) Project
Output [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, filter(unitOfMeasureConversions#70013, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70011.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70011.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70018]
Input [8]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, internalUUID#70007, baseUnitOfMeasure#70011, unitOfMeasureConversions#70013]
(628) Project
Output [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, filteredUnitOfMeasureConversions#70018.quantityDenominator AS _extract_quantityDenominator#71133, filteredUnitOfMeasureConversions#70018.quantityNumerator AS _extract_quantityNumerator#71134]
Input [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, filteredUnitOfMeasureConversions#70018]
(629) Generate
Input [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, _extract_quantityDenominator#71133, _extract_quantityNumerator#71134]
Arguments: explode(_extract_quantityNumerator#71134), [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, _extract_quantityDenominator#71133], true, [quantityNumerator#70019]
(630) Generate
Input [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, _extract_quantityDenominator#71133, quantityNumerator#70019]
Arguments: explode(_extract_quantityDenominator#71133), [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, quantityNumerator#70019], true, [quantityDenominator#70020]
(631) Project
Output [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, (cast(quantityNumerator#70019 as double) / cast(quantityDenominator#70020 as double)) AS outboundUnit#70021]
Input [7]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, quantityNumerator#70019, quantityDenominator#70020]
(632) Project
Output [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, CASE WHEN (isnull(outboundUnit#70021) OR (outboundUnit#70021 <= 0.0)) THEN 1.0 ELSE outboundUnit#70021 END AS outboundUnit#70022]
Input [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70021]
(633) Sort
Input [6]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022]
Arguments: [product#69978 ASC NULLS FIRST, plant#69979 ASC NULLS FIRST], false, 0
(634) Scan parquet
Output [6]: [internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028, systemId#70023]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(635) Filter
Input [6]: [internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028, systemId#70023]
Condition : (isnotnull(plant#70026.internalRefUUID) AND isnotnull(product#70025.internalRefUUID))
(636) Project
Output [6]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028]
Input [6]: [internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028, systemId#70023]
(637) Exchange
Input [6]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31367]
(638) BroadcastExchange
Input [6]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=32381]
(639) Scan parquet
Output [2]: [marketUnit#70029, distributionCenters#70035]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(640) Filter
Input [2]: [marketUnit#70029, distributionCenters#70035]
Condition : (((marketUnit#70029 <=> Daily_grocery) AND (size(distributionCenters#70035, true) > 0)) AND isnotnull(distributionCenters#70035))
(641) Project
Output [1]: [distributionCenters#70035]
Input [2]: [marketUnit#70029, distributionCenters#70035]
(642) Exchange
Input [1]: [distributionCenters#70035]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31378]
(643) Generate
Input [1]: [distributionCenters#70035]
Arguments: explode(distributionCenters#70035), false, [distributionCenters#70051]
(644) Filter
Input [1]: [distributionCenters#70051]
Condition : (((size(distributionCenters#70051.storageLocations, true) > 0) AND isnotnull(distributionCenters#70051.storageLocations)) AND isnotnull(distributionCenters#70051.internalRefUUID))
(645) Project
Output [2]: [distributionCenters#70051.internalRefUUID AS _extract_internalRefUUID#71021, distributionCenters#70051.storageLocations AS _extract_storageLocations#71022]
Input [1]: [distributionCenters#70051]
(646) Generate
Input [2]: [_extract_internalRefUUID#71021, _extract_storageLocations#71022]
Arguments: explode(_extract_storageLocations#71022), [_extract_internalRefUUID#71021], false, [storageLocations#70069]
(647) Project
Output [3]: [_extract_internalRefUUID#71021 AS plantUuid#70071, storageLocations#70069.id AS storageLocId#70072, storageLocations#70069.internalRefUUID AS storageLocUuid#70073]
Input [2]: [_extract_internalRefUUID#71021, storageLocations#70069]
(648) BroadcastExchange
Input [3]: [plantUuid#70071, storageLocId#70072, storageLocUuid#70073]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32371]
(649) Scan parquet
Output [2]: [product#70074, plant#70075]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(650) Filter
Input [2]: [product#70074, plant#70075]
Condition : isnotnull(plant#70075)
(651) Exchange
Input [2]: [product#70074, plant#70075]
Arguments: hashpartitioning(product#70074, plant#70075, 25), REPARTITION_BY_NUM, [plan_id=31809]
(652) Scan parquet
Output [4]: [plant#70080, product#70081, productionAspect#70083, systemId#70078]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(653) Project
Output [4]: [plant#70080.internalRefUUID AS _extract_internalRefUUID#71405, product#70081.internalRefUUID AS _extract_internalRefUUID#71406, productionAspect#70083.productMovementPlants.unitOfIssue.code AS _extract_code#71403, productionAspect#70083.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71404]
Input [4]: [plant#70080, product#70081, productionAspect#70083, systemId#70078]
(654) Exchange
Input [4]: [_extract_internalRefUUID#71405, _extract_internalRefUUID#71406, _extract_code#71403, _extract_internalRefUUID#71404]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31407]
(655) Project
Output [4]: [_extract_code#71403, _extract_internalRefUUID#71404, _extract_internalRefUUID#71406, _extract_internalRefUUID#71405]
Input [4]: [_extract_internalRefUUID#71405, _extract_internalRefUUID#71406, _extract_code#71403, _extract_internalRefUUID#71404]
(656) BroadcastExchange
Input [4]: [_extract_code#71403, _extract_internalRefUUID#71404, _extract_internalRefUUID#71406, _extract_internalRefUUID#71405]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=32336]
(657) BroadcastHashJoin
Left keys [4]: [coalesce(product#70074, ), isnull(product#70074), coalesce(plant#70075, ), isnull(plant#70075)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71406, ), isnull(_extract_internalRefUUID#71406), coalesce(_extract_internalRefUUID#71405, ), isnull(_extract_internalRefUUID#71405)]
Join type: LeftOuter
Join condition: None
(658) Project
Output [4]: [product#70074, plant#70075, _extract_code#71403, _extract_internalRefUUID#71404]
Input [6]: [product#70074, plant#70075, _extract_code#71403, _extract_internalRefUUID#71404, _extract_internalRefUUID#71406, _extract_internalRefUUID#71405]
(659) Scan parquet
Output [2]: [internalUUID#70088, systemId#70087]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(660) Project
Output [1]: [internalUUID#70088]
Input [2]: [internalUUID#70088, systemId#70087]
(661) Exchange
Input [1]: [internalUUID#70088]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31416]
(662) BroadcastExchange
Input [1]: [internalUUID#70088]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32344]
(663) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70075, ), isnull(plant#70075)]
Right keys [2]: [coalesce(internalUUID#70088, ), isnull(internalUUID#70088)]
Join type: LeftOuter
Join condition: None
(664) Project
Output [4]: [product#70074, plant#70075, _extract_code#71403, _extract_internalRefUUID#71404]
Input [5]: [product#70074, plant#70075, _extract_code#71403, _extract_internalRefUUID#71404, internalUUID#70088]
(665) Scan parquet
Output [4]: [internalUUID#70102, baseUnitOfMeasure#70106, unitOfMeasureConversions#70108, systemId#70101]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(666) Filter
Input [4]: [internalUUID#70102, baseUnitOfMeasure#70106, unitOfMeasureConversions#70108, systemId#70101]
Condition : isnotnull(internalUUID#70102)
(667) Project
Output [3]: [internalUUID#70102, baseUnitOfMeasure#70106, unitOfMeasureConversions#70108]
Input [4]: [internalUUID#70102, baseUnitOfMeasure#70106, unitOfMeasureConversions#70108, systemId#70101]
(668) Exchange
Input [3]: [internalUUID#70102, baseUnitOfMeasure#70106, unitOfMeasureConversions#70108]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31428]
(669) BroadcastExchange
Input [3]: [internalUUID#70102, baseUnitOfMeasure#70106, unitOfMeasureConversions#70108]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32349]
(670) BroadcastHashJoin
Left keys [1]: [product#70074]
Right keys [1]: [internalUUID#70102]
Join type: LeftOuter
Join condition: None
(671) Project
Output [2]: [plant#70075, filter(unitOfMeasureConversions#70108, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71403) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71404)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70106.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70106.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70113]
Input [7]: [product#70074, plant#70075, _extract_code#71403, _extract_internalRefUUID#71404, internalUUID#70102, baseUnitOfMeasure#70106, unitOfMeasureConversions#70108]
(672) Generate
Input [2]: [plant#70075, filteredUnitOfMeasureConversions#70113]
Arguments: explode(filteredUnitOfMeasureConversions#70113.quantityNumerator), [plant#70075, filteredUnitOfMeasureConversions#70113], true, [quantityNumerator#70114]
(673) Project
Output [2]: [plant#70075, filteredUnitOfMeasureConversions#70113.quantityDenominator AS _extract_quantityDenominator#71024]
Input [3]: [plant#70075, filteredUnitOfMeasureConversions#70113, quantityNumerator#70114]
(674) Generate
Input [2]: [plant#70075, _extract_quantityDenominator#71024]
Arguments: explode(_extract_quantityDenominator#71024), [plant#70075], true, [quantityDenominator#70115]
(675) Project
Output [1]: [plant#70075]
Input [2]: [plant#70075, quantityDenominator#70115]
(676) HashAggregate
Input [1]: [plant#70075]
Keys [1]: [plant#70075]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70075]
(677) Exchange
Input [1]: [plant#70075]
Arguments: hashpartitioning(plant#70075, 25), ENSURE_REQUIREMENTS, [plan_id=32365]
(678) HashAggregate
Input [1]: [plant#70075]
Keys [1]: [plant#70075]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70075]
(679) BroadcastHashJoin
Left keys [1]: [plantUuid#70071]
Right keys [1]: [plant#70075]
Join type: Inner
Join condition: None
(680) Project
Output [3]: [plantUuid#70071, storageLocId#70072, storageLocUuid#70073]
Input [4]: [plantUuid#70071, storageLocId#70072, storageLocUuid#70073, plant#70075]
(681) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70026.internalRefUUID, ), isnull(plant#70026.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#70071, ), isnull(plantUuid#70071)]
Join type: Inner
Join condition: None
(682) Generate
Input [9]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028, plantUuid#70071, storageLocId#70072, storageLocUuid#70073]
Arguments: explode(filter(stockQuantities#70028, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#70073) AND (lambda x#69269.storageLocation.Id = storageLocId#70072)), lambda x#69269, false))), [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, plantUuid#70071], false, [stockQuantity#70118]
(683) ObjectHashAggregate
Input [7]: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, plantUuid#70071, stockQuantity#70118]
Keys [5]: [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023]
Functions [2]: [partial_first(calculationDateTime#70027, false), partial_collect_list(stockQuantity#70118, 0, 0)]
Aggregate Attributes [3]: [first#73962, valueSet#73963, buf#73964]
Results [8]: [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023, first#73965, valueSet#73966, buf#73967]
(684) ObjectHashAggregate
Input [8]: [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023, first#73965, valueSet#73966, buf#73967]
Keys [5]: [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023]
Functions [2]: [first(calculationDateTime#70027, false), collect_list(stockQuantity#70118, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#70027)()#69286, collect_list(stockQuantity#70118, 0, 0)#69287]
Results [4]: [product#70025, plant#70026, first(calculationDateTime#70027)()#69286 AS calculationDateTime#70119, collect_list(stockQuantity#70118, 0, 0)#69287 AS stockQuantities#70120]
(685) Filter
Input [4]: [product#70025, plant#70026, calculationDateTime#70119, stockQuantities#70120]
Condition : ((size(stockQuantities#70120, true) > 0) AND isnotnull(calculationDateTime#70119))
(686) Generate
Input [4]: [product#70025, plant#70026, calculationDateTime#70119, stockQuantities#70120]
Arguments: explode(stockQuantities#70120), [product#70025, plant#70026, calculationDateTime#70119], false, [stockQuantity#70121]
(687) Filter
Input [4]: [product#70025, plant#70026, calculationDateTime#70119, stockQuantity#70121]
Condition : (((isnotnull(stockQuantity#70121.specialStockIndicator.code) AND isnotnull(stockQuantity#70121.stockType.code)) AND (stockQuantity#70121.specialStockIndicator.code = )) AND (stockQuantity#70121.stockType.code = 01))
(688) Project
Output [5]: [plant#70026.internalRefUUID AS plantUuid#70123, product#70025.internalRefUUID AS productUuid#70125, calculationDateTime#70119, stockQuantity#70121.storagelocation.id AS storageLocId#70126, stockQuantity#70121.quantity.measure AS quantity#70128]
Input [4]: [product#70025, plant#70026, calculationDateTime#70119, stockQuantity#70121]
(689) Exchange
Input [5]: [plantUuid#70123, productUuid#70125, calculationDateTime#70119, storageLocId#70126, quantity#70128]
Arguments: hashpartitioning(productUuid#70125, plantUuid#70123, 25), ENSURE_REQUIREMENTS, [plan_id=32442]
(690) Sort
Input [5]: [plantUuid#70123, productUuid#70125, calculationDateTime#70119, storageLocId#70126, quantity#70128]
Arguments: [productUuid#70125 ASC NULLS FIRST, plantUuid#70123 ASC NULLS FIRST], false, 0
(691) Scan parquet
Output [3]: [product#70131, plant#70132, orderDateTime#70133]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(692) Filter
Input [3]: [product#70131, plant#70132, orderDateTime#70133]
Condition : ((isnotnull(orderDateTime#70133) AND isnotnull(plant#70132)) AND isnotnull(product#70131))
(693) Exchange
Input [3]: [product#70131, plant#70132, orderDateTime#70133]
Arguments: hashpartitioning(product#70131, plant#70132, 25), REPARTITION_BY_NUM, [plan_id=31855]
(694) Scan parquet
Output [4]: [plant#70137, product#70138, productionAspect#70140, systemId#70135]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(695) Project
Output [4]: [plant#70137.internalRefUUID AS _extract_internalRefUUID#71407, product#70138.internalRefUUID AS _extract_internalRefUUID#71410, productionAspect#70140.productMovementPlants.unitOfIssue.code AS _extract_code#71408, productionAspect#70140.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71409]
Input [4]: [plant#70137, product#70138, productionAspect#70140, systemId#70135]
(696) Exchange
Input [4]: [_extract_internalRefUUID#71407, _extract_internalRefUUID#71410, _extract_code#71408, _extract_internalRefUUID#71409]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31456]
(697) Project
Output [4]: [_extract_code#71408, _extract_internalRefUUID#71409, _extract_internalRefUUID#71410, _extract_internalRefUUID#71407]
Input [4]: [_extract_internalRefUUID#71407, _extract_internalRefUUID#71410, _extract_code#71408, _extract_internalRefUUID#71409]
(698) BroadcastExchange
Input [4]: [_extract_code#71408, _extract_internalRefUUID#71409, _extract_internalRefUUID#71410, _extract_internalRefUUID#71407]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=32407]
(699) BroadcastHashJoin
Left keys [4]: [coalesce(product#70131, ), isnull(product#70131), coalesce(plant#70132, ), isnull(plant#70132)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71410, ), isnull(_extract_internalRefUUID#71410), coalesce(_extract_internalRefUUID#71407, ), isnull(_extract_internalRefUUID#71407)]
Join type: LeftOuter
Join condition: None
(700) Project
Output [5]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#71408, _extract_internalRefUUID#71409]
Input [7]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#71408, _extract_internalRefUUID#71409, _extract_internalRefUUID#71410, _extract_internalRefUUID#71407]
(701) Scan parquet
Output [2]: [internalUUID#70145, systemId#70144]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(702) Project
Output [1]: [internalUUID#70145]
Input [2]: [internalUUID#70145, systemId#70144]
(703) Exchange
Input [1]: [internalUUID#70145]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31462]
(704) BroadcastExchange
Input [1]: [internalUUID#70145]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32412]
(705) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70132, ), isnull(plant#70132)]
Right keys [2]: [coalesce(internalUUID#70145, ), isnull(internalUUID#70145)]
Join type: LeftOuter
Join condition: None
(706) Project
Output [5]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#71408, _extract_internalRefUUID#71409]
Input [6]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#71408, _extract_internalRefUUID#71409, internalUUID#70145]
(707) Scan parquet
Output [4]: [internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165, systemId#70158]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(708) Filter
Input [4]: [internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165, systemId#70158]
Condition : isnotnull(internalUUID#70159)
(709) Project
Output [3]: [internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165]
Input [4]: [internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165, systemId#70158]
(710) Exchange
Input [3]: [internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31468]
(711) BroadcastExchange
Input [3]: [internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32418]
(712) BroadcastHashJoin
Left keys [1]: [product#70131]
Right keys [1]: [internalUUID#70159]
Join type: LeftOuter
Join condition: None
(713) Project
Output [4]: [product#70131, plant#70132, orderDateTime#70133, filter(unitOfMeasureConversions#70165, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71408) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71409)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70163.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70163.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70171]
Input [8]: [product#70131, plant#70132, orderDateTime#70133, _extract_code#71408, _extract_internalRefUUID#71409, internalUUID#70159, baseUnitOfMeasure#70163, unitOfMeasureConversions#70165]
(714) Generate
Input [4]: [product#70131, plant#70132, orderDateTime#70133, filteredUnitOfMeasureConversions#70171]
Arguments: explode(filteredUnitOfMeasureConversions#70171.quantityNumerator), [product#70131, plant#70132, orderDateTime#70133, filteredUnitOfMeasureConversions#70171], true, [quantityNumerator#70172]
(715) Project
Output [4]: [product#70131, plant#70132, orderDateTime#70133, filteredUnitOfMeasureConversions#70171.quantityDenominator AS _extract_quantityDenominator#71031]
Input [5]: [product#70131, plant#70132, orderDateTime#70133, filteredUnitOfMeasureConversions#70171, quantityNumerator#70172]
(716) Generate
Input [4]: [product#70131, plant#70132, orderDateTime#70133, _extract_quantityDenominator#71031]
Arguments: explode(_extract_quantityDenominator#71031), [product#70131, plant#70132, orderDateTime#70133], true, [quantityDenominator#70173]
(717) Project
Output [3]: [product#70131, plant#70132, orderDateTime#70133]
Input [4]: [product#70131, plant#70132, orderDateTime#70133, quantityDenominator#70173]
(718) Sort
Input [3]: [product#70131, plant#70132, orderDateTime#70133]
Arguments: [product#70131 ASC NULLS FIRST, plant#70132 ASC NULLS FIRST], false, 0
(719) SortMergeJoin
Left keys [2]: [productUuid#70125, plantUuid#70123]
Right keys [2]: [product#70131, plant#70132]
Join type: Inner
Join condition: (calculationDateTime#70119 <= orderDateTime#70133)
(720) Project
Output [5]: [plantUuid#70123 AS plant#70176, productUuid#70125 AS product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
Input [8]: [plantUuid#70123, productUuid#70125, calculationDateTime#70119, storageLocId#70126, quantity#70128, product#70131, plant#70132, orderDateTime#70133]
(721) Exchange
Input [5]: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
Arguments: hashpartitioning(coalesce(plant#70176, ), isnull(plant#70176), coalesce(product#70177, ), isnull(product#70177), coalesce(storageLocId#70126, ), isnull(storageLocId#70126), coalesce(calculationDateTime#70119, 1970-01-01 00:00:00), isnull(calculationDateTime#70119), 25), ENSURE_REQUIREMENTS, [plan_id=32583]
(722) Sort
Input [5]: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
Arguments: [coalesce(plant#70176, ) ASC NULLS FIRST, isnull(plant#70176) ASC NULLS FIRST, coalesce(product#70177, ) ASC NULLS FIRST, isnull(product#70177) ASC NULLS FIRST, coalesce(storageLocId#70126, ) ASC NULLS FIRST, isnull(storageLocId#70126) ASC NULLS FIRST, coalesce(calculationDateTime#70119, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#70119) ASC NULLS FIRST], false, 0
(723) Scan parquet
Output [6]: [internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183, systemId#70178]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(724) Filter
Input [6]: [internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183, systemId#70178]
Condition : (isnotnull(plant#70181.internalRefUUID) AND isnotnull(product#70180.internalRefUUID))
(725) Project
Output [6]: [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183]
Input [6]: [internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183, systemId#70178]
(726) Exchange
Input [6]: [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31480]
(727) BroadcastExchange
Input [6]: [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=32503]
(728) Scan parquet
Output [2]: [marketUnit#70184, distributionCenters#70190]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(729) Filter
Input [2]: [marketUnit#70184, distributionCenters#70190]
Condition : (((marketUnit#70184 <=> Daily_grocery) AND (size(distributionCenters#70190, true) > 0)) AND isnotnull(distributionCenters#70190))
(730) Project
Output [1]: [distributionCenters#70190]
Input [2]: [marketUnit#70184, distributionCenters#70190]
(731) Exchange
Input [1]: [distributionCenters#70190]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31484]
(732) Generate
Input [1]: [distributionCenters#70190]
Arguments: explode(distributionCenters#70190), false, [distributionCenters#70206]
(733) Filter
Input [1]: [distributionCenters#70206]
Condition : (((size(distributionCenters#70206.storageLocations, true) > 0) AND isnotnull(distributionCenters#70206.storageLocations)) AND isnotnull(distributionCenters#70206.internalRefUUID))
(734) Project
Output [2]: [distributionCenters#70206.internalRefUUID AS _extract_internalRefUUID#71041, distributionCenters#70206.storageLocations AS _extract_storageLocations#71042]
Input [1]: [distributionCenters#70206]
(735) Generate
Input [2]: [_extract_internalRefUUID#71041, _extract_storageLocations#71042]
Arguments: explode(_extract_storageLocations#71042), [_extract_internalRefUUID#71041], false, [storageLocations#70207]
(736) Project
Output [3]: [_extract_internalRefUUID#71041 AS plantUuid#70209, storageLocations#70207.id AS storageLocId#70210, storageLocations#70207.internalRefUUID AS storageLocUuid#70211]
Input [2]: [_extract_internalRefUUID#71041, storageLocations#70207]
(737) BroadcastExchange
Input [3]: [plantUuid#70209, storageLocId#70210, storageLocUuid#70211]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32494]
(738) Scan parquet
Output [2]: [product#70212, plant#70213]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(739) Filter
Input [2]: [product#70212, plant#70213]
Condition : isnotnull(plant#70213)
(740) Exchange
Input [2]: [product#70212, plant#70213]
Arguments: hashpartitioning(product#70212, plant#70213, 25), REPARTITION_BY_NUM, [plan_id=31881]
(741) Scan parquet
Output [4]: [plant#70218, product#70219, productionAspect#70221, systemId#70216]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(742) Project
Output [4]: [plant#70218.internalRefUUID AS _extract_internalRefUUID#71422, product#70219.internalRefUUID AS _extract_internalRefUUID#71419, productionAspect#70221.productMovementPlants.unitOfIssue.code AS _extract_code#71420, productionAspect#70221.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71421]
Input [4]: [plant#70218, product#70219, productionAspect#70221, systemId#70216]
(743) Exchange
Input [4]: [_extract_internalRefUUID#71422, _extract_internalRefUUID#71419, _extract_code#71420, _extract_internalRefUUID#71421]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31496]
(744) Project
Output [4]: [_extract_code#71420, _extract_internalRefUUID#71421, _extract_internalRefUUID#71419, _extract_internalRefUUID#71422]
Input [4]: [_extract_internalRefUUID#71422, _extract_internalRefUUID#71419, _extract_code#71420, _extract_internalRefUUID#71421]
(745) BroadcastExchange
Input [4]: [_extract_code#71420, _extract_internalRefUUID#71421, _extract_internalRefUUID#71419, _extract_internalRefUUID#71422]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=32454]
(746) BroadcastHashJoin
Left keys [4]: [coalesce(product#70212, ), isnull(product#70212), coalesce(plant#70213, ), isnull(plant#70213)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71419, ), isnull(_extract_internalRefUUID#71419), coalesce(_extract_internalRefUUID#71422, ), isnull(_extract_internalRefUUID#71422)]
Join type: LeftOuter
Join condition: None
(747) Project
Output [4]: [product#70212, plant#70213, _extract_code#71420, _extract_internalRefUUID#71421]
Input [6]: [product#70212, plant#70213, _extract_code#71420, _extract_internalRefUUID#71421, _extract_internalRefUUID#71419, _extract_internalRefUUID#71422]
(748) Scan parquet
Output [2]: [internalUUID#70226, systemId#70225]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(749) Project
Output [1]: [internalUUID#70226]
Input [2]: [internalUUID#70226, systemId#70225]
(750) Exchange
Input [1]: [internalUUID#70226]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31502]
(751) BroadcastExchange
Input [1]: [internalUUID#70226]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32461]
(752) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70213, ), isnull(plant#70213)]
Right keys [2]: [coalesce(internalUUID#70226, ), isnull(internalUUID#70226)]
Join type: LeftOuter
Join condition: None
(753) Project
Output [4]: [product#70212, plant#70213, _extract_code#71420, _extract_internalRefUUID#71421]
Input [5]: [product#70212, plant#70213, _extract_code#71420, _extract_internalRefUUID#71421, internalUUID#70226]
(754) Scan parquet
Output [4]: [internalUUID#70240, baseUnitOfMeasure#70244, unitOfMeasureConversions#70246, systemId#70239]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(755) Filter
Input [4]: [internalUUID#70240, baseUnitOfMeasure#70244, unitOfMeasureConversions#70246, systemId#70239]
Condition : isnotnull(internalUUID#70240)
(756) Project
Output [3]: [internalUUID#70240, baseUnitOfMeasure#70244, unitOfMeasureConversions#70246]
Input [4]: [internalUUID#70240, baseUnitOfMeasure#70244, unitOfMeasureConversions#70246, systemId#70239]
(757) Exchange
Input [3]: [internalUUID#70240, baseUnitOfMeasure#70244, unitOfMeasureConversions#70246]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31508]
(758) BroadcastExchange
Input [3]: [internalUUID#70240, baseUnitOfMeasure#70244, unitOfMeasureConversions#70246]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32469]
(759) BroadcastHashJoin
Left keys [1]: [product#70212]
Right keys [1]: [internalUUID#70240]
Join type: LeftOuter
Join condition: None
(760) Project
Output [2]: [plant#70213, filter(unitOfMeasureConversions#70246, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71420) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71421)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70244.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70244.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70251]
Input [7]: [product#70212, plant#70213, _extract_code#71420, _extract_internalRefUUID#71421, internalUUID#70240, baseUnitOfMeasure#70244, unitOfMeasureConversions#70246]
(761) Generate
Input [2]: [plant#70213, filteredUnitOfMeasureConversions#70251]
Arguments: explode(filteredUnitOfMeasureConversions#70251.quantityNumerator), [plant#70213, filteredUnitOfMeasureConversions#70251], true, [quantityNumerator#70252]
(762) Project
Output [2]: [plant#70213, filteredUnitOfMeasureConversions#70251.quantityDenominator AS _extract_quantityDenominator#71044]
Input [3]: [plant#70213, filteredUnitOfMeasureConversions#70251, quantityNumerator#70252]
(763) Generate
Input [2]: [plant#70213, _extract_quantityDenominator#71044]
Arguments: explode(_extract_quantityDenominator#71044), [plant#70213], true, [quantityDenominator#70253]
(764) Project
Output [1]: [plant#70213]
Input [2]: [plant#70213, quantityDenominator#70253]
(765) HashAggregate
Input [1]: [plant#70213]
Keys [1]: [plant#70213]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70213]
(766) Exchange
Input [1]: [plant#70213]
Arguments: hashpartitioning(plant#70213, 25), ENSURE_REQUIREMENTS, [plan_id=32488]
(767) HashAggregate
Input [1]: [plant#70213]
Keys [1]: [plant#70213]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70213]
(768) BroadcastHashJoin
Left keys [1]: [plantUuid#70209]
Right keys [1]: [plant#70213]
Join type: Inner
Join condition: None
(769) Project
Output [3]: [plantUuid#70209, storageLocId#70210, storageLocUuid#70211]
Input [4]: [plantUuid#70209, storageLocId#70210, storageLocUuid#70211, plant#70213]
(770) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70181.internalRefUUID, ), isnull(plant#70181.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#70209, ), isnull(plantUuid#70209)]
Join type: Inner
Join condition: None
(771) Generate
Input [9]: [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183, plantUuid#70209, storageLocId#70210, storageLocUuid#70211]
Arguments: explode(filter(stockQuantities#70183, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#70211) AND (lambda x#69269.storageLocation.Id = storageLocId#70210)), lambda x#69269, false))), [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, plantUuid#70209], false, [stockQuantity#70256]
(772) ObjectHashAggregate
Input [7]: [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, plantUuid#70209, stockQuantity#70256]
Keys [5]: [plantUuid#70209, internalUUID#70179, plant#70181, product#70180, systemId#70178]
Functions [2]: [partial_first(calculationDateTime#70182, false), partial_collect_list(stockQuantity#70256, 0, 0)]
Aggregate Attributes [3]: [first#73976, valueSet#73977, buf#73978]
Results [8]: [plantUuid#70209, internalUUID#70179, plant#70181, product#70180, systemId#70178, first#73979, valueSet#73980, buf#73981]
(773) ObjectHashAggregate
Input [8]: [plantUuid#70209, internalUUID#70179, plant#70181, product#70180, systemId#70178, first#73979, valueSet#73980, buf#73981]
Keys [5]: [plantUuid#70209, internalUUID#70179, plant#70181, product#70180, systemId#70178]
Functions [2]: [first(calculationDateTime#70182, false), collect_list(stockQuantity#70256, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#70182)()#69286, collect_list(stockQuantity#70256, 0, 0)#69287]
Results [4]: [product#70180, plant#70181, first(calculationDateTime#70182)()#69286 AS calculationDateTime#70257, collect_list(stockQuantity#70256, 0, 0)#69287 AS stockQuantities#70258]
(774) Filter
Input [4]: [product#70180, plant#70181, calculationDateTime#70257, stockQuantities#70258]
Condition : ((size(stockQuantities#70258, true) > 0) AND isnotnull(calculationDateTime#70257))
(775) Generate
Input [4]: [product#70180, plant#70181, calculationDateTime#70257, stockQuantities#70258]
Arguments: explode(stockQuantities#70258), [product#70180, plant#70181, calculationDateTime#70257], false, [stockQuantity#70259]
(776) Filter
Input [4]: [product#70180, plant#70181, calculationDateTime#70257, stockQuantity#70259]
Condition : (((isnotnull(stockQuantity#70259.specialStockIndicator.code) AND isnotnull(stockQuantity#70259.stockType.code)) AND (stockQuantity#70259.specialStockIndicator.code = )) AND (stockQuantity#70259.stockType.code = 01))
(777) Project
Output [4]: [plant#70181.internalRefUUID AS plantUuid#70261, product#70180.internalRefUUID AS productUuid#70263, calculationDateTime#70257, stockQuantity#70259.storagelocation.id AS storageLocId#70264]
Input [4]: [product#70180, plant#70181, calculationDateTime#70257, stockQuantity#70259]
(778) Exchange
Input [4]: [plantUuid#70261, productUuid#70263, calculationDateTime#70257, storageLocId#70264]
Arguments: hashpartitioning(productUuid#70263, plantUuid#70261, 25), ENSURE_REQUIREMENTS, [plan_id=32561]
(779) Sort
Input [4]: [plantUuid#70261, productUuid#70263, calculationDateTime#70257, storageLocId#70264]
Arguments: [productUuid#70263 ASC NULLS FIRST, plantUuid#70261 ASC NULLS FIRST], false, 0
(780) Scan parquet
Output [3]: [product#70269, plant#70270, orderDateTime#70271]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(781) Filter
Input [3]: [product#70269, plant#70270, orderDateTime#70271]
Condition : ((isnotnull(orderDateTime#70271) AND isnotnull(plant#70270)) AND isnotnull(product#70269))
(782) Exchange
Input [3]: [product#70269, plant#70270, orderDateTime#70271]
Arguments: hashpartitioning(product#70269, plant#70270, 25), REPARTITION_BY_NUM, [plan_id=31927]
(783) Scan parquet
Output [4]: [plant#70275, product#70276, productionAspect#70278, systemId#70273]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(784) Project
Output [4]: [plant#70275.internalRefUUID AS _extract_internalRefUUID#71425, product#70276.internalRefUUID AS _extract_internalRefUUID#71426, productionAspect#70278.productMovementPlants.unitOfIssue.code AS _extract_code#71423, productionAspect#70278.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71424]
Input [4]: [plant#70275, product#70276, productionAspect#70278, systemId#70273]
(785) Exchange
Input [4]: [_extract_internalRefUUID#71425, _extract_internalRefUUID#71426, _extract_code#71423, _extract_internalRefUUID#71424]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31533]
(786) Project
Output [4]: [_extract_code#71423, _extract_internalRefUUID#71424, _extract_internalRefUUID#71426, _extract_internalRefUUID#71425]
Input [4]: [_extract_internalRefUUID#71425, _extract_internalRefUUID#71426, _extract_code#71423, _extract_internalRefUUID#71424]
(787) BroadcastExchange
Input [4]: [_extract_code#71423, _extract_internalRefUUID#71424, _extract_internalRefUUID#71426, _extract_internalRefUUID#71425]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=32521]
(788) BroadcastHashJoin
Left keys [4]: [coalesce(product#70269, ), isnull(product#70269), coalesce(plant#70270, ), isnull(plant#70270)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71426, ), isnull(_extract_internalRefUUID#71426), coalesce(_extract_internalRefUUID#71425, ), isnull(_extract_internalRefUUID#71425)]
Join type: LeftOuter
Join condition: None
(789) Project
Output [5]: [product#70269, plant#70270, orderDateTime#70271, _extract_code#71423, _extract_internalRefUUID#71424]
Input [7]: [product#70269, plant#70270, orderDateTime#70271, _extract_code#71423, _extract_internalRefUUID#71424, _extract_internalRefUUID#71426, _extract_internalRefUUID#71425]
(790) Scan parquet
Output [2]: [internalUUID#70283, systemId#70282]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(791) Project
Output [1]: [internalUUID#70283]
Input [2]: [internalUUID#70283, systemId#70282]
(792) Exchange
Input [1]: [internalUUID#70283]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31539]
(793) BroadcastExchange
Input [1]: [internalUUID#70283]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32529]
(794) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70270, ), isnull(plant#70270)]
Right keys [2]: [coalesce(internalUUID#70283, ), isnull(internalUUID#70283)]
Join type: LeftOuter
Join condition: None
(795) Project
Output [5]: [product#70269, plant#70270, orderDateTime#70271, _extract_code#71423, _extract_internalRefUUID#71424]
Input [6]: [product#70269, plant#70270, orderDateTime#70271, _extract_code#71423, _extract_internalRefUUID#71424, internalUUID#70283]
(796) Scan parquet
Output [4]: [internalUUID#70297, baseUnitOfMeasure#70301, unitOfMeasureConversions#70303, systemId#70296]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(797) Filter
Input [4]: [internalUUID#70297, baseUnitOfMeasure#70301, unitOfMeasureConversions#70303, systemId#70296]
Condition : isnotnull(internalUUID#70297)
(798) Project
Output [3]: [internalUUID#70297, baseUnitOfMeasure#70301, unitOfMeasureConversions#70303]
Input [4]: [internalUUID#70297, baseUnitOfMeasure#70301, unitOfMeasureConversions#70303, systemId#70296]
(799) Exchange
Input [3]: [internalUUID#70297, baseUnitOfMeasure#70301, unitOfMeasureConversions#70303]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31545]
(800) BroadcastExchange
Input [3]: [internalUUID#70297, baseUnitOfMeasure#70301, unitOfMeasureConversions#70303]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32537]
(801) BroadcastHashJoin
Left keys [1]: [product#70269]
Right keys [1]: [internalUUID#70297]
Join type: LeftOuter
Join condition: None
(802) Project
Output [4]: [product#70269, plant#70270, orderDateTime#70271, filter(unitOfMeasureConversions#70303, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71423) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71424)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70301.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70301.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70308]
Input [8]: [product#70269, plant#70270, orderDateTime#70271, _extract_code#71423, _extract_internalRefUUID#71424, internalUUID#70297, baseUnitOfMeasure#70301, unitOfMeasureConversions#70303]
(803) Generate
Input [4]: [product#70269, plant#70270, orderDateTime#70271, filteredUnitOfMeasureConversions#70308]
Arguments: explode(filteredUnitOfMeasureConversions#70308.quantityNumerator), [product#70269, plant#70270, orderDateTime#70271, filteredUnitOfMeasureConversions#70308], true, [quantityNumerator#70309]
(804) Project
Output [4]: [product#70269, plant#70270, orderDateTime#70271, filteredUnitOfMeasureConversions#70308.quantityDenominator AS _extract_quantityDenominator#71052]
Input [5]: [product#70269, plant#70270, orderDateTime#70271, filteredUnitOfMeasureConversions#70308, quantityNumerator#70309]
(805) Generate
Input [4]: [product#70269, plant#70270, orderDateTime#70271, _extract_quantityDenominator#71052]
Arguments: explode(_extract_quantityDenominator#71052), [product#70269, plant#70270, orderDateTime#70271], true, [quantityDenominator#70310]
(806) Project
Output [3]: [product#70269, plant#70270, orderDateTime#70271]
Input [4]: [product#70269, plant#70270, orderDateTime#70271, quantityDenominator#70310]
(807) Sort
Input [3]: [product#70269, plant#70270, orderDateTime#70271]
Arguments: [product#70269 ASC NULLS FIRST, plant#70270 ASC NULLS FIRST], false, 0
(808) SortMergeJoin
Left keys [2]: [productUuid#70263, plantUuid#70261]
Right keys [2]: [product#70269, plant#70270]
Join type: Inner
Join condition: (calculationDateTime#70257 <= orderDateTime#70271)
(809) Project
Output [4]: [plantUuid#70261 AS plant#70323, productUuid#70263 AS product#70324, storageLocId#70264, calculationDateTime#70257]
Input [7]: [plantUuid#70261, productUuid#70263, calculationDateTime#70257, storageLocId#70264, product#70269, plant#70270, orderDateTime#70271]
(810) HashAggregate
Input [4]: [plant#70323, product#70324, storageLocId#70264, calculationDateTime#70257]
Keys [3]: [plant#70323, product#70324, storageLocId#70264]
Functions [1]: [partial_max(calculationDateTime#70257)]
Aggregate Attributes [1]: [max#73974]
Results [4]: [plant#70323, product#70324, storageLocId#70264, max#73975]
(811) HashAggregate
Input [4]: [plant#70323, product#70324, storageLocId#70264, max#73975]
Keys [3]: [plant#70323, product#70324, storageLocId#70264]
Functions [1]: [max(calculationDateTime#70257)]
Aggregate Attributes [1]: [max(calculationDateTime#70257)#69447]
Results [4]: [plant#70323, product#70324, storageLocId#70264, max(calculationDateTime#70257)#69447 AS max_calc_datetime#70325]
(812) Exchange
Input [4]: [plant#70323, product#70324, storageLocId#70264, max_calc_datetime#70325]
Arguments: hashpartitioning(coalesce(plant#70323, ), isnull(plant#70323), coalesce(product#70324, ), isnull(product#70324), coalesce(storageLocId#70264, ), isnull(storageLocId#70264), coalesce(max_calc_datetime#70325, 1970-01-01 00:00:00), isnull(max_calc_datetime#70325), 25), ENSURE_REQUIREMENTS, [plan_id=32584]
(813) Sort
Input [4]: [plant#70323, product#70324, storageLocId#70264, max_calc_datetime#70325]
Arguments: [coalesce(plant#70323, ) ASC NULLS FIRST, isnull(plant#70323) ASC NULLS FIRST, coalesce(product#70324, ) ASC NULLS FIRST, isnull(product#70324) ASC NULLS FIRST, coalesce(storageLocId#70264, ) ASC NULLS FIRST, isnull(storageLocId#70264) ASC NULLS FIRST, coalesce(max_calc_datetime#70325, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#70325) ASC NULLS FIRST], false, 0
(814) SortMergeJoin
Left keys [8]: [coalesce(plant#70176, ), isnull(plant#70176), coalesce(product#70177, ), isnull(product#70177), coalesce(storageLocId#70126, ), isnull(storageLocId#70126), coalesce(calculationDateTime#70119, 1970-01-01 00:00:00), isnull(calculationDateTime#70119)]
Right keys [8]: [coalesce(plant#70323, ), isnull(plant#70323), coalesce(product#70324, ), isnull(product#70324), coalesce(storageLocId#70264, ), isnull(storageLocId#70264), coalesce(max_calc_datetime#70325, 1970-01-01 00:00:00), isnull(max_calc_datetime#70325)]
Join type: Inner
Join condition: None
(815) Project
Output [4]: [plant#70176, product#70177, calculationDateTime#70119, quantity#70128]
Input [9]: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128, plant#70323, product#70324, storageLocId#70264, max_calc_datetime#70325]
(816) HashAggregate
Input [4]: [plant#70176, product#70177, calculationDateTime#70119, quantity#70128]
Keys [2]: [product#70177, plant#70176]
Functions [2]: [partial_min(calculationDateTime#70119), partial_sum(quantity#70128)]
Aggregate Attributes [2]: [min#73956, sum#73957]
Results [4]: [product#70177, plant#70176, min#73958, sum#73959]
(817) Exchange
Input [4]: [product#70177, plant#70176, min#73958, sum#73959]
Arguments: hashpartitioning(product#70177, plant#70176, 25), ENSURE_REQUIREMENTS, [plan_id=32596]
(818) HashAggregate
Input [4]: [product#70177, plant#70176, min#73958, sum#73959]
Keys [2]: [product#70177, plant#70176]
Functions [2]: [min(calculationDateTime#70119), sum(quantity#70128)]
Aggregate Attributes [2]: [min(calculationDateTime#70119)#69766, sum(quantity#70128)#69765]
Results [4]: [product#70177, plant#70176, min(calculationDateTime#70119)#69766 AS minCalculationDateTime#70327, round(sum(quantity#70128)#69765, 0) AS roundedQuantitySum#70328]
(819) Sort
Input [4]: [product#70177, plant#70176, minCalculationDateTime#70327, roundedQuantitySum#70328]
Arguments: [product#70177 ASC NULLS FIRST, plant#70176 ASC NULLS FIRST], false, 0
(820) SortMergeJoin
Left keys [2]: [product#69978, plant#69979]
Right keys [2]: [product#70177, plant#70176]
Join type: LeftOuter
Join condition: None
(821) Project
Output [8]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, CASE WHEN isnotnull(minCalculationDateTime#70327) THEN minCalculationDateTime#70327 ELSE orderDateTime#69980 END AS stockDatetime#70329, CASE WHEN isnotnull(roundedQuantitySum#70328) THEN array(roundedQuantitySum#70328) ELSE [0.0] END AS stockBatchQuantities#70330]
Input [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, product#70177, plant#70176, minCalculationDateTime#70327, roundedQuantitySum#70328]
(822) Filter
Input [9]: [product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
Condition : (isnotnull(product#69873) AND isnotnull(plant#69874))
(823) BroadcastExchange
Input [9]: [product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=32615]
(824) BroadcastHashJoin
Left keys [2]: [product#69978, plant#69979]
Right keys [2]: [product#69873, plant#69874]
Join type: LeftOuter
Join condition: None
(825) Project
Output [9]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, CASE WHEN isnotnull(product#69873) THEN struct(demandChannel, demandChannel#69875, demandStream, demandStream#69876, considerVariance, considerVariance#69877, demandTimeBuckets, demandTimeBuckets#69878, demandPointInTimeStart, demandPointInTimeStart#69879, demandPointInTimeEnd, demandPointInTimeEnd#69880, demandPointInTime, demandPointInTime#69881) END AS rawDemands#69908]
Input [17]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881]
(826) ObjectHashAggregate
Input [9]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, rawDemands#69908]
Keys [9]: [product#69978, plant#69979, orderDateTime#69980, knownfloatingpointnormalized(if (isnull(productPlant#69990)) null else named_struct(systemId, productPlant#69990.systemId, internalUUID, productPlant#69990.internalUUID, plant, productPlant#69990.plant, product, productPlant#69990.product, blockedForReplenishmentStartingFrom, productPlant#69990.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#69990.productionAspect)) null else named_struct(productMovementPlants, productPlant#69990.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#69990.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#69990.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#69990.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#69990.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#69990.productionAspect.productPlanningPlants.minimumLotSize)), minimumSafetyStock, knownfloatingpointnormalized(normalizenanandzero(productPlant#69990.productionAspect.productPlanningPlants.minimumSafetyStock)), logisticalRoundingProfile, productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#69990.salesPlant, listing, productPlant#69990.listing)) AS productPlant#69990, timezonecode#70005, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#70022)) AS outboundUnit#70022, stockDatetime#70329, knownfloatingpointnormalized(transform(stockBatchQuantities#70330, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#73953)), lambda arg#73953, false))) AS stockBatchQuantities#70330, [7226582400000000] AS [7226582400000000]#73952]
Functions [1]: [partial_collect_list(rawDemands#69908, 0, 0)]
Aggregate Attributes [1]: [buf#73954]
Results [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000]#73952, buf#73955]
(827) ObjectHashAggregate
Input [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000]#73952, buf#73955]
Keys [9]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000]#73952]
Functions [1]: [collect_list(rawDemands#69908, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#69908, 0, 0)#69939]
Results [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#70331, collect_list(rawDemands#69908, 0, 0)#69939 AS rawDemands#69921]
(828) DeserializeToObject
Input [10]: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, stockBatchShelfLifeEndDatetimes#70331, rawDemands#69921]
Arguments: createexternalrow(invoke(product#69978.toString()), invoke(plant#69979.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#69980)), if (isnull(productPlant#69990)) null else createexternalrow(invoke(productPlant#69990.systemId.toString()), invoke(productPlant#69990.internalUUID.toString()), if (isnull(productPlant#69990.plant)) null else createexternalrow(invoke(productPlant#69990.plant.internalRefUUID.toString()), invoke(productPlant#69990.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#69990.product)) null else createexternalrow(invoke(productPlant#69990.product.internalRefUUID.toString()), invoke(productPlant#69990.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#69990.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#69990.productionAspect)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#69990.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#69990.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(minimumSafetyStock,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#69990.salesPlant)) null else createexternalrow(if (isnull(productPlant#69990.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#69990.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#69990.salesPlant.loadingGroup.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#69990.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#70005.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#70022)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#70329)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#70330, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#70331, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4), createexternalrow(invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandChannel.toString()), invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandVariance)), StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandTimeBuckets, Some(class scala.collection.mutable.ArraySeq)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandPointInTimeStart)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandVariance)), StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandPointInTime, Some(class scala.collection.mutable.ArraySeq)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)), rawDemands#69921, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#69963: org.apache.spark.sql.Row
(829) MapElements
Input [1]: [obj#69963]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@783ec352, obj#69968: org.apache.spark.sql.Row
(830) SerializeFromObject
Input [1]: [obj#69968]
Arguments: [if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(0))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 0, product), StringType, ObjectType(class java.lang.String)))) AS product#69973, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(1))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 1, plant), StringType, ObjectType(class java.lang.String)))) AS plant#69974]
(831) Exchange
Input [2]: [product#69973, plant#69974]
Arguments: hashpartitioning(coalesce(plant#69974, ), isnull(plant#69974), coalesce(product#69973, ), isnull(product#69973), 25), ENSURE_REQUIREMENTS, [plan_id=32633]
(832) Sort
Input [2]: [product#69973, plant#69974]
Arguments: [coalesce(plant#69974, ) ASC NULLS FIRST, isnull(plant#69974) ASC NULLS FIRST, coalesce(product#69973, ) ASC NULLS FIRST, isnull(product#69973) ASC NULLS FIRST], false, 0
(833) SortMergeJoin
Left keys [4]: [coalesce(plant#69020, ), isnull(plant#69020), coalesce(product#69019, ), isnull(product#69019)]
Right keys [4]: [coalesce(plant#69974, ), isnull(plant#69974), coalesce(product#69973, ), isnull(product#69973)]
Join type: LeftOuter
Join condition: None
(834) Project
Output [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Input [6]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868, product#69973, plant#69974]
(835) Exchange
Input [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: hashpartitioning(plant#69020, 25), ENSURE_REQUIREMENTS, [plan_id=32697]
(836) Sort
Input [4]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868]
Arguments: [plant#69020 ASC NULLS FIRST], false, 0
(837) Scan parquet
Output [2]: [marketUnit#70809, distributionCenters#70815]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(838) Filter
Input [2]: [marketUnit#70809, distributionCenters#70815]
Condition : (((marketUnit#70809 <=> Daily_grocery) AND (size(distributionCenters#70815, true) > 0)) AND isnotnull(distributionCenters#70815))
(839) Project
Output [1]: [distributionCenters#70815]
Input [2]: [marketUnit#70809, distributionCenters#70815]
(840) Exchange
Input [1]: [distributionCenters#70815]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31577]
(841) Generate
Input [1]: [distributionCenters#70815]
Arguments: explode(distributionCenters#70815), false, [distributionCenters#70854]
(842) Filter
Input [1]: [distributionCenters#70854]
Condition : (((size(distributionCenters#70854.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#70854.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#70854.internalRefUUID))
(843) Project
Output [2]: [distributionCenters#70854.internalRefUUID AS _extract_internalRefUUID#71061, distributionCenters#70854.storageLocations.internalRefUUID AS _extract_internalRefUUID#71429]
Input [1]: [distributionCenters#70854]
(844) Generate
Input [2]: [_extract_internalRefUUID#71061, _extract_internalRefUUID#71429]
Arguments: explode(_extract_internalRefUUID#71429), [_extract_internalRefUUID#71061], false, [storageLocations#70855]
(845) Filter
Input [2]: [_extract_internalRefUUID#71061, storageLocations#70855]
Condition : isnotnull(storageLocations#70855)
(846) Project
Output [2]: [_extract_internalRefUUID#71061 AS plantUuid#70858, storageLocations#70855 AS storageLocUuid#70862]
Input [2]: [_extract_internalRefUUID#71061, storageLocations#70855]
(847) BroadcastExchange
Input [2]: [plantUuid#70858, storageLocUuid#70862]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32683]
(848) Scan parquet
Output [2]: [product#70865, plant#70866]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002106/shardId=0_1_10000002106]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(849) Filter
Input [2]: [product#70865, plant#70866]
Condition : isnotnull(plant#70866)
(850) Exchange
Input [2]: [product#70865, plant#70866]
Arguments: hashpartitioning(product#70865, plant#70866, 25), REPARTITION_BY_NUM, [plan_id=31971]
(851) Scan parquet
Output [4]: [plant#70883, product#70884, productionAspect#70886, systemId#70881]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(852) Project
Output [4]: [plant#70883.internalRefUUID AS _extract_internalRefUUID#71431, product#70884.internalRefUUID AS _extract_internalRefUUID#71434, productionAspect#70886.productMovementPlants.unitOfIssue.code AS _extract_code#71432, productionAspect#70886.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#71433]
Input [4]: [plant#70883, product#70884, productionAspect#70886, systemId#70881]
(853) Exchange
Input [4]: [_extract_internalRefUUID#71431, _extract_internalRefUUID#71434, _extract_code#71432, _extract_internalRefUUID#71433]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31590]
(854) Project
Output [4]: [_extract_code#71432, _extract_internalRefUUID#71433, _extract_internalRefUUID#71434, _extract_internalRefUUID#71431]
Input [4]: [_extract_internalRefUUID#71431, _extract_internalRefUUID#71434, _extract_code#71432, _extract_internalRefUUID#71433]
(855) BroadcastExchange
Input [4]: [_extract_code#71432, _extract_internalRefUUID#71433, _extract_internalRefUUID#71434, _extract_internalRefUUID#71431]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=32650]
(856) BroadcastHashJoin
Left keys [4]: [coalesce(product#70865, ), isnull(product#70865), coalesce(plant#70866, ), isnull(plant#70866)]
Right keys [4]: [coalesce(_extract_internalRefUUID#71434, ), isnull(_extract_internalRefUUID#71434), coalesce(_extract_internalRefUUID#71431, ), isnull(_extract_internalRefUUID#71431)]
Join type: LeftOuter
Join condition: None
(857) Project
Output [4]: [product#70865, plant#70866, _extract_code#71432, _extract_internalRefUUID#71433]
Input [6]: [product#70865, plant#70866, _extract_code#71432, _extract_internalRefUUID#71433, _extract_internalRefUUID#71434, _extract_internalRefUUID#71431]
(858) Scan parquet
Output [2]: [internalUUID#70892, systemId#70891]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(859) Project
Output [1]: [internalUUID#70892]
Input [2]: [internalUUID#70892, systemId#70891]
(860) Exchange
Input [1]: [internalUUID#70892]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31596]
(861) BroadcastExchange
Input [1]: [internalUUID#70892]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=32657]
(862) BroadcastHashJoin
Left keys [2]: [coalesce(plant#70866, ), isnull(plant#70866)]
Right keys [2]: [coalesce(internalUUID#70892, ), isnull(internalUUID#70892)]
Join type: LeftOuter
Join condition: None
(863) Project
Output [4]: [product#70865, plant#70866, _extract_code#71432, _extract_internalRefUUID#71433]
Input [5]: [product#70865, plant#70866, _extract_code#71432, _extract_internalRefUUID#71433, internalUUID#70892]
(864) Scan parquet
Output [4]: [internalUUID#70919, baseUnitOfMeasure#70923, unitOfMeasureConversions#70925, systemId#70918]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(865) Filter
Input [4]: [internalUUID#70919, baseUnitOfMeasure#70923, unitOfMeasureConversions#70925, systemId#70918]
Condition : isnotnull(internalUUID#70919)
(866) Project
Output [3]: [internalUUID#70919, baseUnitOfMeasure#70923, unitOfMeasureConversions#70925]
Input [4]: [internalUUID#70919, baseUnitOfMeasure#70923, unitOfMeasureConversions#70925, systemId#70918]
(867) Exchange
Input [3]: [internalUUID#70919, baseUnitOfMeasure#70923, unitOfMeasureConversions#70925]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31602]
(868) BroadcastExchange
Input [3]: [internalUUID#70919, baseUnitOfMeasure#70923, unitOfMeasureConversions#70925]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=32663]
(869) BroadcastHashJoin
Left keys [1]: [product#70865]
Right keys [1]: [internalUUID#70919]
Join type: LeftOuter
Join condition: None
(870) Project
Output [2]: [plant#70866, filter(unitOfMeasureConversions#70925, lambdafunction((((lambda u#69109.measurementUnit1.code = _extract_code#71432) AND (lambda u#69109.measurementUnit1.internalRefUUID = _extract_internalRefUUID#71433)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70923.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70923.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70943]
Input [7]: [product#70865, plant#70866, _extract_code#71432, _extract_internalRefUUID#71433, internalUUID#70919, baseUnitOfMeasure#70923, unitOfMeasureConversions#70925]
(871) Generate
Input [2]: [plant#70866, filteredUnitOfMeasureConversions#70943]
Arguments: explode(filteredUnitOfMeasureConversions#70943.quantityNumerator), [plant#70866, filteredUnitOfMeasureConversions#70943], true, [quantityNumerator#70944]
(872) Project
Output [2]: [plant#70866, filteredUnitOfMeasureConversions#70943.quantityDenominator AS _extract_quantityDenominator#71064]
Input [3]: [plant#70866, filteredUnitOfMeasureConversions#70943, quantityNumerator#70944]
(873) Generate
Input [2]: [plant#70866, _extract_quantityDenominator#71064]
Arguments: explode(_extract_quantityDenominator#71064), [plant#70866], true, [quantityDenominator#70946]
(874) Project
Output [1]: [plant#70866]
Input [2]: [plant#70866, quantityDenominator#70946]
(875) HashAggregate
Input [1]: [plant#70866]
Keys [1]: [plant#70866]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70866]
(876) Exchange
Input [1]: [plant#70866]
Arguments: hashpartitioning(plant#70866, 25), ENSURE_REQUIREMENTS, [plan_id=32679]
(877) HashAggregate
Input [1]: [plant#70866]
Keys [1]: [plant#70866]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#70866]
(878) BroadcastHashJoin
Left keys [1]: [plantUuid#70858]
Right keys [1]: [plant#70866]
Join type: Inner
Join condition: None
(879) Project
Output [2]: [plantUuid#70858 AS plant#70807, storageLocUuid#70862]
Input [3]: [plantUuid#70858, storageLocUuid#70862, plant#70866]
(880) Sort
Input [2]: [plant#70807, storageLocUuid#70862]
Arguments: [plant#70807 ASC NULLS FIRST], false, 0
(881) SortMergeJoin
Left keys [1]: [plant#69020]
Right keys [1]: [plant#70807]
Join type: Inner
Join condition: None
(882) Project
Output [5]: [plant#69020, product#69019, timezonecode#69079, stockDatetime#69868, storageLocUuid#70862]
Input [6]: [product#69019, plant#69020, timezonecode#69079, stockDatetime#69868, plant#70807, storageLocUuid#70862]
(883) Filter
Input [6]: [internalUUID#70730, id#70731, supplier#70733, isMarkedForDeletion#70736, items#70737, systemId#70729]
Condition : (((isnotnull(isMarkedForDeletion#70736) AND NOT isMarkedForDeletion#70736) AND (size(items#70737, true) > 0)) AND isnotnull(items#70737))
(884) Project
Output [4]: [internalUUID#70730, id#70731, supplier#70733, items#70737]
Input [6]: [internalUUID#70730, id#70731, supplier#70733, isMarkedForDeletion#70736, items#70737, systemId#70729]
(885) Exchange
Input [4]: [internalUUID#70730, id#70731, supplier#70733, items#70737]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=31618]
(886) Generate
Input [4]: [internalUUID#70730, id#70731, supplier#70733, items#70737]
Arguments: explode(items#70737), [internalUUID#70730, id#70731, supplier#70733], false, [item#70753]
(887) Filter
Input [4]: [internalUUID#70730, id#70731, supplier#70733, item#70753]
Condition : ((((isnotnull(item#70753.deletionIndicator) AND isnotnull(item#70753.completeIndicator)) AND isnotnull(item#70753.returnIndicator)) AND ((NOT item#70753.deletionIndicator AND NOT item#70753.completeIndicator) AND NOT item#70753.returnIndicator)) AND ((isnotnull(item#70753.product.internalRefUUID) AND isnotnull(item#70753.plant.internalRefUUID)) AND isnotnull(item#70753.storageLocation.internalRefUUID)))
(888) Project
Output [14]: [id#70731, internalUUID#70730, supplier#70733.internalRefUUID AS supplierUuid#70747, item#70753.plant.internalRefUUID AS plant#70770, item#70753.product.internalRefUUID AS product#70773, item#70753.plant.id AS externalPlantId#70775, item#70753.product.id AS externalProductId#70777, item#70753.storageLocation.internalRefUUID AS storageLocUuid#70778, item#70753.quantityUnit.code AS quantityUom#70779, item#70753.quantityUnit.internalRefUUID AS quantityUomUuid#70780, item#70753.quantityNumerator AS quantityNumerator#70781, item#70753.quantityDenominator AS quantityDenominator#70782, item#70753.scheduleLines AS scheduleLines#70783, item#70753.confirmations AS confirmations#70784]
Input [4]: [internalUUID#70730, id#70731, supplier#70733, item#70753]
(889) BroadcastExchange
Input [14]: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784]
Arguments: HashedRelationBroadcastMode(List(input[4, string, true], input[3, string, true], input[7, string, true]),false), [plan_id=32703]
(890) BroadcastHashJoin
Left keys [3]: [product#69019, plant#69020, storageLocUuid#70862]
Right keys [3]: [product#70773, plant#70770, storageLocUuid#70778]
Join type: Inner
Join condition: None
(891) Project
Output [17]: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784, stockDatetime#69868, timezonecode#69079, filter(confirmations#70784, lambdafunction(((NOT lambda x_2#70966.deletionIndicator AND lambda x_2#70966.isRelevantForConfirmation) AND isnotnull(lambda x_2#70966.confirmedDeliveryAt)), lambda x_2#70966, false)) AS validConfirmations#70963]
Input [19]: [plant#69020, product#69019, timezonecode#69079, stockDatetime#69868, storageLocUuid#70862, id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784]
(892) AdaptiveSparkPlan
Output [17]: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784, stockDatetime#69868, timezonecode#69079, validConfirmations#70963]
Arguments: isFinalPlan=true
(893) Project
Output [6]: [id#70731, externalProductId#70777, externalPlantId#70775, quantityUom#70779, transform(filter(scheduleLines#70783, lambdafunction(isnotnull(lambda x_5#74163.deliveryAt), lambda x_5#74163, false)), lambdafunction(struct(scheduledDate, cast(from_utc_timestamp(lambda x_6#74165.deliveryAt, timezonecode#74656) as date), scheduledQuantity, lambda x_6#74165.quantity), lambda x_6#74165, false)) AS scheds#74159, transform(filter(validConfirmations#70963, lambdafunction(isnotnull(lambda x_9#74170.confirmedDeliveryAt), lambda x_9#74170, false)), lambdafunction(struct(confirmedDate, cast(from_utc_timestamp(lambda x_10#74171.confirmedDeliveryAt, timezonecode#74656) as date), confirmedQuantity, lambda x_10#74171.confirmedQuantity), lambda x_10#74171, false)) AS confs#74169]
Input [7]: [externalPlantId#70775, externalProductId#70777, id#70731, quantityUom#70779, scheduleLines#70783, timezonecode#74656, validConfirmations#70963]
(894) DeserializeToObject
Input [6]: [id#70731, externalProductId#70777, externalPlantId#70775, quantityUom#70779, scheds#74159, confs#74169]
Arguments: createexternalrow(invoke(id#70731.toString()), invoke(externalProductId#70777.toString()), invoke(externalPlantId#70775.toString()), invoke(quantityUom#70779.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#74159, 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#74169, 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#74222: org.apache.spark.sql.Row
(895) MapPartitions
Input [1]: [obj#74222]
Arguments: org.apache.spark.sql.internal.UDFAdaptors$$$Lambda/0x00000008024c8f20@5ab9c689, obj#74231: org.apache.spark.sql.Row
(896) SerializeFromObject
Input [1]: [obj#74231]
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#74240, 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#74241, 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#74242, 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#74243, 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#74244, 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#74245, 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#74246, 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#74247]
(897) Scan parquet
Output [4]: [name#68966, status#68969, configurationVersion#68971, settings#68979]
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>>>
(898) Filter
Input [4]: [name#68966, status#68969, configurationVersion#68971, settings#68979]
Condition : ((isnotnull(name#68966) AND isnotnull(configurationVersion#68971)) AND (name#68966 = OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF))
(899) Exchange
Input [4]: [name#68966, status#68969, configurationVersion#68971, settings#68979]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=190221]
(900) Sort
Input [4]: [name#68966, status#68969, configurationVersion#68971, settings#68979]
Arguments: [name#68966 ASC NULLS FIRST], false, 0
(901) SortAggregate
Input [4]: [name#68966, status#68969, configurationVersion#68971, settings#68979]
Keys [1]: [name#68966]
Functions [1]: [partial_max(struct(configurationVersion, configurationVersion#68971, status, status#68969, settings, settings#68979))]
Aggregate Attributes [1]: [max#89457]
Results [2]: [name#68966, max#89458]
(902) Exchange
Input [2]: [name#68966, max#89458]
Arguments: hashpartitioning(name#68966, 25), ENSURE_REQUIREMENTS, [plan_id=190294]
(903) Sort
Input [2]: [name#68966, max#89458]
Arguments: [name#68966 ASC NULLS FIRST], false, 0
(904) SortAggregate
Input [2]: [name#68966, max#89458]
Keys [1]: [name#68966]
Functions [1]: [max(struct(configurationVersion, configurationVersion#68971, status, status#68969, settings, settings#68979))]
Aggregate Attributes [1]: [max(struct(configurationVersion, configurationVersion#68971, status, status#68969, settings, settings#68979))#69001]
Results [1]: [max(struct(configurationVersion, configurationVersion#68971, status, status#68969, settings, settings#68979))#69001 AS latest#68983]
(905) Filter
Input [1]: [latest#68983]
Condition : (isnotnull(latest#68983.status) AND (latest#68983.status = ACTIVE))
(906) Project
Output [1]: [latest#68983.configurationVersion AS configurationVersion#69006]
Input [1]: [latest#68983]
(907) BroadcastExchange
Input [1]: [configurationVersion#69006]
Arguments: IdentityBroadcastMode, [plan_id=190306]
(908) BroadcastNestedLoopJoin
Join type: Cross
Join condition: None
(909) Project
Output [11]: [id#74240, externalProductId#74241, externalPlantId#74242, quantityUom#74243, scheduledDate#74244, scheduledQuantity#74245, confirmedDate#74246, confirmedQuantity#74247, configurationVersion#69006, array(struct(name, PURCHASE_ORDER, value, id#74240), struct(name, PRODUCT, value, externalProductId#74241), struct(name, PLANT, value, externalPlantId#74242)) AS businessContext#74276, array(struct(variableName, PO_QTY, variableValue, cast(scheduledQuantity#74245 as string)), struct(variableName, PO_UOM, variableValue, quantityUom#74243), struct(variableName, PO_DELIVERY_DATE, variableValue, cast(scheduledDate#74244 as string)), struct(variableName, CO_QTY, variableValue, cast(confirmedQuantity#74247 as string)), struct(variableName, CO_UOM, variableValue, quantityUom#74243), struct(variableName, CO_DELIVERY_DATE, variableValue, cast(confirmedDate#74246 as string))) AS messageVariables#74291]
Input [9]: [id#74240, externalProductId#74241, externalPlantId#74242, quantityUom#74243, scheduledDate#74244, scheduledQuantity#74245, confirmedDate#74246, confirmedQuantity#74247, configurationVersion#69006]
(910) HashAggregate
Input [11]: [id#74240, externalProductId#74241, externalPlantId#74242, quantityUom#74243, scheduledDate#74244, scheduledQuantity#74245, confirmedDate#74246, confirmedQuantity#74247, configurationVersion#69006, businessContext#74276, messageVariables#74291]
Keys [12]: [OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF AS OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF#89455, quantityUom#74243, knownfloatingpointnormalized(normalizenanandzero(scheduledQuantity#74245)) AS scheduledQuantity#74245, externalPlantId#74242, id#74240, configurationVersion#69006, knownfloatingpointnormalized(normalizenanandzero(confirmedQuantity#74247)) AS confirmedQuantity#74247, confirmedDate#74246, scheduledDate#74244, businessContext#74276, messageVariables#74291, externalProductId#74241]
Functions: []
Aggregate Attributes: []
Results [12]: [OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF#89455, quantityUom#74243, scheduledQuantity#74245, externalPlantId#74242, id#74240, configurationVersion#69006, confirmedQuantity#74247, confirmedDate#74246, scheduledDate#74244, businessContext#74276, messageVariables#74291, externalProductId#74241]
(911) Exchange
Input [12]: [OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF#89455, quantityUom#74243, scheduledQuantity#74245, externalPlantId#74242, id#74240, configurationVersion#69006, confirmedQuantity#74247, confirmedDate#74246, scheduledDate#74244, businessContext#74276, messageVariables#74291, externalProductId#74241]
Arguments: hashpartitioning(OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF#89455, quantityUom#74243, scheduledQuantity#74245, externalPlantId#74242, id#74240, configurationVersion#69006, confirmedQuantity#74247, confirmedDate#74246, scheduledDate#74244, businessContext#74276, messageVariables#74291, externalProductId#74241, 25), ENSURE_REQUIREMENTS, [plan_id=190318]
(912) HashAggregate
Input [12]: [OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF#89455, quantityUom#74243, scheduledQuantity#74245, externalPlantId#74242, id#74240, configurationVersion#69006, confirmedQuantity#74247, confirmedDate#74246, scheduledDate#74244, businessContext#74276, messageVariables#74291, externalProductId#74241]
Keys [12]: [OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF#89455, quantityUom#74243, scheduledQuantity#74245, externalPlantId#74242, id#74240, configurationVersion#69006, confirmedQuantity#74247, confirmedDate#74246, scheduledDate#74244, businessContext#74276, messageVariables#74291, externalProductId#74241]
Functions: []
Aggregate Attributes: []
Results [7]: [OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF AS name#74256, configurationVersion#69006, 10000002106 AS executionId#74293, 2026-08-10T09:24:03.284Z AS createdAt#74629, Daily_grocery AS marketUnit#74468, businessContext#74276, messageVariables#74291]
(913) Union
(914) AdaptiveSparkPlan
Output [7]: [name#69888, configurationVersion#69887, executionId#69895, createdAt#69897, marketUnit#69896, businessContext#69893, messageVariables#69894]
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