== 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 BuildRight (334)
: : : :- 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)
: : : +- BroadcastQueryStage (333), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (332)
: : : +- AQEShuffleRead (331)
: : : +- ShuffleQueryStage (330), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : +- ReusedExchange (329)
: : +- 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 BuildRight (334)
: : : :- 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)
: : : +- BroadcastQueryStage (333), Statistics(sizeInBytes=2.0 MiB, rowCount=295)
: : : +- BroadcastExchange (332)
: : : +- AQEShuffleRead (331)
: : : +- ShuffleQueryStage (330), Statistics(sizeInBytes=32.3 KiB, rowCount=295)
: : : +- ReusedExchange (329)
: : +- 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#143402, configurationVersion#143401, executionId#143409, createdAt#143411, marketUnit#143410, businessContext#143407, messageVariables#143408], StorageLevel(disk, memory, deserialized, 1 replicas)
(3) Scan parquet
Output [2]: [product#142980, plant#142981]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
ReadSchema: struct<product:string,plant:string>
(4) ColumnarToRow [codegen id : 1]
Input [2]: [product#142980, plant#142981]
(5) Exchange
Input [2]: [product#142980, plant#142981]
Arguments: hashpartitioning(product#142980, plant#142981, 25), REPARTITION_BY_NUM, [plan_id=305659]
(6) ShuffleQueryStage
Output [2]: [product#142980, plant#142981]
Arguments: 0
(7) Scan parquet
Output [8]: [internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992, systemId#142985]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>
(8) ColumnarToRow [codegen id : 2]
Input [8]: [internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992, systemId#142985]
(9) Project [codegen id : 2]
Output [8]: [systemId#142985, internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992]
Input [8]: [internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992, systemId#142985]
(10) Exchange
Input [8]: [systemId#142985, internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=305673]
(11) ShuffleQueryStage
Output [8]: [systemId#142985, internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992]
Arguments: 1
(12) Project [codegen id : 8]
Output [1]: [struct(systemId, systemId#142985, internalUUID, internalUUID#142986, plant, plant#142987, product, product#142988, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#142989, productionAspect, productionAspect#142990, salesPlant, salesPlant#142991, listing, listing#142992) AS productPlant#142994]
Input [8]: [systemId#142985, internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992]
(13) BroadcastExchange
Input [1]: [productPlant#142994]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=307252]
(14) BroadcastQueryStage
Output [1]: [productPlant#142994]
Arguments: 10
(15) BroadcastHashJoin [codegen id : 9]
Left keys [4]: [coalesce(product#142980, ), isnull(product#142980), coalesce(plant#142981, ), isnull(plant#142981)]
Right keys [4]: [coalesce(productPlant#142994.product.internalRefUUID, ), isnull(productPlant#142994.product.internalRefUUID), coalesce(productPlant#142994.plant.internalRefUUID, ), isnull(productPlant#142994.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(16) Scan parquet
Output [2]: [internalUUID#142998, systemId#142997]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(17) ColumnarToRow [codegen id : 3]
Input [2]: [internalUUID#142998, systemId#142997]
(18) Project [codegen id : 3]
Output [1]: [internalUUID#142998]
Input [2]: [internalUUID#142998, systemId#142997]
(19) Exchange
Input [1]: [internalUUID#142998]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=305691]
(20) ShuffleQueryStage
Output [1]: [internalUUID#142998]
Arguments: 2
(21) BroadcastExchange
Input [1]: [internalUUID#142998]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=306104]
(22) BroadcastQueryStage
Output [1]: [internalUUID#142998]
Arguments: 7
(23) BroadcastHashJoin [codegen id : 9]
Left keys [2]: [coalesce(plant#142981, ), isnull(plant#142981)]
Right keys [2]: [coalesce(internalUUID#142998, ), isnull(internalUUID#142998)]
Join type: LeftOuter
Join condition: None
(24) Project [codegen id : 9]
Output [3]: [product#142980, plant#142981, productPlant#142994]
Input [4]: [product#142980, plant#142981, productPlant#142994, internalUUID#142998]
(25) Scan parquet
Output [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(26) ColumnarToRow [codegen id : 4]
Input [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
(27) Filter [codegen id : 4]
Input [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
Condition : isnotnull(internalUUID#143014)
(28) Project [codegen id : 4]
Output [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Input [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
(29) Exchange
Input [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=305711]
(30) ShuffleQueryStage
Output [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: 3
(31) BroadcastExchange
Input [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=306312]
(32) BroadcastQueryStage
Output [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: 8
(33) BroadcastHashJoin [codegen id : 9]
Left keys [1]: [product#142980]
Right keys [1]: [internalUUID#143014]
Join type: LeftOuter
Join condition: None
(34) Project
Output [4]: [product#142980, plant#142981, productPlant#142994, filter(unitOfMeasureConversions#143020, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#142994.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#142994.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143018.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143018.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143026]
Input [6]: [product#142980, plant#142981, productPlant#142994, internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
(35) Generate [codegen id : 10]
Input [4]: [product#142980, plant#142981, productPlant#142994, filteredUnitOfMeasureConversions#143026]
Arguments: explode(filteredUnitOfMeasureConversions#143026.quantityNumerator), [product#142980, plant#142981, productPlant#142994, filteredUnitOfMeasureConversions#143026], true, [quantityNumerator#143034]
(36) Project [codegen id : 10]
Output [4]: [product#142980, plant#142981, productPlant#142994, filteredUnitOfMeasureConversions#143026.quantityDenominator AS _extract_quantityDenominator#152595]
Input [5]: [product#142980, plant#142981, productPlant#142994, filteredUnitOfMeasureConversions#143026, quantityNumerator#143034]
(37) Generate [codegen id : 10]
Input [4]: [product#142980, plant#142981, productPlant#142994, _extract_quantityDenominator#152595]
Arguments: explode(_extract_quantityDenominator#152595), [product#142980, plant#142981, productPlant#142994], true, [quantityDenominator#143037]
(38) Project [codegen id : 10]
Output [4]: [product#142980, plant#142981, productPlant#142994.product.id AS _extract_id#152618, productPlant#142994.plant.id AS _extract_id#152619]
Input [4]: [product#142980, plant#142981, productPlant#142994, quantityDenominator#143037]
(39) Scan parquet
Output [4]: [product#143387, plant#143388, demandTimeBuckets#143392, demandPointInTime#143395]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000002108/0_1_10000002108]
PushedFilters: [IsNotNull(product), IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,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#143387, plant#143388, demandTimeBuckets#143392, demandPointInTime#143395]
(41) Filter [codegen id : 5]
Input [4]: [product#143387, plant#143388, demandTimeBuckets#143392, demandPointInTime#143395]
Condition : (isnotnull(product#143387) AND isnotnull(plant#143388))
(42) BroadcastExchange
Input [4]: [product#143387, plant#143388, demandTimeBuckets#143392, demandPointInTime#143395]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=305735]
(43) BroadcastQueryStage
Output [4]: [product#143387, plant#143388, demandTimeBuckets#143392, demandPointInTime#143395]
Arguments: 4
(44) BroadcastHashJoin [codegen id : 10]
Left keys [2]: [product#142980, plant#142981]
Right keys [2]: [product#143387, plant#143388]
Join type: LeftOuter
Join condition: None
(45) Filter [codegen id : 10]
Input [8]: [product#142980, plant#142981, _extract_id#152618, _extract_id#152619, product#143387, plant#143388, demandTimeBuckets#143392, demandPointInTime#143395]
Condition : (((size(demandTimeBuckets#143392, true) = 0) OR isnull(demandTimeBuckets#143392)) AND ((size(demandPointInTime#143395, true) = 0) OR isnull(demandPointInTime#143395)))
(46) Project [codegen id : 10]
Output [3]: [_extract_id#152618 AS product#143397, _extract_id#152619 AS plant#143398, array(struct(name, PRODUCT, value, _extract_id#152618), struct(name, PLANT, value, _extract_id#152619)) AS businessContext#143407]
Input [8]: [product#142980, plant#142981, _extract_id#152618, _extract_id#152619, product#143387, plant#143388, demandTimeBuckets#143392, demandPointInTime#143395]
(47) HashAggregate [codegen id : 10]
Input [3]: [product#143397, plant#143398, businessContext#143407]
Keys [6]: [businessContext#143407, [] AS []#153259, 1 AS 1#153260, product#143397, plant#143398, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION AS UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#153261]
Functions: []
Aggregate Attributes: []
Results [6]: [businessContext#143407, []#153259, 1#153260, product#143397, plant#143398, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#153261]
(48) Exchange
Input [6]: [businessContext#143407, []#153259, 1#153260, product#143397, plant#143398, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#153261]
Arguments: hashpartitioning(businessContext#143407, []#153259, 1#153260, product#143397, plant#143398, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#153261, 25), ENSURE_REQUIREMENTS, [plan_id=307556]
(49) ShuffleQueryStage
Output [6]: [businessContext#143407, []#153259, 1#153260, product#143397, plant#143398, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#153261]
Arguments: 11
(50) HashAggregate [codegen id : 13]
Input [6]: [businessContext#143407, []#153259, 1#153260, product#143397, plant#143398, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#153261]
Keys [6]: [businessContext#143407, []#153259, 1#153260, product#143397, plant#143398, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#153261]
Functions: []
Aggregate Attributes: []
Results [7]: [UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION AS name#143402, 1 AS configurationVersion#143401, 10000002108 AS executionId#143409, 2026-08-10T09:37:10.891Z AS createdAt#143411, Daily_grocery AS marketUnit#143410, businessContext#143407, [] AS messageVariables#143408]
(51) ResultQueryStage
Output [7]: [name#143402, configurationVersion#143401, executionId#143409, createdAt#143411, marketUnit#143410, businessContext#143407, messageVariables#143408]
Arguments: 13
(52) Exchange
Input [2]: [product#142980, plant#142981]
Arguments: hashpartitioning(product#142980, plant#142981, 25), REPARTITION_BY_NUM, [plan_id=305488]
(53) Project
Output [8]: [systemId#142985, internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992]
Input [8]: [internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992, systemId#142985]
(54) Exchange
Input [8]: [systemId#142985, internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=305491]
(55) Project
Output [1]: [struct(systemId, systemId#142985, internalUUID, internalUUID#142986, plant, plant#142987, product, product#142988, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#142989, productionAspect, productionAspect#142990, salesPlant, salesPlant#142991, listing, listing#142992) AS productPlant#142994]
Input [8]: [systemId#142985, internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992]
(56) BroadcastExchange
Input [1]: [productPlant#142994]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=305551]
(57) BroadcastHashJoin
Left keys [4]: [coalesce(product#142980, ), isnull(product#142980), coalesce(plant#142981, ), isnull(plant#142981)]
Right keys [4]: [coalesce(productPlant#142994.product.internalRefUUID, ), isnull(productPlant#142994.product.internalRefUUID), coalesce(productPlant#142994.plant.internalRefUUID, ), isnull(productPlant#142994.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(58) Project
Output [1]: [internalUUID#142998]
Input [2]: [internalUUID#142998, systemId#142997]
(59) Exchange
Input [1]: [internalUUID#142998]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=305496]
(60) BroadcastExchange
Input [1]: [internalUUID#142998]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=305554]
(61) BroadcastHashJoin
Left keys [2]: [coalesce(plant#142981, ), isnull(plant#142981)]
Right keys [2]: [coalesce(internalUUID#142998, ), isnull(internalUUID#142998)]
Join type: LeftOuter
Join condition: None
(62) Project
Output [3]: [product#142980, plant#142981, productPlant#142994]
Input [4]: [product#142980, plant#142981, productPlant#142994, internalUUID#142998]
(63) Filter
Input [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
Condition : isnotnull(internalUUID#143014)
(64) Project
Output [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Input [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
(65) Exchange
Input [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=305502]
(66) BroadcastExchange
Input [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=305558]
(67) BroadcastHashJoin
Left keys [1]: [product#142980]
Right keys [1]: [internalUUID#143014]
Join type: LeftOuter
Join condition: None
(68) Project
Output [4]: [product#142980, plant#142981, productPlant#142994, filter(unitOfMeasureConversions#143020, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#142994.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#142994.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143018.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143018.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143026]
Input [6]: [product#142980, plant#142981, productPlant#142994, internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
(69) Generate
Input [4]: [product#142980, plant#142981, productPlant#142994, filteredUnitOfMeasureConversions#143026]
Arguments: explode(filteredUnitOfMeasureConversions#143026.quantityNumerator), [product#142980, plant#142981, productPlant#142994, filteredUnitOfMeasureConversions#143026], true, [quantityNumerator#143034]
(70) Project
Output [4]: [product#142980, plant#142981, productPlant#142994, filteredUnitOfMeasureConversions#143026.quantityDenominator AS _extract_quantityDenominator#152595]
Input [5]: [product#142980, plant#142981, productPlant#142994, filteredUnitOfMeasureConversions#143026, quantityNumerator#143034]
(71) Generate
Input [4]: [product#142980, plant#142981, productPlant#142994, _extract_quantityDenominator#152595]
Arguments: explode(_extract_quantityDenominator#152595), [product#142980, plant#142981, productPlant#142994], true, [quantityDenominator#143037]
(72) Project
Output [4]: [product#142980, plant#142981, productPlant#142994.product.id AS _extract_id#152618, productPlant#142994.plant.id AS _extract_id#152619]
Input [4]: [product#142980, plant#142981, productPlant#142994, quantityDenominator#143037]
(73) Filter
Input [4]: [product#143387, plant#143388, demandTimeBuckets#143392, demandPointInTime#143395]
Condition : (isnotnull(product#143387) AND isnotnull(plant#143388))
(74) BroadcastExchange
Input [4]: [product#143387, plant#143388, demandTimeBuckets#143392, demandPointInTime#143395]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=305566]
(75) BroadcastHashJoin
Left keys [2]: [product#142980, plant#142981]
Right keys [2]: [product#143387, plant#143388]
Join type: LeftOuter
Join condition: None
(76) Filter
Input [8]: [product#142980, plant#142981, _extract_id#152618, _extract_id#152619, product#143387, plant#143388, demandTimeBuckets#143392, demandPointInTime#143395]
Condition : (((size(demandTimeBuckets#143392, true) = 0) OR isnull(demandTimeBuckets#143392)) AND ((size(demandPointInTime#143395, true) = 0) OR isnull(demandPointInTime#143395)))
(77) Project
Output [3]: [_extract_id#152618 AS product#143397, _extract_id#152619 AS plant#143398, array(struct(name, PRODUCT, value, _extract_id#152618), struct(name, PLANT, value, _extract_id#152619)) AS businessContext#143407]
Input [8]: [product#142980, plant#142981, _extract_id#152618, _extract_id#152619, product#143387, plant#143388, demandTimeBuckets#143392, demandPointInTime#143395]
(78) HashAggregate
Input [3]: [product#143397, plant#143398, businessContext#143407]
Keys [6]: [businessContext#143407, [] AS []#152973, 1 AS 1#152974, product#143397, plant#143398, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION AS UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#152975]
Functions: []
Aggregate Attributes: []
Results [6]: [businessContext#143407, []#152973, 1#152974, product#143397, plant#143398, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#152975]
(79) Exchange
Input [6]: [businessContext#143407, []#152973, 1#152974, product#143397, plant#143398, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#152975]
Arguments: hashpartitioning(businessContext#143407, []#152973, 1#152974, product#143397, plant#143398, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#152975, 25), ENSURE_REQUIREMENTS, [plan_id=305572]
(80) HashAggregate
Input [6]: [businessContext#143407, []#152973, 1#152974, product#143397, plant#143398, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#152975]
Keys [6]: [businessContext#143407, []#152973, 1#152974, product#143397, plant#143398, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION#152975]
Functions: []
Aggregate Attributes: []
Results [7]: [UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION AS name#143402, 1 AS configurationVersion#143401, 10000002108 AS executionId#143409, 2026-08-10T09:37:10.891Z AS createdAt#143411, Daily_grocery AS marketUnit#143410, businessContext#143407, [] AS messageVariables#143408]
(81) InMemoryTableScan
Output [7]: [externalPlantId#143834, externalProductId#143835, id#143817, quantityUom#143837, scheduleLines#143841, timezonecode#145031, validConfirmations#143932]
Arguments: [externalPlantId#143834, externalProductId#143835, id#143817, quantityUom#143837, scheduleLines#143841, timezonecode#145031, validConfirmations#143932]
(82) InMemoryRelation
Arguments: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842, stockDatetime#145327, timezonecode#145031, validConfirmations#143932], StorageLevel(disk, memory, deserialized, 1 replicas)
(83) Scan parquet
Output [3]: [product#142980, plant#142981, orderDateTime#142982]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(84) ColumnarToRow [codegen id : 1]
Input [3]: [product#142980, plant#142981, orderDateTime#142982]
(85) Filter [codegen id : 1]
Input [3]: [product#142980, plant#142981, orderDateTime#142982]
Condition : (isnotnull(plant#142981) AND isnotnull(product#142980))
(86) Exchange
Input [3]: [product#142980, plant#142981, orderDateTime#142982]
Arguments: hashpartitioning(product#142980, plant#142981, 25), REPARTITION_BY_NUM, [plan_id=226365]
(87) ShuffleQueryStage
Output [3]: [product#142980, plant#142981, orderDateTime#142982]
Arguments: 0
(88) Scan parquet
Output [4]: [plant#142987, product#142988, productionAspect#142990, systemId#142985]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(89) ColumnarToRow [codegen id : 2]
Input [4]: [plant#142987, product#142988, productionAspect#142990, systemId#142985]
(90) Project [codegen id : 2]
Output [4]: [plant#142987.internalRefUUID AS _extract_internalRefUUID#144131, product#142988.internalRefUUID AS _extract_internalRefUUID#144130, productionAspect#142990.productMovementPlants.unitOfIssue.code AS _extract_code#144128, productionAspect#142990.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#144129]
Input [4]: [plant#142987, product#142988, productionAspect#142990, systemId#142985]
(91) Exchange
Input [4]: [_extract_internalRefUUID#144131, _extract_internalRefUUID#144130, _extract_code#144128, _extract_internalRefUUID#144129]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=226381]
(92) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#144131, _extract_internalRefUUID#144130, _extract_code#144128, _extract_internalRefUUID#144129]
Arguments: 1
(93) Project [codegen id : 61]
Output [4]: [_extract_code#144128, _extract_internalRefUUID#144129, _extract_internalRefUUID#144130, _extract_internalRefUUID#144131]
Input [4]: [_extract_internalRefUUID#144131, _extract_internalRefUUID#144130, _extract_code#144128, _extract_internalRefUUID#144129]
(94) BroadcastExchange
Input [4]: [_extract_code#144128, _extract_internalRefUUID#144129, _extract_internalRefUUID#144130, _extract_internalRefUUID#144131]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=236366]
(95) BroadcastQueryStage
Output [4]: [_extract_code#144128, _extract_internalRefUUID#144129, _extract_internalRefUUID#144130, _extract_internalRefUUID#144131]
Arguments: 122
(96) BroadcastHashJoin [codegen id : 102]
Left keys [4]: [coalesce(product#142980, ), isnull(product#142980), coalesce(plant#142981, ), isnull(plant#142981)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144130, ), isnull(_extract_internalRefUUID#144130), coalesce(_extract_internalRefUUID#144131, ), isnull(_extract_internalRefUUID#144131)]
Join type: LeftOuter
Join condition: None
(97) Project [codegen id : 102]
Output [5]: [product#142980, plant#142981, orderDateTime#142982, _extract_code#144128, _extract_internalRefUUID#144129]
Input [7]: [product#142980, plant#142981, orderDateTime#142982, _extract_code#144128, _extract_internalRefUUID#144129, _extract_internalRefUUID#144130, _extract_internalRefUUID#144131]
(98) Scan parquet
Output [3]: [internalUUID#142998, address#143004, systemId#142997]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string,address:struct<timeZone:struct<code:string>>>
(99) ColumnarToRow [codegen id : 3]
Input [3]: [internalUUID#142998, address#143004, systemId#142997]
(100) Project [codegen id : 3]
Output [2]: [internalUUID#142998, address#143004.timeZone.code AS timezonecode#143009]
Input [3]: [internalUUID#142998, address#143004, systemId#142997]
(101) Exchange
Input [2]: [internalUUID#142998, timezonecode#143009]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=226400]
(102) ShuffleQueryStage
Output [2]: [internalUUID#142998, timezonecode#143009]
Arguments: 2
(103) BroadcastExchange
Input [2]: [internalUUID#142998, timezonecode#143009]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=234017]
(104) BroadcastQueryStage
Output [2]: [internalUUID#142998, timezonecode#143009]
Arguments: 120
(105) BroadcastHashJoin [codegen id : 102]
Left keys [2]: [coalesce(plant#142981, ), isnull(plant#142981)]
Right keys [2]: [coalesce(internalUUID#142998, ), isnull(internalUUID#142998)]
Join type: LeftOuter
Join condition: None
(106) Project [codegen id : 102]
Output [6]: [product#142980, plant#142981, orderDateTime#142982, _extract_code#144128, _extract_internalRefUUID#144129, CASE WHEN isnotnull(timezonecode#143009) THEN timezonecode#143009 ELSE UTC END AS timezonecode#143012]
Input [7]: [product#142980, plant#142981, orderDateTime#142982, _extract_code#144128, _extract_internalRefUUID#144129, internalUUID#142998, timezonecode#143009]
(107) Scan parquet
Output [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(108) ColumnarToRow [codegen id : 4]
Input [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
(109) Filter [codegen id : 4]
Input [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
Condition : isnotnull(internalUUID#143014)
(110) Project [codegen id : 4]
Output [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Input [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
(111) Exchange
Input [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=226420]
(112) ShuffleQueryStage
Output [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: 3
(113) BroadcastExchange
Input [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=228578]
(114) BroadcastQueryStage
Output [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: 97
(115) BroadcastHashJoin [codegen id : 102]
Left keys [1]: [product#142980]
Right keys [1]: [internalUUID#143014]
Join type: LeftOuter
Join condition: None
(116) Project
Output [5]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, filter(unitOfMeasureConversions#143020, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144128) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144129)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143018.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143018.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143026]
Input [9]: [product#142980, plant#142981, orderDateTime#142982, _extract_code#144128, _extract_internalRefUUID#144129, timezonecode#143012, internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
(117) Generate [codegen id : 103]
Input [5]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, filteredUnitOfMeasureConversions#143026]
Arguments: explode(filteredUnitOfMeasureConversions#143026.quantityNumerator), [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, filteredUnitOfMeasureConversions#143026], true, [quantityNumerator#143034]
(118) Project [codegen id : 103]
Output [5]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, filteredUnitOfMeasureConversions#143026.quantityDenominator AS _extract_quantityDenominator#143934]
Input [6]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, filteredUnitOfMeasureConversions#143026, quantityNumerator#143034]
(119) Generate [codegen id : 103]
Input [5]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, _extract_quantityDenominator#143934]
Arguments: explode(_extract_quantityDenominator#143934), [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012], true, [quantityDenominator#143037]
(120) Project [codegen id : 103]
Output [4]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012]
Input [5]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, quantityDenominator#143037]
(121) Scan parquet
Output [6]: [internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, systemId#143076]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(122) ColumnarToRow [codegen id : 5]
Input [6]: [internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, systemId#143076]
(123) Filter [codegen id : 5]
Input [6]: [internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, systemId#143076]
Condition : (isnotnull(plant#143079.internalRefUUID) AND isnotnull(product#143078.internalRefUUID))
(124) Project [codegen id : 5]
Output [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
Input [6]: [internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, systemId#143076]
(125) Exchange
Input [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=226447]
(126) ShuffleQueryStage
Output [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
Arguments: 4
(127) BroadcastExchange
Input [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=232392]
(128) BroadcastQueryStage
Output [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
Arguments: 116
(129) Scan parquet
Output [2]: [marketUnit#143040, distributionCenters#143046]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(130) ColumnarToRow [codegen id : 6]
Input [2]: [marketUnit#143040, distributionCenters#143046]
(131) Filter [codegen id : 6]
Input [2]: [marketUnit#143040, distributionCenters#143046]
Condition : (((marketUnit#143040 <=> Daily_grocery) AND (size(distributionCenters#143046, true) > 0)) AND isnotnull(distributionCenters#143046))
(132) Project [codegen id : 6]
Output [1]: [distributionCenters#143046]
Input [2]: [marketUnit#143040, distributionCenters#143046]
(133) Exchange
Input [1]: [distributionCenters#143046]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=226467]
(134) ShuffleQueryStage
Output [1]: [distributionCenters#143046]
Arguments: 5
(135) Generate [codegen id : 56]
Input [1]: [distributionCenters#143046]
Arguments: explode(distributionCenters#143046), false, [distributionCenters#143064]
(136) Filter [codegen id : 56]
Input [1]: [distributionCenters#143064]
Condition : (((size(distributionCenters#143064.storageLocations, true) > 0) AND isnotnull(distributionCenters#143064.storageLocations)) AND isnotnull(distributionCenters#143064.internalRefUUID))
(137) Project [codegen id : 56]
Output [2]: [distributionCenters#143064.internalRefUUID AS _extract_internalRefUUID#143938, distributionCenters#143064.storageLocations AS _extract_storageLocations#143939]
Input [1]: [distributionCenters#143064]
(138) Generate [codegen id : 56]
Input [2]: [_extract_internalRefUUID#143938, _extract_storageLocations#143939]
Arguments: explode(_extract_storageLocations#143939), [_extract_internalRefUUID#143938], false, [storageLocations#143071]
(139) Project [codegen id : 56]
Output [3]: [_extract_internalRefUUID#143938 AS plantUuid#143066, storageLocations#143071.id AS storageLocId#143072, storageLocations#143071.internalRefUUID AS storageLocUuid#143073]
Input [2]: [_extract_internalRefUUID#143938, storageLocations#143071]
(140) BroadcastExchange
Input [3]: [plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=231359]
(141) BroadcastQueryStage
Output [3]: [plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
Arguments: 108
(142) Scan parquet
Output [2]: [product#143336, plant#143337]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(143) ColumnarToRow [codegen id : 7]
Input [2]: [product#143336, plant#143337]
(144) Filter [codegen id : 7]
Input [2]: [product#143336, plant#143337]
Condition : isnotnull(plant#143337)
(145) Exchange
Input [2]: [product#143336, plant#143337]
Arguments: hashpartitioning(product#143336, plant#143337, 25), REPARTITION_BY_NUM, [plan_id=226490]
(146) ShuffleQueryStage
Output [2]: [product#143336, plant#143337]
Arguments: 6
(147) ReusedExchange [Reuses operator id: 94]
Output [4]: [_extract_code#144134, _extract_internalRefUUID#144135, _extract_internalRefUUID#144132, _extract_internalRefUUID#144133]
(148) BroadcastQueryStage
Output [4]: [_extract_code#144134, _extract_internalRefUUID#144135, _extract_internalRefUUID#144132, _extract_internalRefUUID#144133]
Arguments: 124
(149) BroadcastHashJoin [codegen id : 73]
Left keys [4]: [coalesce(product#143336, ), isnull(product#143336), coalesce(plant#143337, ), isnull(plant#143337)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144132, ), isnull(_extract_internalRefUUID#144132), coalesce(_extract_internalRefUUID#144133, ), isnull(_extract_internalRefUUID#144133)]
Join type: LeftOuter
Join condition: None
(150) Project [codegen id : 73]
Output [4]: [product#143336, plant#143337, _extract_code#144134, _extract_internalRefUUID#144135]
Input [6]: [product#143336, plant#143337, _extract_code#144134, _extract_internalRefUUID#144135, _extract_internalRefUUID#144132, _extract_internalRefUUID#144133]
(151) Scan parquet
Output [2]: [internalUUID#143350, systemId#143349]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(152) ColumnarToRow [codegen id : 9]
Input [2]: [internalUUID#143350, systemId#143349]
(153) Project [codegen id : 9]
Output [1]: [internalUUID#143350]
Input [2]: [internalUUID#143350, systemId#143349]
(154) Exchange
Input [1]: [internalUUID#143350]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=226527]
(155) ShuffleQueryStage
Output [1]: [internalUUID#143350]
Arguments: 9
(156) BroadcastExchange
Input [1]: [internalUUID#143350]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=237446]
(157) BroadcastQueryStage
Output [1]: [internalUUID#143350]
Arguments: 141
(158) BroadcastHashJoin [codegen id : 73]
Left keys [2]: [coalesce(plant#143337, ), isnull(plant#143337)]
Right keys [2]: [coalesce(internalUUID#143350, ), isnull(internalUUID#143350)]
Join type: LeftOuter
Join condition: None
(159) Project [codegen id : 73]
Output [4]: [product#143336, plant#143337, _extract_code#144134, _extract_internalRefUUID#144135]
Input [5]: [product#143336, plant#143337, _extract_code#144134, _extract_internalRefUUID#144135, internalUUID#143350]
(160) ReusedExchange [Reuses operator id: 113]
Output [3]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370]
(161) BroadcastQueryStage
Output [3]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370]
Arguments: 98
(162) BroadcastHashJoin [codegen id : 73]
Left keys [1]: [product#143336]
Right keys [1]: [internalUUID#143364]
Join type: LeftOuter
Join condition: None
(163) Project
Output [2]: [plant#143337, filter(unitOfMeasureConversions#143370, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144134) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144135)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143368.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143368.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143375]
Input [7]: [product#143336, plant#143337, _extract_code#144134, _extract_internalRefUUID#144135, internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370]
(164) Generate [codegen id : 74]
Input [2]: [plant#143337, filteredUnitOfMeasureConversions#143375]
Arguments: explode(filteredUnitOfMeasureConversions#143375.quantityNumerator), [plant#143337, filteredUnitOfMeasureConversions#143375], true, [quantityNumerator#143376]
(165) Project [codegen id : 74]
Output [2]: [plant#143337, filteredUnitOfMeasureConversions#143375.quantityDenominator AS _extract_quantityDenominator#143940]
Input [3]: [plant#143337, filteredUnitOfMeasureConversions#143375, quantityNumerator#143376]
(166) Generate [codegen id : 74]
Input [2]: [plant#143337, _extract_quantityDenominator#143940]
Arguments: explode(_extract_quantityDenominator#143940), [plant#143337], true, [quantityDenominator#143377]
(167) Project [codegen id : 74]
Output [1]: [plant#143337]
Input [2]: [plant#143337, quantityDenominator#143377]
(168) HashAggregate [codegen id : 74]
Input [1]: [plant#143337]
Keys [1]: [plant#143337]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143337]
(169) Exchange
Input [1]: [plant#143337]
Arguments: hashpartitioning(plant#143337, 25), ENSURE_REQUIREMENTS, [plan_id=254858]
(170) ShuffleQueryStage
Output [1]: [plant#143337]
Arguments: 152
(171) AQEShuffleRead
Input [1]: [plant#143337]
Arguments: coalesced
(172) HashAggregate
Input [1]: [plant#143337]
Keys [1]: [plant#143337]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143337]
(173) BroadcastHashJoin
Left keys [1]: [plantUuid#143066]
Right keys [1]: [plant#143337]
Join type: Inner
Join condition: None
(174) Project
Output [3]: [plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
Input [4]: [plantUuid#143066, storageLocId#143072, storageLocUuid#143073, plant#143337]
(175) BroadcastHashJoin [codegen id : 83]
Left keys [2]: [coalesce(plant#143079.internalRefUUID, ), isnull(plant#143079.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#143066, ), isnull(plantUuid#143066)]
Join type: Inner
Join condition: None
(176) Generate
Input [9]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
Arguments: explode(filter(stockQuantities#143081, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143073) AND (lambda x#143085.storageLocation.Id = storageLocId#143072)), lambda x#143085, false))), [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, plantUuid#143066], false, [stockQuantity#143086]
(177) ObjectHashAggregate
Input [7]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, plantUuid#143066, stockQuantity#143086]
Keys [5]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076]
Functions [2]: [partial_first(calculationDateTime#143080, false), partial_collect_list(stockQuantity#143086, 0, 0)]
Aggregate Attributes [3]: [first#144812, valueSet#144813, buf#144814]
Results [8]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076, first#144815, valueSet#144816, buf#144817]
(178) ObjectHashAggregate
Input [8]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076, first#144815, valueSet#144816, buf#144817]
Keys [5]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076]
Functions [2]: [first(calculationDateTime#143080, false), collect_list(stockQuantity#143086, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#143080)()#143100, collect_list(stockQuantity#143086, 0, 0)#143101]
Results [4]: [product#143078, plant#143079, first(calculationDateTime#143080)()#143100 AS calculationDateTime#143087, collect_list(stockQuantity#143086, 0, 0)#143101 AS stockQuantities#143088]
(179) Filter [codegen id : 84]
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantities#143088]
Condition : ((size(stockQuantities#143088, true) > 0) AND isnotnull(calculationDateTime#143087))
(180) Generate [codegen id : 84]
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantities#143088]
Arguments: explode(stockQuantities#143088), [product#143078, plant#143079, calculationDateTime#143087], false, [stockQuantity#143103]
(181) Filter [codegen id : 84]
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantity#143103]
Condition : (((isnotnull(stockQuantity#143103.specialStockIndicator.code) AND isnotnull(stockQuantity#143103.stockType.code)) AND (stockQuantity#143103.specialStockIndicator.code = )) AND (stockQuantity#143103.stockType.code = 01))
(182) Project [codegen id : 84]
Output [4]: [plant#143079.internalRefUUID AS plantUuid#143105, product#143078.internalRefUUID AS productUuid#143107, calculationDateTime#143087, stockQuantity#143103.storagelocation.id AS storageLocId#143108]
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantity#143103]
(183) Exchange
Input [4]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108]
Arguments: hashpartitioning(productUuid#143107, plantUuid#143105, 25), ENSURE_REQUIREMENTS, [plan_id=257985]
(184) ShuffleQueryStage
Output [4]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108]
Arguments: 161
(185) AQEShuffleRead
Input [4]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108]
Arguments: local
(186) BroadcastExchange
Input [4]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=258936]
(187) BroadcastQueryStage
Output [4]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108]
Arguments: 167
(188) Scan parquet
Output [3]: [product#143122, plant#143123, orderDateTime#143124]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(189) ColumnarToRow [codegen id : 11]
Input [3]: [product#143122, plant#143123, orderDateTime#143124]
(190) Filter [codegen id : 11]
Input [3]: [product#143122, plant#143123, orderDateTime#143124]
Condition : ((isnotnull(orderDateTime#143124) AND isnotnull(plant#143123)) AND isnotnull(product#143122))
(191) Exchange
Input [3]: [product#143122, plant#143123, orderDateTime#143124]
Arguments: hashpartitioning(product#143122, plant#143123, 25), REPARTITION_BY_NUM, [plan_id=226588]
(192) ShuffleQueryStage
Output [3]: [product#143122, plant#143123, orderDateTime#143124]
Arguments: 12
(193) ReusedExchange [Reuses operator id: 94]
Output [4]: [_extract_code#144138, _extract_internalRefUUID#144139, _extract_internalRefUUID#144137, _extract_internalRefUUID#144136]
(194) BroadcastQueryStage
Output [4]: [_extract_code#144138, _extract_internalRefUUID#144139, _extract_internalRefUUID#144137, _extract_internalRefUUID#144136]
Arguments: 126
(195) BroadcastHashJoin [codegen id : 91]
Left keys [4]: [coalesce(product#143122, ), isnull(product#143122), coalesce(plant#143123, ), isnull(plant#143123)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144137, ), isnull(_extract_internalRefUUID#144137), coalesce(_extract_internalRefUUID#144136, ), isnull(_extract_internalRefUUID#144136)]
Join type: LeftOuter
Join condition: None
(196) Project [codegen id : 91]
Output [5]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#144138, _extract_internalRefUUID#144139]
Input [7]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#144138, _extract_internalRefUUID#144139, _extract_internalRefUUID#144137, _extract_internalRefUUID#144136]
(197) ReusedExchange [Reuses operator id: 156]
Output [1]: [internalUUID#143136]
(198) BroadcastQueryStage
Output [1]: [internalUUID#143136]
Arguments: 142
(199) BroadcastHashJoin [codegen id : 91]
Left keys [2]: [coalesce(plant#143123, ), isnull(plant#143123)]
Right keys [2]: [coalesce(internalUUID#143136, ), isnull(internalUUID#143136)]
Join type: LeftOuter
Join condition: None
(200) Project [codegen id : 91]
Output [5]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#144138, _extract_internalRefUUID#144139]
Input [6]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#144138, _extract_internalRefUUID#144139, internalUUID#143136]
(201) ReusedExchange [Reuses operator id: 113]
Output [3]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156]
(202) BroadcastQueryStage
Output [3]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156]
Arguments: 99
(203) BroadcastHashJoin [codegen id : 91]
Left keys [1]: [product#143122]
Right keys [1]: [internalUUID#143150]
Join type: LeftOuter
Join condition: None
(204) Project
Output [4]: [product#143122, plant#143123, orderDateTime#143124, filter(unitOfMeasureConversions#143156, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144138) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144139)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143154.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143154.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143161]
Input [8]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#144138, _extract_internalRefUUID#144139, internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156]
(205) Generate
Input [4]: [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161]
Arguments: explode(filteredUnitOfMeasureConversions#143161.quantityNumerator), [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161], true, [quantityNumerator#143162]
(206) Project
Output [4]: [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161.quantityDenominator AS _extract_quantityDenominator#143944]
Input [5]: [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161, quantityNumerator#143162]
(207) Generate
Input [4]: [product#143122, plant#143123, orderDateTime#143124, _extract_quantityDenominator#143944]
Arguments: explode(_extract_quantityDenominator#143944), [product#143122, plant#143123, orderDateTime#143124], true, [quantityDenominator#143163]
(208) Project
Output [3]: [product#143122, plant#143123, orderDateTime#143124]
Input [4]: [product#143122, plant#143123, orderDateTime#143124, quantityDenominator#143163]
(209) BroadcastHashJoin [codegen id : 92]
Left keys [2]: [plantUuid#143105, productUuid#143107]
Right keys [2]: [plant#143123, product#143122]
Join type: Inner
Join condition: (calculationDateTime#143087 <= orderDateTime#143124)
(210) Project [codegen id : 92]
Output [4]: [plantUuid#143105 AS plant#143170, productUuid#143107 AS product#143171, storageLocId#143108, calculationDateTime#143087]
Input [7]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108, product#143122, plant#143123, orderDateTime#143124]
(211) Exchange
Input [4]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087]
Arguments: hashpartitioning(coalesce(plant#143170, ), isnull(plant#143170), coalesce(product#143171, ), isnull(product#143171), coalesce(storageLocId#143108, ), isnull(storageLocId#143108), coalesce(calculationDateTime#143087, 1970-01-01 00:00:00), isnull(calculationDateTime#143087), 25), ENSURE_REQUIREMENTS, [plan_id=259674]
(212) ShuffleQueryStage
Output [4]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087]
Arguments: 172
(213) AQEShuffleRead
Input [4]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087]
Arguments: local
(214) BroadcastExchange
Input [4]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true]), coalesce(input[1, string, true], ), isnull(input[1, string, true]), coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, timestamp, true], 1970-01-01 00:00:00), isnull(input[3, timestamp, true])),false), [plan_id=260723]
(215) BroadcastQueryStage
Output [4]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087]
Arguments: 177
(216) ReusedExchange [Reuses operator id: 186]
Output [4]: [plantUuid#143262, productUuid#143264, calculationDateTime#143258, storageLocId#143265]
(217) BroadcastQueryStage
Output [4]: [plantUuid#143262, productUuid#143264, calculationDateTime#143258, storageLocId#143265]
Arguments: 169
(218) ReusedExchange [Reuses operator id: 191]
Output [3]: [product#143270, plant#143271, orderDateTime#143272]
(219) ShuffleQueryStage
Output [3]: [product#143270, plant#143271, orderDateTime#143272]
Arguments: 32
(220) ReusedExchange [Reuses operator id: 94]
Output [4]: [_extract_code#144144, _extract_internalRefUUID#144145, _extract_internalRefUUID#144146, _extract_internalRefUUID#144147]
(221) BroadcastQueryStage
Output [4]: [_extract_code#144144, _extract_internalRefUUID#144145, _extract_internalRefUUID#144146, _extract_internalRefUUID#144147]
Arguments: 130
(222) BroadcastHashJoin [codegen id : 93]
Left keys [4]: [coalesce(product#143270, ), isnull(product#143270), coalesce(plant#143271, ), isnull(plant#143271)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144146, ), isnull(_extract_internalRefUUID#144146), coalesce(_extract_internalRefUUID#144147, ), isnull(_extract_internalRefUUID#144147)]
Join type: LeftOuter
Join condition: None
(223) Project [codegen id : 93]
Output [5]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#144144, _extract_internalRefUUID#144145]
Input [7]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#144144, _extract_internalRefUUID#144145, _extract_internalRefUUID#144146, _extract_internalRefUUID#144147]
(224) ReusedExchange [Reuses operator id: 156]
Output [1]: [internalUUID#143284]
(225) BroadcastQueryStage
Output [1]: [internalUUID#143284]
Arguments: 144
(226) BroadcastHashJoin [codegen id : 93]
Left keys [2]: [coalesce(plant#143271, ), isnull(plant#143271)]
Right keys [2]: [coalesce(internalUUID#143284, ), isnull(internalUUID#143284)]
Join type: LeftOuter
Join condition: None
(227) Project [codegen id : 93]
Output [5]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#144144, _extract_internalRefUUID#144145]
Input [6]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#144144, _extract_internalRefUUID#144145, internalUUID#143284]
(228) ReusedExchange [Reuses operator id: 113]
Output [3]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304]
(229) BroadcastQueryStage
Output [3]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304]
Arguments: 101
(230) BroadcastHashJoin [codegen id : 93]
Left keys [1]: [product#143270]
Right keys [1]: [internalUUID#143298]
Join type: LeftOuter
Join condition: None
(231) Project
Output [4]: [product#143270, plant#143271, orderDateTime#143272, filter(unitOfMeasureConversions#143304, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144144) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144145)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143302.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143302.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143309]
Input [8]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#144144, _extract_internalRefUUID#144145, internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304]
(232) Generate
Input [4]: [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309]
Arguments: explode(filteredUnitOfMeasureConversions#143309.quantityNumerator), [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309], true, [quantityNumerator#143310]
(233) Project
Output [4]: [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309.quantityDenominator AS _extract_quantityDenominator#143954]
Input [5]: [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309, quantityNumerator#143310]
(234) Generate
Input [4]: [product#143270, plant#143271, orderDateTime#143272, _extract_quantityDenominator#143954]
Arguments: explode(_extract_quantityDenominator#143954), [product#143270, plant#143271, orderDateTime#143272], true, [quantityDenominator#143311]
(235) Project
Output [3]: [product#143270, plant#143271, orderDateTime#143272]
Input [4]: [product#143270, plant#143271, orderDateTime#143272, quantityDenominator#143311]
(236) BroadcastHashJoin [codegen id : 94]
Left keys [2]: [plantUuid#143262, productUuid#143264]
Right keys [2]: [plant#143271, product#143270]
Join type: Inner
Join condition: (calculationDateTime#143258 <= orderDateTime#143272)
(237) Project [codegen id : 94]
Output [4]: [plantUuid#143262 AS plant#143314, productUuid#143264 AS product#143315, storageLocId#143265, calculationDateTime#143258]
Input [7]: [plantUuid#143262, productUuid#143264, calculationDateTime#143258, storageLocId#143265, product#143270, plant#143271, orderDateTime#143272]
(238) HashAggregate [codegen id : 94]
Input [4]: [plant#143314, product#143315, storageLocId#143265, calculationDateTime#143258]
Keys [3]: [plant#143314, product#143315, storageLocId#143265]
Functions [1]: [partial_max(calculationDateTime#143258)]
Aggregate Attributes [1]: [max#144818]
Results [4]: [plant#143314, product#143315, storageLocId#143265, max#144819]
(239) HashAggregate [codegen id : 94]
Input [4]: [plant#143314, product#143315, storageLocId#143265, max#144819]
Keys [3]: [plant#143314, product#143315, storageLocId#143265]
Functions [1]: [max(calculationDateTime#143258)]
Aggregate Attributes [1]: [max(calculationDateTime#143258)#143178]
Results [4]: [plant#143314, product#143315, storageLocId#143265, max(calculationDateTime#143258)#143178 AS max_calc_datetime#143172]
(240) Exchange
Input [4]: [plant#143314, product#143315, storageLocId#143265, max_calc_datetime#143172]
Arguments: hashpartitioning(coalesce(plant#143314, ), isnull(plant#143314), coalesce(product#143315, ), isnull(product#143315), coalesce(storageLocId#143265, ), isnull(storageLocId#143265), coalesce(max_calc_datetime#143172, 1970-01-01 00:00:00), isnull(max_calc_datetime#143172), 25), ENSURE_REQUIREMENTS, [plan_id=259733]
(241) ShuffleQueryStage
Output [4]: [plant#143314, product#143315, storageLocId#143265, max_calc_datetime#143172]
Arguments: 173
(242) AQEShuffleRead
Input [4]: [plant#143314, product#143315, storageLocId#143265, max_calc_datetime#143172]
Arguments: local
(243) BroadcastHashJoin [codegen id : 99]
Left keys [8]: [coalesce(plant#143170, ), isnull(plant#143170), coalesce(product#143171, ), isnull(product#143171), coalesce(storageLocId#143108, ), isnull(storageLocId#143108), coalesce(calculationDateTime#143087, 1970-01-01 00:00:00), isnull(calculationDateTime#143087)]
Right keys [8]: [coalesce(plant#143314, ), isnull(plant#143314), coalesce(product#143315, ), isnull(product#143315), coalesce(storageLocId#143265, ), isnull(storageLocId#143265), coalesce(max_calc_datetime#143172, 1970-01-01 00:00:00), isnull(max_calc_datetime#143172)]
Join type: Inner
Join condition: None
(244) Project [codegen id : 99]
Output [3]: [plant#143170, product#143171, calculationDateTime#143087]
Input [8]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087, plant#143314, product#143315, storageLocId#143265, max_calc_datetime#143172]
(245) HashAggregate [codegen id : 99]
Input [3]: [plant#143170, product#143171, calculationDateTime#143087]
Keys [2]: [product#143171, plant#143170]
Functions [1]: [partial_min(calculationDateTime#143087)]
Aggregate Attributes [1]: [min#144810]
Results [3]: [product#143171, plant#143170, min#144811]
(246) Exchange
Input [3]: [product#143171, plant#143170, min#144811]
Arguments: hashpartitioning(product#143171, plant#143170, 25), ENSURE_REQUIREMENTS, [plan_id=261880]
(247) ShuffleQueryStage
Output [3]: [product#143171, plant#143170, min#144811]
Arguments: 179
(248) AQEShuffleRead
Input [3]: [product#143171, plant#143170, min#144811]
Arguments: coalesced
(249) HashAggregate [codegen id : 101]
Input [3]: [product#143171, plant#143170, min#144811]
Keys [2]: [product#143171, plant#143170]
Functions [1]: [min(calculationDateTime#143087)]
Aggregate Attributes [1]: [min(calculationDateTime#143087)#143334]
Results [3]: [product#143171, plant#143170, min(calculationDateTime#143087)#143334 AS minCalculationDateTime#143327]
(250) BroadcastExchange
Input [3]: [product#143171, plant#143170, minCalculationDateTime#143327]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=263108]
(251) BroadcastQueryStage
Output [3]: [product#143171, plant#143170, minCalculationDateTime#143327]
Arguments: 182
(252) BroadcastHashJoin [codegen id : 103]
Left keys [2]: [plant#142981, product#142980]
Right keys [2]: [plant#143170, product#143171]
Join type: LeftOuter
Join condition: None
(253) Project [codegen id : 103]
Output [4]: [product#142980, plant#142981, timezonecode#143012, CASE WHEN isnotnull(minCalculationDateTime#143327) THEN minCalculationDateTime#143327 ELSE orderDateTime#142982 END AS stockDatetime#143384]
Input [7]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, product#143171, plant#143170, minCalculationDateTime#143327]
(254) Exchange
Input [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: hashpartitioning(coalesce(plant#142981, ), isnull(plant#142981), coalesce(product#142980, ), isnull(product#142980), 25), ENSURE_REQUIREMENTS, [plan_id=263400]
(255) ShuffleQueryStage
Output [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: 183
(256) AQEShuffleRead
Input [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: local
(257) Scan parquet
Output [3]: [product#143466, plant#143467, orderDateTime#143468]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(258) ColumnarToRow [codegen id : 25]
Input [3]: [product#143466, plant#143467, orderDateTime#143468]
(259) Exchange
Input [3]: [product#143466, plant#143467, orderDateTime#143468]
Arguments: hashpartitioning(product#143466, plant#143467, 25), REPARTITION_BY_NUM, [plan_id=226931]
(260) ShuffleQueryStage
Output [3]: [product#143466, plant#143467, orderDateTime#143468]
Arguments: 39
(261) Scan parquet
Output [8]: [internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477, systemId#143470]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>
(262) ColumnarToRow [codegen id : 26]
Input [8]: [internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477, systemId#143470]
(263) Project [codegen id : 26]
Output [8]: [systemId#143470, internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477]
Input [8]: [internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477, systemId#143470]
(264) Exchange
Input [8]: [systemId#143470, internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=226945]
(265) ShuffleQueryStage
Output [8]: [systemId#143470, internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477]
Arguments: 40
(266) Project [codegen id : 71]
Output [1]: [struct(systemId, systemId#143470, internalUUID, internalUUID#143471, plant, plant#143472, product, product#143473, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143474, productionAspect, productionAspect#143475, salesPlant, salesPlant#143476, listing, listing#143477) AS productPlant#143478]
Input [8]: [systemId#143470, internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477]
(267) BroadcastExchange
Input [1]: [productPlant#143478]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=240579]
(268) BroadcastQueryStage
Output [1]: [productPlant#143478]
Arguments: 150
(269) BroadcastHashJoin [codegen id : 105]
Left keys [4]: [coalesce(product#143466, ), isnull(product#143466), coalesce(plant#143467, ), isnull(plant#143467)]
Right keys [4]: [coalesce(productPlant#143478.product.internalRefUUID, ), isnull(productPlant#143478.product.internalRefUUID), coalesce(productPlant#143478.plant.internalRefUUID, ), isnull(productPlant#143478.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(270) ReusedExchange [Reuses operator id: 103]
Output [2]: [internalUUID#143480, timezonecode#143491]
(271) BroadcastQueryStage
Output [2]: [internalUUID#143480, timezonecode#143491]
Arguments: 121
(272) BroadcastHashJoin [codegen id : 105]
Left keys [2]: [coalesce(plant#143467, ), isnull(plant#143467)]
Right keys [2]: [coalesce(internalUUID#143480, ), isnull(internalUUID#143480)]
Join type: LeftOuter
Join condition: None
(273) Project [codegen id : 105]
Output [5]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, CASE WHEN isnotnull(timezonecode#143491) THEN timezonecode#143491 ELSE UTC END AS timezonecode#143492]
Input [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, internalUUID#143480, timezonecode#143491]
(274) ReusedExchange [Reuses operator id: 113]
Output [3]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500]
(275) BroadcastQueryStage
Output [3]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500]
Arguments: 102
(276) BroadcastHashJoin [codegen id : 105]
Left keys [1]: [product#143466]
Right keys [1]: [internalUUID#143494]
Join type: LeftOuter
Join condition: None
(277) Project
Output [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, filter(unitOfMeasureConversions#143500, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143498.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143498.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143505]
Input [8]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500]
(278) Project [codegen id : 106]
Output [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, filteredUnitOfMeasureConversions#143505.quantityDenominator AS _extract_quantityDenominator#144016, filteredUnitOfMeasureConversions#143505.quantityNumerator AS _extract_quantityNumerator#144017]
Input [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, filteredUnitOfMeasureConversions#143505]
(279) Generate [codegen id : 106]
Input [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, _extract_quantityDenominator#144016, _extract_quantityNumerator#144017]
Arguments: explode(_extract_quantityNumerator#144017), [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, _extract_quantityDenominator#144016], true, [quantityNumerator#143506]
(280) Generate [codegen id : 106]
Input [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, _extract_quantityDenominator#144016, quantityNumerator#143506]
Arguments: explode(_extract_quantityDenominator#144016), [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, quantityNumerator#143506], true, [quantityDenominator#143507]
(281) Project [codegen id : 106]
Output [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, (cast(quantityNumerator#143506 as double) / cast(quantityDenominator#143507 as double)) AS outboundUnit#143508]
Input [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, quantityNumerator#143506, quantityDenominator#143507]
(282) Project [codegen id : 106]
Output [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, CASE WHEN (isnull(outboundUnit#143508) OR (outboundUnit#143508 <= 0.0)) THEN 1.0 ELSE outboundUnit#143508 END AS outboundUnit#143509]
Input [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143508]
(283) ReusedExchange [Reuses operator id: 127]
Output [6]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515]
(284) BroadcastQueryStage
Output [6]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515]
Arguments: 118
(285) ReusedExchange [Reuses operator id: 140]
Output [3]: [plantUuid#143541, storageLocId#143542, storageLocUuid#143543]
(286) BroadcastQueryStage
Output [3]: [plantUuid#143541, storageLocId#143542, storageLocUuid#143543]
Arguments: 112
(287) ReusedExchange [Reuses operator id: 169]
Output [1]: [plant#143545]
(288) ShuffleQueryStage
Output [1]: [plant#143545]
Arguments: 156
(289) AQEShuffleRead
Input [1]: [plant#143545]
Arguments: coalesced
(290) HashAggregate
Input [1]: [plant#143545]
Keys [1]: [plant#143545]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143545]
(291) BroadcastHashJoin
Left keys [1]: [plantUuid#143541]
Right keys [1]: [plant#143545]
Join type: Inner
Join condition: None
(292) Project
Output [3]: [plantUuid#143541, storageLocId#143542, storageLocUuid#143543]
Input [4]: [plantUuid#143541, storageLocId#143542, storageLocUuid#143543, plant#143545]
(293) BroadcastHashJoin [codegen id : 87]
Left keys [2]: [coalesce(plant#143513.internalRefUUID, ), isnull(plant#143513.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#143541, ), isnull(plantUuid#143541)]
Join type: Inner
Join condition: None
(294) Generate
Input [9]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515, plantUuid#143541, storageLocId#143542, storageLocUuid#143543]
Arguments: explode(filter(stockQuantities#143515, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143543) AND (lambda x#143085.storageLocation.Id = storageLocId#143542)), lambda x#143085, false))), [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, plantUuid#143541], false, [stockQuantity#143588]
(295) ObjectHashAggregate
Input [7]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, plantUuid#143541, stockQuantity#143588]
Keys [5]: [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510]
Functions [2]: [partial_first(calculationDateTime#143514, false), partial_collect_list(stockQuantity#143588, 0, 0)]
Aggregate Attributes [3]: [first#144834, valueSet#144835, buf#144836]
Results [8]: [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510, first#144837, valueSet#144838, buf#144839]
(296) ObjectHashAggregate
Input [8]: [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510, first#144837, valueSet#144838, buf#144839]
Keys [5]: [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510]
Functions [2]: [first(calculationDateTime#143514, false), collect_list(stockQuantity#143588, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#143514)()#143100, collect_list(stockQuantity#143588, 0, 0)#143101]
Results [4]: [product#143512, plant#143513, first(calculationDateTime#143514)()#143100 AS calculationDateTime#143589, collect_list(stockQuantity#143588, 0, 0)#143101 AS stockQuantities#143590]
(297) Filter [codegen id : 88]
Input [4]: [product#143512, plant#143513, calculationDateTime#143589, stockQuantities#143590]
Condition : ((size(stockQuantities#143590, true) > 0) AND isnotnull(calculationDateTime#143589))
(298) Generate [codegen id : 88]
Input [4]: [product#143512, plant#143513, calculationDateTime#143589, stockQuantities#143590]
Arguments: explode(stockQuantities#143590), [product#143512, plant#143513, calculationDateTime#143589], false, [stockQuantity#143591]
(299) Filter [codegen id : 88]
Input [4]: [product#143512, plant#143513, calculationDateTime#143589, stockQuantity#143591]
Condition : (((isnotnull(stockQuantity#143591.specialStockIndicator.code) AND isnotnull(stockQuantity#143591.stockType.code)) AND (stockQuantity#143591.specialStockIndicator.code = )) AND (stockQuantity#143591.stockType.code = 01))
(300) Project [codegen id : 88]
Output [5]: [plant#143513.internalRefUUID AS plantUuid#143593, product#143512.internalRefUUID AS productUuid#143595, calculationDateTime#143589, stockQuantity#143591.storagelocation.id AS storageLocId#143596, stockQuantity#143591.quantity.measure AS quantity#143598]
Input [4]: [product#143512, plant#143513, calculationDateTime#143589, stockQuantity#143591]
(301) Exchange
Input [5]: [plantUuid#143593, productUuid#143595, calculationDateTime#143589, storageLocId#143596, quantity#143598]
Arguments: hashpartitioning(productUuid#143595, plantUuid#143593, 25), ENSURE_REQUIREMENTS, [plan_id=258135]
(302) ShuffleQueryStage
Output [5]: [plantUuid#143593, productUuid#143595, calculationDateTime#143589, storageLocId#143596, quantity#143598]
Arguments: 164
(303) AQEShuffleRead
Input [5]: [plantUuid#143593, productUuid#143595, calculationDateTime#143589, storageLocId#143596, quantity#143598]
Arguments: local
(304) BroadcastExchange
Input [5]: [plantUuid#143593, productUuid#143595, calculationDateTime#143589, storageLocId#143596, quantity#143598]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=260287]
(305) BroadcastQueryStage
Output [5]: [plantUuid#143593, productUuid#143595, calculationDateTime#143589, storageLocId#143596, quantity#143598]
Arguments: 176
(306) ReusedExchange [Reuses operator id: 191]
Output [3]: [product#143601, plant#143602, orderDateTime#143603]
(307) ShuffleQueryStage
Output [3]: [product#143601, plant#143602, orderDateTime#143603]
Arguments: 58
(308) ReusedExchange [Reuses operator id: 94]
Output [4]: [_extract_code#144154, _extract_internalRefUUID#144155, _extract_internalRefUUID#144152, _extract_internalRefUUID#144153]
(309) BroadcastQueryStage
Output [4]: [_extract_code#144154, _extract_internalRefUUID#144155, _extract_internalRefUUID#144152, _extract_internalRefUUID#144153]
Arguments: 134
(310) BroadcastHashJoin [codegen id : 97]
Left keys [4]: [coalesce(product#143601, ), isnull(product#143601), coalesce(plant#143602, ), isnull(plant#143602)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144152, ), isnull(_extract_internalRefUUID#144152), coalesce(_extract_internalRefUUID#144153, ), isnull(_extract_internalRefUUID#144153)]
Join type: LeftOuter
Join condition: None
(311) Project [codegen id : 97]
Output [5]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#144154, _extract_internalRefUUID#144155]
Input [7]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#144154, _extract_internalRefUUID#144155, _extract_internalRefUUID#144152, _extract_internalRefUUID#144153]
(312) ReusedExchange [Reuses operator id: 156]
Output [1]: [internalUUID#143615]
(313) BroadcastQueryStage
Output [1]: [internalUUID#143615]
Arguments: 146
(314) BroadcastHashJoin [codegen id : 97]
Left keys [2]: [coalesce(plant#143602, ), isnull(plant#143602)]
Right keys [2]: [coalesce(internalUUID#143615, ), isnull(internalUUID#143615)]
Join type: LeftOuter
Join condition: None
(315) Project [codegen id : 97]
Output [5]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#144154, _extract_internalRefUUID#144155]
Input [6]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#144154, _extract_internalRefUUID#144155, internalUUID#143615]
(316) ReusedExchange [Reuses operator id: 113]
Output [3]: [internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635]
(317) BroadcastQueryStage
Output [3]: [internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635]
Arguments: 104
(318) BroadcastHashJoin [codegen id : 97]
Left keys [1]: [product#143601]
Right keys [1]: [internalUUID#143629]
Join type: LeftOuter
Join condition: None
(319) Project
Output [4]: [product#143601, plant#143602, orderDateTime#143603, filter(unitOfMeasureConversions#143635, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144154) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144155)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143633.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143633.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143640]
Input [8]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#144154, _extract_internalRefUUID#144155, internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635]
(320) Generate
Input [4]: [product#143601, plant#143602, orderDateTime#143603, filteredUnitOfMeasureConversions#143640]
Arguments: explode(filteredUnitOfMeasureConversions#143640.quantityNumerator), [product#143601, plant#143602, orderDateTime#143603, filteredUnitOfMeasureConversions#143640], true, [quantityNumerator#143641]
(321) Project
Output [4]: [product#143601, plant#143602, orderDateTime#143603, filteredUnitOfMeasureConversions#143640.quantityDenominator AS _extract_quantityDenominator#143966]
Input [5]: [product#143601, plant#143602, orderDateTime#143603, filteredUnitOfMeasureConversions#143640, quantityNumerator#143641]
(322) Generate
Input [4]: [product#143601, plant#143602, orderDateTime#143603, _extract_quantityDenominator#143966]
Arguments: explode(_extract_quantityDenominator#143966), [product#143601, plant#143602, orderDateTime#143603], true, [quantityDenominator#143642]
(323) Project
Output [3]: [product#143601, plant#143602, orderDateTime#143603]
Input [4]: [product#143601, plant#143602, orderDateTime#143603, quantityDenominator#143642]
(324) BroadcastHashJoin [codegen id : 98]
Left keys [2]: [plantUuid#143593, productUuid#143595]
Right keys [2]: [plant#143602, product#143601]
Join type: Inner
Join condition: (calculationDateTime#143589 <= orderDateTime#143603)
(325) Project [codegen id : 98]
Output [5]: [plantUuid#143593 AS plant#143645, productUuid#143595 AS product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598]
Input [8]: [plantUuid#143593, productUuid#143595, calculationDateTime#143589, storageLocId#143596, quantity#143598, product#143601, plant#143602, orderDateTime#143603]
(326) Exchange
Input [5]: [plant#143645, product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598]
Arguments: hashpartitioning(coalesce(plant#143645, ), isnull(plant#143645), coalesce(product#143646, ), isnull(product#143646), coalesce(storageLocId#143596, ), isnull(storageLocId#143596), coalesce(calculationDateTime#143589, 1970-01-01 00:00:00), isnull(calculationDateTime#143589), 25), ENSURE_REQUIREMENTS, [plan_id=261160]
(327) ShuffleQueryStage
Output [5]: [plant#143645, product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598]
Arguments: 178
(328) AQEShuffleRead
Input [5]: [plant#143645, product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598]
Arguments: local
(329) ReusedExchange [Reuses operator id: 240]
Output [4]: [plant#143782, product#143783, storageLocId#143733, max_calc_datetime#143784]
(330) ShuffleQueryStage
Output [4]: [plant#143782, product#143783, storageLocId#143733, max_calc_datetime#143784]
Arguments: 175
(331) AQEShuffleRead
Input [4]: [plant#143782, product#143783, storageLocId#143733, max_calc_datetime#143784]
Arguments: local
(332) BroadcastExchange
Input [4]: [plant#143782, product#143783, storageLocId#143733, max_calc_datetime#143784]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true]), coalesce(input[1, string, true], ), isnull(input[1, string, true]), coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, timestamp, true], 1970-01-01 00:00:00), isnull(input[3, timestamp, true])),false), [plan_id=261902]
(333) BroadcastQueryStage
Output [4]: [plant#143782, product#143783, storageLocId#143733, max_calc_datetime#143784]
Arguments: 180
(334) BroadcastHashJoin [codegen id : 100]
Left keys [8]: [coalesce(plant#143645, ), isnull(plant#143645), coalesce(product#143646, ), isnull(product#143646), coalesce(storageLocId#143596, ), isnull(storageLocId#143596), coalesce(calculationDateTime#143589, 1970-01-01 00:00:00), isnull(calculationDateTime#143589)]
Right keys [8]: [coalesce(plant#143782, ), isnull(plant#143782), coalesce(product#143783, ), isnull(product#143783), coalesce(storageLocId#143733, ), isnull(storageLocId#143733), coalesce(max_calc_datetime#143784, 1970-01-01 00:00:00), isnull(max_calc_datetime#143784)]
Join type: Inner
Join condition: None
(335) Project [codegen id : 100]
Output [4]: [plant#143645, product#143646, calculationDateTime#143589, quantity#143598]
Input [9]: [plant#143645, product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598, plant#143782, product#143783, storageLocId#143733, max_calc_datetime#143784]
(336) HashAggregate [codegen id : 100]
Input [4]: [plant#143645, product#143646, calculationDateTime#143589, quantity#143598]
Keys [2]: [product#143646, plant#143645]
Functions [2]: [partial_min(calculationDateTime#143589), partial_sum(quantity#143598)]
Aggregate Attributes [2]: [min#144830, sum#144831]
Results [4]: [product#143646, plant#143645, min#144832, sum#144833]
(337) Exchange
Input [4]: [product#143646, plant#143645, min#144832, sum#144833]
Arguments: hashpartitioning(product#143646, plant#143645, 25), ENSURE_REQUIREMENTS, [plan_id=262809]
(338) ShuffleQueryStage
Output [4]: [product#143646, plant#143645, min#144832, sum#144833]
Arguments: 181
(339) AQEShuffleRead
Input [4]: [product#143646, plant#143645, min#144832, sum#144833]
Arguments: coalesced
(340) HashAggregate [codegen id : 104]
Input [4]: [product#143646, plant#143645, min#144832, sum#144833]
Keys [2]: [product#143646, plant#143645]
Functions [2]: [min(calculationDateTime#143589), sum(quantity#143598)]
Aggregate Attributes [2]: [min(calculationDateTime#143589)#143334, sum(quantity#143598)#143333]
Results [4]: [product#143646, plant#143645, min(calculationDateTime#143589)#143334 AS minCalculationDateTime#143786, round(sum(quantity#143598)#143333, 0) AS roundedQuantitySum#143787]
(341) BroadcastExchange
Input [4]: [product#143646, plant#143645, minCalculationDateTime#143786, roundedQuantitySum#143787]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=263627]
(342) BroadcastQueryStage
Output [4]: [product#143646, plant#143645, minCalculationDateTime#143786, roundedQuantitySum#143787]
Arguments: 184
(343) BroadcastHashJoin [codegen id : 106]
Left keys [2]: [plant#143467, product#143466]
Right keys [2]: [plant#143645, product#143646]
Join type: LeftOuter
Join condition: None
(344) Project [codegen id : 106]
Output [8]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, CASE WHEN isnotnull(minCalculationDateTime#143786) THEN minCalculationDateTime#143786 ELSE orderDateTime#143468 END AS stockDatetime#143788, CASE WHEN isnotnull(roundedQuantitySum#143787) THEN array(roundedQuantitySum#143787) ELSE [0.0] END AS stockBatchQuantities#143789]
Input [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, product#143646, plant#143645, minCalculationDateTime#143786, roundedQuantitySum#143787]
(345) Scan parquet
Output [9]: [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000002108/0_1_10000002108]
PushedFilters: [IsNotNull(product), IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,demandChannel:string,demandStream:string,considerVariance:boolean,demandTimeBuckets:array<struct<demandStartDateTime:timestamp,demandQuantity:double,demandVariance:double>>,demandPointInTimeStart:timestamp,demandPointInTimeEnd:timestamp,demandPointInTime:array<struct<demandDateTime:timestamp,demandQuantity:double,demandVariance:double>>>
(346) ColumnarToRow [codegen id : 49]
Input [9]: [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
(347) Filter [codegen id : 49]
Input [9]: [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
Condition : (isnotnull(product#143387) AND isnotnull(plant#143388))
(348) BroadcastExchange
Input [9]: [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=227509]
(349) BroadcastQueryStage
Output [9]: [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
Arguments: 85
(350) BroadcastHashJoin [codegen id : 106]
Left keys [2]: [product#143466, plant#143467]
Right keys [2]: [product#143387, plant#143388]
Join type: LeftOuter
Join condition: None
(351) Project [codegen id : 106]
Output [9]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, CASE WHEN isnotnull(product#143387) THEN struct(demandChannel, demandChannel#143389, demandStream, demandStream#143390, considerVariance, considerVariance#143391, demandTimeBuckets, demandTimeBuckets#143392, demandPointInTimeStart, demandPointInTimeStart#143393, demandPointInTimeEnd, demandPointInTimeEnd#143394, demandPointInTime, demandPointInTime#143395) END AS rawDemands#143412]
Input [17]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
(352) ObjectHashAggregate
Input [9]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, rawDemands#143412]
Keys [9]: [product#143466, plant#143467, orderDateTime#143468, knownfloatingpointnormalized(if (isnull(productPlant#143478)) null else named_struct(systemId, productPlant#143478.systemId, internalUUID, productPlant#143478.internalUUID, plant, productPlant#143478.plant, product, productPlant#143478.product, blockedForReplenishmentStartingFrom, productPlant#143478.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#143478.productionAspect)) null else named_struct(productMovementPlants, productPlant#143478.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#143478.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#143478.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#143478.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#143478.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#143478.productionAspect.productPlanningPlants.minimumLotSize)), minimumSafetyStock, knownfloatingpointnormalized(normalizenanandzero(productPlant#143478.productionAspect.productPlanningPlants.minimumSafetyStock)), logisticalRoundingProfile, productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#143478.salesPlant, listing, productPlant#143478.listing)) AS productPlant#143478, timezonecode#143492, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#143509)) AS outboundUnit#143509, stockDatetime#143788, knownfloatingpointnormalized(transform(stockBatchQuantities#143789, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#150351)), lambda arg#150351, false))) AS stockBatchQuantities#143789, [7226582400000000] AS [7226582400000000]#150350]
Functions [1]: [partial_collect_list(rawDemands#143412, 0, 0)]
Aggregate Attributes [1]: [buf#144828]
Results [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000]#150350, buf#144829]
(353) ObjectHashAggregate
Input [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000]#150350, buf#144829]
Keys [9]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000]#150350]
Functions [1]: [collect_list(rawDemands#143412, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#143412, 0, 0)#143431]
Results [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#143790, collect_list(rawDemands#143412, 0, 0)#143431 AS rawDemands#143413]
(354) DeserializeToObject [codegen id : 107]
Input [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, stockBatchShelfLifeEndDatetimes#143790, rawDemands#143413]
Arguments: createexternalrow(invoke(product#143466.toString()), invoke(plant#143467.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#143468)), if (isnull(productPlant#143478)) null else createexternalrow(invoke(productPlant#143478.systemId.toString()), invoke(productPlant#143478.internalUUID.toString()), if (isnull(productPlant#143478.plant)) null else createexternalrow(invoke(productPlant#143478.plant.internalRefUUID.toString()), invoke(productPlant#143478.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#143478.product)) null else createexternalrow(invoke(productPlant#143478.product.internalRefUUID.toString()), invoke(productPlant#143478.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#143478.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#143478.productionAspect)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#143478.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#143478.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(minimumSafetyStock,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#143478.salesPlant)) null else createexternalrow(if (isnull(productPlant#143478.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#143478.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#143478.salesPlant.loadingGroup.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#143478.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#143492.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#143509)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#143788)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#143789, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#143790, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4), createexternalrow(invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandChannel.toString()), invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandVariance)), StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandTimeBuckets, Some(class scala.collection.mutable.ArraySeq)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandPointInTimeStart)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandVariance)), StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandPointInTime, Some(class scala.collection.mutable.ArraySeq)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)), rawDemands#143413, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#143452: org.apache.spark.sql.Row
(355) MapElements [codegen id : 107]
Input [1]: [obj#143452]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@2d5ca6d1, obj#143457: org.apache.spark.sql.Row
(356) SerializeFromObject [codegen id : 107]
Input [1]: [obj#143457]
Arguments: [if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(0))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 0, product), StringType, ObjectType(class java.lang.String)))) AS product#143462, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(1))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 1, plant), StringType, ObjectType(class java.lang.String)))) AS plant#143463]
(357) Exchange
Input [2]: [product#143462, plant#143463]
Arguments: hashpartitioning(coalesce(plant#143463, ), isnull(plant#143463), coalesce(product#143462, ), isnull(product#143462), 25), ENSURE_REQUIREMENTS, [plan_id=263848]
(358) ShuffleQueryStage
Output [2]: [product#143462, plant#143463]
Arguments: 185
(359) AQEShuffleRead
Input [2]: [product#143462, plant#143463]
Arguments: local
(360) BroadcastExchange
Input [2]: [product#143462, plant#143463]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[1, string, true], ), isnull(input[1, string, true]), coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=264019]
(361) BroadcastQueryStage
Output [2]: [product#143462, plant#143463]
Arguments: 186
(362) BroadcastHashJoin [codegen id : 108]
Left keys [4]: [coalesce(plant#142981, ), isnull(plant#142981), coalesce(product#142980, ), isnull(product#142980)]
Right keys [4]: [coalesce(plant#143463, ), isnull(plant#143463), coalesce(product#143462, ), isnull(product#143462)]
Join type: LeftOuter
Join condition: None
(363) Project [codegen id : 108]
Output [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Input [6]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384, product#143462, plant#143463]
(364) Exchange
Input [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: hashpartitioning(plant#142981, 25), ENSURE_REQUIREMENTS, [plan_id=264090]
(365) ShuffleQueryStage
Output [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: 187
(366) AQEShuffleRead
Input [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: local
(367) BroadcastExchange
Input [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true]),false), [plan_id=264140]
(368) BroadcastQueryStage
Output [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: 188
(369) ReusedExchange [Reuses operator id: 133]
Output [1]: [distributionCenters#143861]
(370) ShuffleQueryStage
Output [1]: [distributionCenters#143861]
Arguments: 87
(371) Generate [codegen id : 60]
Input [1]: [distributionCenters#143861]
Arguments: explode(distributionCenters#143861), false, [distributionCenters#143877]
(372) Filter [codegen id : 60]
Input [1]: [distributionCenters#143877]
Condition : (((size(distributionCenters#143877.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#143877.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#143877.internalRefUUID))
(373) Project [codegen id : 60]
Output [2]: [distributionCenters#143877.internalRefUUID AS _extract_internalRefUUID#143980, distributionCenters#143877.storageLocations.internalRefUUID AS _extract_internalRefUUID#144165]
Input [1]: [distributionCenters#143877]
(374) Generate [codegen id : 60]
Input [2]: [_extract_internalRefUUID#143980, _extract_internalRefUUID#144165]
Arguments: explode(_extract_internalRefUUID#144165), [_extract_internalRefUUID#143980], false, [storageLocations#143878]
(375) Filter [codegen id : 60]
Input [2]: [_extract_internalRefUUID#143980, storageLocations#143878]
Condition : isnotnull(storageLocations#143878)
(376) Project [codegen id : 60]
Output [2]: [_extract_internalRefUUID#143980 AS plantUuid#143880, storageLocations#143878 AS storageLocUuid#143882]
Input [2]: [_extract_internalRefUUID#143980, storageLocations#143878]
(377) BroadcastExchange
Input [2]: [plantUuid#143880, storageLocUuid#143882]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=231566]
(378) BroadcastQueryStage
Output [2]: [plantUuid#143880, storageLocUuid#143882]
Arguments: 115
(379) ReusedExchange [Reuses operator id: 169]
Output [1]: [plant#143884]
(380) ShuffleQueryStage
Output [1]: [plant#143884]
Arguments: 160
(381) HashAggregate
Input [1]: [plant#143884]
Keys [1]: [plant#143884]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143884]
(382) BroadcastHashJoin
Left keys [1]: [plantUuid#143880]
Right keys [1]: [plant#143884]
Join type: Inner
Join condition: None
(383) Project
Output [2]: [plantUuid#143880 AS plant#143854, storageLocUuid#143882]
Input [3]: [plantUuid#143880, storageLocUuid#143882, plant#143884]
(384) BroadcastHashJoin [codegen id : 109]
Left keys [1]: [plant#142981]
Right keys [1]: [plant#143854]
Join type: Inner
Join condition: None
(385) Project [codegen id : 109]
Output [5]: [plant#142981, product#142980, timezonecode#143012, stockDatetime#143384, storageLocUuid#143882]
Input [6]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384, plant#143854, storageLocUuid#143882]
(386) Scan parquet
Output [6]: [internalUUID#143816, id#143817, supplier#143819, isMarkedForDeletion#143822, items#143823, systemId#143815]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-procurement-purchaseorder]
PushedFilters: [IsNotNull(isMarkedForDeletion), Not(EqualTo(isMarkedForDeletion,true)), IsNotNull(items)]
ReadSchema: struct<internalUUID:string,id:string,supplier:struct<internalRefUUID:string,id:string>,isMarkedForDeletion:boolean,items:array<struct<number:string,completeIndicator:boolean,returnIndicator:boolean,deletionIndicator:boolean,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:double,quantityUnit:struct<internalRefUUID:string,code:string>,quantityNumerator:double,quantityDenominator:double,scheduleLines:array<struct<number:string,deliveryAt:timestamp,quantity:double,quantityUnit:struct<internalRefUUID:string,code:string>,receivedQuantity:double,deliveredQuantity:double,productAvailabilityDateTime:timestamp>>,confirmations:array<struct<number:string,confirmationCategory:struct<internalRefUUID:string,code:string>,confirmationDeliveryDate:date,confirmedDeliveryAt:timestamp,confirmedQuantity:double,mrpRelevantQuantity:double,confirmationCreationCategory:string,deletionIndicator:boolean,isRelevantForConfirmation:boolean,delivery:struct<internalRefUUID:string,id:string>,deliveryItemNumber:string>>>>>
(387) ColumnarToRow [codegen id : 55]
Input [6]: [internalUUID#143816, id#143817, supplier#143819, isMarkedForDeletion#143822, items#143823, systemId#143815]
(388) Filter [codegen id : 55]
Input [6]: [internalUUID#143816, id#143817, supplier#143819, isMarkedForDeletion#143822, items#143823, systemId#143815]
Condition : (((isnotnull(isMarkedForDeletion#143822) AND NOT isMarkedForDeletion#143822) AND (size(items#143823, true) > 0)) AND isnotnull(items#143823))
(389) Project [codegen id : 55]
Output [4]: [internalUUID#143816, id#143817, supplier#143819, items#143823]
Input [6]: [internalUUID#143816, id#143817, supplier#143819, isMarkedForDeletion#143822, items#143823, systemId#143815]
(390) Exchange
Input [4]: [internalUUID#143816, id#143817, supplier#143819, items#143823]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=227742]
(391) ShuffleQueryStage
Output [4]: [internalUUID#143816, id#143817, supplier#143819, items#143823]
Arguments: 96
(392) Generate [codegen id : 72]
Input [4]: [internalUUID#143816, id#143817, supplier#143819, items#143823]
Arguments: explode(items#143823), [internalUUID#143816, id#143817, supplier#143819], false, [item#143827]
(393) Filter [codegen id : 72]
Input [4]: [internalUUID#143816, id#143817, supplier#143819, item#143827]
Condition : ((((isnotnull(item#143827.deletionIndicator) AND isnotnull(item#143827.completeIndicator)) AND isnotnull(item#143827.returnIndicator)) AND ((NOT item#143827.deletionIndicator AND NOT item#143827.completeIndicator) AND NOT item#143827.returnIndicator)) AND ((isnotnull(item#143827.product.internalRefUUID) AND isnotnull(item#143827.plant.internalRefUUID)) AND isnotnull(item#143827.storageLocation.internalRefUUID)))
(394) Project [codegen id : 72]
Output [14]: [id#143817, internalUUID#143816, supplier#143819.internalRefUUID AS supplierUuid#143824, item#143827.plant.internalRefUUID AS plant#143832, item#143827.product.internalRefUUID AS product#143833, item#143827.plant.id AS externalPlantId#143834, item#143827.product.id AS externalProductId#143835, item#143827.storageLocation.internalRefUUID AS storageLocUuid#143836, item#143827.quantityUnit.code AS quantityUom#143837, item#143827.quantityUnit.internalRefUUID AS quantityUomUuid#143838, item#143827.quantityNumerator AS quantityNumerator#143839, item#143827.quantityDenominator AS quantityDenominator#143840, item#143827.scheduleLines AS scheduleLines#143841, item#143827.confirmations AS confirmations#143842]
Input [4]: [internalUUID#143816, id#143817, supplier#143819, item#143827]
(395) BroadcastExchange
Input [14]: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842]
Arguments: HashedRelationBroadcastMode(List(input[4, string, true], input[3, string, true], input[7, string, true]),false), [plan_id=241931]
(396) BroadcastQueryStage
Output [14]: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842]
Arguments: 151
(397) BroadcastHashJoin [codegen id : 109]
Left keys [3]: [product#142980, plant#142981, storageLocUuid#143882]
Right keys [3]: [product#143833, plant#143832, storageLocUuid#143836]
Join type: Inner
Join condition: None
(398) Project
Output [17]: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842, stockDatetime#143384, timezonecode#143012, filter(confirmations#143842, lambdafunction(((NOT lambda x_29#143933.deletionIndicator AND lambda x_29#143933.isRelevantForConfirmation) AND isnotnull(lambda x_29#143933.confirmedDeliveryAt)), lambda x_29#143933, false)) AS validConfirmations#143932]
Input [19]: [plant#142981, product#142980, timezonecode#143012, stockDatetime#143384, storageLocUuid#143882, id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842]
(399) ResultQueryStage
Output [17]: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842, stockDatetime#143384, timezonecode#143012, validConfirmations#143932]
Arguments: 189
(400) Filter
Input [3]: [product#142980, plant#142981, orderDateTime#142982]
Condition : (isnotnull(plant#142981) AND isnotnull(product#142980))
(401) Exchange
Input [3]: [product#142980, plant#142981, orderDateTime#142982]
Arguments: hashpartitioning(product#142980, plant#142981, 25), REPARTITION_BY_NUM, [plan_id=216939]
(402) Project
Output [4]: [plant#142987.internalRefUUID AS _extract_internalRefUUID#144131, product#142988.internalRefUUID AS _extract_internalRefUUID#144130, productionAspect#142990.productMovementPlants.unitOfIssue.code AS _extract_code#144128, productionAspect#142990.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#144129]
Input [4]: [plant#142987, product#142988, productionAspect#142990, systemId#142985]
(403) Exchange
Input [4]: [_extract_internalRefUUID#144131, _extract_internalRefUUID#144130, _extract_code#144128, _extract_internalRefUUID#144129]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216510]
(404) Project
Output [4]: [_extract_code#144128, _extract_internalRefUUID#144129, _extract_internalRefUUID#144130, _extract_internalRefUUID#144131]
Input [4]: [_extract_internalRefUUID#144131, _extract_internalRefUUID#144130, _extract_code#144128, _extract_internalRefUUID#144129]
(405) BroadcastExchange
Input [4]: [_extract_code#144128, _extract_internalRefUUID#144129, _extract_internalRefUUID#144130, _extract_internalRefUUID#144131]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=217138]
(406) BroadcastHashJoin
Left keys [4]: [coalesce(product#142980, ), isnull(product#142980), coalesce(plant#142981, ), isnull(plant#142981)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144130, ), isnull(_extract_internalRefUUID#144130), coalesce(_extract_internalRefUUID#144131, ), isnull(_extract_internalRefUUID#144131)]
Join type: LeftOuter
Join condition: None
(407) Project
Output [5]: [product#142980, plant#142981, orderDateTime#142982, _extract_code#144128, _extract_internalRefUUID#144129]
Input [7]: [product#142980, plant#142981, orderDateTime#142982, _extract_code#144128, _extract_internalRefUUID#144129, _extract_internalRefUUID#144130, _extract_internalRefUUID#144131]
(408) Project
Output [2]: [internalUUID#142998, address#143004.timeZone.code AS timezonecode#143009]
Input [3]: [internalUUID#142998, address#143004, systemId#142997]
(409) Exchange
Input [2]: [internalUUID#142998, timezonecode#143009]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216516]
(410) BroadcastExchange
Input [2]: [internalUUID#142998, timezonecode#143009]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=217142]
(411) BroadcastHashJoin
Left keys [2]: [coalesce(plant#142981, ), isnull(plant#142981)]
Right keys [2]: [coalesce(internalUUID#142998, ), isnull(internalUUID#142998)]
Join type: LeftOuter
Join condition: None
(412) Project
Output [6]: [product#142980, plant#142981, orderDateTime#142982, _extract_code#144128, _extract_internalRefUUID#144129, CASE WHEN isnotnull(timezonecode#143009) THEN timezonecode#143009 ELSE UTC END AS timezonecode#143012]
Input [7]: [product#142980, plant#142981, orderDateTime#142982, _extract_code#144128, _extract_internalRefUUID#144129, internalUUID#142998, timezonecode#143009]
(413) Filter
Input [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
Condition : isnotnull(internalUUID#143014)
(414) Project
Output [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Input [4]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020, systemId#143013]
(415) Exchange
Input [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216522]
(416) BroadcastExchange
Input [3]: [internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217146]
(417) BroadcastHashJoin
Left keys [1]: [product#142980]
Right keys [1]: [internalUUID#143014]
Join type: LeftOuter
Join condition: None
(418) Project
Output [5]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, filter(unitOfMeasureConversions#143020, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144128) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144129)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143018.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143018.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143026]
Input [9]: [product#142980, plant#142981, orderDateTime#142982, _extract_code#144128, _extract_internalRefUUID#144129, timezonecode#143012, internalUUID#143014, baseUnitOfMeasure#143018, unitOfMeasureConversions#143020]
(419) Generate
Input [5]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, filteredUnitOfMeasureConversions#143026]
Arguments: explode(filteredUnitOfMeasureConversions#143026.quantityNumerator), [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, filteredUnitOfMeasureConversions#143026], true, [quantityNumerator#143034]
(420) Project
Output [5]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, filteredUnitOfMeasureConversions#143026.quantityDenominator AS _extract_quantityDenominator#143934]
Input [6]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, filteredUnitOfMeasureConversions#143026, quantityNumerator#143034]
(421) Generate
Input [5]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, _extract_quantityDenominator#143934]
Arguments: explode(_extract_quantityDenominator#143934), [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012], true, [quantityDenominator#143037]
(422) Project
Output [4]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012]
Input [5]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, quantityDenominator#143037]
(423) Sort
Input [4]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012]
Arguments: [product#142980 ASC NULLS FIRST, plant#142981 ASC NULLS FIRST], false, 0
(424) Filter
Input [6]: [internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, systemId#143076]
Condition : (isnotnull(plant#143079.internalRefUUID) AND isnotnull(product#143078.internalRefUUID))
(425) Project
Output [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
Input [6]: [internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, systemId#143076]
(426) Exchange
Input [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216532]
(427) BroadcastExchange
Input [6]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=217177]
(428) Filter
Input [2]: [marketUnit#143040, distributionCenters#143046]
Condition : (((marketUnit#143040 <=> Daily_grocery) AND (size(distributionCenters#143046, true) > 0)) AND isnotnull(distributionCenters#143046))
(429) Project
Output [1]: [distributionCenters#143046]
Input [2]: [marketUnit#143040, distributionCenters#143046]
(430) Exchange
Input [1]: [distributionCenters#143046]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216536]
(431) Generate
Input [1]: [distributionCenters#143046]
Arguments: explode(distributionCenters#143046), false, [distributionCenters#143064]
(432) Filter
Input [1]: [distributionCenters#143064]
Condition : (((size(distributionCenters#143064.storageLocations, true) > 0) AND isnotnull(distributionCenters#143064.storageLocations)) AND isnotnull(distributionCenters#143064.internalRefUUID))
(433) Project
Output [2]: [distributionCenters#143064.internalRefUUID AS _extract_internalRefUUID#143938, distributionCenters#143064.storageLocations AS _extract_storageLocations#143939]
Input [1]: [distributionCenters#143064]
(434) Generate
Input [2]: [_extract_internalRefUUID#143938, _extract_storageLocations#143939]
Arguments: explode(_extract_storageLocations#143939), [_extract_internalRefUUID#143938], false, [storageLocations#143071]
(435) Project
Output [3]: [_extract_internalRefUUID#143938 AS plantUuid#143066, storageLocations#143071.id AS storageLocId#143072, storageLocations#143071.internalRefUUID AS storageLocUuid#143073]
Input [2]: [_extract_internalRefUUID#143938, storageLocations#143071]
(436) BroadcastExchange
Input [3]: [plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217173]
(437) Filter
Input [2]: [product#143336, plant#143337]
Condition : isnotnull(plant#143337)
(438) Exchange
Input [2]: [product#143336, plant#143337]
Arguments: hashpartitioning(product#143336, plant#143337, 25), REPARTITION_BY_NUM, [plan_id=216950]
(439) Scan parquet
Output [4]: [plant#143342, product#143343, productionAspect#143345, systemId#143340]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(440) Project
Output [4]: [plant#143342.internalRefUUID AS _extract_internalRefUUID#144133, product#143343.internalRefUUID AS _extract_internalRefUUID#144132, productionAspect#143345.productMovementPlants.unitOfIssue.code AS _extract_code#144134, productionAspect#143345.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#144135]
Input [4]: [plant#143342, product#143343, productionAspect#143345, systemId#143340]
(441) Exchange
Input [4]: [_extract_internalRefUUID#144133, _extract_internalRefUUID#144132, _extract_code#144134, _extract_internalRefUUID#144135]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216548]
(442) Project
Output [4]: [_extract_code#144134, _extract_internalRefUUID#144135, _extract_internalRefUUID#144132, _extract_internalRefUUID#144133]
Input [4]: [_extract_internalRefUUID#144133, _extract_internalRefUUID#144132, _extract_code#144134, _extract_internalRefUUID#144135]
(443) BroadcastExchange
Input [4]: [_extract_code#144134, _extract_internalRefUUID#144135, _extract_internalRefUUID#144132, _extract_internalRefUUID#144133]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=217153]
(444) BroadcastHashJoin
Left keys [4]: [coalesce(product#143336, ), isnull(product#143336), coalesce(plant#143337, ), isnull(plant#143337)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144132, ), isnull(_extract_internalRefUUID#144132), coalesce(_extract_internalRefUUID#144133, ), isnull(_extract_internalRefUUID#144133)]
Join type: LeftOuter
Join condition: None
(445) Project
Output [4]: [product#143336, plant#143337, _extract_code#144134, _extract_internalRefUUID#144135]
Input [6]: [product#143336, plant#143337, _extract_code#144134, _extract_internalRefUUID#144135, _extract_internalRefUUID#144132, _extract_internalRefUUID#144133]
(446) Project
Output [1]: [internalUUID#143350]
Input [2]: [internalUUID#143350, systemId#143349]
(447) Exchange
Input [1]: [internalUUID#143350]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216554]
(448) BroadcastExchange
Input [1]: [internalUUID#143350]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=217157]
(449) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143337, ), isnull(plant#143337)]
Right keys [2]: [coalesce(internalUUID#143350, ), isnull(internalUUID#143350)]
Join type: LeftOuter
Join condition: None
(450) Project
Output [4]: [product#143336, plant#143337, _extract_code#144134, _extract_internalRefUUID#144135]
Input [5]: [product#143336, plant#143337, _extract_code#144134, _extract_internalRefUUID#144135, internalUUID#143350]
(451) Scan parquet
Output [4]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370, systemId#143363]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(452) Filter
Input [4]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370, systemId#143363]
Condition : isnotnull(internalUUID#143364)
(453) Project
Output [3]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370]
Input [4]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370, systemId#143363]
(454) Exchange
Input [3]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216560]
(455) BroadcastExchange
Input [3]: [internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217161]
(456) BroadcastHashJoin
Left keys [1]: [product#143336]
Right keys [1]: [internalUUID#143364]
Join type: LeftOuter
Join condition: None
(457) Project
Output [2]: [plant#143337, filter(unitOfMeasureConversions#143370, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144134) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144135)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143368.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143368.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143375]
Input [7]: [product#143336, plant#143337, _extract_code#144134, _extract_internalRefUUID#144135, internalUUID#143364, baseUnitOfMeasure#143368, unitOfMeasureConversions#143370]
(458) Generate
Input [2]: [plant#143337, filteredUnitOfMeasureConversions#143375]
Arguments: explode(filteredUnitOfMeasureConversions#143375.quantityNumerator), [plant#143337, filteredUnitOfMeasureConversions#143375], true, [quantityNumerator#143376]
(459) Project
Output [2]: [plant#143337, filteredUnitOfMeasureConversions#143375.quantityDenominator AS _extract_quantityDenominator#143940]
Input [3]: [plant#143337, filteredUnitOfMeasureConversions#143375, quantityNumerator#143376]
(460) Generate
Input [2]: [plant#143337, _extract_quantityDenominator#143940]
Arguments: explode(_extract_quantityDenominator#143940), [plant#143337], true, [quantityDenominator#143377]
(461) Project
Output [1]: [plant#143337]
Input [2]: [plant#143337, quantityDenominator#143377]
(462) HashAggregate
Input [1]: [plant#143337]
Keys [1]: [plant#143337]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143337]
(463) Exchange
Input [1]: [plant#143337]
Arguments: hashpartitioning(plant#143337, 25), ENSURE_REQUIREMENTS, [plan_id=217170]
(464) HashAggregate
Input [1]: [plant#143337]
Keys [1]: [plant#143337]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143337]
(465) BroadcastHashJoin
Left keys [1]: [plantUuid#143066]
Right keys [1]: [plant#143337]
Join type: Inner
Join condition: None
(466) Project
Output [3]: [plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
Input [4]: [plantUuid#143066, storageLocId#143072, storageLocUuid#143073, plant#143337]
(467) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143079.internalRefUUID, ), isnull(plant#143079.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#143066, ), isnull(plantUuid#143066)]
Join type: Inner
Join condition: None
(468) Generate
Input [9]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
Arguments: explode(filter(stockQuantities#143081, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143073) AND (lambda x#143085.storageLocation.Id = storageLocId#143072)), lambda x#143085, false))), [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, plantUuid#143066], false, [stockQuantity#143086]
(469) ObjectHashAggregate
Input [7]: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, plantUuid#143066, stockQuantity#143086]
Keys [5]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076]
Functions [2]: [partial_first(calculationDateTime#143080, false), partial_collect_list(stockQuantity#143086, 0, 0)]
Aggregate Attributes [3]: [first#144812, valueSet#144813, buf#144814]
Results [8]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076, first#144815, valueSet#144816, buf#144817]
(470) ObjectHashAggregate
Input [8]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076, first#144815, valueSet#144816, buf#144817]
Keys [5]: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076]
Functions [2]: [first(calculationDateTime#143080, false), collect_list(stockQuantity#143086, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#143080)()#143100, collect_list(stockQuantity#143086, 0, 0)#143101]
Results [4]: [product#143078, plant#143079, first(calculationDateTime#143080)()#143100 AS calculationDateTime#143087, collect_list(stockQuantity#143086, 0, 0)#143101 AS stockQuantities#143088]
(471) Filter
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantities#143088]
Condition : ((size(stockQuantities#143088, true) > 0) AND isnotnull(calculationDateTime#143087))
(472) Generate
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantities#143088]
Arguments: explode(stockQuantities#143088), [product#143078, plant#143079, calculationDateTime#143087], false, [stockQuantity#143103]
(473) Filter
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantity#143103]
Condition : (((isnotnull(stockQuantity#143103.specialStockIndicator.code) AND isnotnull(stockQuantity#143103.stockType.code)) AND (stockQuantity#143103.specialStockIndicator.code = )) AND (stockQuantity#143103.stockType.code = 01))
(474) Project
Output [4]: [plant#143079.internalRefUUID AS plantUuid#143105, product#143078.internalRefUUID AS productUuid#143107, calculationDateTime#143087, stockQuantity#143103.storagelocation.id AS storageLocId#143108]
Input [4]: [product#143078, plant#143079, calculationDateTime#143087, stockQuantity#143103]
(475) Exchange
Input [4]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108]
Arguments: hashpartitioning(productUuid#143107, plantUuid#143105, 25), ENSURE_REQUIREMENTS, [plan_id=217203]
(476) Sort
Input [4]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108]
Arguments: [productUuid#143107 ASC NULLS FIRST, plantUuid#143105 ASC NULLS FIRST], false, 0
(477) Filter
Input [3]: [product#143122, plant#143123, orderDateTime#143124]
Condition : ((isnotnull(orderDateTime#143124) AND isnotnull(plant#143123)) AND isnotnull(product#143122))
(478) Exchange
Input [3]: [product#143122, plant#143123, orderDateTime#143124]
Arguments: hashpartitioning(product#143122, plant#143123, 25), REPARTITION_BY_NUM, [plan_id=216973]
(479) Scan parquet
Output [4]: [plant#143128, product#143129, productionAspect#143131, systemId#143126]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(480) Project
Output [4]: [plant#143128.internalRefUUID AS _extract_internalRefUUID#144136, product#143129.internalRefUUID AS _extract_internalRefUUID#144137, productionAspect#143131.productMovementPlants.unitOfIssue.code AS _extract_code#144138, productionAspect#143131.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#144139]
Input [4]: [plant#143128, product#143129, productionAspect#143131, systemId#143126]
(481) Exchange
Input [4]: [_extract_internalRefUUID#144136, _extract_internalRefUUID#144137, _extract_code#144138, _extract_internalRefUUID#144139]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216585]
(482) Project
Output [4]: [_extract_code#144138, _extract_internalRefUUID#144139, _extract_internalRefUUID#144137, _extract_internalRefUUID#144136]
Input [4]: [_extract_internalRefUUID#144136, _extract_internalRefUUID#144137, _extract_code#144138, _extract_internalRefUUID#144139]
(483) BroadcastExchange
Input [4]: [_extract_code#144138, _extract_internalRefUUID#144139, _extract_internalRefUUID#144137, _extract_internalRefUUID#144136]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=217186]
(484) BroadcastHashJoin
Left keys [4]: [coalesce(product#143122, ), isnull(product#143122), coalesce(plant#143123, ), isnull(plant#143123)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144137, ), isnull(_extract_internalRefUUID#144137), coalesce(_extract_internalRefUUID#144136, ), isnull(_extract_internalRefUUID#144136)]
Join type: LeftOuter
Join condition: None
(485) Project
Output [5]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#144138, _extract_internalRefUUID#144139]
Input [7]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#144138, _extract_internalRefUUID#144139, _extract_internalRefUUID#144137, _extract_internalRefUUID#144136]
(486) Scan parquet
Output [2]: [internalUUID#143136, systemId#143135]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(487) Project
Output [1]: [internalUUID#143136]
Input [2]: [internalUUID#143136, systemId#143135]
(488) Exchange
Input [1]: [internalUUID#143136]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216591]
(489) BroadcastExchange
Input [1]: [internalUUID#143136]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=217190]
(490) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143123, ), isnull(plant#143123)]
Right keys [2]: [coalesce(internalUUID#143136, ), isnull(internalUUID#143136)]
Join type: LeftOuter
Join condition: None
(491) Project
Output [5]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#144138, _extract_internalRefUUID#144139]
Input [6]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#144138, _extract_internalRefUUID#144139, internalUUID#143136]
(492) Scan parquet
Output [4]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156, systemId#143149]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(493) Filter
Input [4]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156, systemId#143149]
Condition : isnotnull(internalUUID#143150)
(494) Project
Output [3]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156]
Input [4]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156, systemId#143149]
(495) Exchange
Input [3]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216597]
(496) BroadcastExchange
Input [3]: [internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217194]
(497) BroadcastHashJoin
Left keys [1]: [product#143122]
Right keys [1]: [internalUUID#143150]
Join type: LeftOuter
Join condition: None
(498) Project
Output [4]: [product#143122, plant#143123, orderDateTime#143124, filter(unitOfMeasureConversions#143156, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144138) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144139)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143154.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143154.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143161]
Input [8]: [product#143122, plant#143123, orderDateTime#143124, _extract_code#144138, _extract_internalRefUUID#144139, internalUUID#143150, baseUnitOfMeasure#143154, unitOfMeasureConversions#143156]
(499) Generate
Input [4]: [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161]
Arguments: explode(filteredUnitOfMeasureConversions#143161.quantityNumerator), [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161], true, [quantityNumerator#143162]
(500) Project
Output [4]: [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161.quantityDenominator AS _extract_quantityDenominator#143944]
Input [5]: [product#143122, plant#143123, orderDateTime#143124, filteredUnitOfMeasureConversions#143161, quantityNumerator#143162]
(501) Generate
Input [4]: [product#143122, plant#143123, orderDateTime#143124, _extract_quantityDenominator#143944]
Arguments: explode(_extract_quantityDenominator#143944), [product#143122, plant#143123, orderDateTime#143124], true, [quantityDenominator#143163]
(502) Project
Output [3]: [product#143122, plant#143123, orderDateTime#143124]
Input [4]: [product#143122, plant#143123, orderDateTime#143124, quantityDenominator#143163]
(503) Sort
Input [3]: [product#143122, plant#143123, orderDateTime#143124]
Arguments: [product#143122 ASC NULLS FIRST, plant#143123 ASC NULLS FIRST], false, 0
(504) SortMergeJoin
Left keys [2]: [productUuid#143107, plantUuid#143105]
Right keys [2]: [product#143122, plant#143123]
Join type: Inner
Join condition: (calculationDateTime#143087 <= orderDateTime#143124)
(505) Project
Output [4]: [plantUuid#143105 AS plant#143170, productUuid#143107 AS product#143171, storageLocId#143108, calculationDateTime#143087]
Input [7]: [plantUuid#143105, productUuid#143107, calculationDateTime#143087, storageLocId#143108, product#143122, plant#143123, orderDateTime#143124]
(506) Exchange
Input [4]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087]
Arguments: hashpartitioning(coalesce(plant#143170, ), isnull(plant#143170), coalesce(product#143171, ), isnull(product#143171), coalesce(storageLocId#143108, ), isnull(storageLocId#143108), coalesce(calculationDateTime#143087, 1970-01-01 00:00:00), isnull(calculationDateTime#143087), 25), ENSURE_REQUIREMENTS, [plan_id=217267]
(507) Sort
Input [4]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087]
Arguments: [coalesce(plant#143170, ) ASC NULLS FIRST, isnull(plant#143170) ASC NULLS FIRST, coalesce(product#143171, ) ASC NULLS FIRST, isnull(product#143171) ASC NULLS FIRST, coalesce(storageLocId#143108, ) ASC NULLS FIRST, isnull(storageLocId#143108) ASC NULLS FIRST, coalesce(calculationDateTime#143087, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#143087) ASC NULLS FIRST], false, 0
(508) Scan parquet
Output [6]: [internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184, systemId#143179]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(509) Filter
Input [6]: [internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184, systemId#143179]
Condition : (isnotnull(plant#143182.internalRefUUID) AND isnotnull(product#143181.internalRefUUID))
(510) Project
Output [6]: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184]
Input [6]: [internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184, systemId#143179]
(511) Exchange
Input [6]: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216609]
(512) BroadcastExchange
Input [6]: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=217232]
(513) Scan parquet
Output [2]: [marketUnit#143185, distributionCenters#143191]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(514) Filter
Input [2]: [marketUnit#143185, distributionCenters#143191]
Condition : (((marketUnit#143185 <=> Daily_grocery) AND (size(distributionCenters#143191, true) > 0)) AND isnotnull(distributionCenters#143191))
(515) Project
Output [1]: [distributionCenters#143191]
Input [2]: [marketUnit#143185, distributionCenters#143191]
(516) Exchange
Input [1]: [distributionCenters#143191]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216613]
(517) Generate
Input [1]: [distributionCenters#143191]
Arguments: explode(distributionCenters#143191), false, [distributionCenters#143207]
(518) Filter
Input [1]: [distributionCenters#143207]
Condition : (((size(distributionCenters#143207.storageLocations, true) > 0) AND isnotnull(distributionCenters#143207.storageLocations)) AND isnotnull(distributionCenters#143207.internalRefUUID))
(519) Project
Output [2]: [distributionCenters#143207.internalRefUUID AS _extract_internalRefUUID#143948, distributionCenters#143207.storageLocations AS _extract_storageLocations#143949]
Input [1]: [distributionCenters#143207]
(520) Generate
Input [2]: [_extract_internalRefUUID#143948, _extract_storageLocations#143949]
Arguments: explode(_extract_storageLocations#143949), [_extract_internalRefUUID#143948], false, [storageLocations#143208]
(521) Project
Output [3]: [_extract_internalRefUUID#143948 AS plantUuid#143210, storageLocations#143208.id AS storageLocId#143211, storageLocations#143208.internalRefUUID AS storageLocUuid#143212]
Input [2]: [_extract_internalRefUUID#143948, storageLocations#143208]
(522) BroadcastExchange
Input [3]: [plantUuid#143210, storageLocId#143211, storageLocUuid#143212]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217228]
(523) Scan parquet
Output [2]: [product#143213, plant#143214]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(524) Filter
Input [2]: [product#143213, plant#143214]
Condition : isnotnull(plant#143214)
(525) Exchange
Input [2]: [product#143213, plant#143214]
Arguments: hashpartitioning(product#143213, plant#143214, 25), REPARTITION_BY_NUM, [plan_id=216986]
(526) Scan parquet
Output [4]: [plant#143219, product#143220, productionAspect#143222, systemId#143217]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(527) Project
Output [4]: [plant#143219.internalRefUUID AS _extract_internalRefUUID#144143, product#143220.internalRefUUID AS _extract_internalRefUUID#144140, productionAspect#143222.productMovementPlants.unitOfIssue.code AS _extract_code#144141, productionAspect#143222.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#144142]
Input [4]: [plant#143219, product#143220, productionAspect#143222, systemId#143217]
(528) Exchange
Input [4]: [_extract_internalRefUUID#144143, _extract_internalRefUUID#144140, _extract_code#144141, _extract_internalRefUUID#144142]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216625]
(529) Project
Output [4]: [_extract_code#144141, _extract_internalRefUUID#144142, _extract_internalRefUUID#144140, _extract_internalRefUUID#144143]
Input [4]: [_extract_internalRefUUID#144143, _extract_internalRefUUID#144140, _extract_code#144141, _extract_internalRefUUID#144142]
(530) BroadcastExchange
Input [4]: [_extract_code#144141, _extract_internalRefUUID#144142, _extract_internalRefUUID#144140, _extract_internalRefUUID#144143]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=217208]
(531) BroadcastHashJoin
Left keys [4]: [coalesce(product#143213, ), isnull(product#143213), coalesce(plant#143214, ), isnull(plant#143214)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144140, ), isnull(_extract_internalRefUUID#144140), coalesce(_extract_internalRefUUID#144143, ), isnull(_extract_internalRefUUID#144143)]
Join type: LeftOuter
Join condition: None
(532) Project
Output [4]: [product#143213, plant#143214, _extract_code#144141, _extract_internalRefUUID#144142]
Input [6]: [product#143213, plant#143214, _extract_code#144141, _extract_internalRefUUID#144142, _extract_internalRefUUID#144140, _extract_internalRefUUID#144143]
(533) Scan parquet
Output [2]: [internalUUID#143227, systemId#143226]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(534) Project
Output [1]: [internalUUID#143227]
Input [2]: [internalUUID#143227, systemId#143226]
(535) Exchange
Input [1]: [internalUUID#143227]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216631]
(536) BroadcastExchange
Input [1]: [internalUUID#143227]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=217212]
(537) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143214, ), isnull(plant#143214)]
Right keys [2]: [coalesce(internalUUID#143227, ), isnull(internalUUID#143227)]
Join type: LeftOuter
Join condition: None
(538) Project
Output [4]: [product#143213, plant#143214, _extract_code#144141, _extract_internalRefUUID#144142]
Input [5]: [product#143213, plant#143214, _extract_code#144141, _extract_internalRefUUID#144142, internalUUID#143227]
(539) Scan parquet
Output [4]: [internalUUID#143241, baseUnitOfMeasure#143245, unitOfMeasureConversions#143247, systemId#143240]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(540) Filter
Input [4]: [internalUUID#143241, baseUnitOfMeasure#143245, unitOfMeasureConversions#143247, systemId#143240]
Condition : isnotnull(internalUUID#143241)
(541) Project
Output [3]: [internalUUID#143241, baseUnitOfMeasure#143245, unitOfMeasureConversions#143247]
Input [4]: [internalUUID#143241, baseUnitOfMeasure#143245, unitOfMeasureConversions#143247, systemId#143240]
(542) Exchange
Input [3]: [internalUUID#143241, baseUnitOfMeasure#143245, unitOfMeasureConversions#143247]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216637]
(543) BroadcastExchange
Input [3]: [internalUUID#143241, baseUnitOfMeasure#143245, unitOfMeasureConversions#143247]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217216]
(544) BroadcastHashJoin
Left keys [1]: [product#143213]
Right keys [1]: [internalUUID#143241]
Join type: LeftOuter
Join condition: None
(545) Project
Output [2]: [plant#143214, filter(unitOfMeasureConversions#143247, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144141) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144142)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143245.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143245.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143252]
Input [7]: [product#143213, plant#143214, _extract_code#144141, _extract_internalRefUUID#144142, internalUUID#143241, baseUnitOfMeasure#143245, unitOfMeasureConversions#143247]
(546) Generate
Input [2]: [plant#143214, filteredUnitOfMeasureConversions#143252]
Arguments: explode(filteredUnitOfMeasureConversions#143252.quantityNumerator), [plant#143214, filteredUnitOfMeasureConversions#143252], true, [quantityNumerator#143253]
(547) Project
Output [2]: [plant#143214, filteredUnitOfMeasureConversions#143252.quantityDenominator AS _extract_quantityDenominator#143950]
Input [3]: [plant#143214, filteredUnitOfMeasureConversions#143252, quantityNumerator#143253]
(548) Generate
Input [2]: [plant#143214, _extract_quantityDenominator#143950]
Arguments: explode(_extract_quantityDenominator#143950), [plant#143214], true, [quantityDenominator#143254]
(549) Project
Output [1]: [plant#143214]
Input [2]: [plant#143214, quantityDenominator#143254]
(550) HashAggregate
Input [1]: [plant#143214]
Keys [1]: [plant#143214]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143214]
(551) Exchange
Input [1]: [plant#143214]
Arguments: hashpartitioning(plant#143214, 25), ENSURE_REQUIREMENTS, [plan_id=217225]
(552) HashAggregate
Input [1]: [plant#143214]
Keys [1]: [plant#143214]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143214]
(553) BroadcastHashJoin
Left keys [1]: [plantUuid#143210]
Right keys [1]: [plant#143214]
Join type: Inner
Join condition: None
(554) Project
Output [3]: [plantUuid#143210, storageLocId#143211, storageLocUuid#143212]
Input [4]: [plantUuid#143210, storageLocId#143211, storageLocUuid#143212, plant#143214]
(555) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143182.internalRefUUID, ), isnull(plant#143182.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#143210, ), isnull(plantUuid#143210)]
Join type: Inner
Join condition: None
(556) Generate
Input [9]: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184, plantUuid#143210, storageLocId#143211, storageLocUuid#143212]
Arguments: explode(filter(stockQuantities#143184, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143212) AND (lambda x#143085.storageLocation.Id = storageLocId#143211)), lambda x#143085, false))), [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, plantUuid#143210], false, [stockQuantity#143257]
(557) ObjectHashAggregate
Input [7]: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, plantUuid#143210, stockQuantity#143257]
Keys [5]: [plantUuid#143210, internalUUID#143180, plant#143182, product#143181, systemId#143179]
Functions [2]: [partial_first(calculationDateTime#143183, false), partial_collect_list(stockQuantity#143257, 0, 0)]
Aggregate Attributes [3]: [first#144820, valueSet#144821, buf#144822]
Results [8]: [plantUuid#143210, internalUUID#143180, plant#143182, product#143181, systemId#143179, first#144823, valueSet#144824, buf#144825]
(558) ObjectHashAggregate
Input [8]: [plantUuid#143210, internalUUID#143180, plant#143182, product#143181, systemId#143179, first#144823, valueSet#144824, buf#144825]
Keys [5]: [plantUuid#143210, internalUUID#143180, plant#143182, product#143181, systemId#143179]
Functions [2]: [first(calculationDateTime#143183, false), collect_list(stockQuantity#143257, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#143183)()#143100, collect_list(stockQuantity#143257, 0, 0)#143101]
Results [4]: [product#143181, plant#143182, first(calculationDateTime#143183)()#143100 AS calculationDateTime#143258, collect_list(stockQuantity#143257, 0, 0)#143101 AS stockQuantities#143259]
(559) Filter
Input [4]: [product#143181, plant#143182, calculationDateTime#143258, stockQuantities#143259]
Condition : ((size(stockQuantities#143259, true) > 0) AND isnotnull(calculationDateTime#143258))
(560) Generate
Input [4]: [product#143181, plant#143182, calculationDateTime#143258, stockQuantities#143259]
Arguments: explode(stockQuantities#143259), [product#143181, plant#143182, calculationDateTime#143258], false, [stockQuantity#143260]
(561) Filter
Input [4]: [product#143181, plant#143182, calculationDateTime#143258, stockQuantity#143260]
Condition : (((isnotnull(stockQuantity#143260.specialStockIndicator.code) AND isnotnull(stockQuantity#143260.stockType.code)) AND (stockQuantity#143260.specialStockIndicator.code = )) AND (stockQuantity#143260.stockType.code = 01))
(562) Project
Output [4]: [plant#143182.internalRefUUID AS plantUuid#143262, product#143181.internalRefUUID AS productUuid#143264, calculationDateTime#143258, stockQuantity#143260.storagelocation.id AS storageLocId#143265]
Input [4]: [product#143181, plant#143182, calculationDateTime#143258, stockQuantity#143260]
(563) Exchange
Input [4]: [plantUuid#143262, productUuid#143264, calculationDateTime#143258, storageLocId#143265]
Arguments: hashpartitioning(productUuid#143264, plantUuid#143262, 25), ENSURE_REQUIREMENTS, [plan_id=217258]
(564) Sort
Input [4]: [plantUuid#143262, productUuid#143264, calculationDateTime#143258, storageLocId#143265]
Arguments: [productUuid#143264 ASC NULLS FIRST, plantUuid#143262 ASC NULLS FIRST], false, 0
(565) Scan parquet
Output [3]: [product#143270, plant#143271, orderDateTime#143272]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(566) Filter
Input [3]: [product#143270, plant#143271, orderDateTime#143272]
Condition : ((isnotnull(orderDateTime#143272) AND isnotnull(plant#143271)) AND isnotnull(product#143270))
(567) Exchange
Input [3]: [product#143270, plant#143271, orderDateTime#143272]
Arguments: hashpartitioning(product#143270, plant#143271, 25), REPARTITION_BY_NUM, [plan_id=217009]
(568) Scan parquet
Output [4]: [plant#143276, product#143277, productionAspect#143279, systemId#143274]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(569) Project
Output [4]: [plant#143276.internalRefUUID AS _extract_internalRefUUID#144147, product#143277.internalRefUUID AS _extract_internalRefUUID#144146, productionAspect#143279.productMovementPlants.unitOfIssue.code AS _extract_code#144144, productionAspect#143279.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#144145]
Input [4]: [plant#143276, product#143277, productionAspect#143279, systemId#143274]
(570) Exchange
Input [4]: [_extract_internalRefUUID#144147, _extract_internalRefUUID#144146, _extract_code#144144, _extract_internalRefUUID#144145]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216662]
(571) Project
Output [4]: [_extract_code#144144, _extract_internalRefUUID#144145, _extract_internalRefUUID#144146, _extract_internalRefUUID#144147]
Input [4]: [_extract_internalRefUUID#144147, _extract_internalRefUUID#144146, _extract_code#144144, _extract_internalRefUUID#144145]
(572) BroadcastExchange
Input [4]: [_extract_code#144144, _extract_internalRefUUID#144145, _extract_internalRefUUID#144146, _extract_internalRefUUID#144147]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=217241]
(573) BroadcastHashJoin
Left keys [4]: [coalesce(product#143270, ), isnull(product#143270), coalesce(plant#143271, ), isnull(plant#143271)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144146, ), isnull(_extract_internalRefUUID#144146), coalesce(_extract_internalRefUUID#144147, ), isnull(_extract_internalRefUUID#144147)]
Join type: LeftOuter
Join condition: None
(574) Project
Output [5]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#144144, _extract_internalRefUUID#144145]
Input [7]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#144144, _extract_internalRefUUID#144145, _extract_internalRefUUID#144146, _extract_internalRefUUID#144147]
(575) Scan parquet
Output [2]: [internalUUID#143284, systemId#143283]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(576) Project
Output [1]: [internalUUID#143284]
Input [2]: [internalUUID#143284, systemId#143283]
(577) Exchange
Input [1]: [internalUUID#143284]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216668]
(578) BroadcastExchange
Input [1]: [internalUUID#143284]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=217245]
(579) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143271, ), isnull(plant#143271)]
Right keys [2]: [coalesce(internalUUID#143284, ), isnull(internalUUID#143284)]
Join type: LeftOuter
Join condition: None
(580) Project
Output [5]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#144144, _extract_internalRefUUID#144145]
Input [6]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#144144, _extract_internalRefUUID#144145, internalUUID#143284]
(581) Scan parquet
Output [4]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304, systemId#143297]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(582) Filter
Input [4]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304, systemId#143297]
Condition : isnotnull(internalUUID#143298)
(583) Project
Output [3]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304]
Input [4]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304, systemId#143297]
(584) Exchange
Input [3]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216674]
(585) BroadcastExchange
Input [3]: [internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217249]
(586) BroadcastHashJoin
Left keys [1]: [product#143270]
Right keys [1]: [internalUUID#143298]
Join type: LeftOuter
Join condition: None
(587) Project
Output [4]: [product#143270, plant#143271, orderDateTime#143272, filter(unitOfMeasureConversions#143304, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144144) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144145)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143302.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143302.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143309]
Input [8]: [product#143270, plant#143271, orderDateTime#143272, _extract_code#144144, _extract_internalRefUUID#144145, internalUUID#143298, baseUnitOfMeasure#143302, unitOfMeasureConversions#143304]
(588) Generate
Input [4]: [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309]
Arguments: explode(filteredUnitOfMeasureConversions#143309.quantityNumerator), [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309], true, [quantityNumerator#143310]
(589) Project
Output [4]: [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309.quantityDenominator AS _extract_quantityDenominator#143954]
Input [5]: [product#143270, plant#143271, orderDateTime#143272, filteredUnitOfMeasureConversions#143309, quantityNumerator#143310]
(590) Generate
Input [4]: [product#143270, plant#143271, orderDateTime#143272, _extract_quantityDenominator#143954]
Arguments: explode(_extract_quantityDenominator#143954), [product#143270, plant#143271, orderDateTime#143272], true, [quantityDenominator#143311]
(591) Project
Output [3]: [product#143270, plant#143271, orderDateTime#143272]
Input [4]: [product#143270, plant#143271, orderDateTime#143272, quantityDenominator#143311]
(592) Sort
Input [3]: [product#143270, plant#143271, orderDateTime#143272]
Arguments: [product#143270 ASC NULLS FIRST, plant#143271 ASC NULLS FIRST], false, 0
(593) SortMergeJoin
Left keys [2]: [productUuid#143264, plantUuid#143262]
Right keys [2]: [product#143270, plant#143271]
Join type: Inner
Join condition: (calculationDateTime#143258 <= orderDateTime#143272)
(594) Project
Output [4]: [plantUuid#143262 AS plant#143314, productUuid#143264 AS product#143315, storageLocId#143265, calculationDateTime#143258]
Input [7]: [plantUuid#143262, productUuid#143264, calculationDateTime#143258, storageLocId#143265, product#143270, plant#143271, orderDateTime#143272]
(595) HashAggregate
Input [4]: [plant#143314, product#143315, storageLocId#143265, calculationDateTime#143258]
Keys [3]: [plant#143314, product#143315, storageLocId#143265]
Functions [1]: [partial_max(calculationDateTime#143258)]
Aggregate Attributes [1]: [max#144818]
Results [4]: [plant#143314, product#143315, storageLocId#143265, max#144819]
(596) HashAggregate
Input [4]: [plant#143314, product#143315, storageLocId#143265, max#144819]
Keys [3]: [plant#143314, product#143315, storageLocId#143265]
Functions [1]: [max(calculationDateTime#143258)]
Aggregate Attributes [1]: [max(calculationDateTime#143258)#143178]
Results [4]: [plant#143314, product#143315, storageLocId#143265, max(calculationDateTime#143258)#143178 AS max_calc_datetime#143172]
(597) Exchange
Input [4]: [plant#143314, product#143315, storageLocId#143265, max_calc_datetime#143172]
Arguments: hashpartitioning(coalesce(plant#143314, ), isnull(plant#143314), coalesce(product#143315, ), isnull(product#143315), coalesce(storageLocId#143265, ), isnull(storageLocId#143265), coalesce(max_calc_datetime#143172, 1970-01-01 00:00:00), isnull(max_calc_datetime#143172), 25), ENSURE_REQUIREMENTS, [plan_id=217268]
(598) Sort
Input [4]: [plant#143314, product#143315, storageLocId#143265, max_calc_datetime#143172]
Arguments: [coalesce(plant#143314, ) ASC NULLS FIRST, isnull(plant#143314) ASC NULLS FIRST, coalesce(product#143315, ) ASC NULLS FIRST, isnull(product#143315) ASC NULLS FIRST, coalesce(storageLocId#143265, ) ASC NULLS FIRST, isnull(storageLocId#143265) ASC NULLS FIRST, coalesce(max_calc_datetime#143172, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#143172) ASC NULLS FIRST], false, 0
(599) SortMergeJoin
Left keys [8]: [coalesce(plant#143170, ), isnull(plant#143170), coalesce(product#143171, ), isnull(product#143171), coalesce(storageLocId#143108, ), isnull(storageLocId#143108), coalesce(calculationDateTime#143087, 1970-01-01 00:00:00), isnull(calculationDateTime#143087)]
Right keys [8]: [coalesce(plant#143314, ), isnull(plant#143314), coalesce(product#143315, ), isnull(product#143315), coalesce(storageLocId#143265, ), isnull(storageLocId#143265), coalesce(max_calc_datetime#143172, 1970-01-01 00:00:00), isnull(max_calc_datetime#143172)]
Join type: Inner
Join condition: None
(600) Project
Output [3]: [plant#143170, product#143171, calculationDateTime#143087]
Input [8]: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087, plant#143314, product#143315, storageLocId#143265, max_calc_datetime#143172]
(601) HashAggregate
Input [3]: [plant#143170, product#143171, calculationDateTime#143087]
Keys [2]: [product#143171, plant#143170]
Functions [1]: [partial_min(calculationDateTime#143087)]
Aggregate Attributes [1]: [min#144810]
Results [3]: [product#143171, plant#143170, min#144811]
(602) Exchange
Input [3]: [product#143171, plant#143170, min#144811]
Arguments: hashpartitioning(product#143171, plant#143170, 25), ENSURE_REQUIREMENTS, [plan_id=217275]
(603) HashAggregate
Input [3]: [product#143171, plant#143170, min#144811]
Keys [2]: [product#143171, plant#143170]
Functions [1]: [min(calculationDateTime#143087)]
Aggregate Attributes [1]: [min(calculationDateTime#143087)#143334]
Results [3]: [product#143171, plant#143170, min(calculationDateTime#143087)#143334 AS minCalculationDateTime#143327]
(604) Sort
Input [3]: [product#143171, plant#143170, minCalculationDateTime#143327]
Arguments: [product#143171 ASC NULLS FIRST, plant#143170 ASC NULLS FIRST], false, 0
(605) SortMergeJoin
Left keys [2]: [product#142980, plant#142981]
Right keys [2]: [product#143171, plant#143170]
Join type: LeftOuter
Join condition: None
(606) Project
Output [4]: [product#142980, plant#142981, timezonecode#143012, CASE WHEN isnotnull(minCalculationDateTime#143327) THEN minCalculationDateTime#143327 ELSE orderDateTime#142982 END AS stockDatetime#143384]
Input [7]: [product#142980, plant#142981, orderDateTime#142982, timezonecode#143012, product#143171, plant#143170, minCalculationDateTime#143327]
(607) Exchange
Input [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: hashpartitioning(coalesce(plant#142981, ), isnull(plant#142981), coalesce(product#142980, ), isnull(product#142980), 25), ENSURE_REQUIREMENTS, [plan_id=217439]
(608) Sort
Input [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: [coalesce(plant#142981, ) ASC NULLS FIRST, isnull(plant#142981) ASC NULLS FIRST, coalesce(product#142980, ) ASC NULLS FIRST, isnull(product#142980) ASC NULLS FIRST], false, 0
(609) Exchange
Input [3]: [product#143466, plant#143467, orderDateTime#143468]
Arguments: hashpartitioning(product#143466, plant#143467, 25), REPARTITION_BY_NUM, [plan_id=216692]
(610) Project
Output [8]: [systemId#143470, internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477]
Input [8]: [internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477, systemId#143470]
(611) Exchange
Input [8]: [systemId#143470, internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216695]
(612) Project
Output [1]: [struct(systemId, systemId#143470, internalUUID, internalUUID#143471, plant, plant#143472, product, product#143473, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143474, productionAspect, productionAspect#143475, salesPlant, salesPlant#143476, listing, listing#143477) AS productPlant#143478]
Input [8]: [systemId#143470, internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477]
(613) BroadcastExchange
Input [1]: [productPlant#143478]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,minimumSafetyStock:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=217283]
(614) BroadcastHashJoin
Left keys [4]: [coalesce(product#143466, ), isnull(product#143466), coalesce(plant#143467, ), isnull(plant#143467)]
Right keys [4]: [coalesce(productPlant#143478.product.internalRefUUID, ), isnull(productPlant#143478.product.internalRefUUID), coalesce(productPlant#143478.plant.internalRefUUID, ), isnull(productPlant#143478.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(615) Scan parquet
Output [3]: [internalUUID#143480, address#143486, systemId#143479]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string,address:struct<timeZone:struct<code:string>>>
(616) Project
Output [2]: [internalUUID#143480, address#143486.timeZone.code AS timezonecode#143491]
Input [3]: [internalUUID#143480, address#143486, systemId#143479]
(617) Exchange
Input [2]: [internalUUID#143480, timezonecode#143491]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216700]
(618) BroadcastExchange
Input [2]: [internalUUID#143480, timezonecode#143491]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=217286]
(619) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143467, ), isnull(plant#143467)]
Right keys [2]: [coalesce(internalUUID#143480, ), isnull(internalUUID#143480)]
Join type: LeftOuter
Join condition: None
(620) Project
Output [5]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, CASE WHEN isnotnull(timezonecode#143491) THEN timezonecode#143491 ELSE UTC END AS timezonecode#143492]
Input [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, internalUUID#143480, timezonecode#143491]
(621) Scan parquet
Output [4]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500, systemId#143493]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(622) Filter
Input [4]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500, systemId#143493]
Condition : isnotnull(internalUUID#143494)
(623) Project
Output [3]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500]
Input [4]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500, systemId#143493]
(624) Exchange
Input [3]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216706]
(625) BroadcastExchange
Input [3]: [internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217290]
(626) BroadcastHashJoin
Left keys [1]: [product#143466]
Right keys [1]: [internalUUID#143494]
Join type: LeftOuter
Join condition: None
(627) Project
Output [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, filter(unitOfMeasureConversions#143500, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143498.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143498.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143505]
Input [8]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, internalUUID#143494, baseUnitOfMeasure#143498, unitOfMeasureConversions#143500]
(628) Project
Output [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, filteredUnitOfMeasureConversions#143505.quantityDenominator AS _extract_quantityDenominator#144016, filteredUnitOfMeasureConversions#143505.quantityNumerator AS _extract_quantityNumerator#144017]
Input [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, filteredUnitOfMeasureConversions#143505]
(629) Generate
Input [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, _extract_quantityDenominator#144016, _extract_quantityNumerator#144017]
Arguments: explode(_extract_quantityNumerator#144017), [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, _extract_quantityDenominator#144016], true, [quantityNumerator#143506]
(630) Generate
Input [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, _extract_quantityDenominator#144016, quantityNumerator#143506]
Arguments: explode(_extract_quantityDenominator#144016), [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, quantityNumerator#143506], true, [quantityDenominator#143507]
(631) Project
Output [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, (cast(quantityNumerator#143506 as double) / cast(quantityDenominator#143507 as double)) AS outboundUnit#143508]
Input [7]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, quantityNumerator#143506, quantityDenominator#143507]
(632) Project
Output [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, CASE WHEN (isnull(outboundUnit#143508) OR (outboundUnit#143508 <= 0.0)) THEN 1.0 ELSE outboundUnit#143508 END AS outboundUnit#143509]
Input [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143508]
(633) Sort
Input [6]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509]
Arguments: [product#143466 ASC NULLS FIRST, plant#143467 ASC NULLS FIRST], false, 0
(634) Scan parquet
Output [6]: [internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515, systemId#143510]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(635) Filter
Input [6]: [internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515, systemId#143510]
Condition : (isnotnull(plant#143513.internalRefUUID) AND isnotnull(product#143512.internalRefUUID))
(636) Project
Output [6]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515]
Input [6]: [internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515, systemId#143510]
(637) Exchange
Input [6]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216717]
(638) BroadcastExchange
Input [6]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=217322]
(639) Scan parquet
Output [2]: [marketUnit#143516, distributionCenters#143522]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(640) Filter
Input [2]: [marketUnit#143516, distributionCenters#143522]
Condition : (((marketUnit#143516 <=> Daily_grocery) AND (size(distributionCenters#143522, true) > 0)) AND isnotnull(distributionCenters#143522))
(641) Project
Output [1]: [distributionCenters#143522]
Input [2]: [marketUnit#143516, distributionCenters#143522]
(642) Exchange
Input [1]: [distributionCenters#143522]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216721]
(643) Generate
Input [1]: [distributionCenters#143522]
Arguments: explode(distributionCenters#143522), false, [distributionCenters#143538]
(644) Filter
Input [1]: [distributionCenters#143538]
Condition : (((size(distributionCenters#143538.storageLocations, true) > 0) AND isnotnull(distributionCenters#143538.storageLocations)) AND isnotnull(distributionCenters#143538.internalRefUUID))
(645) Project
Output [2]: [distributionCenters#143538.internalRefUUID AS _extract_internalRefUUID#143960, distributionCenters#143538.storageLocations AS _extract_storageLocations#143961]
Input [1]: [distributionCenters#143538]
(646) Generate
Input [2]: [_extract_internalRefUUID#143960, _extract_storageLocations#143961]
Arguments: explode(_extract_storageLocations#143961), [_extract_internalRefUUID#143960], false, [storageLocations#143539]
(647) Project
Output [3]: [_extract_internalRefUUID#143960 AS plantUuid#143541, storageLocations#143539.id AS storageLocId#143542, storageLocations#143539.internalRefUUID AS storageLocUuid#143543]
Input [2]: [_extract_internalRefUUID#143960, storageLocations#143539]
(648) BroadcastExchange
Input [3]: [plantUuid#143541, storageLocId#143542, storageLocUuid#143543]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217318]
(649) Scan parquet
Output [2]: [product#143544, plant#143545]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(650) Filter
Input [2]: [product#143544, plant#143545]
Condition : isnotnull(plant#143545)
(651) Exchange
Input [2]: [product#143544, plant#143545]
Arguments: hashpartitioning(product#143544, plant#143545, 25), REPARTITION_BY_NUM, [plan_id=217030]
(652) Scan parquet
Output [4]: [plant#143550, product#143551, productionAspect#143553, systemId#143548]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(653) Project
Output [4]: [plant#143550.internalRefUUID AS _extract_internalRefUUID#144148, product#143551.internalRefUUID AS _extract_internalRefUUID#144149, productionAspect#143553.productMovementPlants.unitOfIssue.code AS _extract_code#144150, productionAspect#143553.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#144151]
Input [4]: [plant#143550, product#143551, productionAspect#143553, systemId#143548]
(654) Exchange
Input [4]: [_extract_internalRefUUID#144148, _extract_internalRefUUID#144149, _extract_code#144150, _extract_internalRefUUID#144151]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216733]
(655) Project
Output [4]: [_extract_code#144150, _extract_internalRefUUID#144151, _extract_internalRefUUID#144149, _extract_internalRefUUID#144148]
Input [4]: [_extract_internalRefUUID#144148, _extract_internalRefUUID#144149, _extract_code#144150, _extract_internalRefUUID#144151]
(656) BroadcastExchange
Input [4]: [_extract_code#144150, _extract_internalRefUUID#144151, _extract_internalRefUUID#144149, _extract_internalRefUUID#144148]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=217298]
(657) BroadcastHashJoin
Left keys [4]: [coalesce(product#143544, ), isnull(product#143544), coalesce(plant#143545, ), isnull(plant#143545)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144149, ), isnull(_extract_internalRefUUID#144149), coalesce(_extract_internalRefUUID#144148, ), isnull(_extract_internalRefUUID#144148)]
Join type: LeftOuter
Join condition: None
(658) Project
Output [4]: [product#143544, plant#143545, _extract_code#144150, _extract_internalRefUUID#144151]
Input [6]: [product#143544, plant#143545, _extract_code#144150, _extract_internalRefUUID#144151, _extract_internalRefUUID#144149, _extract_internalRefUUID#144148]
(659) Scan parquet
Output [2]: [internalUUID#143558, systemId#143557]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(660) Project
Output [1]: [internalUUID#143558]
Input [2]: [internalUUID#143558, systemId#143557]
(661) Exchange
Input [1]: [internalUUID#143558]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216739]
(662) BroadcastExchange
Input [1]: [internalUUID#143558]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=217302]
(663) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143545, ), isnull(plant#143545)]
Right keys [2]: [coalesce(internalUUID#143558, ), isnull(internalUUID#143558)]
Join type: LeftOuter
Join condition: None
(664) Project
Output [4]: [product#143544, plant#143545, _extract_code#144150, _extract_internalRefUUID#144151]
Input [5]: [product#143544, plant#143545, _extract_code#144150, _extract_internalRefUUID#144151, internalUUID#143558]
(665) Scan parquet
Output [4]: [internalUUID#143572, baseUnitOfMeasure#143576, unitOfMeasureConversions#143578, systemId#143571]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(666) Filter
Input [4]: [internalUUID#143572, baseUnitOfMeasure#143576, unitOfMeasureConversions#143578, systemId#143571]
Condition : isnotnull(internalUUID#143572)
(667) Project
Output [3]: [internalUUID#143572, baseUnitOfMeasure#143576, unitOfMeasureConversions#143578]
Input [4]: [internalUUID#143572, baseUnitOfMeasure#143576, unitOfMeasureConversions#143578, systemId#143571]
(668) Exchange
Input [3]: [internalUUID#143572, baseUnitOfMeasure#143576, unitOfMeasureConversions#143578]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216745]
(669) BroadcastExchange
Input [3]: [internalUUID#143572, baseUnitOfMeasure#143576, unitOfMeasureConversions#143578]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217306]
(670) BroadcastHashJoin
Left keys [1]: [product#143544]
Right keys [1]: [internalUUID#143572]
Join type: LeftOuter
Join condition: None
(671) Project
Output [2]: [plant#143545, filter(unitOfMeasureConversions#143578, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144150) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144151)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143576.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143576.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143583]
Input [7]: [product#143544, plant#143545, _extract_code#144150, _extract_internalRefUUID#144151, internalUUID#143572, baseUnitOfMeasure#143576, unitOfMeasureConversions#143578]
(672) Generate
Input [2]: [plant#143545, filteredUnitOfMeasureConversions#143583]
Arguments: explode(filteredUnitOfMeasureConversions#143583.quantityNumerator), [plant#143545, filteredUnitOfMeasureConversions#143583], true, [quantityNumerator#143584]
(673) Project
Output [2]: [plant#143545, filteredUnitOfMeasureConversions#143583.quantityDenominator AS _extract_quantityDenominator#143962]
Input [3]: [plant#143545, filteredUnitOfMeasureConversions#143583, quantityNumerator#143584]
(674) Generate
Input [2]: [plant#143545, _extract_quantityDenominator#143962]
Arguments: explode(_extract_quantityDenominator#143962), [plant#143545], true, [quantityDenominator#143585]
(675) Project
Output [1]: [plant#143545]
Input [2]: [plant#143545, quantityDenominator#143585]
(676) HashAggregate
Input [1]: [plant#143545]
Keys [1]: [plant#143545]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143545]
(677) Exchange
Input [1]: [plant#143545]
Arguments: hashpartitioning(plant#143545, 25), ENSURE_REQUIREMENTS, [plan_id=217315]
(678) HashAggregate
Input [1]: [plant#143545]
Keys [1]: [plant#143545]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143545]
(679) BroadcastHashJoin
Left keys [1]: [plantUuid#143541]
Right keys [1]: [plant#143545]
Join type: Inner
Join condition: None
(680) Project
Output [3]: [plantUuid#143541, storageLocId#143542, storageLocUuid#143543]
Input [4]: [plantUuid#143541, storageLocId#143542, storageLocUuid#143543, plant#143545]
(681) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143513.internalRefUUID, ), isnull(plant#143513.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#143541, ), isnull(plantUuid#143541)]
Join type: Inner
Join condition: None
(682) Generate
Input [9]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515, plantUuid#143541, storageLocId#143542, storageLocUuid#143543]
Arguments: explode(filter(stockQuantities#143515, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143543) AND (lambda x#143085.storageLocation.Id = storageLocId#143542)), lambda x#143085, false))), [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, plantUuid#143541], false, [stockQuantity#143588]
(683) ObjectHashAggregate
Input [7]: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, plantUuid#143541, stockQuantity#143588]
Keys [5]: [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510]
Functions [2]: [partial_first(calculationDateTime#143514, false), partial_collect_list(stockQuantity#143588, 0, 0)]
Aggregate Attributes [3]: [first#144834, valueSet#144835, buf#144836]
Results [8]: [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510, first#144837, valueSet#144838, buf#144839]
(684) ObjectHashAggregate
Input [8]: [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510, first#144837, valueSet#144838, buf#144839]
Keys [5]: [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510]
Functions [2]: [first(calculationDateTime#143514, false), collect_list(stockQuantity#143588, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#143514)()#143100, collect_list(stockQuantity#143588, 0, 0)#143101]
Results [4]: [product#143512, plant#143513, first(calculationDateTime#143514)()#143100 AS calculationDateTime#143589, collect_list(stockQuantity#143588, 0, 0)#143101 AS stockQuantities#143590]
(685) Filter
Input [4]: [product#143512, plant#143513, calculationDateTime#143589, stockQuantities#143590]
Condition : ((size(stockQuantities#143590, true) > 0) AND isnotnull(calculationDateTime#143589))
(686) Generate
Input [4]: [product#143512, plant#143513, calculationDateTime#143589, stockQuantities#143590]
Arguments: explode(stockQuantities#143590), [product#143512, plant#143513, calculationDateTime#143589], false, [stockQuantity#143591]
(687) Filter
Input [4]: [product#143512, plant#143513, calculationDateTime#143589, stockQuantity#143591]
Condition : (((isnotnull(stockQuantity#143591.specialStockIndicator.code) AND isnotnull(stockQuantity#143591.stockType.code)) AND (stockQuantity#143591.specialStockIndicator.code = )) AND (stockQuantity#143591.stockType.code = 01))
(688) Project
Output [5]: [plant#143513.internalRefUUID AS plantUuid#143593, product#143512.internalRefUUID AS productUuid#143595, calculationDateTime#143589, stockQuantity#143591.storagelocation.id AS storageLocId#143596, stockQuantity#143591.quantity.measure AS quantity#143598]
Input [4]: [product#143512, plant#143513, calculationDateTime#143589, stockQuantity#143591]
(689) Exchange
Input [5]: [plantUuid#143593, productUuid#143595, calculationDateTime#143589, storageLocId#143596, quantity#143598]
Arguments: hashpartitioning(productUuid#143595, plantUuid#143593, 25), ENSURE_REQUIREMENTS, [plan_id=217348]
(690) Sort
Input [5]: [plantUuid#143593, productUuid#143595, calculationDateTime#143589, storageLocId#143596, quantity#143598]
Arguments: [productUuid#143595 ASC NULLS FIRST, plantUuid#143593 ASC NULLS FIRST], false, 0
(691) Scan parquet
Output [3]: [product#143601, plant#143602, orderDateTime#143603]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(692) Filter
Input [3]: [product#143601, plant#143602, orderDateTime#143603]
Condition : ((isnotnull(orderDateTime#143603) AND isnotnull(plant#143602)) AND isnotnull(product#143601))
(693) Exchange
Input [3]: [product#143601, plant#143602, orderDateTime#143603]
Arguments: hashpartitioning(product#143601, plant#143602, 25), REPARTITION_BY_NUM, [plan_id=217053]
(694) Scan parquet
Output [4]: [plant#143607, product#143608, productionAspect#143610, systemId#143605]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(695) Project
Output [4]: [plant#143607.internalRefUUID AS _extract_internalRefUUID#144153, product#143608.internalRefUUID AS _extract_internalRefUUID#144152, productionAspect#143610.productMovementPlants.unitOfIssue.code AS _extract_code#144154, productionAspect#143610.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#144155]
Input [4]: [plant#143607, product#143608, productionAspect#143610, systemId#143605]
(696) Exchange
Input [4]: [_extract_internalRefUUID#144153, _extract_internalRefUUID#144152, _extract_code#144154, _extract_internalRefUUID#144155]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216770]
(697) Project
Output [4]: [_extract_code#144154, _extract_internalRefUUID#144155, _extract_internalRefUUID#144152, _extract_internalRefUUID#144153]
Input [4]: [_extract_internalRefUUID#144153, _extract_internalRefUUID#144152, _extract_code#144154, _extract_internalRefUUID#144155]
(698) BroadcastExchange
Input [4]: [_extract_code#144154, _extract_internalRefUUID#144155, _extract_internalRefUUID#144152, _extract_internalRefUUID#144153]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=217331]
(699) BroadcastHashJoin
Left keys [4]: [coalesce(product#143601, ), isnull(product#143601), coalesce(plant#143602, ), isnull(plant#143602)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144152, ), isnull(_extract_internalRefUUID#144152), coalesce(_extract_internalRefUUID#144153, ), isnull(_extract_internalRefUUID#144153)]
Join type: LeftOuter
Join condition: None
(700) Project
Output [5]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#144154, _extract_internalRefUUID#144155]
Input [7]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#144154, _extract_internalRefUUID#144155, _extract_internalRefUUID#144152, _extract_internalRefUUID#144153]
(701) Scan parquet
Output [2]: [internalUUID#143615, systemId#143614]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(702) Project
Output [1]: [internalUUID#143615]
Input [2]: [internalUUID#143615, systemId#143614]
(703) Exchange
Input [1]: [internalUUID#143615]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216776]
(704) BroadcastExchange
Input [1]: [internalUUID#143615]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=217335]
(705) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143602, ), isnull(plant#143602)]
Right keys [2]: [coalesce(internalUUID#143615, ), isnull(internalUUID#143615)]
Join type: LeftOuter
Join condition: None
(706) Project
Output [5]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#144154, _extract_internalRefUUID#144155]
Input [6]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#144154, _extract_internalRefUUID#144155, internalUUID#143615]
(707) Scan parquet
Output [4]: [internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635, systemId#143628]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(708) Filter
Input [4]: [internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635, systemId#143628]
Condition : isnotnull(internalUUID#143629)
(709) Project
Output [3]: [internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635]
Input [4]: [internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635, systemId#143628]
(710) Exchange
Input [3]: [internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216782]
(711) BroadcastExchange
Input [3]: [internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217339]
(712) BroadcastHashJoin
Left keys [1]: [product#143601]
Right keys [1]: [internalUUID#143629]
Join type: LeftOuter
Join condition: None
(713) Project
Output [4]: [product#143601, plant#143602, orderDateTime#143603, filter(unitOfMeasureConversions#143635, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144154) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144155)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143633.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143633.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143640]
Input [8]: [product#143601, plant#143602, orderDateTime#143603, _extract_code#144154, _extract_internalRefUUID#144155, internalUUID#143629, baseUnitOfMeasure#143633, unitOfMeasureConversions#143635]
(714) Generate
Input [4]: [product#143601, plant#143602, orderDateTime#143603, filteredUnitOfMeasureConversions#143640]
Arguments: explode(filteredUnitOfMeasureConversions#143640.quantityNumerator), [product#143601, plant#143602, orderDateTime#143603, filteredUnitOfMeasureConversions#143640], true, [quantityNumerator#143641]
(715) Project
Output [4]: [product#143601, plant#143602, orderDateTime#143603, filteredUnitOfMeasureConversions#143640.quantityDenominator AS _extract_quantityDenominator#143966]
Input [5]: [product#143601, plant#143602, orderDateTime#143603, filteredUnitOfMeasureConversions#143640, quantityNumerator#143641]
(716) Generate
Input [4]: [product#143601, plant#143602, orderDateTime#143603, _extract_quantityDenominator#143966]
Arguments: explode(_extract_quantityDenominator#143966), [product#143601, plant#143602, orderDateTime#143603], true, [quantityDenominator#143642]
(717) Project
Output [3]: [product#143601, plant#143602, orderDateTime#143603]
Input [4]: [product#143601, plant#143602, orderDateTime#143603, quantityDenominator#143642]
(718) Sort
Input [3]: [product#143601, plant#143602, orderDateTime#143603]
Arguments: [product#143601 ASC NULLS FIRST, plant#143602 ASC NULLS FIRST], false, 0
(719) SortMergeJoin
Left keys [2]: [productUuid#143595, plantUuid#143593]
Right keys [2]: [product#143601, plant#143602]
Join type: Inner
Join condition: (calculationDateTime#143589 <= orderDateTime#143603)
(720) Project
Output [5]: [plantUuid#143593 AS plant#143645, productUuid#143595 AS product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598]
Input [8]: [plantUuid#143593, productUuid#143595, calculationDateTime#143589, storageLocId#143596, quantity#143598, product#143601, plant#143602, orderDateTime#143603]
(721) Exchange
Input [5]: [plant#143645, product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598]
Arguments: hashpartitioning(coalesce(plant#143645, ), isnull(plant#143645), coalesce(product#143646, ), isnull(product#143646), coalesce(storageLocId#143596, ), isnull(storageLocId#143596), coalesce(calculationDateTime#143589, 1970-01-01 00:00:00), isnull(calculationDateTime#143589), 25), ENSURE_REQUIREMENTS, [plan_id=217412]
(722) Sort
Input [5]: [plant#143645, product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598]
Arguments: [coalesce(plant#143645, ) ASC NULLS FIRST, isnull(plant#143645) ASC NULLS FIRST, coalesce(product#143646, ) ASC NULLS FIRST, isnull(product#143646) ASC NULLS FIRST, coalesce(storageLocId#143596, ) ASC NULLS FIRST, isnull(storageLocId#143596) ASC NULLS FIRST, coalesce(calculationDateTime#143589, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#143589) ASC NULLS FIRST], false, 0
(723) Scan parquet
Output [6]: [internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652, systemId#143647]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(724) Filter
Input [6]: [internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652, systemId#143647]
Condition : (isnotnull(plant#143650.internalRefUUID) AND isnotnull(product#143649.internalRefUUID))
(725) Project
Output [6]: [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652]
Input [6]: [internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652, systemId#143647]
(726) Exchange
Input [6]: [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216794]
(727) BroadcastExchange
Input [6]: [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=217377]
(728) Scan parquet
Output [2]: [marketUnit#143653, distributionCenters#143659]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(729) Filter
Input [2]: [marketUnit#143653, distributionCenters#143659]
Condition : (((marketUnit#143653 <=> Daily_grocery) AND (size(distributionCenters#143659, true) > 0)) AND isnotnull(distributionCenters#143659))
(730) Project
Output [1]: [distributionCenters#143659]
Input [2]: [marketUnit#143653, distributionCenters#143659]
(731) Exchange
Input [1]: [distributionCenters#143659]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216798]
(732) Generate
Input [1]: [distributionCenters#143659]
Arguments: explode(distributionCenters#143659), false, [distributionCenters#143675]
(733) Filter
Input [1]: [distributionCenters#143675]
Condition : (((size(distributionCenters#143675.storageLocations, true) > 0) AND isnotnull(distributionCenters#143675.storageLocations)) AND isnotnull(distributionCenters#143675.internalRefUUID))
(734) Project
Output [2]: [distributionCenters#143675.internalRefUUID AS _extract_internalRefUUID#143970, distributionCenters#143675.storageLocations AS _extract_storageLocations#143971]
Input [1]: [distributionCenters#143675]
(735) Generate
Input [2]: [_extract_internalRefUUID#143970, _extract_storageLocations#143971]
Arguments: explode(_extract_storageLocations#143971), [_extract_internalRefUUID#143970], false, [storageLocations#143676]
(736) Project
Output [3]: [_extract_internalRefUUID#143970 AS plantUuid#143678, storageLocations#143676.id AS storageLocId#143679, storageLocations#143676.internalRefUUID AS storageLocUuid#143680]
Input [2]: [_extract_internalRefUUID#143970, storageLocations#143676]
(737) BroadcastExchange
Input [3]: [plantUuid#143678, storageLocId#143679, storageLocUuid#143680]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217373]
(738) Scan parquet
Output [2]: [product#143681, plant#143682]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(739) Filter
Input [2]: [product#143681, plant#143682]
Condition : isnotnull(plant#143682)
(740) Exchange
Input [2]: [product#143681, plant#143682]
Arguments: hashpartitioning(product#143681, plant#143682, 25), REPARTITION_BY_NUM, [plan_id=217066]
(741) Scan parquet
Output [4]: [plant#143687, product#143688, productionAspect#143690, systemId#143685]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(742) Project
Output [4]: [plant#143687.internalRefUUID AS _extract_internalRefUUID#144159, product#143688.internalRefUUID AS _extract_internalRefUUID#144156, productionAspect#143690.productMovementPlants.unitOfIssue.code AS _extract_code#144157, productionAspect#143690.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#144158]
Input [4]: [plant#143687, product#143688, productionAspect#143690, systemId#143685]
(743) Exchange
Input [4]: [_extract_internalRefUUID#144159, _extract_internalRefUUID#144156, _extract_code#144157, _extract_internalRefUUID#144158]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216810]
(744) Project
Output [4]: [_extract_code#144157, _extract_internalRefUUID#144158, _extract_internalRefUUID#144156, _extract_internalRefUUID#144159]
Input [4]: [_extract_internalRefUUID#144159, _extract_internalRefUUID#144156, _extract_code#144157, _extract_internalRefUUID#144158]
(745) BroadcastExchange
Input [4]: [_extract_code#144157, _extract_internalRefUUID#144158, _extract_internalRefUUID#144156, _extract_internalRefUUID#144159]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=217353]
(746) BroadcastHashJoin
Left keys [4]: [coalesce(product#143681, ), isnull(product#143681), coalesce(plant#143682, ), isnull(plant#143682)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144156, ), isnull(_extract_internalRefUUID#144156), coalesce(_extract_internalRefUUID#144159, ), isnull(_extract_internalRefUUID#144159)]
Join type: LeftOuter
Join condition: None
(747) Project
Output [4]: [product#143681, plant#143682, _extract_code#144157, _extract_internalRefUUID#144158]
Input [6]: [product#143681, plant#143682, _extract_code#144157, _extract_internalRefUUID#144158, _extract_internalRefUUID#144156, _extract_internalRefUUID#144159]
(748) Scan parquet
Output [2]: [internalUUID#143695, systemId#143694]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(749) Project
Output [1]: [internalUUID#143695]
Input [2]: [internalUUID#143695, systemId#143694]
(750) Exchange
Input [1]: [internalUUID#143695]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216816]
(751) BroadcastExchange
Input [1]: [internalUUID#143695]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=217357]
(752) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143682, ), isnull(plant#143682)]
Right keys [2]: [coalesce(internalUUID#143695, ), isnull(internalUUID#143695)]
Join type: LeftOuter
Join condition: None
(753) Project
Output [4]: [product#143681, plant#143682, _extract_code#144157, _extract_internalRefUUID#144158]
Input [5]: [product#143681, plant#143682, _extract_code#144157, _extract_internalRefUUID#144158, internalUUID#143695]
(754) Scan parquet
Output [4]: [internalUUID#143709, baseUnitOfMeasure#143713, unitOfMeasureConversions#143715, systemId#143708]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(755) Filter
Input [4]: [internalUUID#143709, baseUnitOfMeasure#143713, unitOfMeasureConversions#143715, systemId#143708]
Condition : isnotnull(internalUUID#143709)
(756) Project
Output [3]: [internalUUID#143709, baseUnitOfMeasure#143713, unitOfMeasureConversions#143715]
Input [4]: [internalUUID#143709, baseUnitOfMeasure#143713, unitOfMeasureConversions#143715, systemId#143708]
(757) Exchange
Input [3]: [internalUUID#143709, baseUnitOfMeasure#143713, unitOfMeasureConversions#143715]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216822]
(758) BroadcastExchange
Input [3]: [internalUUID#143709, baseUnitOfMeasure#143713, unitOfMeasureConversions#143715]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217361]
(759) BroadcastHashJoin
Left keys [1]: [product#143681]
Right keys [1]: [internalUUID#143709]
Join type: LeftOuter
Join condition: None
(760) Project
Output [2]: [plant#143682, filter(unitOfMeasureConversions#143715, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144157) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144158)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143713.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143713.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143720]
Input [7]: [product#143681, plant#143682, _extract_code#144157, _extract_internalRefUUID#144158, internalUUID#143709, baseUnitOfMeasure#143713, unitOfMeasureConversions#143715]
(761) Generate
Input [2]: [plant#143682, filteredUnitOfMeasureConversions#143720]
Arguments: explode(filteredUnitOfMeasureConversions#143720.quantityNumerator), [plant#143682, filteredUnitOfMeasureConversions#143720], true, [quantityNumerator#143721]
(762) Project
Output [2]: [plant#143682, filteredUnitOfMeasureConversions#143720.quantityDenominator AS _extract_quantityDenominator#143972]
Input [3]: [plant#143682, filteredUnitOfMeasureConversions#143720, quantityNumerator#143721]
(763) Generate
Input [2]: [plant#143682, _extract_quantityDenominator#143972]
Arguments: explode(_extract_quantityDenominator#143972), [plant#143682], true, [quantityDenominator#143722]
(764) Project
Output [1]: [plant#143682]
Input [2]: [plant#143682, quantityDenominator#143722]
(765) HashAggregate
Input [1]: [plant#143682]
Keys [1]: [plant#143682]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143682]
(766) Exchange
Input [1]: [plant#143682]
Arguments: hashpartitioning(plant#143682, 25), ENSURE_REQUIREMENTS, [plan_id=217370]
(767) HashAggregate
Input [1]: [plant#143682]
Keys [1]: [plant#143682]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143682]
(768) BroadcastHashJoin
Left keys [1]: [plantUuid#143678]
Right keys [1]: [plant#143682]
Join type: Inner
Join condition: None
(769) Project
Output [3]: [plantUuid#143678, storageLocId#143679, storageLocUuid#143680]
Input [4]: [plantUuid#143678, storageLocId#143679, storageLocUuid#143680, plant#143682]
(770) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143650.internalRefUUID, ), isnull(plant#143650.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#143678, ), isnull(plantUuid#143678)]
Join type: Inner
Join condition: None
(771) Generate
Input [9]: [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652, plantUuid#143678, storageLocId#143679, storageLocUuid#143680]
Arguments: explode(filter(stockQuantities#143652, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143680) AND (lambda x#143085.storageLocation.Id = storageLocId#143679)), lambda x#143085, false))), [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, plantUuid#143678], false, [stockQuantity#143725]
(772) ObjectHashAggregate
Input [7]: [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, plantUuid#143678, stockQuantity#143725]
Keys [5]: [plantUuid#143678, internalUUID#143648, plant#143650, product#143649, systemId#143647]
Functions [2]: [partial_first(calculationDateTime#143651, false), partial_collect_list(stockQuantity#143725, 0, 0)]
Aggregate Attributes [3]: [first#144842, valueSet#144843, buf#144844]
Results [8]: [plantUuid#143678, internalUUID#143648, plant#143650, product#143649, systemId#143647, first#144845, valueSet#144846, buf#144847]
(773) ObjectHashAggregate
Input [8]: [plantUuid#143678, internalUUID#143648, plant#143650, product#143649, systemId#143647, first#144845, valueSet#144846, buf#144847]
Keys [5]: [plantUuid#143678, internalUUID#143648, plant#143650, product#143649, systemId#143647]
Functions [2]: [first(calculationDateTime#143651, false), collect_list(stockQuantity#143725, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#143651)()#143100, collect_list(stockQuantity#143725, 0, 0)#143101]
Results [4]: [product#143649, plant#143650, first(calculationDateTime#143651)()#143100 AS calculationDateTime#143726, collect_list(stockQuantity#143725, 0, 0)#143101 AS stockQuantities#143727]
(774) Filter
Input [4]: [product#143649, plant#143650, calculationDateTime#143726, stockQuantities#143727]
Condition : ((size(stockQuantities#143727, true) > 0) AND isnotnull(calculationDateTime#143726))
(775) Generate
Input [4]: [product#143649, plant#143650, calculationDateTime#143726, stockQuantities#143727]
Arguments: explode(stockQuantities#143727), [product#143649, plant#143650, calculationDateTime#143726], false, [stockQuantity#143728]
(776) Filter
Input [4]: [product#143649, plant#143650, calculationDateTime#143726, stockQuantity#143728]
Condition : (((isnotnull(stockQuantity#143728.specialStockIndicator.code) AND isnotnull(stockQuantity#143728.stockType.code)) AND (stockQuantity#143728.specialStockIndicator.code = )) AND (stockQuantity#143728.stockType.code = 01))
(777) Project
Output [4]: [plant#143650.internalRefUUID AS plantUuid#143730, product#143649.internalRefUUID AS productUuid#143732, calculationDateTime#143726, stockQuantity#143728.storagelocation.id AS storageLocId#143733]
Input [4]: [product#143649, plant#143650, calculationDateTime#143726, stockQuantity#143728]
(778) Exchange
Input [4]: [plantUuid#143730, productUuid#143732, calculationDateTime#143726, storageLocId#143733]
Arguments: hashpartitioning(productUuid#143732, plantUuid#143730, 25), ENSURE_REQUIREMENTS, [plan_id=217403]
(779) Sort
Input [4]: [plantUuid#143730, productUuid#143732, calculationDateTime#143726, storageLocId#143733]
Arguments: [productUuid#143732 ASC NULLS FIRST, plantUuid#143730 ASC NULLS FIRST], false, 0
(780) Scan parquet
Output [3]: [product#143738, plant#143739, orderDateTime#143740]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(781) Filter
Input [3]: [product#143738, plant#143739, orderDateTime#143740]
Condition : ((isnotnull(orderDateTime#143740) AND isnotnull(plant#143739)) AND isnotnull(product#143738))
(782) Exchange
Input [3]: [product#143738, plant#143739, orderDateTime#143740]
Arguments: hashpartitioning(product#143738, plant#143739, 25), REPARTITION_BY_NUM, [plan_id=217089]
(783) Scan parquet
Output [4]: [plant#143744, product#143745, productionAspect#143747, systemId#143742]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(784) Project
Output [4]: [plant#143744.internalRefUUID AS _extract_internalRefUUID#144161, product#143745.internalRefUUID AS _extract_internalRefUUID#144160, productionAspect#143747.productMovementPlants.unitOfIssue.code AS _extract_code#144162, productionAspect#143747.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#144163]
Input [4]: [plant#143744, product#143745, productionAspect#143747, systemId#143742]
(785) Exchange
Input [4]: [_extract_internalRefUUID#144161, _extract_internalRefUUID#144160, _extract_code#144162, _extract_internalRefUUID#144163]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216847]
(786) Project
Output [4]: [_extract_code#144162, _extract_internalRefUUID#144163, _extract_internalRefUUID#144160, _extract_internalRefUUID#144161]
Input [4]: [_extract_internalRefUUID#144161, _extract_internalRefUUID#144160, _extract_code#144162, _extract_internalRefUUID#144163]
(787) BroadcastExchange
Input [4]: [_extract_code#144162, _extract_internalRefUUID#144163, _extract_internalRefUUID#144160, _extract_internalRefUUID#144161]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=217386]
(788) BroadcastHashJoin
Left keys [4]: [coalesce(product#143738, ), isnull(product#143738), coalesce(plant#143739, ), isnull(plant#143739)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144160, ), isnull(_extract_internalRefUUID#144160), coalesce(_extract_internalRefUUID#144161, ), isnull(_extract_internalRefUUID#144161)]
Join type: LeftOuter
Join condition: None
(789) Project
Output [5]: [product#143738, plant#143739, orderDateTime#143740, _extract_code#144162, _extract_internalRefUUID#144163]
Input [7]: [product#143738, plant#143739, orderDateTime#143740, _extract_code#144162, _extract_internalRefUUID#144163, _extract_internalRefUUID#144160, _extract_internalRefUUID#144161]
(790) Scan parquet
Output [2]: [internalUUID#143752, systemId#143751]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(791) Project
Output [1]: [internalUUID#143752]
Input [2]: [internalUUID#143752, systemId#143751]
(792) Exchange
Input [1]: [internalUUID#143752]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216853]
(793) BroadcastExchange
Input [1]: [internalUUID#143752]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=217390]
(794) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143739, ), isnull(plant#143739)]
Right keys [2]: [coalesce(internalUUID#143752, ), isnull(internalUUID#143752)]
Join type: LeftOuter
Join condition: None
(795) Project
Output [5]: [product#143738, plant#143739, orderDateTime#143740, _extract_code#144162, _extract_internalRefUUID#144163]
Input [6]: [product#143738, plant#143739, orderDateTime#143740, _extract_code#144162, _extract_internalRefUUID#144163, internalUUID#143752]
(796) Scan parquet
Output [4]: [internalUUID#143766, baseUnitOfMeasure#143770, unitOfMeasureConversions#143772, systemId#143765]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(797) Filter
Input [4]: [internalUUID#143766, baseUnitOfMeasure#143770, unitOfMeasureConversions#143772, systemId#143765]
Condition : isnotnull(internalUUID#143766)
(798) Project
Output [3]: [internalUUID#143766, baseUnitOfMeasure#143770, unitOfMeasureConversions#143772]
Input [4]: [internalUUID#143766, baseUnitOfMeasure#143770, unitOfMeasureConversions#143772, systemId#143765]
(799) Exchange
Input [3]: [internalUUID#143766, baseUnitOfMeasure#143770, unitOfMeasureConversions#143772]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216859]
(800) BroadcastExchange
Input [3]: [internalUUID#143766, baseUnitOfMeasure#143770, unitOfMeasureConversions#143772]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217394]
(801) BroadcastHashJoin
Left keys [1]: [product#143738]
Right keys [1]: [internalUUID#143766]
Join type: LeftOuter
Join condition: None
(802) Project
Output [4]: [product#143738, plant#143739, orderDateTime#143740, filter(unitOfMeasureConversions#143772, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144162) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144163)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143770.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143770.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143777]
Input [8]: [product#143738, plant#143739, orderDateTime#143740, _extract_code#144162, _extract_internalRefUUID#144163, internalUUID#143766, baseUnitOfMeasure#143770, unitOfMeasureConversions#143772]
(803) Generate
Input [4]: [product#143738, plant#143739, orderDateTime#143740, filteredUnitOfMeasureConversions#143777]
Arguments: explode(filteredUnitOfMeasureConversions#143777.quantityNumerator), [product#143738, plant#143739, orderDateTime#143740, filteredUnitOfMeasureConversions#143777], true, [quantityNumerator#143778]
(804) Project
Output [4]: [product#143738, plant#143739, orderDateTime#143740, filteredUnitOfMeasureConversions#143777.quantityDenominator AS _extract_quantityDenominator#143976]
Input [5]: [product#143738, plant#143739, orderDateTime#143740, filteredUnitOfMeasureConversions#143777, quantityNumerator#143778]
(805) Generate
Input [4]: [product#143738, plant#143739, orderDateTime#143740, _extract_quantityDenominator#143976]
Arguments: explode(_extract_quantityDenominator#143976), [product#143738, plant#143739, orderDateTime#143740], true, [quantityDenominator#143779]
(806) Project
Output [3]: [product#143738, plant#143739, orderDateTime#143740]
Input [4]: [product#143738, plant#143739, orderDateTime#143740, quantityDenominator#143779]
(807) Sort
Input [3]: [product#143738, plant#143739, orderDateTime#143740]
Arguments: [product#143738 ASC NULLS FIRST, plant#143739 ASC NULLS FIRST], false, 0
(808) SortMergeJoin
Left keys [2]: [productUuid#143732, plantUuid#143730]
Right keys [2]: [product#143738, plant#143739]
Join type: Inner
Join condition: (calculationDateTime#143726 <= orderDateTime#143740)
(809) Project
Output [4]: [plantUuid#143730 AS plant#143782, productUuid#143732 AS product#143783, storageLocId#143733, calculationDateTime#143726]
Input [7]: [plantUuid#143730, productUuid#143732, calculationDateTime#143726, storageLocId#143733, product#143738, plant#143739, orderDateTime#143740]
(810) HashAggregate
Input [4]: [plant#143782, product#143783, storageLocId#143733, calculationDateTime#143726]
Keys [3]: [plant#143782, product#143783, storageLocId#143733]
Functions [1]: [partial_max(calculationDateTime#143726)]
Aggregate Attributes [1]: [max#144840]
Results [4]: [plant#143782, product#143783, storageLocId#143733, max#144841]
(811) HashAggregate
Input [4]: [plant#143782, product#143783, storageLocId#143733, max#144841]
Keys [3]: [plant#143782, product#143783, storageLocId#143733]
Functions [1]: [max(calculationDateTime#143726)]
Aggregate Attributes [1]: [max(calculationDateTime#143726)#143178]
Results [4]: [plant#143782, product#143783, storageLocId#143733, max(calculationDateTime#143726)#143178 AS max_calc_datetime#143784]
(812) Exchange
Input [4]: [plant#143782, product#143783, storageLocId#143733, max_calc_datetime#143784]
Arguments: hashpartitioning(coalesce(plant#143782, ), isnull(plant#143782), coalesce(product#143783, ), isnull(product#143783), coalesce(storageLocId#143733, ), isnull(storageLocId#143733), coalesce(max_calc_datetime#143784, 1970-01-01 00:00:00), isnull(max_calc_datetime#143784), 25), ENSURE_REQUIREMENTS, [plan_id=217413]
(813) Sort
Input [4]: [plant#143782, product#143783, storageLocId#143733, max_calc_datetime#143784]
Arguments: [coalesce(plant#143782, ) ASC NULLS FIRST, isnull(plant#143782) ASC NULLS FIRST, coalesce(product#143783, ) ASC NULLS FIRST, isnull(product#143783) ASC NULLS FIRST, coalesce(storageLocId#143733, ) ASC NULLS FIRST, isnull(storageLocId#143733) ASC NULLS FIRST, coalesce(max_calc_datetime#143784, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#143784) ASC NULLS FIRST], false, 0
(814) SortMergeJoin
Left keys [8]: [coalesce(plant#143645, ), isnull(plant#143645), coalesce(product#143646, ), isnull(product#143646), coalesce(storageLocId#143596, ), isnull(storageLocId#143596), coalesce(calculationDateTime#143589, 1970-01-01 00:00:00), isnull(calculationDateTime#143589)]
Right keys [8]: [coalesce(plant#143782, ), isnull(plant#143782), coalesce(product#143783, ), isnull(product#143783), coalesce(storageLocId#143733, ), isnull(storageLocId#143733), coalesce(max_calc_datetime#143784, 1970-01-01 00:00:00), isnull(max_calc_datetime#143784)]
Join type: Inner
Join condition: None
(815) Project
Output [4]: [plant#143645, product#143646, calculationDateTime#143589, quantity#143598]
Input [9]: [plant#143645, product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598, plant#143782, product#143783, storageLocId#143733, max_calc_datetime#143784]
(816) HashAggregate
Input [4]: [plant#143645, product#143646, calculationDateTime#143589, quantity#143598]
Keys [2]: [product#143646, plant#143645]
Functions [2]: [partial_min(calculationDateTime#143589), partial_sum(quantity#143598)]
Aggregate Attributes [2]: [min#144830, sum#144831]
Results [4]: [product#143646, plant#143645, min#144832, sum#144833]
(817) Exchange
Input [4]: [product#143646, plant#143645, min#144832, sum#144833]
Arguments: hashpartitioning(product#143646, plant#143645, 25), ENSURE_REQUIREMENTS, [plan_id=217420]
(818) HashAggregate
Input [4]: [product#143646, plant#143645, min#144832, sum#144833]
Keys [2]: [product#143646, plant#143645]
Functions [2]: [min(calculationDateTime#143589), sum(quantity#143598)]
Aggregate Attributes [2]: [min(calculationDateTime#143589)#143334, sum(quantity#143598)#143333]
Results [4]: [product#143646, plant#143645, min(calculationDateTime#143589)#143334 AS minCalculationDateTime#143786, round(sum(quantity#143598)#143333, 0) AS roundedQuantitySum#143787]
(819) Sort
Input [4]: [product#143646, plant#143645, minCalculationDateTime#143786, roundedQuantitySum#143787]
Arguments: [product#143646 ASC NULLS FIRST, plant#143645 ASC NULLS FIRST], false, 0
(820) SortMergeJoin
Left keys [2]: [product#143466, plant#143467]
Right keys [2]: [product#143646, plant#143645]
Join type: LeftOuter
Join condition: None
(821) Project
Output [8]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, CASE WHEN isnotnull(minCalculationDateTime#143786) THEN minCalculationDateTime#143786 ELSE orderDateTime#143468 END AS stockDatetime#143788, CASE WHEN isnotnull(roundedQuantitySum#143787) THEN array(roundedQuantitySum#143787) ELSE [0.0] END AS stockBatchQuantities#143789]
Input [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, product#143646, plant#143645, minCalculationDateTime#143786, roundedQuantitySum#143787]
(822) Filter
Input [9]: [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
Condition : (isnotnull(product#143387) AND isnotnull(plant#143388))
(823) BroadcastExchange
Input [9]: [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=217429]
(824) BroadcastHashJoin
Left keys [2]: [product#143466, plant#143467]
Right keys [2]: [product#143387, plant#143388]
Join type: LeftOuter
Join condition: None
(825) Project
Output [9]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, CASE WHEN isnotnull(product#143387) THEN struct(demandChannel, demandChannel#143389, demandStream, demandStream#143390, considerVariance, considerVariance#143391, demandTimeBuckets, demandTimeBuckets#143392, demandPointInTimeStart, demandPointInTimeStart#143393, demandPointInTimeEnd, demandPointInTimeEnd#143394, demandPointInTime, demandPointInTime#143395) END AS rawDemands#143412]
Input [17]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
(826) ObjectHashAggregate
Input [9]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, rawDemands#143412]
Keys [9]: [product#143466, plant#143467, orderDateTime#143468, knownfloatingpointnormalized(if (isnull(productPlant#143478)) null else named_struct(systemId, productPlant#143478.systemId, internalUUID, productPlant#143478.internalUUID, plant, productPlant#143478.plant, product, productPlant#143478.product, blockedForReplenishmentStartingFrom, productPlant#143478.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#143478.productionAspect)) null else named_struct(productMovementPlants, productPlant#143478.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#143478.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#143478.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#143478.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#143478.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#143478.productionAspect.productPlanningPlants.minimumLotSize)), minimumSafetyStock, knownfloatingpointnormalized(normalizenanandzero(productPlant#143478.productionAspect.productPlanningPlants.minimumSafetyStock)), logisticalRoundingProfile, productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#143478.salesPlant, listing, productPlant#143478.listing)) AS productPlant#143478, timezonecode#143492, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#143509)) AS outboundUnit#143509, stockDatetime#143788, knownfloatingpointnormalized(transform(stockBatchQuantities#143789, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#144827)), lambda arg#144827, false))) AS stockBatchQuantities#143789, [7226582400000000] AS [7226582400000000]#144826]
Functions [1]: [partial_collect_list(rawDemands#143412, 0, 0)]
Aggregate Attributes [1]: [buf#144828]
Results [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000]#144826, buf#144829]
(827) ObjectHashAggregate
Input [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000]#144826, buf#144829]
Keys [9]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000]#144826]
Functions [1]: [collect_list(rawDemands#143412, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#143412, 0, 0)#143431]
Results [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#143790, collect_list(rawDemands#143412, 0, 0)#143431 AS rawDemands#143413]
(828) DeserializeToObject
Input [10]: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, stockBatchShelfLifeEndDatetimes#143790, rawDemands#143413]
Arguments: createexternalrow(invoke(product#143466.toString()), invoke(plant#143467.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#143468)), if (isnull(productPlant#143478)) null else createexternalrow(invoke(productPlant#143478.systemId.toString()), invoke(productPlant#143478.internalUUID.toString()), if (isnull(productPlant#143478.plant)) null else createexternalrow(invoke(productPlant#143478.plant.internalRefUUID.toString()), invoke(productPlant#143478.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#143478.product)) null else createexternalrow(invoke(productPlant#143478.product.internalRefUUID.toString()), invoke(productPlant#143478.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#143478.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#143478.productionAspect)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#143478.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#143478.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(minimumSafetyStock,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#143478.salesPlant)) null else createexternalrow(if (isnull(productPlant#143478.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#143478.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#143478.salesPlant.loadingGroup.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#143478.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#143492.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#143509)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#143788)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#143789, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#143790, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4), createexternalrow(invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandChannel.toString()), invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandVariance)), StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandTimeBuckets, Some(class scala.collection.mutable.ArraySeq)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandPointInTimeStart)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandVariance)), StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandPointInTime, Some(class scala.collection.mutable.ArraySeq)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)), rawDemands#143413, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#143452: org.apache.spark.sql.Row
(829) MapElements
Input [1]: [obj#143452]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@2d5ca6d1, obj#143457: org.apache.spark.sql.Row
(830) SerializeFromObject
Input [1]: [obj#143457]
Arguments: [if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(0))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 0, product), StringType, ObjectType(class java.lang.String)))) AS product#143462, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(1))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 1, plant), StringType, ObjectType(class java.lang.String)))) AS plant#143463]
(831) Exchange
Input [2]: [product#143462, plant#143463]
Arguments: hashpartitioning(coalesce(plant#143463, ), isnull(plant#143463), coalesce(product#143462, ), isnull(product#143462), 25), ENSURE_REQUIREMENTS, [plan_id=217440]
(832) Sort
Input [2]: [product#143462, plant#143463]
Arguments: [coalesce(plant#143463, ) ASC NULLS FIRST, isnull(plant#143463) ASC NULLS FIRST, coalesce(product#143462, ) ASC NULLS FIRST, isnull(product#143462) ASC NULLS FIRST], false, 0
(833) SortMergeJoin
Left keys [4]: [coalesce(plant#142981, ), isnull(plant#142981), coalesce(product#142980, ), isnull(product#142980)]
Right keys [4]: [coalesce(plant#143463, ), isnull(plant#143463), coalesce(product#143462, ), isnull(product#143462)]
Join type: LeftOuter
Join condition: None
(834) Project
Output [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Input [6]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384, product#143462, plant#143463]
(835) Exchange
Input [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: hashpartitioning(plant#142981, 25), ENSURE_REQUIREMENTS, [plan_id=217470]
(836) Sort
Input [4]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384]
Arguments: [plant#142981 ASC NULLS FIRST], false, 0
(837) Scan parquet
Output [2]: [marketUnit#143855, distributionCenters#143861]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Daily_grocery), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(838) Filter
Input [2]: [marketUnit#143855, distributionCenters#143861]
Condition : (((marketUnit#143855 <=> Daily_grocery) AND (size(distributionCenters#143861, true) > 0)) AND isnotnull(distributionCenters#143861))
(839) Project
Output [1]: [distributionCenters#143861]
Input [2]: [marketUnit#143855, distributionCenters#143861]
(840) Exchange
Input [1]: [distributionCenters#143861]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216891]
(841) Generate
Input [1]: [distributionCenters#143861]
Arguments: explode(distributionCenters#143861), false, [distributionCenters#143877]
(842) Filter
Input [1]: [distributionCenters#143877]
Condition : (((size(distributionCenters#143877.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#143877.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#143877.internalRefUUID))
(843) Project
Output [2]: [distributionCenters#143877.internalRefUUID AS _extract_internalRefUUID#143980, distributionCenters#143877.storageLocations.internalRefUUID AS _extract_internalRefUUID#144165]
Input [1]: [distributionCenters#143877]
(844) Generate
Input [2]: [_extract_internalRefUUID#143980, _extract_internalRefUUID#144165]
Arguments: explode(_extract_internalRefUUID#144165), [_extract_internalRefUUID#143980], false, [storageLocations#143878]
(845) Filter
Input [2]: [_extract_internalRefUUID#143980, storageLocations#143878]
Condition : isnotnull(storageLocations#143878)
(846) Project
Output [2]: [_extract_internalRefUUID#143980 AS plantUuid#143880, storageLocations#143878 AS storageLocUuid#143882]
Input [2]: [_extract_internalRefUUID#143980, storageLocations#143878]
(847) BroadcastExchange
Input [2]: [plantUuid#143880, storageLocUuid#143882]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217465]
(848) Scan parquet
Output [2]: [product#143883, plant#143884]
Batched: true
Location: InMemoryFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000002108/shardId=0_1_10000002108]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(849) Filter
Input [2]: [product#143883, plant#143884]
Condition : isnotnull(plant#143884)
(850) Exchange
Input [2]: [product#143883, plant#143884]
Arguments: hashpartitioning(product#143883, plant#143884, 25), REPARTITION_BY_NUM, [plan_id=217119]
(851) Scan parquet
Output [4]: [plant#143889, product#143890, productionAspect#143892, systemId#143887]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(852) Project
Output [4]: [plant#143889.internalRefUUID AS _extract_internalRefUUID#144166, product#143890.internalRefUUID AS _extract_internalRefUUID#144167, productionAspect#143892.productMovementPlants.unitOfIssue.code AS _extract_code#144168, productionAspect#143892.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#144169]
Input [4]: [plant#143889, product#143890, productionAspect#143892, systemId#143887]
(853) Exchange
Input [4]: [_extract_internalRefUUID#144166, _extract_internalRefUUID#144167, _extract_code#144168, _extract_internalRefUUID#144169]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216904]
(854) Project
Output [4]: [_extract_code#144168, _extract_internalRefUUID#144169, _extract_internalRefUUID#144167, _extract_internalRefUUID#144166]
Input [4]: [_extract_internalRefUUID#144166, _extract_internalRefUUID#144167, _extract_code#144168, _extract_internalRefUUID#144169]
(855) BroadcastExchange
Input [4]: [_extract_code#144168, _extract_internalRefUUID#144169, _extract_internalRefUUID#144167, _extract_internalRefUUID#144166]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=217445]
(856) BroadcastHashJoin
Left keys [4]: [coalesce(product#143883, ), isnull(product#143883), coalesce(plant#143884, ), isnull(plant#143884)]
Right keys [4]: [coalesce(_extract_internalRefUUID#144167, ), isnull(_extract_internalRefUUID#144167), coalesce(_extract_internalRefUUID#144166, ), isnull(_extract_internalRefUUID#144166)]
Join type: LeftOuter
Join condition: None
(857) Project
Output [4]: [product#143883, plant#143884, _extract_code#144168, _extract_internalRefUUID#144169]
Input [6]: [product#143883, plant#143884, _extract_code#144168, _extract_internalRefUUID#144169, _extract_internalRefUUID#144167, _extract_internalRefUUID#144166]
(858) Scan parquet
Output [2]: [internalUUID#143897, systemId#143896]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(859) Project
Output [1]: [internalUUID#143897]
Input [2]: [internalUUID#143897, systemId#143896]
(860) Exchange
Input [1]: [internalUUID#143897]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216910]
(861) BroadcastExchange
Input [1]: [internalUUID#143897]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=217449]
(862) BroadcastHashJoin
Left keys [2]: [coalesce(plant#143884, ), isnull(plant#143884)]
Right keys [2]: [coalesce(internalUUID#143897, ), isnull(internalUUID#143897)]
Join type: LeftOuter
Join condition: None
(863) Project
Output [4]: [product#143883, plant#143884, _extract_code#144168, _extract_internalRefUUID#144169]
Input [5]: [product#143883, plant#143884, _extract_code#144168, _extract_internalRefUUID#144169, internalUUID#143897]
(864) Scan parquet
Output [4]: [internalUUID#143911, baseUnitOfMeasure#143915, unitOfMeasureConversions#143917, systemId#143910]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(865) Filter
Input [4]: [internalUUID#143911, baseUnitOfMeasure#143915, unitOfMeasureConversions#143917, systemId#143910]
Condition : isnotnull(internalUUID#143911)
(866) Project
Output [3]: [internalUUID#143911, baseUnitOfMeasure#143915, unitOfMeasureConversions#143917]
Input [4]: [internalUUID#143911, baseUnitOfMeasure#143915, unitOfMeasureConversions#143917, systemId#143910]
(867) Exchange
Input [3]: [internalUUID#143911, baseUnitOfMeasure#143915, unitOfMeasureConversions#143917]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216916]
(868) BroadcastExchange
Input [3]: [internalUUID#143911, baseUnitOfMeasure#143915, unitOfMeasureConversions#143917]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=217453]
(869) BroadcastHashJoin
Left keys [1]: [product#143883]
Right keys [1]: [internalUUID#143911]
Join type: LeftOuter
Join condition: None
(870) Project
Output [2]: [plant#143884, filter(unitOfMeasureConversions#143917, lambdafunction((((lambda u#143027.measurementUnit1.code = _extract_code#144168) AND (lambda u#143027.measurementUnit1.internalRefUUID = _extract_internalRefUUID#144169)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143915.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143915.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143922]
Input [7]: [product#143883, plant#143884, _extract_code#144168, _extract_internalRefUUID#144169, internalUUID#143911, baseUnitOfMeasure#143915, unitOfMeasureConversions#143917]
(871) Generate
Input [2]: [plant#143884, filteredUnitOfMeasureConversions#143922]
Arguments: explode(filteredUnitOfMeasureConversions#143922.quantityNumerator), [plant#143884, filteredUnitOfMeasureConversions#143922], true, [quantityNumerator#143923]
(872) Project
Output [2]: [plant#143884, filteredUnitOfMeasureConversions#143922.quantityDenominator AS _extract_quantityDenominator#143982]
Input [3]: [plant#143884, filteredUnitOfMeasureConversions#143922, quantityNumerator#143923]
(873) Generate
Input [2]: [plant#143884, _extract_quantityDenominator#143982]
Arguments: explode(_extract_quantityDenominator#143982), [plant#143884], true, [quantityDenominator#143924]
(874) Project
Output [1]: [plant#143884]
Input [2]: [plant#143884, quantityDenominator#143924]
(875) HashAggregate
Input [1]: [plant#143884]
Keys [1]: [plant#143884]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143884]
(876) Exchange
Input [1]: [plant#143884]
Arguments: hashpartitioning(plant#143884, 25), ENSURE_REQUIREMENTS, [plan_id=217462]
(877) HashAggregate
Input [1]: [plant#143884]
Keys [1]: [plant#143884]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#143884]
(878) BroadcastHashJoin
Left keys [1]: [plantUuid#143880]
Right keys [1]: [plant#143884]
Join type: Inner
Join condition: None
(879) Project
Output [2]: [plantUuid#143880 AS plant#143854, storageLocUuid#143882]
Input [3]: [plantUuid#143880, storageLocUuid#143882, plant#143884]
(880) Sort
Input [2]: [plant#143854, storageLocUuid#143882]
Arguments: [plant#143854 ASC NULLS FIRST], false, 0
(881) SortMergeJoin
Left keys [1]: [plant#142981]
Right keys [1]: [plant#143854]
Join type: Inner
Join condition: None
(882) Project
Output [5]: [plant#142981, product#142980, timezonecode#143012, stockDatetime#143384, storageLocUuid#143882]
Input [6]: [product#142980, plant#142981, timezonecode#143012, stockDatetime#143384, plant#143854, storageLocUuid#143882]
(883) Filter
Input [6]: [internalUUID#143816, id#143817, supplier#143819, isMarkedForDeletion#143822, items#143823, systemId#143815]
Condition : (((isnotnull(isMarkedForDeletion#143822) AND NOT isMarkedForDeletion#143822) AND (size(items#143823, true) > 0)) AND isnotnull(items#143823))
(884) Project
Output [4]: [internalUUID#143816, id#143817, supplier#143819, items#143823]
Input [6]: [internalUUID#143816, id#143817, supplier#143819, isMarkedForDeletion#143822, items#143823, systemId#143815]
(885) Exchange
Input [4]: [internalUUID#143816, id#143817, supplier#143819, items#143823]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=216932]
(886) Generate
Input [4]: [internalUUID#143816, id#143817, supplier#143819, items#143823]
Arguments: explode(items#143823), [internalUUID#143816, id#143817, supplier#143819], false, [item#143827]
(887) Filter
Input [4]: [internalUUID#143816, id#143817, supplier#143819, item#143827]
Condition : ((((isnotnull(item#143827.deletionIndicator) AND isnotnull(item#143827.completeIndicator)) AND isnotnull(item#143827.returnIndicator)) AND ((NOT item#143827.deletionIndicator AND NOT item#143827.completeIndicator) AND NOT item#143827.returnIndicator)) AND ((isnotnull(item#143827.product.internalRefUUID) AND isnotnull(item#143827.plant.internalRefUUID)) AND isnotnull(item#143827.storageLocation.internalRefUUID)))
(888) Project
Output [14]: [id#143817, internalUUID#143816, supplier#143819.internalRefUUID AS supplierUuid#143824, item#143827.plant.internalRefUUID AS plant#143832, item#143827.product.internalRefUUID AS product#143833, item#143827.plant.id AS externalPlantId#143834, item#143827.product.id AS externalProductId#143835, item#143827.storageLocation.internalRefUUID AS storageLocUuid#143836, item#143827.quantityUnit.code AS quantityUom#143837, item#143827.quantityUnit.internalRefUUID AS quantityUomUuid#143838, item#143827.quantityNumerator AS quantityNumerator#143839, item#143827.quantityDenominator AS quantityDenominator#143840, item#143827.scheduleLines AS scheduleLines#143841, item#143827.confirmations AS confirmations#143842]
Input [4]: [internalUUID#143816, id#143817, supplier#143819, item#143827]
(889) BroadcastExchange
Input [14]: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842]
Arguments: HashedRelationBroadcastMode(List(input[4, string, true], input[3, string, true], input[7, string, true]),false), [plan_id=217476]
(890) BroadcastHashJoin
Left keys [3]: [product#142980, plant#142981, storageLocUuid#143882]
Right keys [3]: [product#143833, plant#143832, storageLocUuid#143836]
Join type: Inner
Join condition: None
(891) Project
Output [17]: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842, stockDatetime#143384, timezonecode#143012, filter(confirmations#143842, lambdafunction(((NOT lambda x_29#143933.deletionIndicator AND lambda x_29#143933.isRelevantForConfirmation) AND isnotnull(lambda x_29#143933.confirmedDeliveryAt)), lambda x_29#143933, false)) AS validConfirmations#143932]
Input [19]: [plant#142981, product#142980, timezonecode#143012, stockDatetime#143384, storageLocUuid#143882, id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842]
(892) AdaptiveSparkPlan
Output [17]: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842, stockDatetime#143384, timezonecode#143012, validConfirmations#143932]
Arguments: isFinalPlan=true
(893) Project
Output [6]: [id#143817, externalProductId#143835, externalPlantId#143834, quantityUom#143837, transform(filter(scheduleLines#143841, lambdafunction(isnotnull(lambda x_30#144936.deliveryAt), lambda x_30#144936, false)), lambdafunction(struct(scheduledDate, cast(from_utc_timestamp(lambda x_31#144937.deliveryAt, timezonecode#145031) as date), scheduledQuantity, lambda x_31#144937.quantity), lambda x_31#144937, false)) AS scheds#144935, transform(filter(validConfirmations#143932, lambdafunction(isnotnull(lambda x_32#144941.confirmedDeliveryAt), lambda x_32#144941, false)), lambdafunction(struct(confirmedDate, cast(from_utc_timestamp(lambda x_33#144942.confirmedDeliveryAt, timezonecode#145031) as date), confirmedQuantity, lambda x_33#144942.confirmedQuantity), lambda x_33#144942, false)) AS confs#144940]
Input [7]: [externalPlantId#143834, externalProductId#143835, id#143817, quantityUom#143837, scheduleLines#143841, timezonecode#145031, validConfirmations#143932]
(894) DeserializeToObject
Input [6]: [id#143817, externalProductId#143835, externalPlantId#143834, quantityUom#143837, scheds#144935, confs#144940]
Arguments: createexternalrow(invoke(id#143817.toString()), invoke(externalProductId#143835.toString()), invoke(externalPlantId#143834.toString()), invoke(quantityUom#143837.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#144935, 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#144940, 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#144955: org.apache.spark.sql.Row
(895) MapPartitions
Input [1]: [obj#144955]
Arguments: org.apache.spark.sql.internal.UDFAdaptors$$$Lambda/0x00000008024c8f20@44839fc9, obj#144964: org.apache.spark.sql.Row
(896) SerializeFromObject
Input [1]: [obj#144964]
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#144973, 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#144974, 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#144975, 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#144976, 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#144977, 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#144978, 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#144979, 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#144980]
(897) Scan parquet
Output [4]: [name#142955, status#142957, configurationVersion#142958, settings#142961]
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#142955, status#142957, configurationVersion#142958, settings#142961]
Condition : ((isnotnull(name#142955) AND isnotnull(configurationVersion#142958)) AND (name#142955 = OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF))
(899) Exchange
Input [4]: [name#142955, status#142957, configurationVersion#142958, settings#142961]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=305541]
(900) Sort
Input [4]: [name#142955, status#142957, configurationVersion#142958, settings#142961]
Arguments: [name#142955 ASC NULLS FIRST], false, 0
(901) SortAggregate
Input [4]: [name#142955, status#142957, configurationVersion#142958, settings#142961]
Keys [1]: [name#142955]
Functions [1]: [partial_max(struct(configurationVersion, configurationVersion#142958, status, status#142957, settings, settings#142961))]
Aggregate Attributes [1]: [max#152977]
Results [2]: [name#142955, max#152978]
(902) Exchange
Input [2]: [name#142955, max#152978]
Arguments: hashpartitioning(name#142955, 25), ENSURE_REQUIREMENTS, [plan_id=305577]
(903) Sort
Input [2]: [name#142955, max#152978]
Arguments: [name#142955 ASC NULLS FIRST], false, 0
(904) SortAggregate
Input [2]: [name#142955, max#152978]
Keys [1]: [name#142955]
Functions [1]: [max(struct(configurationVersion, configurationVersion#142958, status, status#142957, settings, settings#142961))]
Aggregate Attributes [1]: [max(struct(configurationVersion, configurationVersion#142958, status, status#142957, settings, settings#142961))#142973]
Results [1]: [max(struct(configurationVersion, configurationVersion#142958, status, status#142957, settings, settings#142961))#142973 AS latest#142964]
(905) Filter
Input [1]: [latest#142964]
Condition : (isnotnull(latest#142964.status) AND (latest#142964.status = ACTIVE))
(906) Project
Output [1]: [latest#142964.configurationVersion AS configurationVersion#142974]
Input [1]: [latest#142964]
(907) BroadcastExchange
Input [1]: [configurationVersion#142974]
Arguments: IdentityBroadcastMode, [plan_id=305583]
(908) BroadcastNestedLoopJoin
Join type: Cross
Join condition: None
(909) Project
Output [11]: [id#144973, externalProductId#144974, externalPlantId#144975, quantityUom#144976, scheduledDate#144977, scheduledQuantity#144978, confirmedDate#144979, confirmedQuantity#144980, configurationVersion#142974, array(struct(name, PURCHASE_ORDER, value, id#144973), struct(name, PRODUCT, value, externalProductId#144974), struct(name, PLANT, value, externalPlantId#144975)) AS businessContext#144988, array(struct(variableName, PO_QTY, variableValue, cast(scheduledQuantity#144978 as string)), struct(variableName, PO_UOM, variableValue, quantityUom#144976), struct(variableName, PO_DELIVERY_DATE, variableValue, cast(scheduledDate#144977 as string)), struct(variableName, CO_QTY, variableValue, cast(confirmedQuantity#144980 as string)), struct(variableName, CO_UOM, variableValue, quantityUom#144976), struct(variableName, CO_DELIVERY_DATE, variableValue, cast(confirmedDate#144979 as string))) AS messageVariables#145001]
Input [9]: [id#144973, externalProductId#144974, externalPlantId#144975, quantityUom#144976, scheduledDate#144977, scheduledQuantity#144978, confirmedDate#144979, confirmedQuantity#144980, configurationVersion#142974]
(910) HashAggregate
Input [11]: [id#144973, externalProductId#144974, externalPlantId#144975, quantityUom#144976, scheduledDate#144977, scheduledQuantity#144978, confirmedDate#144979, confirmedQuantity#144980, configurationVersion#142974, businessContext#144988, messageVariables#145001]
Keys [12]: [OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF AS OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF#152976, quantityUom#144976, knownfloatingpointnormalized(normalizenanandzero(scheduledQuantity#144978)) AS scheduledQuantity#144978, externalPlantId#144975, id#144973, configurationVersion#142974, knownfloatingpointnormalized(normalizenanandzero(confirmedQuantity#144980)) AS confirmedQuantity#144980, confirmedDate#144979, scheduledDate#144977, businessContext#144988, messageVariables#145001, externalProductId#144974]
Functions: []
Aggregate Attributes: []
Results [12]: [OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF#152976, quantityUom#144976, scheduledQuantity#144978, externalPlantId#144975, id#144973, configurationVersion#142974, confirmedQuantity#144980, confirmedDate#144979, scheduledDate#144977, businessContext#144988, messageVariables#145001, externalProductId#144974]
(911) Exchange
Input [12]: [OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF#152976, quantityUom#144976, scheduledQuantity#144978, externalPlantId#144975, id#144973, configurationVersion#142974, confirmedQuantity#144980, confirmedDate#144979, scheduledDate#144977, businessContext#144988, messageVariables#145001, externalProductId#144974]
Arguments: hashpartitioning(OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF#152976, quantityUom#144976, scheduledQuantity#144978, externalPlantId#144975, id#144973, configurationVersion#142974, confirmedQuantity#144980, confirmedDate#144979, scheduledDate#144977, businessContext#144988, messageVariables#145001, externalProductId#144974, 25), ENSURE_REQUIREMENTS, [plan_id=305588]
(912) HashAggregate
Input [12]: [OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF#152976, quantityUom#144976, scheduledQuantity#144978, externalPlantId#144975, id#144973, configurationVersion#142974, confirmedQuantity#144980, confirmedDate#144979, scheduledDate#144977, businessContext#144988, messageVariables#145001, externalProductId#144974]
Keys [12]: [OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF#152976, quantityUom#144976, scheduledQuantity#144978, externalPlantId#144975, id#144973, configurationVersion#142974, confirmedQuantity#144980, confirmedDate#144979, scheduledDate#144977, businessContext#144988, messageVariables#145001, externalProductId#144974]
Functions: []
Aggregate Attributes: []
Results [7]: [OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF AS name#144981, configurationVersion#142974, 10000002108 AS executionId#145002, 2026-08-10T09:37:13.804Z AS createdAt#145004, Daily_grocery AS marketUnit#145003, businessContext#144988, messageVariables#145001]
(913) Union
(914) AdaptiveSparkPlan
Output [7]: [name#143402, configurationVersion#143401, executionId#143409, createdAt#143411, marketUnit#143410, businessContext#143407, messageVariables#143408]
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