== Physical Plan ==
AdaptiveSparkPlan (2464)
+- == Current Plan ==
ResultQueryStage (832)
+- * Project (831)
+- * BroadcastHashJoin LeftOuter BuildRight (830)
:- * Project (797)
: +- * SortMergeJoin LeftOuter (796)
: :- * Sort (232)
: : +- ShuffleQueryStage (231), Statistics(sizeInBytes=2.4 MiB, rowCount=434)
: : +- Exchange (230)
: : +- * Project (229)
: : +- * SortMergeJoin LeftOuter (228)
: : :- * Sort (170)
: : : +- AQEShuffleRead (169)
: : : +- ShuffleQueryStage (168), Statistics(sizeInBytes=57.6 KiB, rowCount=434)
: : : +- Exchange (167)
: : : +- * Project (166)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (165)
: : : :- * Project (29)
: : : : +- * Project (28)
: : : : +- * Generate (27)
: : : : +- * Generate (26)
: : : : +- * Project (25)
: : : : +- Project (24)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (23)
: : : : :- * Project (14)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (13)
: : : : : :- ShuffleQueryStage (4), Statistics(sizeInBytes=40.7 KiB, rowCount=434)
: : : : : : +- Exchange (3)
: : : : : : +- * ColumnarToRow (2)
: : : : : : +- Scan parquet (1)
: : : : : +- BroadcastQueryStage (12), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : +- BroadcastExchange (11)
: : : : : +- * Project (10)
: : : : : +- ShuffleQueryStage (9), Statistics(sizeInBytes=202.9 KiB, rowCount=1.46E+3)
: : : : : +- Exchange (8)
: : : : : +- * Project (7)
: : : : : +- * ColumnarToRow (6)
: : : : : +- Scan parquet (5)
: : : : +- BroadcastQueryStage (22), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : +- BroadcastExchange (21)
: : : : +- ShuffleQueryStage (20), Statistics(sizeInBytes=88.5 KiB, rowCount=145)
: : : : +- Exchange (19)
: : : : +- * Project (18)
: : : : +- * Filter (17)
: : : : +- * ColumnarToRow (16)
: : : : +- Scan parquet (15)
: : : +- BroadcastQueryStage (164), Statistics(sizeInBytes=2.0 MiB, rowCount=55)
: : : +- BroadcastExchange (163)
: : : +- * HashAggregate (162)
: : : +- AQEShuffleRead (161)
: : : +- ShuffleQueryStage (160), Statistics(sizeInBytes=5.6 KiB, rowCount=55)
: : : +- Exchange (159)
: : : +- * HashAggregate (158)
: : : +- * Project (157)
: : : +- * BroadcastHashJoin Inner BuildLeft (156)
: : : :- BroadcastQueryStage (111), Statistics(sizeInBytes=2.0 MiB, rowCount=55)
: : : : +- BroadcastExchange (110)
: : : : +- AQEShuffleRead (109)
: : : : +- ShuffleQueryStage (108), Statistics(sizeInBytes=6.4 KiB, rowCount=55)
: : : : +- Exchange (107)
: : : : +- * Project (106)
: : : : +- * BroadcastHashJoin Inner BuildLeft (105)
: : : : :- BroadcastQueryStage (87), Statistics(sizeInBytes=2.0 MiB, rowCount=89)
: : : : : +- BroadcastExchange (86)
: : : : : +- AQEShuffleRead (85)
: : : : : +- ShuffleQueryStage (84), Statistics(sizeInBytes=10.4 KiB, rowCount=89)
: : : : : +- Exchange (83)
: : : : : +- * Project (82)
: : : : : +- * Filter (81)
: : : : : +- * Generate (80)
: : : : : +- * Filter (79)
: : : : : +- ObjectHashAggregate (78)
: : : : : +- ObjectHashAggregate (77)
: : : : : +- Generate (76)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (75)
: : : : : :- BroadcastQueryStage (37), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- BroadcastExchange (36)
: : : : : : +- ShuffleQueryStage (35), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : : : +- Exchange (34)
: : : : : : +- * Project (33)
: : : : : : +- * Filter (32)
: : : : : : +- * ColumnarToRow (31)
: : : : : : +- Scan parquet (30)
: : : : : +- * Project (74)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (73)
: : : : : :- BroadcastQueryStage (50), Statistics(sizeInBytes=2.0 MiB, rowCount=4)
: : : : : : +- BroadcastExchange (49)
: : : : : : +- * Project (48)
: : : : : : +- * Generate (47)
: : : : : : +- * Project (46)
: : : : : : +- * Filter (45)
: : : : : : +- * Generate (44)
: : : : : : +- ShuffleQueryStage (43), Statistics(sizeInBytes=704.0 B, rowCount=1)
: : : : : : +- Exchange (42)
: : : : : : +- * Project (41)
: : : : : : +- * Filter (40)
: : : : : : +- * ColumnarToRow (39)
: : : : : : +- Scan parquet (38)
: : : : : +- * HashAggregate (72)
: : : : : +- AQEShuffleRead (71)
: : : : : +- ShuffleQueryStage (70), Statistics(sizeInBytes=6.5 KiB, rowCount=139)
: : : : : +- Exchange (69)
: : : : : +- * HashAggregate (68)
: : : : : +- * Project (67)
: : : : : +- * Generate (66)
: : : : : +- * Project (65)
: : : : : +- * Generate (64)
: : : : : +- Project (63)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (62)
: : : : : :- * Project (59)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (58)
: : : : : : :- ShuffleQueryStage (55), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : : : : : : +- Exchange (54)
: : : : : : : +- * Filter (53)
: : : : : : : +- * ColumnarToRow (52)
: : : : : : : +- Scan parquet (51)
: : : : : : +- BroadcastQueryStage (57), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : : +- ReusedExchange (56)
: : : : : +- BroadcastQueryStage (61), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : : +- ReusedExchange (60)
: : : : +- * Project (104)
: : : : +- * Generate (103)
: : : : +- * Project (102)
: : : : +- * Generate (101)
: : : : +- Project (100)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (99)
: : : : :- * Project (96)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (95)
: : : : : :- ShuffleQueryStage (92), Statistics(sizeInBytes=40.7 KiB, rowCount=434)
: : : : : : +- Exchange (91)
: : : : : : +- * Filter (90)
: : : : : : +- * ColumnarToRow (89)
: : : : : : +- Scan parquet (88)
: : : : : +- BroadcastQueryStage (94), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : +- ReusedExchange (93)
: : : : +- BroadcastQueryStage (98), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : +- ReusedExchange (97)
: : : +- AQEShuffleRead (155)
: : : +- ShuffleQueryStage (154), Statistics(sizeInBytes=6.0 KiB, rowCount=55)
: : : +- Exchange (153)
: : : +- * HashAggregate (152)
: : : +- * HashAggregate (151)
: : : +- * Project (150)
: : : +- * BroadcastHashJoin Inner BuildLeft (149)
: : : :- BroadcastQueryStage (134), Statistics(sizeInBytes=2.0 MiB, rowCount=89)
: : : : +- BroadcastExchange (133)
: : : : +- AQEShuffleRead (132)
: : : : +- ShuffleQueryStage (131), Statistics(sizeInBytes=9.7 KiB, rowCount=89)
: : : : +- Exchange (130)
: : : : +- * Project (129)
: : : : +- * Filter (128)
: : : : +- * Generate (127)
: : : : +- * Filter (126)
: : : : +- ObjectHashAggregate (125)
: : : : +- ObjectHashAggregate (124)
: : : : +- Generate (123)
: : : : +- * BroadcastHashJoin Inner BuildLeft (122)
: : : : :- BroadcastQueryStage (113), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : +- ReusedExchange (112)
: : : : +- * Project (121)
: : : : +- * BroadcastHashJoin Inner BuildLeft (120)
: : : : :- BroadcastQueryStage (115), Statistics(sizeInBytes=2.0 MiB, rowCount=4)
: : : : : +- ReusedExchange (114)
: : : : +- * HashAggregate (119)
: : : : +- AQEShuffleRead (118)
: : : : +- ShuffleQueryStage (117), Statistics(sizeInBytes=6.5 KiB, rowCount=139)
: : : : +- ReusedExchange (116)
: : : +- * Project (148)
: : : +- * Generate (147)
: : : +- * Project (146)
: : : +- * Generate (145)
: : : +- Project (144)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (143)
: : : :- * Project (140)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (139)
: : : : :- ShuffleQueryStage (136), Statistics(sizeInBytes=40.7 KiB, rowCount=434)
: : : : : +- ReusedExchange (135)
: : : : +- BroadcastQueryStage (138), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : +- ReusedExchange (137)
: : : +- BroadcastQueryStage (142), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : +- ReusedExchange (141)
: : +- * Sort (227)
: : +- AQEShuffleRead (226)
: : +- ShuffleQueryStage (225), Statistics(sizeInBytes=2.4 MiB, rowCount=434)
: : +- Exchange (224)
: : +- * SerializeFromObject (223)
: : +- * MapElements (222)
: : +- * DeserializeToObject (221)
: : +- * Project (220)
: : +- * BroadcastHashJoin LeftOuter BuildRight (219)
: : :- ObjectHashAggregate (211)
: : : +- AQEShuffleRead (210)
: : : +- ShuffleQueryStage (209), Statistics(sizeInBytes=5.3 MiB, rowCount=434)
: : : +- Exchange (208)
: : : +- ObjectHashAggregate (207)
: : : +- * Project (206)
: : : +- * SortMergeJoin LeftOuter (205)
: : : :- * Sort (198)
: : : : +- AQEShuffleRead (197)
: : : : +- ShuffleQueryStage (196), Statistics(sizeInBytes=398.9 KiB, rowCount=434)
: : : : +- Exchange (195)
: : : : +- * Project (194)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (193)
: : : : :- * Project (190)
: : : : : +- * Project (189)
: : : : : +- * Generate (188)
: : : : : +- * Generate (187)
: : : : : +- * Project (186)
: : : : : +- Project (185)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (184)
: : : : : :- * BroadcastHashJoin LeftOuter BuildRight (181)
: : : : : : :- ShuffleQueryStage (172), Statistics(sizeInBytes=40.7 KiB, rowCount=434)
: : : : : : : +- ReusedExchange (171)
: : : : : : +- BroadcastQueryStage (180), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : : +- BroadcastExchange (179)
: : : : : : +- * Project (178)
: : : : : : +- ShuffleQueryStage (177), Statistics(sizeInBytes=1122.3 KiB, rowCount=1.46E+3)
: : : : : : +- Exchange (176)
: : : : : : +- * Project (175)
: : : : : : +- * ColumnarToRow (174)
: : : : : : +- Scan parquet (173)
: : : : : +- BroadcastQueryStage (183), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : : +- ReusedExchange (182)
: : : : +- BroadcastQueryStage (192), Statistics(sizeInBytes=2.0 MiB, rowCount=55)
: : : : +- ReusedExchange (191)
: : : +- * Sort (204)
: : : +- AQEShuffleRead (203)
: : : +- ShuffleQueryStage (202), Statistics(sizeInBytes=4.9 MiB, rowCount=434)
: : : +- Exchange (201)
: : : +- * ColumnarToRow (200)
: : : +- Scan parquet (199)
: : +- BroadcastQueryStage (218), Statistics(sizeInBytes=2.0 MiB, rowCount=27)
: : +- BroadcastExchange (217)
: : +- ShuffleQueryStage (216), Statistics(sizeInBytes=1944.0 B, rowCount=27)
: : +- Exchange (215)
: : +- * Project (214)
: : +- * ColumnarToRow (213)
: : +- Scan parquet (212)
: +- * Sort (795)
: +- * Project (794)
: +- ObjectHashAggregate (793)
: +- ObjectHashAggregate (792)
: +- * Filter (791)
: +- TableCacheQueryStage (790), Statistics(sizeInBytes=1.64E+93 B)
: +- InMemoryTableScan (233)
: +- InMemoryRelation (234)
: +- AdaptiveSparkPlan (789)
+- == Final Plan ==
ResultQueryStage (509)
+- * Filter (508)
+- ObjectHashAggregate (507)
+- ShuffleQueryStage (506), Statistics(sizeInBytes=3.4 KiB, rowCount=11)
+- Exchange (505)
+- ObjectHashAggregate (504)
+- Project (503)
+- Window (502)
+- * Sort (501)
+- AQEShuffleRead (500)
+- ShuffleQueryStage (499), Statistics(sizeInBytes=4.4 KiB, rowCount=11)
+- Exchange (498)
+- Project (497)
+- * BroadcastHashJoin Inner BuildRight (496)
:- * Project (484)
: +- * SortMergeJoin Inner (483)
: :- * Sort (465)
: : +- AQEShuffleRead (464)
: : +- ShuffleQueryStage (463), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : +- Exchange (462)
: : +- * Project (461)
: : +- * BroadcastHashJoin LeftOuter BuildRight (460)
: : :- AQEShuffleRead (266)
: : : +- ShuffleQueryStage (265), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : : +- Exchange (264)
: : : +- * Project (263)
: : : +- * Generate (262)
: : : +- * Project (261)
: : : +- * Generate (260)
: : : +- Project (259)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (258)
: : : :- * Project (249)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (248)
: : : : :- ShuffleQueryStage (239), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : : : : +- Exchange (238)
: : : : : +- * Filter (237)
: : : : : +- * ColumnarToRow (236)
: : : : : +- Scan parquet (235)
: : : : +- BroadcastQueryStage (247), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : +- BroadcastExchange (246)
: : : : +- * Project (245)
: : : : +- ShuffleQueryStage (244), Statistics(sizeInBytes=202.9 KiB, rowCount=1.46E+3)
: : : : +- Exchange (243)
: : : : +- * Project (242)
: : : : +- * ColumnarToRow (241)
: : : : +- Scan parquet (240)
: : : +- BroadcastQueryStage (257), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : +- BroadcastExchange (256)
: : : +- ShuffleQueryStage (255), Statistics(sizeInBytes=88.5 KiB, rowCount=145)
: : : +- Exchange (254)
: : : +- * Project (253)
: : : +- * Filter (252)
: : : +- * ColumnarToRow (251)
: : : +- Scan parquet (250)
: : +- BroadcastQueryStage (459), Statistics(sizeInBytes=2.0 MiB, rowCount=434)
: : +- BroadcastExchange (458)
: : +- AQEShuffleRead (457)
: : +- ShuffleQueryStage (456), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : +- Exchange (455)
: : +- * SerializeFromObject (454)
: : +- * MapElements (453)
: : +- * DeserializeToObject (452)
: : +- * Project (451)
: : +- * BroadcastHashJoin LeftOuter BuildRight (450)
: : :- ObjectHashAggregate (442)
: : : +- AQEShuffleRead (441)
: : : +- ShuffleQueryStage (440), Statistics(sizeInBytes=5.3 MiB, rowCount=434)
: : : +- Exchange (439)
: : : +- ObjectHashAggregate (438)
: : : +- * Project (437)
: : : +- * SortMergeJoin LeftOuter (436)
: : : :- * Sort (429)
: : : : +- AQEShuffleRead (428)
: : : : +- ShuffleQueryStage (427), Statistics(sizeInBytes=398.9 KiB, rowCount=434)
: : : : +- Exchange (426)
: : : : +- * Project (425)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (424)
: : : : :- * Project (288)
: : : : : +- * Project (287)
: : : : : +- * Generate (286)
: : : : : +- * Generate (285)
: : : : : +- * Project (284)
: : : : : +- Project (283)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (282)
: : : : : :- * BroadcastHashJoin LeftOuter BuildRight (279)
: : : : : : :- ShuffleQueryStage (270), Statistics(sizeInBytes=40.7 KiB, rowCount=434)
: : : : : : : +- Exchange (269)
: : : : : : : +- * ColumnarToRow (268)
: : : : : : : +- Scan parquet (267)
: : : : : : +- BroadcastQueryStage (278), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : : +- BroadcastExchange (277)
: : : : : : +- * Project (276)
: : : : : : +- ShuffleQueryStage (275), Statistics(sizeInBytes=1122.3 KiB, rowCount=1.46E+3)
: : : : : : +- Exchange (274)
: : : : : : +- * Project (273)
: : : : : : +- * ColumnarToRow (272)
: : : : : : +- Scan parquet (271)
: : : : : +- BroadcastQueryStage (281), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : : +- ReusedExchange (280)
: : : : +- BroadcastQueryStage (423), Statistics(sizeInBytes=2.0 MiB, rowCount=55)
: : : : +- BroadcastExchange (422)
: : : : +- * HashAggregate (421)
: : : : +- AQEShuffleRead (420)
: : : : +- ShuffleQueryStage (419), Statistics(sizeInBytes=5.6 KiB, rowCount=55)
: : : : +- Exchange (418)
: : : : +- * HashAggregate (417)
: : : : +- * Project (416)
: : : : +- * BroadcastHashJoin Inner BuildLeft (415)
: : : : :- BroadcastQueryStage (370), Statistics(sizeInBytes=2.0 MiB, rowCount=55)
: : : : : +- BroadcastExchange (369)
: : : : : +- AQEShuffleRead (368)
: : : : : +- ShuffleQueryStage (367), Statistics(sizeInBytes=6.4 KiB, rowCount=55)
: : : : : +- Exchange (366)
: : : : : +- * Project (365)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (364)
: : : : : :- BroadcastQueryStage (346), Statistics(sizeInBytes=2.0 MiB, rowCount=89)
: : : : : : +- BroadcastExchange (345)
: : : : : : +- AQEShuffleRead (344)
: : : : : : +- ShuffleQueryStage (343), Statistics(sizeInBytes=10.4 KiB, rowCount=89)
: : : : : : +- Exchange (342)
: : : : : : +- * Project (341)
: : : : : : +- * Filter (340)
: : : : : : +- * Generate (339)
: : : : : : +- * Filter (338)
: : : : : : +- ObjectHashAggregate (337)
: : : : : : +- ObjectHashAggregate (336)
: : : : : : +- Generate (335)
: : : : : : +- * BroadcastHashJoin Inner BuildLeft (334)
: : : : : : :- BroadcastQueryStage (296), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : : +- BroadcastExchange (295)
: : : : : : : +- ShuffleQueryStage (294), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : : : : +- Exchange (293)
: : : : : : : +- * Project (292)
: : : : : : : +- * Filter (291)
: : : : : : : +- * ColumnarToRow (290)
: : : : : : : +- Scan parquet (289)
: : : : : : +- * Project (333)
: : : : : : +- * BroadcastHashJoin Inner BuildLeft (332)
: : : : : : :- BroadcastQueryStage (309), Statistics(sizeInBytes=2.0 MiB, rowCount=4)
: : : : : : : +- BroadcastExchange (308)
: : : : : : : +- * Project (307)
: : : : : : : +- * Generate (306)
: : : : : : : +- * Project (305)
: : : : : : : +- * Filter (304)
: : : : : : : +- * Generate (303)
: : : : : : : +- ShuffleQueryStage (302), Statistics(sizeInBytes=704.0 B, rowCount=1)
: : : : : : : +- Exchange (301)
: : : : : : : +- * Project (300)
: : : : : : : +- * Filter (299)
: : : : : : : +- * ColumnarToRow (298)
: : : : : : : +- Scan parquet (297)
: : : : : : +- * HashAggregate (331)
: : : : : : +- AQEShuffleRead (330)
: : : : : : +- ShuffleQueryStage (329), Statistics(sizeInBytes=6.5 KiB, rowCount=139)
: : : : : : +- Exchange (328)
: : : : : : +- * HashAggregate (327)
: : : : : : +- * Project (326)
: : : : : : +- * Generate (325)
: : : : : : +- * Project (324)
: : : : : : +- * Generate (323)
: : : : : : +- Project (322)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (321)
: : : : : : :- * Project (318)
: : : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (317)
: : : : : : : :- ShuffleQueryStage (314), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : : : : : : : +- Exchange (313)
: : : : : : : : +- * Filter (312)
: : : : : : : : +- * ColumnarToRow (311)
: : : : : : : : +- Scan parquet (310)
: : : : : : : +- BroadcastQueryStage (316), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : : : +- ReusedExchange (315)
: : : : : : +- BroadcastQueryStage (320), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : : : +- ReusedExchange (319)
: : : : : +- * Project (363)
: : : : : +- * Generate (362)
: : : : : +- * Project (361)
: : : : : +- * Generate (360)
: : : : : +- Project (359)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (358)
: : : : : :- * Project (355)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (354)
: : : : : : :- ShuffleQueryStage (351), Statistics(sizeInBytes=40.7 KiB, rowCount=434)
: : : : : : : +- Exchange (350)
: : : : : : : +- * Filter (349)
: : : : : : : +- * ColumnarToRow (348)
: : : : : : : +- Scan parquet (347)
: : : : : : +- BroadcastQueryStage (353), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : : +- ReusedExchange (352)
: : : : : +- BroadcastQueryStage (357), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : : +- ReusedExchange (356)
: : : : +- AQEShuffleRead (414)
: : : : +- ShuffleQueryStage (413), Statistics(sizeInBytes=6.0 KiB, rowCount=55)
: : : : +- Exchange (412)
: : : : +- * HashAggregate (411)
: : : : +- * HashAggregate (410)
: : : : +- * Project (409)
: : : : +- * BroadcastHashJoin Inner BuildLeft (408)
: : : : :- BroadcastQueryStage (393), Statistics(sizeInBytes=2.0 MiB, rowCount=89)
: : : : : +- BroadcastExchange (392)
: : : : : +- AQEShuffleRead (391)
: : : : : +- ShuffleQueryStage (390), Statistics(sizeInBytes=9.7 KiB, rowCount=89)
: : : : : +- Exchange (389)
: : : : : +- * Project (388)
: : : : : +- * Filter (387)
: : : : : +- * Generate (386)
: : : : : +- * Filter (385)
: : : : : +- ObjectHashAggregate (384)
: : : : : +- ObjectHashAggregate (383)
: : : : : +- Generate (382)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (381)
: : : : : :- BroadcastQueryStage (372), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- ReusedExchange (371)
: : : : : +- * Project (380)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (379)
: : : : : :- BroadcastQueryStage (374), Statistics(sizeInBytes=2.0 MiB, rowCount=4)
: : : : : : +- ReusedExchange (373)
: : : : : +- * HashAggregate (378)
: : : : : +- AQEShuffleRead (377)
: : : : : +- ShuffleQueryStage (376), Statistics(sizeInBytes=6.5 KiB, rowCount=139)
: : : : : +- ReusedExchange (375)
: : : : +- * Project (407)
: : : : +- * Generate (406)
: : : : +- * Project (405)
: : : : +- * Generate (404)
: : : : +- Project (403)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (402)
: : : : :- * Project (399)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (398)
: : : : : :- ShuffleQueryStage (395), Statistics(sizeInBytes=40.7 KiB, rowCount=434)
: : : : : : +- ReusedExchange (394)
: : : : : +- BroadcastQueryStage (397), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : +- ReusedExchange (396)
: : : : +- BroadcastQueryStage (401), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : +- ReusedExchange (400)
: : : +- * Sort (435)
: : : +- AQEShuffleRead (434)
: : : +- ShuffleQueryStage (433), Statistics(sizeInBytes=4.9 MiB, rowCount=434)
: : : +- Exchange (432)
: : : +- * ColumnarToRow (431)
: : : +- Scan parquet (430)
: : +- BroadcastQueryStage (449), Statistics(sizeInBytes=2.0 MiB, rowCount=27)
: : +- BroadcastExchange (448)
: : +- ShuffleQueryStage (447), Statistics(sizeInBytes=1944.0 B, rowCount=27)
: : +- Exchange (446)
: : +- * Project (445)
: : +- * ColumnarToRow (444)
: : +- Scan parquet (443)
: +- * Sort (482)
: +- * Project (481)
: +- * BroadcastHashJoin Inner BuildLeft (480)
: :- BroadcastQueryStage (475), Statistics(sizeInBytes=2.0 MiB, rowCount=4)
: : +- BroadcastExchange (474)
: : +- * Project (473)
: : +- * Filter (472)
: : +- * Generate (471)
: : +- * Project (470)
: : +- * Filter (469)
: : +- * Generate (468)
: : +- ShuffleQueryStage (467), Statistics(sizeInBytes=704.0 B, rowCount=1)
: : +- ReusedExchange (466)
: +- * HashAggregate (479)
: +- AQEShuffleRead (478)
: +- ShuffleQueryStage (477), Statistics(sizeInBytes=6.5 KiB, rowCount=139)
: +- ReusedExchange (476)
+- BroadcastQueryStage (495), Statistics(sizeInBytes=2.0 MiB, rowCount=40)
+- BroadcastExchange (494)
+- * Project (493)
+- * Filter (492)
+- * Generate (491)
+- ShuffleQueryStage (490), Statistics(sizeInBytes=25.1 KiB, rowCount=5)
+- Exchange (489)
+- * Project (488)
+- * Filter (487)
+- * ColumnarToRow (486)
+- Scan parquet (485)
+- == Initial Plan ==
Filter (788)
+- ObjectHashAggregate (787)
+- Exchange (786)
+- ObjectHashAggregate (785)
+- Project (784)
+- Window (783)
+- Sort (782)
+- Exchange (781)
+- Project (780)
+- BroadcastHashJoin Inner BuildRight (779)
:- Project (771)
: +- SortMergeJoin Inner (770)
: :- Sort (731)
: : +- Exchange (730)
: : +- Project (729)
: : +- SortMergeJoin LeftOuter (728)
: : :- Sort (529)
: : : +- Exchange (528)
: : : +- Project (527)
: : : +- Generate (526)
: : : +- Project (525)
: : : +- Generate (524)
: : : +- Project (523)
: : : +- BroadcastHashJoin LeftOuter BuildRight (522)
: : : :- Project (517)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (516)
: : : : :- Exchange (511)
: : : : : +- Filter (510)
: : : : : +- Scan parquet (235)
: : : : +- BroadcastExchange (515)
: : : : +- Project (514)
: : : : +- Exchange (513)
: : : : +- Project (512)
: : : : +- Scan parquet (240)
: : : +- BroadcastExchange (521)
: : : +- Exchange (520)
: : : +- Project (519)
: : : +- Filter (518)
: : : +- Scan parquet (250)
: : +- Sort (727)
: : +- Exchange (726)
: : +- SerializeFromObject (725)
: : +- MapElements (724)
: : +- DeserializeToObject (723)
: : +- Project (722)
: : +- BroadcastHashJoin LeftOuter BuildRight (721)
: : :- ObjectHashAggregate (717)
: : : +- Exchange (716)
: : : +- ObjectHashAggregate (715)
: : : +- Project (714)
: : : +- SortMergeJoin LeftOuter (713)
: : : :- Sort (710)
: : : : +- Exchange (709)
: : : : +- Project (708)
: : : : +- SortMergeJoin LeftOuter (707)
: : : : :- Sort (548)
: : : : : +- Project (547)
: : : : : +- Project (546)
: : : : : +- Generate (545)
: : : : : +- Generate (544)
: : : : : +- Project (543)
: : : : : +- Project (542)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (541)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (535)
: : : : : : :- Exchange (530)
: : : : : : : +- Scan parquet (267)
: : : : : : +- BroadcastExchange (534)
: : : : : : +- Project (533)
: : : : : : +- Exchange (532)
: : : : : : +- Project (531)
: : : : : : +- Scan parquet (271)
: : : : : +- BroadcastExchange (540)
: : : : : +- Exchange (539)
: : : : : +- Project (538)
: : : : : +- Filter (537)
: : : : : +- Scan parquet (536)
: : : : +- Sort (706)
: : : : +- HashAggregate (705)
: : : : +- Exchange (704)
: : : : +- HashAggregate (703)
: : : : +- Project (702)
: : : : +- SortMergeJoin Inner (701)
: : : : :- Sort (621)
: : : : : +- Exchange (620)
: : : : : +- Project (619)
: : : : : +- SortMergeJoin Inner (618)
: : : : : :- Sort (596)
: : : : : : +- Exchange (595)
: : : : : : +- Project (594)
: : : : : : +- Filter (593)
: : : : : : +- Generate (592)
: : : : : : +- Filter (591)
: : : : : : +- ObjectHashAggregate (590)
: : : : : : +- ObjectHashAggregate (589)
: : : : : : +- Generate (588)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (587)
: : : : : : :- BroadcastExchange (552)
: : : : : : : +- Exchange (551)
: : : : : : : +- Project (550)
: : : : : : : +- Filter (549)
: : : : : : : +- Scan parquet (289)
: : : : : : +- Project (586)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (585)
: : : : : : :- BroadcastExchange (561)
: : : : : : : +- Project (560)
: : : : : : : +- Generate (559)
: : : : : : : +- Project (558)
: : : : : : : +- Filter (557)
: : : : : : : +- Generate (556)
: : : : : : : +- Exchange (555)
: : : : : : : +- Project (554)
: : : : : : : +- Filter (553)
: : : : : : : +- Scan parquet (297)
: : : : : : +- HashAggregate (584)
: : : : : : +- Exchange (583)
: : : : : : +- HashAggregate (582)
: : : : : : +- Project (581)
: : : : : : +- Generate (580)
: : : : : : +- Project (579)
: : : : : : +- Generate (578)
: : : : : : +- Project (577)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (576)
: : : : : : :- Project (570)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (569)
: : : : : : : :- Exchange (563)
: : : : : : : : +- Filter (562)
: : : : : : : : +- Scan parquet (310)
: : : : : : : +- BroadcastExchange (568)
: : : : : : : +- Project (567)
: : : : : : : +- Exchange (566)
: : : : : : : +- Project (565)
: : : : : : : +- Scan parquet (564)
: : : : : : +- BroadcastExchange (575)
: : : : : : +- Exchange (574)
: : : : : : +- Project (573)
: : : : : : +- Filter (572)
: : : : : : +- Scan parquet (571)
: : : : : +- Sort (617)
: : : : : +- Project (616)
: : : : : +- Generate (615)
: : : : : +- Project (614)
: : : : : +- Generate (613)
: : : : : +- Project (612)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (611)
: : : : : :- Project (605)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (604)
: : : : : : :- Exchange (598)
: : : : : : : +- Filter (597)
: : : : : : : +- Scan parquet (347)
: : : : : : +- BroadcastExchange (603)
: : : : : : +- Project (602)
: : : : : : +- Exchange (601)
: : : : : : +- Project (600)
: : : : : : +- Scan parquet (599)
: : : : : +- BroadcastExchange (610)
: : : : : +- Exchange (609)
: : : : : +- Project (608)
: : : : : +- Filter (607)
: : : : : +- Scan parquet (606)
: : : : +- Sort (700)
: : : : +- Exchange (699)
: : : : +- HashAggregate (698)
: : : : +- HashAggregate (697)
: : : : +- Project (696)
: : : : +- SortMergeJoin Inner (695)
: : : : :- Sort (672)
: : : : : +- Exchange (671)
: : : : : +- Project (670)
: : : : : +- Filter (669)
: : : : : +- Generate (668)
: : : : : +- Filter (667)
: : : : : +- ObjectHashAggregate (666)
: : : : : +- ObjectHashAggregate (665)
: : : : : +- Generate (664)
: : : : : +- BroadcastHashJoin Inner BuildLeft (663)
: : : : : :- BroadcastExchange (626)
: : : : : : +- Exchange (625)
: : : : : : +- Project (624)
: : : : : : +- Filter (623)
: : : : : : +- Scan parquet (622)
: : : : : +- Project (662)
: : : : : +- BroadcastHashJoin Inner BuildLeft (661)
: : : : : :- BroadcastExchange (636)
: : : : : : +- Project (635)
: : : : : : +- Generate (634)
: : : : : : +- Project (633)
: : : : : : +- Filter (632)
: : : : : : +- Generate (631)
: : : : : : +- Exchange (630)
: : : : : : +- Project (629)
: : : : : : +- Filter (628)
: : : : : : +- Scan parquet (627)
: : : : : +- HashAggregate (660)
: : : : : +- Exchange (659)
: : : : : +- HashAggregate (658)
: : : : : +- Project (657)
: : : : : +- Generate (656)
: : : : : +- Project (655)
: : : : : +- Generate (654)
: : : : : +- Project (653)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (652)
: : : : : :- Project (646)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (645)
: : : : : : :- Exchange (639)
: : : : : : : +- Filter (638)
: : : : : : : +- Scan parquet (637)
: : : : : : +- BroadcastExchange (644)
: : : : : : +- Project (643)
: : : : : : +- Exchange (642)
: : : : : : +- Project (641)
: : : : : : +- Scan parquet (640)
: : : : : +- BroadcastExchange (651)
: : : : : +- Exchange (650)
: : : : : +- Project (649)
: : : : : +- Filter (648)
: : : : : +- Scan parquet (647)
: : : : +- Sort (694)
: : : : +- Project (693)
: : : : +- Generate (692)
: : : : +- Project (691)
: : : : +- Generate (690)
: : : : +- Project (689)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (688)
: : : : :- Project (682)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (681)
: : : : : :- Exchange (675)
: : : : : : +- Filter (674)
: : : : : : +- Scan parquet (673)
: : : : : +- BroadcastExchange (680)
: : : : : +- Project (679)
: : : : : +- Exchange (678)
: : : : : +- Project (677)
: : : : : +- Scan parquet (676)
: : : : +- BroadcastExchange (687)
: : : : +- Exchange (686)
: : : : +- Project (685)
: : : : +- Filter (684)
: : : : +- Scan parquet (683)
: : : +- Sort (712)
: : : +- Exchange (711)
: : : +- Scan parquet (430)
: : +- BroadcastExchange (720)
: : +- Exchange (719)
: : +- Project (718)
: : +- Scan parquet (443)
: +- Sort (769)
: +- Project (768)
: +- BroadcastHashJoin Inner BuildLeft (767)
: :- BroadcastExchange (742)
: : +- Project (741)
: : +- Filter (740)
: : +- Generate (739)
: : +- Project (738)
: : +- Filter (737)
: : +- Generate (736)
: : +- Exchange (735)
: : +- Project (734)
: : +- Filter (733)
: : +- Scan parquet (732)
: +- HashAggregate (766)
: +- Exchange (765)
: +- HashAggregate (764)
: +- Project (763)
: +- Generate (762)
: +- Project (761)
: +- Generate (760)
: +- Project (759)
: +- BroadcastHashJoin LeftOuter BuildRight (758)
: :- Project (752)
: : +- BroadcastHashJoin LeftOuter BuildRight (751)
: : :- Exchange (745)
: : : +- Filter (744)
: : : +- Scan parquet (743)
: : +- BroadcastExchange (750)
: : +- Project (749)
: : +- Exchange (748)
: : +- Project (747)
: : +- Scan parquet (746)
: +- BroadcastExchange (757)
: +- Exchange (756)
: +- Project (755)
: +- Filter (754)
: +- Scan parquet (753)
+- BroadcastExchange (778)
+- Project (777)
+- Filter (776)
+- Generate (775)
+- Exchange (774)
+- Project (773)
+- Filter (772)
+- Scan parquet (485)
+- BroadcastQueryStage (829), Statistics(sizeInBytes=2.0 MiB, rowCount=434)
+- BroadcastExchange (828)
+- AQEShuffleRead (827)
+- ShuffleQueryStage (826), Statistics(sizeInBytes=98.3 KiB, rowCount=434)
+- Exchange (825)
+- * Filter (824)
+- * SerializeFromObject (823)
+- * MapElements (822)
+- * DeserializeToObject (821)
+- Project (820)
+- * SortMergeJoin LeftOuter (819)
:- * Sort (810)
: +- ShuffleQueryStage (809), Statistics(sizeInBytes=2.7 MiB, rowCount=434)
: +- Exchange (808)
: +- * Project (807)
: +- * SortMergeJoin LeftOuter (806)
: :- * Sort (801)
: : +- AQEShuffleRead (800)
: : +- ShuffleQueryStage (799), Statistics(sizeInBytes=398.9 KiB, rowCount=434)
: : +- ReusedExchange (798)
: +- * Sort (805)
: +- AQEShuffleRead (804)
: +- ShuffleQueryStage (803), Statistics(sizeInBytes=2.4 MiB, rowCount=434)
: +- ReusedExchange (802)
+- * Sort (818)
+- * Project (817)
+- ObjectHashAggregate (816)
+- ObjectHashAggregate (815)
+- * Filter (814)
+- TableCacheQueryStage (813), Statistics(sizeInBytes=1.64E+93 B)
+- InMemoryTableScan (811)
+- InMemoryRelation (812)
+- AdaptiveSparkPlan (789)
+- == Final Plan ==
ResultQueryStage (509)
+- * Filter (508)
+- ObjectHashAggregate (507)
+- ShuffleQueryStage (506), Statistics(sizeInBytes=3.4 KiB, rowCount=11)
+- Exchange (505)
+- ObjectHashAggregate (504)
+- Project (503)
+- Window (502)
+- * Sort (501)
+- AQEShuffleRead (500)
+- ShuffleQueryStage (499), Statistics(sizeInBytes=4.4 KiB, rowCount=11)
+- Exchange (498)
+- Project (497)
+- * BroadcastHashJoin Inner BuildRight (496)
:- * Project (484)
: +- * SortMergeJoin Inner (483)
: :- * Sort (465)
: : +- AQEShuffleRead (464)
: : +- ShuffleQueryStage (463), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : +- Exchange (462)
: : +- * Project (461)
: : +- * BroadcastHashJoin LeftOuter BuildRight (460)
: : :- AQEShuffleRead (266)
: : : +- ShuffleQueryStage (265), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : : +- Exchange (264)
: : : +- * Project (263)
: : : +- * Generate (262)
: : : +- * Project (261)
: : : +- * Generate (260)
: : : +- Project (259)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (258)
: : : :- * Project (249)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (248)
: : : : :- ShuffleQueryStage (239), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : : : : +- Exchange (238)
: : : : : +- * Filter (237)
: : : : : +- * ColumnarToRow (236)
: : : : : +- Scan parquet (235)
: : : : +- BroadcastQueryStage (247), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : +- BroadcastExchange (246)
: : : : +- * Project (245)
: : : : +- ShuffleQueryStage (244), Statistics(sizeInBytes=202.9 KiB, rowCount=1.46E+3)
: : : : +- Exchange (243)
: : : : +- * Project (242)
: : : : +- * ColumnarToRow (241)
: : : : +- Scan parquet (240)
: : : +- BroadcastQueryStage (257), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : +- BroadcastExchange (256)
: : : +- ShuffleQueryStage (255), Statistics(sizeInBytes=88.5 KiB, rowCount=145)
: : : +- Exchange (254)
: : : +- * Project (253)
: : : +- * Filter (252)
: : : +- * ColumnarToRow (251)
: : : +- Scan parquet (250)
: : +- BroadcastQueryStage (459), Statistics(sizeInBytes=2.0 MiB, rowCount=434)
: : +- BroadcastExchange (458)
: : +- AQEShuffleRead (457)
: : +- ShuffleQueryStage (456), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : +- Exchange (455)
: : +- * SerializeFromObject (454)
: : +- * MapElements (453)
: : +- * DeserializeToObject (452)
: : +- * Project (451)
: : +- * BroadcastHashJoin LeftOuter BuildRight (450)
: : :- ObjectHashAggregate (442)
: : : +- AQEShuffleRead (441)
: : : +- ShuffleQueryStage (440), Statistics(sizeInBytes=5.3 MiB, rowCount=434)
: : : +- Exchange (439)
: : : +- ObjectHashAggregate (438)
: : : +- * Project (437)
: : : +- * SortMergeJoin LeftOuter (436)
: : : :- * Sort (429)
: : : : +- AQEShuffleRead (428)
: : : : +- ShuffleQueryStage (427), Statistics(sizeInBytes=398.9 KiB, rowCount=434)
: : : : +- Exchange (426)
: : : : +- * Project (425)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (424)
: : : : :- * Project (288)
: : : : : +- * Project (287)
: : : : : +- * Generate (286)
: : : : : +- * Generate (285)
: : : : : +- * Project (284)
: : : : : +- Project (283)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (282)
: : : : : :- * BroadcastHashJoin LeftOuter BuildRight (279)
: : : : : : :- ShuffleQueryStage (270), Statistics(sizeInBytes=40.7 KiB, rowCount=434)
: : : : : : : +- Exchange (269)
: : : : : : : +- * ColumnarToRow (268)
: : : : : : : +- Scan parquet (267)
: : : : : : +- BroadcastQueryStage (278), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : : +- BroadcastExchange (277)
: : : : : : +- * Project (276)
: : : : : : +- ShuffleQueryStage (275), Statistics(sizeInBytes=1122.3 KiB, rowCount=1.46E+3)
: : : : : : +- Exchange (274)
: : : : : : +- * Project (273)
: : : : : : +- * ColumnarToRow (272)
: : : : : : +- Scan parquet (271)
: : : : : +- BroadcastQueryStage (281), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : : +- ReusedExchange (280)
: : : : +- BroadcastQueryStage (423), Statistics(sizeInBytes=2.0 MiB, rowCount=55)
: : : : +- BroadcastExchange (422)
: : : : +- * HashAggregate (421)
: : : : +- AQEShuffleRead (420)
: : : : +- ShuffleQueryStage (419), Statistics(sizeInBytes=5.6 KiB, rowCount=55)
: : : : +- Exchange (418)
: : : : +- * HashAggregate (417)
: : : : +- * Project (416)
: : : : +- * BroadcastHashJoin Inner BuildLeft (415)
: : : : :- BroadcastQueryStage (370), Statistics(sizeInBytes=2.0 MiB, rowCount=55)
: : : : : +- BroadcastExchange (369)
: : : : : +- AQEShuffleRead (368)
: : : : : +- ShuffleQueryStage (367), Statistics(sizeInBytes=6.4 KiB, rowCount=55)
: : : : : +- Exchange (366)
: : : : : +- * Project (365)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (364)
: : : : : :- BroadcastQueryStage (346), Statistics(sizeInBytes=2.0 MiB, rowCount=89)
: : : : : : +- BroadcastExchange (345)
: : : : : : +- AQEShuffleRead (344)
: : : : : : +- ShuffleQueryStage (343), Statistics(sizeInBytes=10.4 KiB, rowCount=89)
: : : : : : +- Exchange (342)
: : : : : : +- * Project (341)
: : : : : : +- * Filter (340)
: : : : : : +- * Generate (339)
: : : : : : +- * Filter (338)
: : : : : : +- ObjectHashAggregate (337)
: : : : : : +- ObjectHashAggregate (336)
: : : : : : +- Generate (335)
: : : : : : +- * BroadcastHashJoin Inner BuildLeft (334)
: : : : : : :- BroadcastQueryStage (296), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : : +- BroadcastExchange (295)
: : : : : : : +- ShuffleQueryStage (294), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : : : : +- Exchange (293)
: : : : : : : +- * Project (292)
: : : : : : : +- * Filter (291)
: : : : : : : +- * ColumnarToRow (290)
: : : : : : : +- Scan parquet (289)
: : : : : : +- * Project (333)
: : : : : : +- * BroadcastHashJoin Inner BuildLeft (332)
: : : : : : :- BroadcastQueryStage (309), Statistics(sizeInBytes=2.0 MiB, rowCount=4)
: : : : : : : +- BroadcastExchange (308)
: : : : : : : +- * Project (307)
: : : : : : : +- * Generate (306)
: : : : : : : +- * Project (305)
: : : : : : : +- * Filter (304)
: : : : : : : +- * Generate (303)
: : : : : : : +- ShuffleQueryStage (302), Statistics(sizeInBytes=704.0 B, rowCount=1)
: : : : : : : +- Exchange (301)
: : : : : : : +- * Project (300)
: : : : : : : +- * Filter (299)
: : : : : : : +- * ColumnarToRow (298)
: : : : : : : +- Scan parquet (297)
: : : : : : +- * HashAggregate (331)
: : : : : : +- AQEShuffleRead (330)
: : : : : : +- ShuffleQueryStage (329), Statistics(sizeInBytes=6.5 KiB, rowCount=139)
: : : : : : +- Exchange (328)
: : : : : : +- * HashAggregate (327)
: : : : : : +- * Project (326)
: : : : : : +- * Generate (325)
: : : : : : +- * Project (324)
: : : : : : +- * Generate (323)
: : : : : : +- Project (322)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (321)
: : : : : : :- * Project (318)
: : : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (317)
: : : : : : : :- ShuffleQueryStage (314), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : : : : : : : +- Exchange (313)
: : : : : : : : +- * Filter (312)
: : : : : : : : +- * ColumnarToRow (311)
: : : : : : : : +- Scan parquet (310)
: : : : : : : +- BroadcastQueryStage (316), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : : : +- ReusedExchange (315)
: : : : : : +- BroadcastQueryStage (320), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : : : +- ReusedExchange (319)
: : : : : +- * Project (363)
: : : : : +- * Generate (362)
: : : : : +- * Project (361)
: : : : : +- * Generate (360)
: : : : : +- Project (359)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (358)
: : : : : :- * Project (355)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (354)
: : : : : : :- ShuffleQueryStage (351), Statistics(sizeInBytes=40.7 KiB, rowCount=434)
: : : : : : : +- Exchange (350)
: : : : : : : +- * Filter (349)
: : : : : : : +- * ColumnarToRow (348)
: : : : : : : +- Scan parquet (347)
: : : : : : +- BroadcastQueryStage (353), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : : +- ReusedExchange (352)
: : : : : +- BroadcastQueryStage (357), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : : +- ReusedExchange (356)
: : : : +- AQEShuffleRead (414)
: : : : +- ShuffleQueryStage (413), Statistics(sizeInBytes=6.0 KiB, rowCount=55)
: : : : +- Exchange (412)
: : : : +- * HashAggregate (411)
: : : : +- * HashAggregate (410)
: : : : +- * Project (409)
: : : : +- * BroadcastHashJoin Inner BuildLeft (408)
: : : : :- BroadcastQueryStage (393), Statistics(sizeInBytes=2.0 MiB, rowCount=89)
: : : : : +- BroadcastExchange (392)
: : : : : +- AQEShuffleRead (391)
: : : : : +- ShuffleQueryStage (390), Statistics(sizeInBytes=9.7 KiB, rowCount=89)
: : : : : +- Exchange (389)
: : : : : +- * Project (388)
: : : : : +- * Filter (387)
: : : : : +- * Generate (386)
: : : : : +- * Filter (385)
: : : : : +- ObjectHashAggregate (384)
: : : : : +- ObjectHashAggregate (383)
: : : : : +- Generate (382)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (381)
: : : : : :- BroadcastQueryStage (372), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- ReusedExchange (371)
: : : : : +- * Project (380)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (379)
: : : : : :- BroadcastQueryStage (374), Statistics(sizeInBytes=2.0 MiB, rowCount=4)
: : : : : : +- ReusedExchange (373)
: : : : : +- * HashAggregate (378)
: : : : : +- AQEShuffleRead (377)
: : : : : +- ShuffleQueryStage (376), Statistics(sizeInBytes=6.5 KiB, rowCount=139)
: : : : : +- ReusedExchange (375)
: : : : +- * Project (407)
: : : : +- * Generate (406)
: : : : +- * Project (405)
: : : : +- * Generate (404)
: : : : +- Project (403)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (402)
: : : : :- * Project (399)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (398)
: : : : : :- ShuffleQueryStage (395), Statistics(sizeInBytes=40.7 KiB, rowCount=434)
: : : : : : +- ReusedExchange (394)
: : : : : +- BroadcastQueryStage (397), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : +- ReusedExchange (396)
: : : : +- BroadcastQueryStage (401), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : +- ReusedExchange (400)
: : : +- * Sort (435)
: : : +- AQEShuffleRead (434)
: : : +- ShuffleQueryStage (433), Statistics(sizeInBytes=4.9 MiB, rowCount=434)
: : : +- Exchange (432)
: : : +- * ColumnarToRow (431)
: : : +- Scan parquet (430)
: : +- BroadcastQueryStage (449), Statistics(sizeInBytes=2.0 MiB, rowCount=27)
: : +- BroadcastExchange (448)
: : +- ShuffleQueryStage (447), Statistics(sizeInBytes=1944.0 B, rowCount=27)
: : +- Exchange (446)
: : +- * Project (445)
: : +- * ColumnarToRow (444)
: : +- Scan parquet (443)
: +- * Sort (482)
: +- * Project (481)
: +- * BroadcastHashJoin Inner BuildLeft (480)
: :- BroadcastQueryStage (475), Statistics(sizeInBytes=2.0 MiB, rowCount=4)
: : +- BroadcastExchange (474)
: : +- * Project (473)
: : +- * Filter (472)
: : +- * Generate (471)
: : +- * Project (470)
: : +- * Filter (469)
: : +- * Generate (468)
: : +- ShuffleQueryStage (467), Statistics(sizeInBytes=704.0 B, rowCount=1)
: : +- ReusedExchange (466)
: +- * HashAggregate (479)
: +- AQEShuffleRead (478)
: +- ShuffleQueryStage (477), Statistics(sizeInBytes=6.5 KiB, rowCount=139)
: +- ReusedExchange (476)
+- BroadcastQueryStage (495), Statistics(sizeInBytes=2.0 MiB, rowCount=40)
+- BroadcastExchange (494)
+- * Project (493)
+- * Filter (492)
+- * Generate (491)
+- ShuffleQueryStage (490), Statistics(sizeInBytes=25.1 KiB, rowCount=5)
+- Exchange (489)
+- * Project (488)
+- * Filter (487)
+- * ColumnarToRow (486)
+- Scan parquet (485)
+- == Initial Plan ==
Filter (788)
+- ObjectHashAggregate (787)
+- Exchange (786)
+- ObjectHashAggregate (785)
+- Project (784)
+- Window (783)
+- Sort (782)
+- Exchange (781)
+- Project (780)
+- BroadcastHashJoin Inner BuildRight (779)
:- Project (771)
: +- SortMergeJoin Inner (770)
: :- Sort (731)
: : +- Exchange (730)
: : +- Project (729)
: : +- SortMergeJoin LeftOuter (728)
: : :- Sort (529)
: : : +- Exchange (528)
: : : +- Project (527)
: : : +- Generate (526)
: : : +- Project (525)
: : : +- Generate (524)
: : : +- Project (523)
: : : +- BroadcastHashJoin LeftOuter BuildRight (522)
: : : :- Project (517)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (516)
: : : : :- Exchange (511)
: : : : : +- Filter (510)
: : : : : +- Scan parquet (235)
: : : : +- BroadcastExchange (515)
: : : : +- Project (514)
: : : : +- Exchange (513)
: : : : +- Project (512)
: : : : +- Scan parquet (240)
: : : +- BroadcastExchange (521)
: : : +- Exchange (520)
: : : +- Project (519)
: : : +- Filter (518)
: : : +- Scan parquet (250)
: : +- Sort (727)
: : +- Exchange (726)
: : +- SerializeFromObject (725)
: : +- MapElements (724)
: : +- DeserializeToObject (723)
: : +- Project (722)
: : +- BroadcastHashJoin LeftOuter BuildRight (721)
: : :- ObjectHashAggregate (717)
: : : +- Exchange (716)
: : : +- ObjectHashAggregate (715)
: : : +- Project (714)
: : : +- SortMergeJoin LeftOuter (713)
: : : :- Sort (710)
: : : : +- Exchange (709)
: : : : +- Project (708)
: : : : +- SortMergeJoin LeftOuter (707)
: : : : :- Sort (548)
: : : : : +- Project (547)
: : : : : +- Project (546)
: : : : : +- Generate (545)
: : : : : +- Generate (544)
: : : : : +- Project (543)
: : : : : +- Project (542)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (541)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (535)
: : : : : : :- Exchange (530)
: : : : : : : +- Scan parquet (267)
: : : : : : +- BroadcastExchange (534)
: : : : : : +- Project (533)
: : : : : : +- Exchange (532)
: : : : : : +- Project (531)
: : : : : : +- Scan parquet (271)
: : : : : +- BroadcastExchange (540)
: : : : : +- Exchange (539)
: : : : : +- Project (538)
: : : : : +- Filter (537)
: : : : : +- Scan parquet (536)
: : : : +- Sort (706)
: : : : +- HashAggregate (705)
: : : : +- Exchange (704)
: : : : +- HashAggregate (703)
: : : : +- Project (702)
: : : : +- SortMergeJoin Inner (701)
: : : : :- Sort (621)
: : : : : +- Exchange (620)
: : : : : +- Project (619)
: : : : : +- SortMergeJoin Inner (618)
: : : : : :- Sort (596)
: : : : : : +- Exchange (595)
: : : : : : +- Project (594)
: : : : : : +- Filter (593)
: : : : : : +- Generate (592)
: : : : : : +- Filter (591)
: : : : : : +- ObjectHashAggregate (590)
: : : : : : +- ObjectHashAggregate (589)
: : : : : : +- Generate (588)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (587)
: : : : : : :- BroadcastExchange (552)
: : : : : : : +- Exchange (551)
: : : : : : : +- Project (550)
: : : : : : : +- Filter (549)
: : : : : : : +- Scan parquet (289)
: : : : : : +- Project (586)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (585)
: : : : : : :- BroadcastExchange (561)
: : : : : : : +- Project (560)
: : : : : : : +- Generate (559)
: : : : : : : +- Project (558)
: : : : : : : +- Filter (557)
: : : : : : : +- Generate (556)
: : : : : : : +- Exchange (555)
: : : : : : : +- Project (554)
: : : : : : : +- Filter (553)
: : : : : : : +- Scan parquet (297)
: : : : : : +- HashAggregate (584)
: : : : : : +- Exchange (583)
: : : : : : +- HashAggregate (582)
: : : : : : +- Project (581)
: : : : : : +- Generate (580)
: : : : : : +- Project (579)
: : : : : : +- Generate (578)
: : : : : : +- Project (577)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (576)
: : : : : : :- Project (570)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (569)
: : : : : : : :- Exchange (563)
: : : : : : : : +- Filter (562)
: : : : : : : : +- Scan parquet (310)
: : : : : : : +- BroadcastExchange (568)
: : : : : : : +- Project (567)
: : : : : : : +- Exchange (566)
: : : : : : : +- Project (565)
: : : : : : : +- Scan parquet (564)
: : : : : : +- BroadcastExchange (575)
: : : : : : +- Exchange (574)
: : : : : : +- Project (573)
: : : : : : +- Filter (572)
: : : : : : +- Scan parquet (571)
: : : : : +- Sort (617)
: : : : : +- Project (616)
: : : : : +- Generate (615)
: : : : : +- Project (614)
: : : : : +- Generate (613)
: : : : : +- Project (612)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (611)
: : : : : :- Project (605)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (604)
: : : : : : :- Exchange (598)
: : : : : : : +- Filter (597)
: : : : : : : +- Scan parquet (347)
: : : : : : +- BroadcastExchange (603)
: : : : : : +- Project (602)
: : : : : : +- Exchange (601)
: : : : : : +- Project (600)
: : : : : : +- Scan parquet (599)
: : : : : +- BroadcastExchange (610)
: : : : : +- Exchange (609)
: : : : : +- Project (608)
: : : : : +- Filter (607)
: : : : : +- Scan parquet (606)
: : : : +- Sort (700)
: : : : +- Exchange (699)
: : : : +- HashAggregate (698)
: : : : +- HashAggregate (697)
: : : : +- Project (696)
: : : : +- SortMergeJoin Inner (695)
: : : : :- Sort (672)
: : : : : +- Exchange (671)
: : : : : +- Project (670)
: : : : : +- Filter (669)
: : : : : +- Generate (668)
: : : : : +- Filter (667)
: : : : : +- ObjectHashAggregate (666)
: : : : : +- ObjectHashAggregate (665)
: : : : : +- Generate (664)
: : : : : +- BroadcastHashJoin Inner BuildLeft (663)
: : : : : :- BroadcastExchange (626)
: : : : : : +- Exchange (625)
: : : : : : +- Project (624)
: : : : : : +- Filter (623)
: : : : : : +- Scan parquet (622)
: : : : : +- Project (662)
: : : : : +- BroadcastHashJoin Inner BuildLeft (661)
: : : : : :- BroadcastExchange (636)
: : : : : : +- Project (635)
: : : : : : +- Generate (634)
: : : : : : +- Project (633)
: : : : : : +- Filter (632)
: : : : : : +- Generate (631)
: : : : : : +- Exchange (630)
: : : : : : +- Project (629)
: : : : : : +- Filter (628)
: : : : : : +- Scan parquet (627)
: : : : : +- HashAggregate (660)
: : : : : +- Exchange (659)
: : : : : +- HashAggregate (658)
: : : : : +- Project (657)
: : : : : +- Generate (656)
: : : : : +- Project (655)
: : : : : +- Generate (654)
: : : : : +- Project (653)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (652)
: : : : : :- Project (646)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (645)
: : : : : : :- Exchange (639)
: : : : : : : +- Filter (638)
: : : : : : : +- Scan parquet (637)
: : : : : : +- BroadcastExchange (644)
: : : : : : +- Project (643)
: : : : : : +- Exchange (642)
: : : : : : +- Project (641)
: : : : : : +- Scan parquet (640)
: : : : : +- BroadcastExchange (651)
: : : : : +- Exchange (650)
: : : : : +- Project (649)
: : : : : +- Filter (648)
: : : : : +- Scan parquet (647)
: : : : +- Sort (694)
: : : : +- Project (693)
: : : : +- Generate (692)
: : : : +- Project (691)
: : : : +- Generate (690)
: : : : +- Project (689)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (688)
: : : : :- Project (682)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (681)
: : : : : :- Exchange (675)
: : : : : : +- Filter (674)
: : : : : : +- Scan parquet (673)
: : : : : +- BroadcastExchange (680)
: : : : : +- Project (679)
: : : : : +- Exchange (678)
: : : : : +- Project (677)
: : : : : +- Scan parquet (676)
: : : : +- BroadcastExchange (687)
: : : : +- Exchange (686)
: : : : +- Project (685)
: : : : +- Filter (684)
: : : : +- Scan parquet (683)
: : : +- Sort (712)
: : : +- Exchange (711)
: : : +- Scan parquet (430)
: : +- BroadcastExchange (720)
: : +- Exchange (719)
: : +- Project (718)
: : +- Scan parquet (443)
: +- Sort (769)
: +- Project (768)
: +- BroadcastHashJoin Inner BuildLeft (767)
: :- BroadcastExchange (742)
: : +- Project (741)
: : +- Filter (740)
: : +- Generate (739)
: : +- Project (738)
: : +- Filter (737)
: : +- Generate (736)
: : +- Exchange (735)
: : +- Project (734)
: : +- Filter (733)
: : +- Scan parquet (732)
: +- HashAggregate (766)
: +- Exchange (765)
: +- HashAggregate (764)
: +- Project (763)
: +- Generate (762)
: +- Project (761)
: +- Generate (760)
: +- Project (759)
: +- BroadcastHashJoin LeftOuter BuildRight (758)
: :- Project (752)
: : +- BroadcastHashJoin LeftOuter BuildRight (751)
: : :- Exchange (745)
: : : +- Filter (744)
: : : +- Scan parquet (743)
: : +- BroadcastExchange (750)
: : +- Project (749)
: : +- Exchange (748)
: : +- Project (747)
: : +- Scan parquet (746)
: +- BroadcastExchange (757)
: +- Exchange (756)
: +- Project (755)
: +- Filter (754)
: +- Scan parquet (753)
+- BroadcastExchange (778)
+- Project (777)
+- Filter (776)
+- Generate (775)
+- Exchange (774)
+- Project (773)
+- Filter (772)
+- Scan parquet (485)
+- == Initial Plan ==
Project (2463)
+- SortMergeJoin LeftOuter (2462)
:- Project (1639)
: +- SortMergeJoin LeftOuter (1638)
: :- Sort (1220)
: : +- Exchange (1219)
: : +- Project (1218)
: : +- SortMergeJoin LeftOuter (1217)
: : :- Sort (1013)
: : : +- Exchange (1012)
: : : +- Project (1011)
: : : +- SortMergeJoin LeftOuter (1010)
: : : :- Sort (851)
: : : : +- Project (850)
: : : : +- Project (849)
: : : : +- Generate (848)
: : : : +- Generate (847)
: : : : +- Project (846)
: : : : +- Project (845)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (844)
: : : : :- Project (839)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (838)
: : : : : :- Exchange (833)
: : : : : : +- Scan parquet (1)
: : : : : +- BroadcastExchange (837)
: : : : : +- Project (836)
: : : : : +- Exchange (835)
: : : : : +- Project (834)
: : : : : +- Scan parquet (5)
: : : : +- BroadcastExchange (843)
: : : : +- Exchange (842)
: : : : +- Project (841)
: : : : +- Filter (840)
: : : : +- Scan parquet (15)
: : : +- Sort (1009)
: : : +- HashAggregate (1008)
: : : +- Exchange (1007)
: : : +- HashAggregate (1006)
: : : +- Project (1005)
: : : +- SortMergeJoin Inner (1004)
: : : :- Sort (924)
: : : : +- Exchange (923)
: : : : +- Project (922)
: : : : +- SortMergeJoin Inner (921)
: : : : :- Sort (899)
: : : : : +- Exchange (898)
: : : : : +- Project (897)
: : : : : +- Filter (896)
: : : : : +- Generate (895)
: : : : : +- Filter (894)
: : : : : +- ObjectHashAggregate (893)
: : : : : +- ObjectHashAggregate (892)
: : : : : +- Generate (891)
: : : : : +- BroadcastHashJoin Inner BuildLeft (890)
: : : : : :- BroadcastExchange (855)
: : : : : : +- Exchange (854)
: : : : : : +- Project (853)
: : : : : : +- Filter (852)
: : : : : : +- Scan parquet (30)
: : : : : +- Project (889)
: : : : : +- BroadcastHashJoin Inner BuildLeft (888)
: : : : : :- BroadcastExchange (864)
: : : : : : +- Project (863)
: : : : : : +- Generate (862)
: : : : : : +- Project (861)
: : : : : : +- Filter (860)
: : : : : : +- Generate (859)
: : : : : : +- Exchange (858)
: : : : : : +- Project (857)
: : : : : : +- Filter (856)
: : : : : : +- Scan parquet (38)
: : : : : +- HashAggregate (887)
: : : : : +- Exchange (886)
: : : : : +- HashAggregate (885)
: : : : : +- Project (884)
: : : : : +- Generate (883)
: : : : : +- Project (882)
: : : : : +- Generate (881)
: : : : : +- Project (880)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (879)
: : : : : :- Project (873)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (872)
: : : : : : :- Exchange (866)
: : : : : : : +- Filter (865)
: : : : : : : +- Scan parquet (51)
: : : : : : +- BroadcastExchange (871)
: : : : : : +- Project (870)
: : : : : : +- Exchange (869)
: : : : : : +- Project (868)
: : : : : : +- Scan parquet (867)
: : : : : +- BroadcastExchange (878)
: : : : : +- Exchange (877)
: : : : : +- Project (876)
: : : : : +- Filter (875)
: : : : : +- Scan parquet (874)
: : : : +- Sort (920)
: : : : +- Project (919)
: : : : +- Generate (918)
: : : : +- Project (917)
: : : : +- Generate (916)
: : : : +- Project (915)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (914)
: : : : :- Project (908)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (907)
: : : : : :- Exchange (901)
: : : : : : +- Filter (900)
: : : : : : +- Scan parquet (88)
: : : : : +- BroadcastExchange (906)
: : : : : +- Project (905)
: : : : : +- Exchange (904)
: : : : : +- Project (903)
: : : : : +- Scan parquet (902)
: : : : +- BroadcastExchange (913)
: : : : +- Exchange (912)
: : : : +- Project (911)
: : : : +- Filter (910)
: : : : +- Scan parquet (909)
: : : +- Sort (1003)
: : : +- Exchange (1002)
: : : +- HashAggregate (1001)
: : : +- HashAggregate (1000)
: : : +- Project (999)
: : : +- SortMergeJoin Inner (998)
: : : :- Sort (975)
: : : : +- Exchange (974)
: : : : +- Project (973)
: : : : +- Filter (972)
: : : : +- Generate (971)
: : : : +- Filter (970)
: : : : +- ObjectHashAggregate (969)
: : : : +- ObjectHashAggregate (968)
: : : : +- Generate (967)
: : : : +- BroadcastHashJoin Inner BuildLeft (966)
: : : : :- BroadcastExchange (929)
: : : : : +- Exchange (928)
: : : : : +- Project (927)
: : : : : +- Filter (926)
: : : : : +- Scan parquet (925)
: : : : +- Project (965)
: : : : +- BroadcastHashJoin Inner BuildLeft (964)
: : : : :- BroadcastExchange (939)
: : : : : +- Project (938)
: : : : : +- Generate (937)
: : : : : +- Project (936)
: : : : : +- Filter (935)
: : : : : +- Generate (934)
: : : : : +- Exchange (933)
: : : : : +- Project (932)
: : : : : +- Filter (931)
: : : : : +- Scan parquet (930)
: : : : +- HashAggregate (963)
: : : : +- Exchange (962)
: : : : +- HashAggregate (961)
: : : : +- Project (960)
: : : : +- Generate (959)
: : : : +- Project (958)
: : : : +- Generate (957)
: : : : +- Project (956)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (955)
: : : : :- Project (949)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (948)
: : : : : :- Exchange (942)
: : : : : : +- Filter (941)
: : : : : : +- Scan parquet (940)
: : : : : +- BroadcastExchange (947)
: : : : : +- Project (946)
: : : : : +- Exchange (945)
: : : : : +- Project (944)
: : : : : +- Scan parquet (943)
: : : : +- BroadcastExchange (954)
: : : : +- Exchange (953)
: : : : +- Project (952)
: : : : +- Filter (951)
: : : : +- Scan parquet (950)
: : : +- Sort (997)
: : : +- Project (996)
: : : +- Generate (995)
: : : +- Project (994)
: : : +- Generate (993)
: : : +- Project (992)
: : : +- BroadcastHashJoin LeftOuter BuildRight (991)
: : : :- Project (985)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (984)
: : : : :- Exchange (978)
: : : : : +- Filter (977)
: : : : : +- Scan parquet (976)
: : : : +- BroadcastExchange (983)
: : : : +- Project (982)
: : : : +- Exchange (981)
: : : : +- Project (980)
: : : : +- Scan parquet (979)
: : : +- BroadcastExchange (990)
: : : +- Exchange (989)
: : : +- Project (988)
: : : +- Filter (987)
: : : +- Scan parquet (986)
: : +- Sort (1216)
: : +- Exchange (1215)
: : +- SerializeFromObject (1214)
: : +- MapElements (1213)
: : +- DeserializeToObject (1212)
: : +- Project (1211)
: : +- BroadcastHashJoin LeftOuter BuildRight (1210)
: : :- ObjectHashAggregate (1206)
: : : +- Exchange (1205)
: : : +- ObjectHashAggregate (1204)
: : : +- Project (1203)
: : : +- SortMergeJoin LeftOuter (1202)
: : : :- Sort (1199)
: : : : +- Exchange (1198)
: : : : +- Project (1197)
: : : : +- SortMergeJoin LeftOuter (1196)
: : : : :- Sort (1033)
: : : : : +- Project (1032)
: : : : : +- Project (1031)
: : : : : +- Generate (1030)
: : : : : +- Generate (1029)
: : : : : +- Project (1028)
: : : : : +- Project (1027)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1026)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (1020)
: : : : : : :- Exchange (1015)
: : : : : : : +- Scan parquet (1014)
: : : : : : +- BroadcastExchange (1019)
: : : : : : +- Project (1018)
: : : : : : +- Exchange (1017)
: : : : : : +- Project (1016)
: : : : : : +- Scan parquet (173)
: : : : : +- BroadcastExchange (1025)
: : : : : +- Exchange (1024)
: : : : : +- Project (1023)
: : : : : +- Filter (1022)
: : : : : +- Scan parquet (1021)
: : : : +- Sort (1195)
: : : : +- HashAggregate (1194)
: : : : +- Exchange (1193)
: : : : +- HashAggregate (1192)
: : : : +- Project (1191)
: : : : +- SortMergeJoin Inner (1190)
: : : : :- Sort (1110)
: : : : : +- Exchange (1109)
: : : : : +- Project (1108)
: : : : : +- SortMergeJoin Inner (1107)
: : : : : :- Sort (1084)
: : : : : : +- Exchange (1083)
: : : : : : +- Project (1082)
: : : : : : +- Filter (1081)
: : : : : : +- Generate (1080)
: : : : : : +- Filter (1079)
: : : : : : +- ObjectHashAggregate (1078)
: : : : : : +- ObjectHashAggregate (1077)
: : : : : : +- Generate (1076)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (1075)
: : : : : : :- BroadcastExchange (1038)
: : : : : : : +- Exchange (1037)
: : : : : : : +- Project (1036)
: : : : : : : +- Filter (1035)
: : : : : : : +- Scan parquet (1034)
: : : : : : +- Project (1074)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (1073)
: : : : : : :- BroadcastExchange (1048)
: : : : : : : +- Project (1047)
: : : : : : : +- Generate (1046)
: : : : : : : +- Project (1045)
: : : : : : : +- Filter (1044)
: : : : : : : +- Generate (1043)
: : : : : : : +- Exchange (1042)
: : : : : : : +- Project (1041)
: : : : : : : +- Filter (1040)
: : : : : : : +- Scan parquet (1039)
: : : : : : +- HashAggregate (1072)
: : : : : : +- Exchange (1071)
: : : : : : +- HashAggregate (1070)
: : : : : : +- Project (1069)
: : : : : : +- Generate (1068)
: : : : : : +- Project (1067)
: : : : : : +- Generate (1066)
: : : : : : +- Project (1065)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1064)
: : : : : : :- Project (1058)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1057)
: : : : : : : :- Exchange (1051)
: : : : : : : : +- Filter (1050)
: : : : : : : : +- Scan parquet (1049)
: : : : : : : +- BroadcastExchange (1056)
: : : : : : : +- Project (1055)
: : : : : : : +- Exchange (1054)
: : : : : : : +- Project (1053)
: : : : : : : +- Scan parquet (1052)
: : : : : : +- BroadcastExchange (1063)
: : : : : : +- Exchange (1062)
: : : : : : +- Project (1061)
: : : : : : +- Filter (1060)
: : : : : : +- Scan parquet (1059)
: : : : : +- Sort (1106)
: : : : : +- Project (1105)
: : : : : +- Generate (1104)
: : : : : +- Project (1103)
: : : : : +- Generate (1102)
: : : : : +- Project (1101)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1100)
: : : : : :- Project (1094)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1093)
: : : : : : :- Exchange (1087)
: : : : : : : +- Filter (1086)
: : : : : : : +- Scan parquet (1085)
: : : : : : +- BroadcastExchange (1092)
: : : : : : +- Project (1091)
: : : : : : +- Exchange (1090)
: : : : : : +- Project (1089)
: : : : : : +- Scan parquet (1088)
: : : : : +- BroadcastExchange (1099)
: : : : : +- Exchange (1098)
: : : : : +- Project (1097)
: : : : : +- Filter (1096)
: : : : : +- Scan parquet (1095)
: : : : +- Sort (1189)
: : : : +- Exchange (1188)
: : : : +- HashAggregate (1187)
: : : : +- HashAggregate (1186)
: : : : +- Project (1185)
: : : : +- SortMergeJoin Inner (1184)
: : : : :- Sort (1161)
: : : : : +- Exchange (1160)
: : : : : +- Project (1159)
: : : : : +- Filter (1158)
: : : : : +- Generate (1157)
: : : : : +- Filter (1156)
: : : : : +- ObjectHashAggregate (1155)
: : : : : +- ObjectHashAggregate (1154)
: : : : : +- Generate (1153)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1152)
: : : : : :- BroadcastExchange (1115)
: : : : : : +- Exchange (1114)
: : : : : : +- Project (1113)
: : : : : : +- Filter (1112)
: : : : : : +- Scan parquet (1111)
: : : : : +- Project (1151)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1150)
: : : : : :- BroadcastExchange (1125)
: : : : : : +- Project (1124)
: : : : : : +- Generate (1123)
: : : : : : +- Project (1122)
: : : : : : +- Filter (1121)
: : : : : : +- Generate (1120)
: : : : : : +- Exchange (1119)
: : : : : : +- Project (1118)
: : : : : : +- Filter (1117)
: : : : : : +- Scan parquet (1116)
: : : : : +- HashAggregate (1149)
: : : : : +- Exchange (1148)
: : : : : +- HashAggregate (1147)
: : : : : +- Project (1146)
: : : : : +- Generate (1145)
: : : : : +- Project (1144)
: : : : : +- Generate (1143)
: : : : : +- Project (1142)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1141)
: : : : : :- Project (1135)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1134)
: : : : : : :- Exchange (1128)
: : : : : : : +- Filter (1127)
: : : : : : : +- Scan parquet (1126)
: : : : : : +- BroadcastExchange (1133)
: : : : : : +- Project (1132)
: : : : : : +- Exchange (1131)
: : : : : : +- Project (1130)
: : : : : : +- Scan parquet (1129)
: : : : : +- BroadcastExchange (1140)
: : : : : +- Exchange (1139)
: : : : : +- Project (1138)
: : : : : +- Filter (1137)
: : : : : +- Scan parquet (1136)
: : : : +- Sort (1183)
: : : : +- Project (1182)
: : : : +- Generate (1181)
: : : : +- Project (1180)
: : : : +- Generate (1179)
: : : : +- Project (1178)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1177)
: : : : :- Project (1171)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1170)
: : : : : :- Exchange (1164)
: : : : : : +- Filter (1163)
: : : : : : +- Scan parquet (1162)
: : : : : +- BroadcastExchange (1169)
: : : : : +- Project (1168)
: : : : : +- Exchange (1167)
: : : : : +- Project (1166)
: : : : : +- Scan parquet (1165)
: : : : +- BroadcastExchange (1176)
: : : : +- Exchange (1175)
: : : : +- Project (1174)
: : : : +- Filter (1173)
: : : : +- Scan parquet (1172)
: : : +- Sort (1201)
: : : +- Exchange (1200)
: : : +- Scan parquet (199)
: : +- BroadcastExchange (1209)
: : +- Exchange (1208)
: : +- Project (1207)
: : +- Scan parquet (212)
: +- Sort (1637)
: +- Project (1636)
: +- ObjectHashAggregate (1635)
: +- Exchange (1634)
: +- ObjectHashAggregate (1633)
: +- Union (1632)
: :- Filter (1221)
: : +- InMemoryTableScan (233)
: : +- InMemoryRelation (234)
: : +- AdaptiveSparkPlan (789)
+- == Final Plan ==
ResultQueryStage (509)
+- * Filter (508)
+- ObjectHashAggregate (507)
+- ShuffleQueryStage (506), Statistics(sizeInBytes=3.4 KiB, rowCount=11)
+- Exchange (505)
+- ObjectHashAggregate (504)
+- Project (503)
+- Window (502)
+- * Sort (501)
+- AQEShuffleRead (500)
+- ShuffleQueryStage (499), Statistics(sizeInBytes=4.4 KiB, rowCount=11)
+- Exchange (498)
+- Project (497)
+- * BroadcastHashJoin Inner BuildRight (496)
:- * Project (484)
: +- * SortMergeJoin Inner (483)
: :- * Sort (465)
: : +- AQEShuffleRead (464)
: : +- ShuffleQueryStage (463), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : +- Exchange (462)
: : +- * Project (461)
: : +- * BroadcastHashJoin LeftOuter BuildRight (460)
: : :- AQEShuffleRead (266)
: : : +- ShuffleQueryStage (265), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : : +- Exchange (264)
: : : +- * Project (263)
: : : +- * Generate (262)
: : : +- * Project (261)
: : : +- * Generate (260)
: : : +- Project (259)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (258)
: : : :- * Project (249)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (248)
: : : : :- ShuffleQueryStage (239), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : : : : +- Exchange (238)
: : : : : +- * Filter (237)
: : : : : +- * ColumnarToRow (236)
: : : : : +- Scan parquet (235)
: : : : +- BroadcastQueryStage (247), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : +- BroadcastExchange (246)
: : : : +- * Project (245)
: : : : +- ShuffleQueryStage (244), Statistics(sizeInBytes=202.9 KiB, rowCount=1.46E+3)
: : : : +- Exchange (243)
: : : : +- * Project (242)
: : : : +- * ColumnarToRow (241)
: : : : +- Scan parquet (240)
: : : +- BroadcastQueryStage (257), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : +- BroadcastExchange (256)
: : : +- ShuffleQueryStage (255), Statistics(sizeInBytes=88.5 KiB, rowCount=145)
: : : +- Exchange (254)
: : : +- * Project (253)
: : : +- * Filter (252)
: : : +- * ColumnarToRow (251)
: : : +- Scan parquet (250)
: : +- BroadcastQueryStage (459), Statistics(sizeInBytes=2.0 MiB, rowCount=434)
: : +- BroadcastExchange (458)
: : +- AQEShuffleRead (457)
: : +- ShuffleQueryStage (456), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : +- Exchange (455)
: : +- * SerializeFromObject (454)
: : +- * MapElements (453)
: : +- * DeserializeToObject (452)
: : +- * Project (451)
: : +- * BroadcastHashJoin LeftOuter BuildRight (450)
: : :- ObjectHashAggregate (442)
: : : +- AQEShuffleRead (441)
: : : +- ShuffleQueryStage (440), Statistics(sizeInBytes=5.3 MiB, rowCount=434)
: : : +- Exchange (439)
: : : +- ObjectHashAggregate (438)
: : : +- * Project (437)
: : : +- * SortMergeJoin LeftOuter (436)
: : : :- * Sort (429)
: : : : +- AQEShuffleRead (428)
: : : : +- ShuffleQueryStage (427), Statistics(sizeInBytes=398.9 KiB, rowCount=434)
: : : : +- Exchange (426)
: : : : +- * Project (425)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (424)
: : : : :- * Project (288)
: : : : : +- * Project (287)
: : : : : +- * Generate (286)
: : : : : +- * Generate (285)
: : : : : +- * Project (284)
: : : : : +- Project (283)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (282)
: : : : : :- * BroadcastHashJoin LeftOuter BuildRight (279)
: : : : : : :- ShuffleQueryStage (270), Statistics(sizeInBytes=40.7 KiB, rowCount=434)
: : : : : : : +- Exchange (269)
: : : : : : : +- * ColumnarToRow (268)
: : : : : : : +- Scan parquet (267)
: : : : : : +- BroadcastQueryStage (278), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : : +- BroadcastExchange (277)
: : : : : : +- * Project (276)
: : : : : : +- ShuffleQueryStage (275), Statistics(sizeInBytes=1122.3 KiB, rowCount=1.46E+3)
: : : : : : +- Exchange (274)
: : : : : : +- * Project (273)
: : : : : : +- * ColumnarToRow (272)
: : : : : : +- Scan parquet (271)
: : : : : +- BroadcastQueryStage (281), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : : +- ReusedExchange (280)
: : : : +- BroadcastQueryStage (423), Statistics(sizeInBytes=2.0 MiB, rowCount=55)
: : : : +- BroadcastExchange (422)
: : : : +- * HashAggregate (421)
: : : : +- AQEShuffleRead (420)
: : : : +- ShuffleQueryStage (419), Statistics(sizeInBytes=5.6 KiB, rowCount=55)
: : : : +- Exchange (418)
: : : : +- * HashAggregate (417)
: : : : +- * Project (416)
: : : : +- * BroadcastHashJoin Inner BuildLeft (415)
: : : : :- BroadcastQueryStage (370), Statistics(sizeInBytes=2.0 MiB, rowCount=55)
: : : : : +- BroadcastExchange (369)
: : : : : +- AQEShuffleRead (368)
: : : : : +- ShuffleQueryStage (367), Statistics(sizeInBytes=6.4 KiB, rowCount=55)
: : : : : +- Exchange (366)
: : : : : +- * Project (365)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (364)
: : : : : :- BroadcastQueryStage (346), Statistics(sizeInBytes=2.0 MiB, rowCount=89)
: : : : : : +- BroadcastExchange (345)
: : : : : : +- AQEShuffleRead (344)
: : : : : : +- ShuffleQueryStage (343), Statistics(sizeInBytes=10.4 KiB, rowCount=89)
: : : : : : +- Exchange (342)
: : : : : : +- * Project (341)
: : : : : : +- * Filter (340)
: : : : : : +- * Generate (339)
: : : : : : +- * Filter (338)
: : : : : : +- ObjectHashAggregate (337)
: : : : : : +- ObjectHashAggregate (336)
: : : : : : +- Generate (335)
: : : : : : +- * BroadcastHashJoin Inner BuildLeft (334)
: : : : : : :- BroadcastQueryStage (296), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : : +- BroadcastExchange (295)
: : : : : : : +- ShuffleQueryStage (294), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : : : : +- Exchange (293)
: : : : : : : +- * Project (292)
: : : : : : : +- * Filter (291)
: : : : : : : +- * ColumnarToRow (290)
: : : : : : : +- Scan parquet (289)
: : : : : : +- * Project (333)
: : : : : : +- * BroadcastHashJoin Inner BuildLeft (332)
: : : : : : :- BroadcastQueryStage (309), Statistics(sizeInBytes=2.0 MiB, rowCount=4)
: : : : : : : +- BroadcastExchange (308)
: : : : : : : +- * Project (307)
: : : : : : : +- * Generate (306)
: : : : : : : +- * Project (305)
: : : : : : : +- * Filter (304)
: : : : : : : +- * Generate (303)
: : : : : : : +- ShuffleQueryStage (302), Statistics(sizeInBytes=704.0 B, rowCount=1)
: : : : : : : +- Exchange (301)
: : : : : : : +- * Project (300)
: : : : : : : +- * Filter (299)
: : : : : : : +- * ColumnarToRow (298)
: : : : : : : +- Scan parquet (297)
: : : : : : +- * HashAggregate (331)
: : : : : : +- AQEShuffleRead (330)
: : : : : : +- ShuffleQueryStage (329), Statistics(sizeInBytes=6.5 KiB, rowCount=139)
: : : : : : +- Exchange (328)
: : : : : : +- * HashAggregate (327)
: : : : : : +- * Project (326)
: : : : : : +- * Generate (325)
: : : : : : +- * Project (324)
: : : : : : +- * Generate (323)
: : : : : : +- Project (322)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (321)
: : : : : : :- * Project (318)
: : : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (317)
: : : : : : : :- ShuffleQueryStage (314), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : : : : : : : +- Exchange (313)
: : : : : : : : +- * Filter (312)
: : : : : : : : +- * ColumnarToRow (311)
: : : : : : : : +- Scan parquet (310)
: : : : : : : +- BroadcastQueryStage (316), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : : : +- ReusedExchange (315)
: : : : : : +- BroadcastQueryStage (320), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : : : +- ReusedExchange (319)
: : : : : +- * Project (363)
: : : : : +- * Generate (362)
: : : : : +- * Project (361)
: : : : : +- * Generate (360)
: : : : : +- Project (359)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (358)
: : : : : :- * Project (355)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (354)
: : : : : : :- ShuffleQueryStage (351), Statistics(sizeInBytes=40.7 KiB, rowCount=434)
: : : : : : : +- Exchange (350)
: : : : : : : +- * Filter (349)
: : : : : : : +- * ColumnarToRow (348)
: : : : : : : +- Scan parquet (347)
: : : : : : +- BroadcastQueryStage (353), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : : +- ReusedExchange (352)
: : : : : +- BroadcastQueryStage (357), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : : +- ReusedExchange (356)
: : : : +- AQEShuffleRead (414)
: : : : +- ShuffleQueryStage (413), Statistics(sizeInBytes=6.0 KiB, rowCount=55)
: : : : +- Exchange (412)
: : : : +- * HashAggregate (411)
: : : : +- * HashAggregate (410)
: : : : +- * Project (409)
: : : : +- * BroadcastHashJoin Inner BuildLeft (408)
: : : : :- BroadcastQueryStage (393), Statistics(sizeInBytes=2.0 MiB, rowCount=89)
: : : : : +- BroadcastExchange (392)
: : : : : +- AQEShuffleRead (391)
: : : : : +- ShuffleQueryStage (390), Statistics(sizeInBytes=9.7 KiB, rowCount=89)
: : : : : +- Exchange (389)
: : : : : +- * Project (388)
: : : : : +- * Filter (387)
: : : : : +- * Generate (386)
: : : : : +- * Filter (385)
: : : : : +- ObjectHashAggregate (384)
: : : : : +- ObjectHashAggregate (383)
: : : : : +- Generate (382)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (381)
: : : : : :- BroadcastQueryStage (372), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- ReusedExchange (371)
: : : : : +- * Project (380)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (379)
: : : : : :- BroadcastQueryStage (374), Statistics(sizeInBytes=2.0 MiB, rowCount=4)
: : : : : : +- ReusedExchange (373)
: : : : : +- * HashAggregate (378)
: : : : : +- AQEShuffleRead (377)
: : : : : +- ShuffleQueryStage (376), Statistics(sizeInBytes=6.5 KiB, rowCount=139)
: : : : : +- ReusedExchange (375)
: : : : +- * Project (407)
: : : : +- * Generate (406)
: : : : +- * Project (405)
: : : : +- * Generate (404)
: : : : +- Project (403)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (402)
: : : : :- * Project (399)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (398)
: : : : : :- ShuffleQueryStage (395), Statistics(sizeInBytes=40.7 KiB, rowCount=434)
: : : : : : +- ReusedExchange (394)
: : : : : +- BroadcastQueryStage (397), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : +- ReusedExchange (396)
: : : : +- BroadcastQueryStage (401), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : +- ReusedExchange (400)
: : : +- * Sort (435)
: : : +- AQEShuffleRead (434)
: : : +- ShuffleQueryStage (433), Statistics(sizeInBytes=4.9 MiB, rowCount=434)
: : : +- Exchange (432)
: : : +- * ColumnarToRow (431)
: : : +- Scan parquet (430)
: : +- BroadcastQueryStage (449), Statistics(sizeInBytes=2.0 MiB, rowCount=27)
: : +- BroadcastExchange (448)
: : +- ShuffleQueryStage (447), Statistics(sizeInBytes=1944.0 B, rowCount=27)
: : +- Exchange (446)
: : +- * Project (445)
: : +- * ColumnarToRow (444)
: : +- Scan parquet (443)
: +- * Sort (482)
: +- * Project (481)
: +- * BroadcastHashJoin Inner BuildLeft (480)
: :- BroadcastQueryStage (475), Statistics(sizeInBytes=2.0 MiB, rowCount=4)
: : +- BroadcastExchange (474)
: : +- * Project (473)
: : +- * Filter (472)
: : +- * Generate (471)
: : +- * Project (470)
: : +- * Filter (469)
: : +- * Generate (468)
: : +- ShuffleQueryStage (467), Statistics(sizeInBytes=704.0 B, rowCount=1)
: : +- ReusedExchange (466)
: +- * HashAggregate (479)
: +- AQEShuffleRead (478)
: +- ShuffleQueryStage (477), Statistics(sizeInBytes=6.5 KiB, rowCount=139)
: +- ReusedExchange (476)
+- BroadcastQueryStage (495), Statistics(sizeInBytes=2.0 MiB, rowCount=40)
+- BroadcastExchange (494)
+- * Project (493)
+- * Filter (492)
+- * Generate (491)
+- ShuffleQueryStage (490), Statistics(sizeInBytes=25.1 KiB, rowCount=5)
+- Exchange (489)
+- * Project (488)
+- * Filter (487)
+- * ColumnarToRow (486)
+- Scan parquet (485)
+- == Initial Plan ==
Filter (788)
+- ObjectHashAggregate (787)
+- Exchange (786)
+- ObjectHashAggregate (785)
+- Project (784)
+- Window (783)
+- Sort (782)
+- Exchange (781)
+- Project (780)
+- BroadcastHashJoin Inner BuildRight (779)
:- Project (771)
: +- SortMergeJoin Inner (770)
: :- Sort (731)
: : +- Exchange (730)
: : +- Project (729)
: : +- SortMergeJoin LeftOuter (728)
: : :- Sort (529)
: : : +- Exchange (528)
: : : +- Project (527)
: : : +- Generate (526)
: : : +- Project (525)
: : : +- Generate (524)
: : : +- Project (523)
: : : +- BroadcastHashJoin LeftOuter BuildRight (522)
: : : :- Project (517)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (516)
: : : : :- Exchange (511)
: : : : : +- Filter (510)
: : : : : +- Scan parquet (235)
: : : : +- BroadcastExchange (515)
: : : : +- Project (514)
: : : : +- Exchange (513)
: : : : +- Project (512)
: : : : +- Scan parquet (240)
: : : +- BroadcastExchange (521)
: : : +- Exchange (520)
: : : +- Project (519)
: : : +- Filter (518)
: : : +- Scan parquet (250)
: : +- Sort (727)
: : +- Exchange (726)
: : +- SerializeFromObject (725)
: : +- MapElements (724)
: : +- DeserializeToObject (723)
: : +- Project (722)
: : +- BroadcastHashJoin LeftOuter BuildRight (721)
: : :- ObjectHashAggregate (717)
: : : +- Exchange (716)
: : : +- ObjectHashAggregate (715)
: : : +- Project (714)
: : : +- SortMergeJoin LeftOuter (713)
: : : :- Sort (710)
: : : : +- Exchange (709)
: : : : +- Project (708)
: : : : +- SortMergeJoin LeftOuter (707)
: : : : :- Sort (548)
: : : : : +- Project (547)
: : : : : +- Project (546)
: : : : : +- Generate (545)
: : : : : +- Generate (544)
: : : : : +- Project (543)
: : : : : +- Project (542)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (541)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (535)
: : : : : : :- Exchange (530)
: : : : : : : +- Scan parquet (267)
: : : : : : +- BroadcastExchange (534)
: : : : : : +- Project (533)
: : : : : : +- Exchange (532)
: : : : : : +- Project (531)
: : : : : : +- Scan parquet (271)
: : : : : +- BroadcastExchange (540)
: : : : : +- Exchange (539)
: : : : : +- Project (538)
: : : : : +- Filter (537)
: : : : : +- Scan parquet (536)
: : : : +- Sort (706)
: : : : +- HashAggregate (705)
: : : : +- Exchange (704)
: : : : +- HashAggregate (703)
: : : : +- Project (702)
: : : : +- SortMergeJoin Inner (701)
: : : : :- Sort (621)
: : : : : +- Exchange (620)
: : : : : +- Project (619)
: : : : : +- SortMergeJoin Inner (618)
: : : : : :- Sort (596)
: : : : : : +- Exchange (595)
: : : : : : +- Project (594)
: : : : : : +- Filter (593)
: : : : : : +- Generate (592)
: : : : : : +- Filter (591)
: : : : : : +- ObjectHashAggregate (590)
: : : : : : +- ObjectHashAggregate (589)
: : : : : : +- Generate (588)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (587)
: : : : : : :- BroadcastExchange (552)
: : : : : : : +- Exchange (551)
: : : : : : : +- Project (550)
: : : : : : : +- Filter (549)
: : : : : : : +- Scan parquet (289)
: : : : : : +- Project (586)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (585)
: : : : : : :- BroadcastExchange (561)
: : : : : : : +- Project (560)
: : : : : : : +- Generate (559)
: : : : : : : +- Project (558)
: : : : : : : +- Filter (557)
: : : : : : : +- Generate (556)
: : : : : : : +- Exchange (555)
: : : : : : : +- Project (554)
: : : : : : : +- Filter (553)
: : : : : : : +- Scan parquet (297)
: : : : : : +- HashAggregate (584)
: : : : : : +- Exchange (583)
: : : : : : +- HashAggregate (582)
: : : : : : +- Project (581)
: : : : : : +- Generate (580)
: : : : : : +- Project (579)
: : : : : : +- Generate (578)
: : : : : : +- Project (577)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (576)
: : : : : : :- Project (570)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (569)
: : : : : : : :- Exchange (563)
: : : : : : : : +- Filter (562)
: : : : : : : : +- Scan parquet (310)
: : : : : : : +- BroadcastExchange (568)
: : : : : : : +- Project (567)
: : : : : : : +- Exchange (566)
: : : : : : : +- Project (565)
: : : : : : : +- Scan parquet (564)
: : : : : : +- BroadcastExchange (575)
: : : : : : +- Exchange (574)
: : : : : : +- Project (573)
: : : : : : +- Filter (572)
: : : : : : +- Scan parquet (571)
: : : : : +- Sort (617)
: : : : : +- Project (616)
: : : : : +- Generate (615)
: : : : : +- Project (614)
: : : : : +- Generate (613)
: : : : : +- Project (612)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (611)
: : : : : :- Project (605)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (604)
: : : : : : :- Exchange (598)
: : : : : : : +- Filter (597)
: : : : : : : +- Scan parquet (347)
: : : : : : +- BroadcastExchange (603)
: : : : : : +- Project (602)
: : : : : : +- Exchange (601)
: : : : : : +- Project (600)
: : : : : : +- Scan parquet (599)
: : : : : +- BroadcastExchange (610)
: : : : : +- Exchange (609)
: : : : : +- Project (608)
: : : : : +- Filter (607)
: : : : : +- Scan parquet (606)
: : : : +- Sort (700)
: : : : +- Exchange (699)
: : : : +- HashAggregate (698)
: : : : +- HashAggregate (697)
: : : : +- Project (696)
: : : : +- SortMergeJoin Inner (695)
: : : : :- Sort (672)
: : : : : +- Exchange (671)
: : : : : +- Project (670)
: : : : : +- Filter (669)
: : : : : +- Generate (668)
: : : : : +- Filter (667)
: : : : : +- ObjectHashAggregate (666)
: : : : : +- ObjectHashAggregate (665)
: : : : : +- Generate (664)
: : : : : +- BroadcastHashJoin Inner BuildLeft (663)
: : : : : :- BroadcastExchange (626)
: : : : : : +- Exchange (625)
: : : : : : +- Project (624)
: : : : : : +- Filter (623)
: : : : : : +- Scan parquet (622)
: : : : : +- Project (662)
: : : : : +- BroadcastHashJoin Inner BuildLeft (661)
: : : : : :- BroadcastExchange (636)
: : : : : : +- Project (635)
: : : : : : +- Generate (634)
: : : : : : +- Project (633)
: : : : : : +- Filter (632)
: : : : : : +- Generate (631)
: : : : : : +- Exchange (630)
: : : : : : +- Project (629)
: : : : : : +- Filter (628)
: : : : : : +- Scan parquet (627)
: : : : : +- HashAggregate (660)
: : : : : +- Exchange (659)
: : : : : +- HashAggregate (658)
: : : : : +- Project (657)
: : : : : +- Generate (656)
: : : : : +- Project (655)
: : : : : +- Generate (654)
: : : : : +- Project (653)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (652)
: : : : : :- Project (646)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (645)
: : : : : : :- Exchange (639)
: : : : : : : +- Filter (638)
: : : : : : : +- Scan parquet (637)
: : : : : : +- BroadcastExchange (644)
: : : : : : +- Project (643)
: : : : : : +- Exchange (642)
: : : : : : +- Project (641)
: : : : : : +- Scan parquet (640)
: : : : : +- BroadcastExchange (651)
: : : : : +- Exchange (650)
: : : : : +- Project (649)
: : : : : +- Filter (648)
: : : : : +- Scan parquet (647)
: : : : +- Sort (694)
: : : : +- Project (693)
: : : : +- Generate (692)
: : : : +- Project (691)
: : : : +- Generate (690)
: : : : +- Project (689)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (688)
: : : : :- Project (682)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (681)
: : : : : :- Exchange (675)
: : : : : : +- Filter (674)
: : : : : : +- Scan parquet (673)
: : : : : +- BroadcastExchange (680)
: : : : : +- Project (679)
: : : : : +- Exchange (678)
: : : : : +- Project (677)
: : : : : +- Scan parquet (676)
: : : : +- BroadcastExchange (687)
: : : : +- Exchange (686)
: : : : +- Project (685)
: : : : +- Filter (684)
: : : : +- Scan parquet (683)
: : : +- Sort (712)
: : : +- Exchange (711)
: : : +- Scan parquet (430)
: : +- BroadcastExchange (720)
: : +- Exchange (719)
: : +- Project (718)
: : +- Scan parquet (443)
: +- Sort (769)
: +- Project (768)
: +- BroadcastHashJoin Inner BuildLeft (767)
: :- BroadcastExchange (742)
: : +- Project (741)
: : +- Filter (740)
: : +- Generate (739)
: : +- Project (738)
: : +- Filter (737)
: : +- Generate (736)
: : +- Exchange (735)
: : +- Project (734)
: : +- Filter (733)
: : +- Scan parquet (732)
: +- HashAggregate (766)
: +- Exchange (765)
: +- HashAggregate (764)
: +- Project (763)
: +- Generate (762)
: +- Project (761)
: +- Generate (760)
: +- Project (759)
: +- BroadcastHashJoin LeftOuter BuildRight (758)
: :- Project (752)
: : +- BroadcastHashJoin LeftOuter BuildRight (751)
: : :- Exchange (745)
: : : +- Filter (744)
: : : +- Scan parquet (743)
: : +- BroadcastExchange (750)
: : +- Project (749)
: : +- Exchange (748)
: : +- Project (747)
: : +- Scan parquet (746)
: +- BroadcastExchange (757)
: +- Exchange (756)
: +- Project (755)
: +- Filter (754)
: +- Scan parquet (753)
+- BroadcastExchange (778)
+- Project (777)
+- Filter (776)
+- Generate (775)
+- Exchange (774)
+- Project (773)
+- Filter (772)
+- Scan parquet (485)
: +- Filter (1631)
: +- ObjectHashAggregate (1630)
: +- Exchange (1629)
: +- ObjectHashAggregate (1628)
: +- Project (1627)
: +- BroadcastHashJoin Inner BuildRight (1626)
: :- Project (1617)
: : +- SortMergeJoin LeftOuter (1616)
: : :- Sort (1409)
: : : +- Exchange (1408)
: : : +- Project (1407)
: : : +- SortMergeJoin LeftOuter (1406)
: : : :- Sort (1243)
: : : : +- Project (1242)
: : : : +- Generate (1241)
: : : : +- Project (1240)
: : : : +- Generate (1239)
: : : : +- Project (1238)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1237)
: : : : :- Project (1231)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1230)
: : : : : :- Exchange (1224)
: : : : : : +- Filter (1223)
: : : : : : +- Scan parquet (1222)
: : : : : +- BroadcastExchange (1229)
: : : : : +- Project (1228)
: : : : : +- Exchange (1227)
: : : : : +- Project (1226)
: : : : : +- Scan parquet (1225)
: : : : +- BroadcastExchange (1236)
: : : : +- Exchange (1235)
: : : : +- Project (1234)
: : : : +- Filter (1233)
: : : : +- Scan parquet (1232)
: : : +- Sort (1405)
: : : +- HashAggregate (1404)
: : : +- Exchange (1403)
: : : +- HashAggregate (1402)
: : : +- Project (1401)
: : : +- SortMergeJoin Inner (1400)
: : : :- Sort (1320)
: : : : +- Exchange (1319)
: : : : +- Project (1318)
: : : : +- SortMergeJoin Inner (1317)
: : : : :- Sort (1294)
: : : : : +- Exchange (1293)
: : : : : +- Project (1292)
: : : : : +- Filter (1291)
: : : : : +- Generate (1290)
: : : : : +- Filter (1289)
: : : : : +- ObjectHashAggregate (1288)
: : : : : +- ObjectHashAggregate (1287)
: : : : : +- Generate (1286)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1285)
: : : : : :- BroadcastExchange (1248)
: : : : : : +- Exchange (1247)
: : : : : : +- Project (1246)
: : : : : : +- Filter (1245)
: : : : : : +- Scan parquet (1244)
: : : : : +- Project (1284)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1283)
: : : : : :- BroadcastExchange (1258)
: : : : : : +- Project (1257)
: : : : : : +- Generate (1256)
: : : : : : +- Project (1255)
: : : : : : +- Filter (1254)
: : : : : : +- Generate (1253)
: : : : : : +- Exchange (1252)
: : : : : : +- Project (1251)
: : : : : : +- Filter (1250)
: : : : : : +- Scan parquet (1249)
: : : : : +- HashAggregate (1282)
: : : : : +- Exchange (1281)
: : : : : +- HashAggregate (1280)
: : : : : +- Project (1279)
: : : : : +- Generate (1278)
: : : : : +- Project (1277)
: : : : : +- Generate (1276)
: : : : : +- Project (1275)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1274)
: : : : : :- Project (1268)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1267)
: : : : : : :- Exchange (1261)
: : : : : : : +- Filter (1260)
: : : : : : : +- Scan parquet (1259)
: : : : : : +- BroadcastExchange (1266)
: : : : : : +- Project (1265)
: : : : : : +- Exchange (1264)
: : : : : : +- Project (1263)
: : : : : : +- Scan parquet (1262)
: : : : : +- BroadcastExchange (1273)
: : : : : +- Exchange (1272)
: : : : : +- Project (1271)
: : : : : +- Filter (1270)
: : : : : +- Scan parquet (1269)
: : : : +- Sort (1316)
: : : : +- Project (1315)
: : : : +- Generate (1314)
: : : : +- Project (1313)
: : : : +- Generate (1312)
: : : : +- Project (1311)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1310)
: : : : :- Project (1304)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1303)
: : : : : :- Exchange (1297)
: : : : : : +- Filter (1296)
: : : : : : +- Scan parquet (1295)
: : : : : +- BroadcastExchange (1302)
: : : : : +- Project (1301)
: : : : : +- Exchange (1300)
: : : : : +- Project (1299)
: : : : : +- Scan parquet (1298)
: : : : +- BroadcastExchange (1309)
: : : : +- Exchange (1308)
: : : : +- Project (1307)
: : : : +- Filter (1306)
: : : : +- Scan parquet (1305)
: : : +- Sort (1399)
: : : +- Exchange (1398)
: : : +- HashAggregate (1397)
: : : +- HashAggregate (1396)
: : : +- Project (1395)
: : : +- SortMergeJoin Inner (1394)
: : : :- Sort (1371)
: : : : +- Exchange (1370)
: : : : +- Project (1369)
: : : : +- Filter (1368)
: : : : +- Generate (1367)
: : : : +- Filter (1366)
: : : : +- ObjectHashAggregate (1365)
: : : : +- ObjectHashAggregate (1364)
: : : : +- Generate (1363)
: : : : +- BroadcastHashJoin Inner BuildLeft (1362)
: : : : :- BroadcastExchange (1325)
: : : : : +- Exchange (1324)
: : : : : +- Project (1323)
: : : : : +- Filter (1322)
: : : : : +- Scan parquet (1321)
: : : : +- Project (1361)
: : : : +- BroadcastHashJoin Inner BuildLeft (1360)
: : : : :- BroadcastExchange (1335)
: : : : : +- Project (1334)
: : : : : +- Generate (1333)
: : : : : +- Project (1332)
: : : : : +- Filter (1331)
: : : : : +- Generate (1330)
: : : : : +- Exchange (1329)
: : : : : +- Project (1328)
: : : : : +- Filter (1327)
: : : : : +- Scan parquet (1326)
: : : : +- HashAggregate (1359)
: : : : +- Exchange (1358)
: : : : +- HashAggregate (1357)
: : : : +- Project (1356)
: : : : +- Generate (1355)
: : : : +- Project (1354)
: : : : +- Generate (1353)
: : : : +- Project (1352)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1351)
: : : : :- Project (1345)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1344)
: : : : : :- Exchange (1338)
: : : : : : +- Filter (1337)
: : : : : : +- Scan parquet (1336)
: : : : : +- BroadcastExchange (1343)
: : : : : +- Project (1342)
: : : : : +- Exchange (1341)
: : : : : +- Project (1340)
: : : : : +- Scan parquet (1339)
: : : : +- BroadcastExchange (1350)
: : : : +- Exchange (1349)
: : : : +- Project (1348)
: : : : +- Filter (1347)
: : : : +- Scan parquet (1346)
: : : +- Sort (1393)
: : : +- Project (1392)
: : : +- Generate (1391)
: : : +- Project (1390)
: : : +- Generate (1389)
: : : +- Project (1388)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1387)
: : : :- Project (1381)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1380)
: : : : :- Exchange (1374)
: : : : : +- Filter (1373)
: : : : : +- Scan parquet (1372)
: : : : +- BroadcastExchange (1379)
: : : : +- Project (1378)
: : : : +- Exchange (1377)
: : : : +- Project (1376)
: : : : +- Scan parquet (1375)
: : : +- BroadcastExchange (1386)
: : : +- Exchange (1385)
: : : +- Project (1384)
: : : +- Filter (1383)
: : : +- Scan parquet (1382)
: : +- Sort (1615)
: : +- Exchange (1614)
: : +- SerializeFromObject (1613)
: : +- MapElements (1612)
: : +- DeserializeToObject (1611)
: : +- Project (1610)
: : +- BroadcastHashJoin LeftOuter BuildRight (1609)
: : :- ObjectHashAggregate (1604)
: : : +- Exchange (1603)
: : : +- ObjectHashAggregate (1602)
: : : +- Project (1601)
: : : +- SortMergeJoin LeftOuter (1600)
: : : :- Sort (1596)
: : : : +- Exchange (1595)
: : : : +- Project (1594)
: : : : +- SortMergeJoin LeftOuter (1593)
: : : : :- Sort (1430)
: : : : : +- Project (1429)
: : : : : +- Project (1428)
: : : : : +- Generate (1427)
: : : : : +- Generate (1426)
: : : : : +- Project (1425)
: : : : : +- Project (1424)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1423)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (1417)
: : : : : : :- Exchange (1411)
: : : : : : : +- Scan parquet (1410)
: : : : : : +- BroadcastExchange (1416)
: : : : : : +- Project (1415)
: : : : : : +- Exchange (1414)
: : : : : : +- Project (1413)
: : : : : : +- Scan parquet (1412)
: : : : : +- BroadcastExchange (1422)
: : : : : +- Exchange (1421)
: : : : : +- Project (1420)
: : : : : +- Filter (1419)
: : : : : +- Scan parquet (1418)
: : : : +- Sort (1592)
: : : : +- HashAggregate (1591)
: : : : +- Exchange (1590)
: : : : +- HashAggregate (1589)
: : : : +- Project (1588)
: : : : +- SortMergeJoin Inner (1587)
: : : : :- Sort (1507)
: : : : : +- Exchange (1506)
: : : : : +- Project (1505)
: : : : : +- SortMergeJoin Inner (1504)
: : : : : :- Sort (1481)
: : : : : : +- Exchange (1480)
: : : : : : +- Project (1479)
: : : : : : +- Filter (1478)
: : : : : : +- Generate (1477)
: : : : : : +- Filter (1476)
: : : : : : +- ObjectHashAggregate (1475)
: : : : : : +- ObjectHashAggregate (1474)
: : : : : : +- Generate (1473)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (1472)
: : : : : : :- BroadcastExchange (1435)
: : : : : : : +- Exchange (1434)
: : : : : : : +- Project (1433)
: : : : : : : +- Filter (1432)
: : : : : : : +- Scan parquet (1431)
: : : : : : +- Project (1471)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (1470)
: : : : : : :- BroadcastExchange (1445)
: : : : : : : +- Project (1444)
: : : : : : : +- Generate (1443)
: : : : : : : +- Project (1442)
: : : : : : : +- Filter (1441)
: : : : : : : +- Generate (1440)
: : : : : : : +- Exchange (1439)
: : : : : : : +- Project (1438)
: : : : : : : +- Filter (1437)
: : : : : : : +- Scan parquet (1436)
: : : : : : +- HashAggregate (1469)
: : : : : : +- Exchange (1468)
: : : : : : +- HashAggregate (1467)
: : : : : : +- Project (1466)
: : : : : : +- Generate (1465)
: : : : : : +- Project (1464)
: : : : : : +- Generate (1463)
: : : : : : +- Project (1462)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1461)
: : : : : : :- Project (1455)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1454)
: : : : : : : :- Exchange (1448)
: : : : : : : : +- Filter (1447)
: : : : : : : : +- Scan parquet (1446)
: : : : : : : +- BroadcastExchange (1453)
: : : : : : : +- Project (1452)
: : : : : : : +- Exchange (1451)
: : : : : : : +- Project (1450)
: : : : : : : +- Scan parquet (1449)
: : : : : : +- BroadcastExchange (1460)
: : : : : : +- Exchange (1459)
: : : : : : +- Project (1458)
: : : : : : +- Filter (1457)
: : : : : : +- Scan parquet (1456)
: : : : : +- Sort (1503)
: : : : : +- Project (1502)
: : : : : +- Generate (1501)
: : : : : +- Project (1500)
: : : : : +- Generate (1499)
: : : : : +- Project (1498)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1497)
: : : : : :- Project (1491)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1490)
: : : : : : :- Exchange (1484)
: : : : : : : +- Filter (1483)
: : : : : : : +- Scan parquet (1482)
: : : : : : +- BroadcastExchange (1489)
: : : : : : +- Project (1488)
: : : : : : +- Exchange (1487)
: : : : : : +- Project (1486)
: : : : : : +- Scan parquet (1485)
: : : : : +- BroadcastExchange (1496)
: : : : : +- Exchange (1495)
: : : : : +- Project (1494)
: : : : : +- Filter (1493)
: : : : : +- Scan parquet (1492)
: : : : +- Sort (1586)
: : : : +- Exchange (1585)
: : : : +- HashAggregate (1584)
: : : : +- HashAggregate (1583)
: : : : +- Project (1582)
: : : : +- SortMergeJoin Inner (1581)
: : : : :- Sort (1558)
: : : : : +- Exchange (1557)
: : : : : +- Project (1556)
: : : : : +- Filter (1555)
: : : : : +- Generate (1554)
: : : : : +- Filter (1553)
: : : : : +- ObjectHashAggregate (1552)
: : : : : +- ObjectHashAggregate (1551)
: : : : : +- Generate (1550)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1549)
: : : : : :- BroadcastExchange (1512)
: : : : : : +- Exchange (1511)
: : : : : : +- Project (1510)
: : : : : : +- Filter (1509)
: : : : : : +- Scan parquet (1508)
: : : : : +- Project (1548)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1547)
: : : : : :- BroadcastExchange (1522)
: : : : : : +- Project (1521)
: : : : : : +- Generate (1520)
: : : : : : +- Project (1519)
: : : : : : +- Filter (1518)
: : : : : : +- Generate (1517)
: : : : : : +- Exchange (1516)
: : : : : : +- Project (1515)
: : : : : : +- Filter (1514)
: : : : : : +- Scan parquet (1513)
: : : : : +- HashAggregate (1546)
: : : : : +- Exchange (1545)
: : : : : +- HashAggregate (1544)
: : : : : +- Project (1543)
: : : : : +- Generate (1542)
: : : : : +- Project (1541)
: : : : : +- Generate (1540)
: : : : : +- Project (1539)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1538)
: : : : : :- Project (1532)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1531)
: : : : : : :- Exchange (1525)
: : : : : : : +- Filter (1524)
: : : : : : : +- Scan parquet (1523)
: : : : : : +- BroadcastExchange (1530)
: : : : : : +- Project (1529)
: : : : : : +- Exchange (1528)
: : : : : : +- Project (1527)
: : : : : : +- Scan parquet (1526)
: : : : : +- BroadcastExchange (1537)
: : : : : +- Exchange (1536)
: : : : : +- Project (1535)
: : : : : +- Filter (1534)
: : : : : +- Scan parquet (1533)
: : : : +- Sort (1580)
: : : : +- Project (1579)
: : : : +- Generate (1578)
: : : : +- Project (1577)
: : : : +- Generate (1576)
: : : : +- Project (1575)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1574)
: : : : :- Project (1568)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1567)
: : : : : :- Exchange (1561)
: : : : : : +- Filter (1560)
: : : : : : +- Scan parquet (1559)
: : : : : +- BroadcastExchange (1566)
: : : : : +- Project (1565)
: : : : : +- Exchange (1564)
: : : : : +- Project (1563)
: : : : : +- Scan parquet (1562)
: : : : +- BroadcastExchange (1573)
: : : : +- Exchange (1572)
: : : : +- Project (1571)
: : : : +- Filter (1570)
: : : : +- Scan parquet (1569)
: : : +- Sort (1599)
: : : +- Exchange (1598)
: : : +- Scan parquet (1597)
: : +- BroadcastExchange (1608)
: : +- Exchange (1607)
: : +- Project (1606)
: : +- Scan parquet (1605)
: +- BroadcastExchange (1625)
: +- Project (1624)
: +- Filter (1623)
: +- Generate (1622)
: +- Exchange (1621)
: +- Project (1620)
: +- Filter (1619)
: +- Scan parquet (1618)
+- Sort (2461)
+- Exchange (2460)
+- Filter (2459)
+- SerializeFromObject (2458)
+- MapElements (2457)
+- DeserializeToObject (2456)
+- Project (2455)
+- SortMergeJoin LeftOuter (2454)
:- Sort (2036)
: +- Exchange (2035)
: +- Project (2034)
: +- SortMergeJoin LeftOuter (2033)
: :- Sort (1826)
: : +- Exchange (1825)
: : +- Project (1824)
: : +- SortMergeJoin LeftOuter (1823)
: : :- Sort (1660)
: : : +- Project (1659)
: : : +- Project (1658)
: : : +- Generate (1657)
: : : +- Generate (1656)
: : : +- Project (1655)
: : : +- Project (1654)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1653)
: : : :- BroadcastHashJoin LeftOuter BuildRight (1647)
: : : : :- Exchange (1641)
: : : : : +- Scan parquet (1640)
: : : : +- BroadcastExchange (1646)
: : : : +- Project (1645)
: : : : +- Exchange (1644)
: : : : +- Project (1643)
: : : : +- Scan parquet (1642)
: : : +- BroadcastExchange (1652)
: : : +- Exchange (1651)
: : : +- Project (1650)
: : : +- Filter (1649)
: : : +- Scan parquet (1648)
: : +- Sort (1822)
: : +- HashAggregate (1821)
: : +- Exchange (1820)
: : +- HashAggregate (1819)
: : +- Project (1818)
: : +- SortMergeJoin Inner (1817)
: : :- Sort (1737)
: : : +- Exchange (1736)
: : : +- Project (1735)
: : : +- SortMergeJoin Inner (1734)
: : : :- Sort (1711)
: : : : +- Exchange (1710)
: : : : +- Project (1709)
: : : : +- Filter (1708)
: : : : +- Generate (1707)
: : : : +- Filter (1706)
: : : : +- ObjectHashAggregate (1705)
: : : : +- ObjectHashAggregate (1704)
: : : : +- Generate (1703)
: : : : +- BroadcastHashJoin Inner BuildLeft (1702)
: : : : :- BroadcastExchange (1665)
: : : : : +- Exchange (1664)
: : : : : +- Project (1663)
: : : : : +- Filter (1662)
: : : : : +- Scan parquet (1661)
: : : : +- Project (1701)
: : : : +- BroadcastHashJoin Inner BuildLeft (1700)
: : : : :- BroadcastExchange (1675)
: : : : : +- Project (1674)
: : : : : +- Generate (1673)
: : : : : +- Project (1672)
: : : : : +- Filter (1671)
: : : : : +- Generate (1670)
: : : : : +- Exchange (1669)
: : : : : +- Project (1668)
: : : : : +- Filter (1667)
: : : : : +- Scan parquet (1666)
: : : : +- HashAggregate (1699)
: : : : +- Exchange (1698)
: : : : +- HashAggregate (1697)
: : : : +- Project (1696)
: : : : +- Generate (1695)
: : : : +- Project (1694)
: : : : +- Generate (1693)
: : : : +- Project (1692)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1691)
: : : : :- Project (1685)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1684)
: : : : : :- Exchange (1678)
: : : : : : +- Filter (1677)
: : : : : : +- Scan parquet (1676)
: : : : : +- BroadcastExchange (1683)
: : : : : +- Project (1682)
: : : : : +- Exchange (1681)
: : : : : +- Project (1680)
: : : : : +- Scan parquet (1679)
: : : : +- BroadcastExchange (1690)
: : : : +- Exchange (1689)
: : : : +- Project (1688)
: : : : +- Filter (1687)
: : : : +- Scan parquet (1686)
: : : +- Sort (1733)
: : : +- Project (1732)
: : : +- Generate (1731)
: : : +- Project (1730)
: : : +- Generate (1729)
: : : +- Project (1728)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1727)
: : : :- Project (1721)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1720)
: : : : :- Exchange (1714)
: : : : : +- Filter (1713)
: : : : : +- Scan parquet (1712)
: : : : +- BroadcastExchange (1719)
: : : : +- Project (1718)
: : : : +- Exchange (1717)
: : : : +- Project (1716)
: : : : +- Scan parquet (1715)
: : : +- BroadcastExchange (1726)
: : : +- Exchange (1725)
: : : +- Project (1724)
: : : +- Filter (1723)
: : : +- Scan parquet (1722)
: : +- Sort (1816)
: : +- Exchange (1815)
: : +- HashAggregate (1814)
: : +- HashAggregate (1813)
: : +- Project (1812)
: : +- SortMergeJoin Inner (1811)
: : :- Sort (1788)
: : : +- Exchange (1787)
: : : +- Project (1786)
: : : +- Filter (1785)
: : : +- Generate (1784)
: : : +- Filter (1783)
: : : +- ObjectHashAggregate (1782)
: : : +- ObjectHashAggregate (1781)
: : : +- Generate (1780)
: : : +- BroadcastHashJoin Inner BuildLeft (1779)
: : : :- BroadcastExchange (1742)
: : : : +- Exchange (1741)
: : : : +- Project (1740)
: : : : +- Filter (1739)
: : : : +- Scan parquet (1738)
: : : +- Project (1778)
: : : +- BroadcastHashJoin Inner BuildLeft (1777)
: : : :- BroadcastExchange (1752)
: : : : +- Project (1751)
: : : : +- Generate (1750)
: : : : +- Project (1749)
: : : : +- Filter (1748)
: : : : +- Generate (1747)
: : : : +- Exchange (1746)
: : : : +- Project (1745)
: : : : +- Filter (1744)
: : : : +- Scan parquet (1743)
: : : +- HashAggregate (1776)
: : : +- Exchange (1775)
: : : +- HashAggregate (1774)
: : : +- Project (1773)
: : : +- Generate (1772)
: : : +- Project (1771)
: : : +- Generate (1770)
: : : +- Project (1769)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1768)
: : : :- Project (1762)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1761)
: : : : :- Exchange (1755)
: : : : : +- Filter (1754)
: : : : : +- Scan parquet (1753)
: : : : +- BroadcastExchange (1760)
: : : : +- Project (1759)
: : : : +- Exchange (1758)
: : : : +- Project (1757)
: : : : +- Scan parquet (1756)
: : : +- BroadcastExchange (1767)
: : : +- Exchange (1766)
: : : +- Project (1765)
: : : +- Filter (1764)
: : : +- Scan parquet (1763)
: : +- Sort (1810)
: : +- Project (1809)
: : +- Generate (1808)
: : +- Project (1807)
: : +- Generate (1806)
: : +- Project (1805)
: : +- BroadcastHashJoin LeftOuter BuildRight (1804)
: : :- Project (1798)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1797)
: : : :- Exchange (1791)
: : : : +- Filter (1790)
: : : : +- Scan parquet (1789)
: : : +- BroadcastExchange (1796)
: : : +- Project (1795)
: : : +- Exchange (1794)
: : : +- Project (1793)
: : : +- Scan parquet (1792)
: : +- BroadcastExchange (1803)
: : +- Exchange (1802)
: : +- Project (1801)
: : +- Filter (1800)
: : +- Scan parquet (1799)
: +- Sort (2032)
: +- Exchange (2031)
: +- SerializeFromObject (2030)
: +- MapElements (2029)
: +- DeserializeToObject (2028)
: +- Project (2027)
: +- BroadcastHashJoin LeftOuter BuildRight (2026)
: :- ObjectHashAggregate (2021)
: : +- Exchange (2020)
: : +- ObjectHashAggregate (2019)
: : +- Project (2018)
: : +- SortMergeJoin LeftOuter (2017)
: : :- Sort (2013)
: : : +- Exchange (2012)
: : : +- Project (2011)
: : : +- SortMergeJoin LeftOuter (2010)
: : : :- Sort (1847)
: : : : +- Project (1846)
: : : : +- Project (1845)
: : : : +- Generate (1844)
: : : : +- Generate (1843)
: : : : +- Project (1842)
: : : : +- Project (1841)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1840)
: : : : :- BroadcastHashJoin LeftOuter BuildRight (1834)
: : : : : :- Exchange (1828)
: : : : : : +- Scan parquet (1827)
: : : : : +- BroadcastExchange (1833)
: : : : : +- Project (1832)
: : : : : +- Exchange (1831)
: : : : : +- Project (1830)
: : : : : +- Scan parquet (1829)
: : : : +- BroadcastExchange (1839)
: : : : +- Exchange (1838)
: : : : +- Project (1837)
: : : : +- Filter (1836)
: : : : +- Scan parquet (1835)
: : : +- Sort (2009)
: : : +- HashAggregate (2008)
: : : +- Exchange (2007)
: : : +- HashAggregate (2006)
: : : +- Project (2005)
: : : +- SortMergeJoin Inner (2004)
: : : :- Sort (1924)
: : : : +- Exchange (1923)
: : : : +- Project (1922)
: : : : +- SortMergeJoin Inner (1921)
: : : : :- Sort (1898)
: : : : : +- Exchange (1897)
: : : : : +- Project (1896)
: : : : : +- Filter (1895)
: : : : : +- Generate (1894)
: : : : : +- Filter (1893)
: : : : : +- ObjectHashAggregate (1892)
: : : : : +- ObjectHashAggregate (1891)
: : : : : +- Generate (1890)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1889)
: : : : : :- BroadcastExchange (1852)
: : : : : : +- Exchange (1851)
: : : : : : +- Project (1850)
: : : : : : +- Filter (1849)
: : : : : : +- Scan parquet (1848)
: : : : : +- Project (1888)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1887)
: : : : : :- BroadcastExchange (1862)
: : : : : : +- Project (1861)
: : : : : : +- Generate (1860)
: : : : : : +- Project (1859)
: : : : : : +- Filter (1858)
: : : : : : +- Generate (1857)
: : : : : : +- Exchange (1856)
: : : : : : +- Project (1855)
: : : : : : +- Filter (1854)
: : : : : : +- Scan parquet (1853)
: : : : : +- HashAggregate (1886)
: : : : : +- Exchange (1885)
: : : : : +- HashAggregate (1884)
: : : : : +- Project (1883)
: : : : : +- Generate (1882)
: : : : : +- Project (1881)
: : : : : +- Generate (1880)
: : : : : +- Project (1879)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1878)
: : : : : :- Project (1872)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1871)
: : : : : : :- Exchange (1865)
: : : : : : : +- Filter (1864)
: : : : : : : +- Scan parquet (1863)
: : : : : : +- BroadcastExchange (1870)
: : : : : : +- Project (1869)
: : : : : : +- Exchange (1868)
: : : : : : +- Project (1867)
: : : : : : +- Scan parquet (1866)
: : : : : +- BroadcastExchange (1877)
: : : : : +- Exchange (1876)
: : : : : +- Project (1875)
: : : : : +- Filter (1874)
: : : : : +- Scan parquet (1873)
: : : : +- Sort (1920)
: : : : +- Project (1919)
: : : : +- Generate (1918)
: : : : +- Project (1917)
: : : : +- Generate (1916)
: : : : +- Project (1915)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1914)
: : : : :- Project (1908)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1907)
: : : : : :- Exchange (1901)
: : : : : : +- Filter (1900)
: : : : : : +- Scan parquet (1899)
: : : : : +- BroadcastExchange (1906)
: : : : : +- Project (1905)
: : : : : +- Exchange (1904)
: : : : : +- Project (1903)
: : : : : +- Scan parquet (1902)
: : : : +- BroadcastExchange (1913)
: : : : +- Exchange (1912)
: : : : +- Project (1911)
: : : : +- Filter (1910)
: : : : +- Scan parquet (1909)
: : : +- Sort (2003)
: : : +- Exchange (2002)
: : : +- HashAggregate (2001)
: : : +- HashAggregate (2000)
: : : +- Project (1999)
: : : +- SortMergeJoin Inner (1998)
: : : :- Sort (1975)
: : : : +- Exchange (1974)
: : : : +- Project (1973)
: : : : +- Filter (1972)
: : : : +- Generate (1971)
: : : : +- Filter (1970)
: : : : +- ObjectHashAggregate (1969)
: : : : +- ObjectHashAggregate (1968)
: : : : +- Generate (1967)
: : : : +- BroadcastHashJoin Inner BuildLeft (1966)
: : : : :- BroadcastExchange (1929)
: : : : : +- Exchange (1928)
: : : : : +- Project (1927)
: : : : : +- Filter (1926)
: : : : : +- Scan parquet (1925)
: : : : +- Project (1965)
: : : : +- BroadcastHashJoin Inner BuildLeft (1964)
: : : : :- BroadcastExchange (1939)
: : : : : +- Project (1938)
: : : : : +- Generate (1937)
: : : : : +- Project (1936)
: : : : : +- Filter (1935)
: : : : : +- Generate (1934)
: : : : : +- Exchange (1933)
: : : : : +- Project (1932)
: : : : : +- Filter (1931)
: : : : : +- Scan parquet (1930)
: : : : +- HashAggregate (1963)
: : : : +- Exchange (1962)
: : : : +- HashAggregate (1961)
: : : : +- Project (1960)
: : : : +- Generate (1959)
: : : : +- Project (1958)
: : : : +- Generate (1957)
: : : : +- Project (1956)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1955)
: : : : :- Project (1949)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1948)
: : : : : :- Exchange (1942)
: : : : : : +- Filter (1941)
: : : : : : +- Scan parquet (1940)
: : : : : +- BroadcastExchange (1947)
: : : : : +- Project (1946)
: : : : : +- Exchange (1945)
: : : : : +- Project (1944)
: : : : : +- Scan parquet (1943)
: : : : +- BroadcastExchange (1954)
: : : : +- Exchange (1953)
: : : : +- Project (1952)
: : : : +- Filter (1951)
: : : : +- Scan parquet (1950)
: : : +- Sort (1997)
: : : +- Project (1996)
: : : +- Generate (1995)
: : : +- Project (1994)
: : : +- Generate (1993)
: : : +- Project (1992)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1991)
: : : :- Project (1985)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1984)
: : : : :- Exchange (1978)
: : : : : +- Filter (1977)
: : : : : +- Scan parquet (1976)
: : : : +- BroadcastExchange (1983)
: : : : +- Project (1982)
: : : : +- Exchange (1981)
: : : : +- Project (1980)
: : : : +- Scan parquet (1979)
: : : +- BroadcastExchange (1990)
: : : +- Exchange (1989)
: : : +- Project (1988)
: : : +- Filter (1987)
: : : +- Scan parquet (1986)
: : +- Sort (2016)
: : +- Exchange (2015)
: : +- Scan parquet (2014)
: +- BroadcastExchange (2025)
: +- Exchange (2024)
: +- Project (2023)
: +- Scan parquet (2022)
+- Sort (2453)
+- Project (2452)
+- ObjectHashAggregate (2451)
+- Exchange (2450)
+- ObjectHashAggregate (2449)
+- Union (2448)
:- Filter (2037)
: +- InMemoryTableScan (811)
: +- InMemoryRelation (812)
: +- AdaptiveSparkPlan (789)
+- == Final Plan ==
ResultQueryStage (509)
+- * Filter (508)
+- ObjectHashAggregate (507)
+- ShuffleQueryStage (506), Statistics(sizeInBytes=3.4 KiB, rowCount=11)
+- Exchange (505)
+- ObjectHashAggregate (504)
+- Project (503)
+- Window (502)
+- * Sort (501)
+- AQEShuffleRead (500)
+- ShuffleQueryStage (499), Statistics(sizeInBytes=4.4 KiB, rowCount=11)
+- Exchange (498)
+- Project (497)
+- * BroadcastHashJoin Inner BuildRight (496)
:- * Project (484)
: +- * SortMergeJoin Inner (483)
: :- * Sort (465)
: : +- AQEShuffleRead (464)
: : +- ShuffleQueryStage (463), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : +- Exchange (462)
: : +- * Project (461)
: : +- * BroadcastHashJoin LeftOuter BuildRight (460)
: : :- AQEShuffleRead (266)
: : : +- ShuffleQueryStage (265), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : : +- Exchange (264)
: : : +- * Project (263)
: : : +- * Generate (262)
: : : +- * Project (261)
: : : +- * Generate (260)
: : : +- Project (259)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (258)
: : : :- * Project (249)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (248)
: : : : :- ShuffleQueryStage (239), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : : : : +- Exchange (238)
: : : : : +- * Filter (237)
: : : : : +- * ColumnarToRow (236)
: : : : : +- Scan parquet (235)
: : : : +- BroadcastQueryStage (247), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : +- BroadcastExchange (246)
: : : : +- * Project (245)
: : : : +- ShuffleQueryStage (244), Statistics(sizeInBytes=202.9 KiB, rowCount=1.46E+3)
: : : : +- Exchange (243)
: : : : +- * Project (242)
: : : : +- * ColumnarToRow (241)
: : : : +- Scan parquet (240)
: : : +- BroadcastQueryStage (257), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : +- BroadcastExchange (256)
: : : +- ShuffleQueryStage (255), Statistics(sizeInBytes=88.5 KiB, rowCount=145)
: : : +- Exchange (254)
: : : +- * Project (253)
: : : +- * Filter (252)
: : : +- * ColumnarToRow (251)
: : : +- Scan parquet (250)
: : +- BroadcastQueryStage (459), Statistics(sizeInBytes=2.0 MiB, rowCount=434)
: : +- BroadcastExchange (458)
: : +- AQEShuffleRead (457)
: : +- ShuffleQueryStage (456), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : +- Exchange (455)
: : +- * SerializeFromObject (454)
: : +- * MapElements (453)
: : +- * DeserializeToObject (452)
: : +- * Project (451)
: : +- * BroadcastHashJoin LeftOuter BuildRight (450)
: : :- ObjectHashAggregate (442)
: : : +- AQEShuffleRead (441)
: : : +- ShuffleQueryStage (440), Statistics(sizeInBytes=5.3 MiB, rowCount=434)
: : : +- Exchange (439)
: : : +- ObjectHashAggregate (438)
: : : +- * Project (437)
: : : +- * SortMergeJoin LeftOuter (436)
: : : :- * Sort (429)
: : : : +- AQEShuffleRead (428)
: : : : +- ShuffleQueryStage (427), Statistics(sizeInBytes=398.9 KiB, rowCount=434)
: : : : +- Exchange (426)
: : : : +- * Project (425)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (424)
: : : : :- * Project (288)
: : : : : +- * Project (287)
: : : : : +- * Generate (286)
: : : : : +- * Generate (285)
: : : : : +- * Project (284)
: : : : : +- Project (283)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (282)
: : : : : :- * BroadcastHashJoin LeftOuter BuildRight (279)
: : : : : : :- ShuffleQueryStage (270), Statistics(sizeInBytes=40.7 KiB, rowCount=434)
: : : : : : : +- Exchange (269)
: : : : : : : +- * ColumnarToRow (268)
: : : : : : : +- Scan parquet (267)
: : : : : : +- BroadcastQueryStage (278), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : : +- BroadcastExchange (277)
: : : : : : +- * Project (276)
: : : : : : +- ShuffleQueryStage (275), Statistics(sizeInBytes=1122.3 KiB, rowCount=1.46E+3)
: : : : : : +- Exchange (274)
: : : : : : +- * Project (273)
: : : : : : +- * ColumnarToRow (272)
: : : : : : +- Scan parquet (271)
: : : : : +- BroadcastQueryStage (281), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : : +- ReusedExchange (280)
: : : : +- BroadcastQueryStage (423), Statistics(sizeInBytes=2.0 MiB, rowCount=55)
: : : : +- BroadcastExchange (422)
: : : : +- * HashAggregate (421)
: : : : +- AQEShuffleRead (420)
: : : : +- ShuffleQueryStage (419), Statistics(sizeInBytes=5.6 KiB, rowCount=55)
: : : : +- Exchange (418)
: : : : +- * HashAggregate (417)
: : : : +- * Project (416)
: : : : +- * BroadcastHashJoin Inner BuildLeft (415)
: : : : :- BroadcastQueryStage (370), Statistics(sizeInBytes=2.0 MiB, rowCount=55)
: : : : : +- BroadcastExchange (369)
: : : : : +- AQEShuffleRead (368)
: : : : : +- ShuffleQueryStage (367), Statistics(sizeInBytes=6.4 KiB, rowCount=55)
: : : : : +- Exchange (366)
: : : : : +- * Project (365)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (364)
: : : : : :- BroadcastQueryStage (346), Statistics(sizeInBytes=2.0 MiB, rowCount=89)
: : : : : : +- BroadcastExchange (345)
: : : : : : +- AQEShuffleRead (344)
: : : : : : +- ShuffleQueryStage (343), Statistics(sizeInBytes=10.4 KiB, rowCount=89)
: : : : : : +- Exchange (342)
: : : : : : +- * Project (341)
: : : : : : +- * Filter (340)
: : : : : : +- * Generate (339)
: : : : : : +- * Filter (338)
: : : : : : +- ObjectHashAggregate (337)
: : : : : : +- ObjectHashAggregate (336)
: : : : : : +- Generate (335)
: : : : : : +- * BroadcastHashJoin Inner BuildLeft (334)
: : : : : : :- BroadcastQueryStage (296), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : : +- BroadcastExchange (295)
: : : : : : : +- ShuffleQueryStage (294), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : : : : +- Exchange (293)
: : : : : : : +- * Project (292)
: : : : : : : +- * Filter (291)
: : : : : : : +- * ColumnarToRow (290)
: : : : : : : +- Scan parquet (289)
: : : : : : +- * Project (333)
: : : : : : +- * BroadcastHashJoin Inner BuildLeft (332)
: : : : : : :- BroadcastQueryStage (309), Statistics(sizeInBytes=2.0 MiB, rowCount=4)
: : : : : : : +- BroadcastExchange (308)
: : : : : : : +- * Project (307)
: : : : : : : +- * Generate (306)
: : : : : : : +- * Project (305)
: : : : : : : +- * Filter (304)
: : : : : : : +- * Generate (303)
: : : : : : : +- ShuffleQueryStage (302), Statistics(sizeInBytes=704.0 B, rowCount=1)
: : : : : : : +- Exchange (301)
: : : : : : : +- * Project (300)
: : : : : : : +- * Filter (299)
: : : : : : : +- * ColumnarToRow (298)
: : : : : : : +- Scan parquet (297)
: : : : : : +- * HashAggregate (331)
: : : : : : +- AQEShuffleRead (330)
: : : : : : +- ShuffleQueryStage (329), Statistics(sizeInBytes=6.5 KiB, rowCount=139)
: : : : : : +- Exchange (328)
: : : : : : +- * HashAggregate (327)
: : : : : : +- * Project (326)
: : : : : : +- * Generate (325)
: : : : : : +- * Project (324)
: : : : : : +- * Generate (323)
: : : : : : +- Project (322)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (321)
: : : : : : :- * Project (318)
: : : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (317)
: : : : : : : :- ShuffleQueryStage (314), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : : : : : : : +- Exchange (313)
: : : : : : : : +- * Filter (312)
: : : : : : : : +- * ColumnarToRow (311)
: : : : : : : : +- Scan parquet (310)
: : : : : : : +- BroadcastQueryStage (316), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : : : +- ReusedExchange (315)
: : : : : : +- BroadcastQueryStage (320), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : : : +- ReusedExchange (319)
: : : : : +- * Project (363)
: : : : : +- * Generate (362)
: : : : : +- * Project (361)
: : : : : +- * Generate (360)
: : : : : +- Project (359)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (358)
: : : : : :- * Project (355)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (354)
: : : : : : :- ShuffleQueryStage (351), Statistics(sizeInBytes=40.7 KiB, rowCount=434)
: : : : : : : +- Exchange (350)
: : : : : : : +- * Filter (349)
: : : : : : : +- * ColumnarToRow (348)
: : : : : : : +- Scan parquet (347)
: : : : : : +- BroadcastQueryStage (353), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : : +- ReusedExchange (352)
: : : : : +- BroadcastQueryStage (357), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : : +- ReusedExchange (356)
: : : : +- AQEShuffleRead (414)
: : : : +- ShuffleQueryStage (413), Statistics(sizeInBytes=6.0 KiB, rowCount=55)
: : : : +- Exchange (412)
: : : : +- * HashAggregate (411)
: : : : +- * HashAggregate (410)
: : : : +- * Project (409)
: : : : +- * BroadcastHashJoin Inner BuildLeft (408)
: : : : :- BroadcastQueryStage (393), Statistics(sizeInBytes=2.0 MiB, rowCount=89)
: : : : : +- BroadcastExchange (392)
: : : : : +- AQEShuffleRead (391)
: : : : : +- ShuffleQueryStage (390), Statistics(sizeInBytes=9.7 KiB, rowCount=89)
: : : : : +- Exchange (389)
: : : : : +- * Project (388)
: : : : : +- * Filter (387)
: : : : : +- * Generate (386)
: : : : : +- * Filter (385)
: : : : : +- ObjectHashAggregate (384)
: : : : : +- ObjectHashAggregate (383)
: : : : : +- Generate (382)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (381)
: : : : : :- BroadcastQueryStage (372), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- ReusedExchange (371)
: : : : : +- * Project (380)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (379)
: : : : : :- BroadcastQueryStage (374), Statistics(sizeInBytes=2.0 MiB, rowCount=4)
: : : : : : +- ReusedExchange (373)
: : : : : +- * HashAggregate (378)
: : : : : +- AQEShuffleRead (377)
: : : : : +- ShuffleQueryStage (376), Statistics(sizeInBytes=6.5 KiB, rowCount=139)
: : : : : +- ReusedExchange (375)
: : : : +- * Project (407)
: : : : +- * Generate (406)
: : : : +- * Project (405)
: : : : +- * Generate (404)
: : : : +- Project (403)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (402)
: : : : :- * Project (399)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (398)
: : : : : :- ShuffleQueryStage (395), Statistics(sizeInBytes=40.7 KiB, rowCount=434)
: : : : : : +- ReusedExchange (394)
: : : : : +- BroadcastQueryStage (397), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : +- ReusedExchange (396)
: : : : +- BroadcastQueryStage (401), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : +- ReusedExchange (400)
: : : +- * Sort (435)
: : : +- AQEShuffleRead (434)
: : : +- ShuffleQueryStage (433), Statistics(sizeInBytes=4.9 MiB, rowCount=434)
: : : +- Exchange (432)
: : : +- * ColumnarToRow (431)
: : : +- Scan parquet (430)
: : +- BroadcastQueryStage (449), Statistics(sizeInBytes=2.0 MiB, rowCount=27)
: : +- BroadcastExchange (448)
: : +- ShuffleQueryStage (447), Statistics(sizeInBytes=1944.0 B, rowCount=27)
: : +- Exchange (446)
: : +- * Project (445)
: : +- * ColumnarToRow (444)
: : +- Scan parquet (443)
: +- * Sort (482)
: +- * Project (481)
: +- * BroadcastHashJoin Inner BuildLeft (480)
: :- BroadcastQueryStage (475), Statistics(sizeInBytes=2.0 MiB, rowCount=4)
: : +- BroadcastExchange (474)
: : +- * Project (473)
: : +- * Filter (472)
: : +- * Generate (471)
: : +- * Project (470)
: : +- * Filter (469)
: : +- * Generate (468)
: : +- ShuffleQueryStage (467), Statistics(sizeInBytes=704.0 B, rowCount=1)
: : +- ReusedExchange (466)
: +- * HashAggregate (479)
: +- AQEShuffleRead (478)
: +- ShuffleQueryStage (477), Statistics(sizeInBytes=6.5 KiB, rowCount=139)
: +- ReusedExchange (476)
+- BroadcastQueryStage (495), Statistics(sizeInBytes=2.0 MiB, rowCount=40)
+- BroadcastExchange (494)
+- * Project (493)
+- * Filter (492)
+- * Generate (491)
+- ShuffleQueryStage (490), Statistics(sizeInBytes=25.1 KiB, rowCount=5)
+- Exchange (489)
+- * Project (488)
+- * Filter (487)
+- * ColumnarToRow (486)
+- Scan parquet (485)
+- == Initial Plan ==
Filter (788)
+- ObjectHashAggregate (787)
+- Exchange (786)
+- ObjectHashAggregate (785)
+- Project (784)
+- Window (783)
+- Sort (782)
+- Exchange (781)
+- Project (780)
+- BroadcastHashJoin Inner BuildRight (779)
:- Project (771)
: +- SortMergeJoin Inner (770)
: :- Sort (731)
: : +- Exchange (730)
: : +- Project (729)
: : +- SortMergeJoin LeftOuter (728)
: : :- Sort (529)
: : : +- Exchange (528)
: : : +- Project (527)
: : : +- Generate (526)
: : : +- Project (525)
: : : +- Generate (524)
: : : +- Project (523)
: : : +- BroadcastHashJoin LeftOuter BuildRight (522)
: : : :- Project (517)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (516)
: : : : :- Exchange (511)
: : : : : +- Filter (510)
: : : : : +- Scan parquet (235)
: : : : +- BroadcastExchange (515)
: : : : +- Project (514)
: : : : +- Exchange (513)
: : : : +- Project (512)
: : : : +- Scan parquet (240)
: : : +- BroadcastExchange (521)
: : : +- Exchange (520)
: : : +- Project (519)
: : : +- Filter (518)
: : : +- Scan parquet (250)
: : +- Sort (727)
: : +- Exchange (726)
: : +- SerializeFromObject (725)
: : +- MapElements (724)
: : +- DeserializeToObject (723)
: : +- Project (722)
: : +- BroadcastHashJoin LeftOuter BuildRight (721)
: : :- ObjectHashAggregate (717)
: : : +- Exchange (716)
: : : +- ObjectHashAggregate (715)
: : : +- Project (714)
: : : +- SortMergeJoin LeftOuter (713)
: : : :- Sort (710)
: : : : +- Exchange (709)
: : : : +- Project (708)
: : : : +- SortMergeJoin LeftOuter (707)
: : : : :- Sort (548)
: : : : : +- Project (547)
: : : : : +- Project (546)
: : : : : +- Generate (545)
: : : : : +- Generate (544)
: : : : : +- Project (543)
: : : : : +- Project (542)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (541)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (535)
: : : : : : :- Exchange (530)
: : : : : : : +- Scan parquet (267)
: : : : : : +- BroadcastExchange (534)
: : : : : : +- Project (533)
: : : : : : +- Exchange (532)
: : : : : : +- Project (531)
: : : : : : +- Scan parquet (271)
: : : : : +- BroadcastExchange (540)
: : : : : +- Exchange (539)
: : : : : +- Project (538)
: : : : : +- Filter (537)
: : : : : +- Scan parquet (536)
: : : : +- Sort (706)
: : : : +- HashAggregate (705)
: : : : +- Exchange (704)
: : : : +- HashAggregate (703)
: : : : +- Project (702)
: : : : +- SortMergeJoin Inner (701)
: : : : :- Sort (621)
: : : : : +- Exchange (620)
: : : : : +- Project (619)
: : : : : +- SortMergeJoin Inner (618)
: : : : : :- Sort (596)
: : : : : : +- Exchange (595)
: : : : : : +- Project (594)
: : : : : : +- Filter (593)
: : : : : : +- Generate (592)
: : : : : : +- Filter (591)
: : : : : : +- ObjectHashAggregate (590)
: : : : : : +- ObjectHashAggregate (589)
: : : : : : +- Generate (588)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (587)
: : : : : : :- BroadcastExchange (552)
: : : : : : : +- Exchange (551)
: : : : : : : +- Project (550)
: : : : : : : +- Filter (549)
: : : : : : : +- Scan parquet (289)
: : : : : : +- Project (586)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (585)
: : : : : : :- BroadcastExchange (561)
: : : : : : : +- Project (560)
: : : : : : : +- Generate (559)
: : : : : : : +- Project (558)
: : : : : : : +- Filter (557)
: : : : : : : +- Generate (556)
: : : : : : : +- Exchange (555)
: : : : : : : +- Project (554)
: : : : : : : +- Filter (553)
: : : : : : : +- Scan parquet (297)
: : : : : : +- HashAggregate (584)
: : : : : : +- Exchange (583)
: : : : : : +- HashAggregate (582)
: : : : : : +- Project (581)
: : : : : : +- Generate (580)
: : : : : : +- Project (579)
: : : : : : +- Generate (578)
: : : : : : +- Project (577)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (576)
: : : : : : :- Project (570)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (569)
: : : : : : : :- Exchange (563)
: : : : : : : : +- Filter (562)
: : : : : : : : +- Scan parquet (310)
: : : : : : : +- BroadcastExchange (568)
: : : : : : : +- Project (567)
: : : : : : : +- Exchange (566)
: : : : : : : +- Project (565)
: : : : : : : +- Scan parquet (564)
: : : : : : +- BroadcastExchange (575)
: : : : : : +- Exchange (574)
: : : : : : +- Project (573)
: : : : : : +- Filter (572)
: : : : : : +- Scan parquet (571)
: : : : : +- Sort (617)
: : : : : +- Project (616)
: : : : : +- Generate (615)
: : : : : +- Project (614)
: : : : : +- Generate (613)
: : : : : +- Project (612)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (611)
: : : : : :- Project (605)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (604)
: : : : : : :- Exchange (598)
: : : : : : : +- Filter (597)
: : : : : : : +- Scan parquet (347)
: : : : : : +- BroadcastExchange (603)
: : : : : : +- Project (602)
: : : : : : +- Exchange (601)
: : : : : : +- Project (600)
: : : : : : +- Scan parquet (599)
: : : : : +- BroadcastExchange (610)
: : : : : +- Exchange (609)
: : : : : +- Project (608)
: : : : : +- Filter (607)
: : : : : +- Scan parquet (606)
: : : : +- Sort (700)
: : : : +- Exchange (699)
: : : : +- HashAggregate (698)
: : : : +- HashAggregate (697)
: : : : +- Project (696)
: : : : +- SortMergeJoin Inner (695)
: : : : :- Sort (672)
: : : : : +- Exchange (671)
: : : : : +- Project (670)
: : : : : +- Filter (669)
: : : : : +- Generate (668)
: : : : : +- Filter (667)
: : : : : +- ObjectHashAggregate (666)
: : : : : +- ObjectHashAggregate (665)
: : : : : +- Generate (664)
: : : : : +- BroadcastHashJoin Inner BuildLeft (663)
: : : : : :- BroadcastExchange (626)
: : : : : : +- Exchange (625)
: : : : : : +- Project (624)
: : : : : : +- Filter (623)
: : : : : : +- Scan parquet (622)
: : : : : +- Project (662)
: : : : : +- BroadcastHashJoin Inner BuildLeft (661)
: : : : : :- BroadcastExchange (636)
: : : : : : +- Project (635)
: : : : : : +- Generate (634)
: : : : : : +- Project (633)
: : : : : : +- Filter (632)
: : : : : : +- Generate (631)
: : : : : : +- Exchange (630)
: : : : : : +- Project (629)
: : : : : : +- Filter (628)
: : : : : : +- Scan parquet (627)
: : : : : +- HashAggregate (660)
: : : : : +- Exchange (659)
: : : : : +- HashAggregate (658)
: : : : : +- Project (657)
: : : : : +- Generate (656)
: : : : : +- Project (655)
: : : : : +- Generate (654)
: : : : : +- Project (653)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (652)
: : : : : :- Project (646)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (645)
: : : : : : :- Exchange (639)
: : : : : : : +- Filter (638)
: : : : : : : +- Scan parquet (637)
: : : : : : +- BroadcastExchange (644)
: : : : : : +- Project (643)
: : : : : : +- Exchange (642)
: : : : : : +- Project (641)
: : : : : : +- Scan parquet (640)
: : : : : +- BroadcastExchange (651)
: : : : : +- Exchange (650)
: : : : : +- Project (649)
: : : : : +- Filter (648)
: : : : : +- Scan parquet (647)
: : : : +- Sort (694)
: : : : +- Project (693)
: : : : +- Generate (692)
: : : : +- Project (691)
: : : : +- Generate (690)
: : : : +- Project (689)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (688)
: : : : :- Project (682)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (681)
: : : : : :- Exchange (675)
: : : : : : +- Filter (674)
: : : : : : +- Scan parquet (673)
: : : : : +- BroadcastExchange (680)
: : : : : +- Project (679)
: : : : : +- Exchange (678)
: : : : : +- Project (677)
: : : : : +- Scan parquet (676)
: : : : +- BroadcastExchange (687)
: : : : +- Exchange (686)
: : : : +- Project (685)
: : : : +- Filter (684)
: : : : +- Scan parquet (683)
: : : +- Sort (712)
: : : +- Exchange (711)
: : : +- Scan parquet (430)
: : +- BroadcastExchange (720)
: : +- Exchange (719)
: : +- Project (718)
: : +- Scan parquet (443)
: +- Sort (769)
: +- Project (768)
: +- BroadcastHashJoin Inner BuildLeft (767)
: :- BroadcastExchange (742)
: : +- Project (741)
: : +- Filter (740)
: : +- Generate (739)
: : +- Project (738)
: : +- Filter (737)
: : +- Generate (736)
: : +- Exchange (735)
: : +- Project (734)
: : +- Filter (733)
: : +- Scan parquet (732)
: +- HashAggregate (766)
: +- Exchange (765)
: +- HashAggregate (764)
: +- Project (763)
: +- Generate (762)
: +- Project (761)
: +- Generate (760)
: +- Project (759)
: +- BroadcastHashJoin LeftOuter BuildRight (758)
: :- Project (752)
: : +- BroadcastHashJoin LeftOuter BuildRight (751)
: : :- Exchange (745)
: : : +- Filter (744)
: : : +- Scan parquet (743)
: : +- BroadcastExchange (750)
: : +- Project (749)
: : +- Exchange (748)
: : +- Project (747)
: : +- Scan parquet (746)
: +- BroadcastExchange (757)
: +- Exchange (756)
: +- Project (755)
: +- Filter (754)
: +- Scan parquet (753)
+- BroadcastExchange (778)
+- Project (777)
+- Filter (776)
+- Generate (775)
+- Exchange (774)
+- Project (773)
+- Filter (772)
+- Scan parquet (485)
+- Filter (2447)
+- ObjectHashAggregate (2446)
+- Exchange (2445)
+- ObjectHashAggregate (2444)
+- Project (2443)
+- BroadcastHashJoin Inner BuildRight (2442)
:- Project (2433)
: +- SortMergeJoin LeftOuter (2432)
: :- Sort (2225)
: : +- Exchange (2224)
: : +- Project (2223)
: : +- SortMergeJoin LeftOuter (2222)
: : :- Sort (2059)
: : : +- Project (2058)
: : : +- Generate (2057)
: : : +- Project (2056)
: : : +- Generate (2055)
: : : +- Project (2054)
: : : +- BroadcastHashJoin LeftOuter BuildRight (2053)
: : : :- Project (2047)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2046)
: : : : :- Exchange (2040)
: : : : : +- Filter (2039)
: : : : : +- Scan parquet (2038)
: : : : +- BroadcastExchange (2045)
: : : : +- Project (2044)
: : : : +- Exchange (2043)
: : : : +- Project (2042)
: : : : +- Scan parquet (2041)
: : : +- BroadcastExchange (2052)
: : : +- Exchange (2051)
: : : +- Project (2050)
: : : +- Filter (2049)
: : : +- Scan parquet (2048)
: : +- Sort (2221)
: : +- HashAggregate (2220)
: : +- Exchange (2219)
: : +- HashAggregate (2218)
: : +- Project (2217)
: : +- SortMergeJoin Inner (2216)
: : :- Sort (2136)
: : : +- Exchange (2135)
: : : +- Project (2134)
: : : +- SortMergeJoin Inner (2133)
: : : :- Sort (2110)
: : : : +- Exchange (2109)
: : : : +- Project (2108)
: : : : +- Filter (2107)
: : : : +- Generate (2106)
: : : : +- Filter (2105)
: : : : +- ObjectHashAggregate (2104)
: : : : +- ObjectHashAggregate (2103)
: : : : +- Generate (2102)
: : : : +- BroadcastHashJoin Inner BuildLeft (2101)
: : : : :- BroadcastExchange (2064)
: : : : : +- Exchange (2063)
: : : : : +- Project (2062)
: : : : : +- Filter (2061)
: : : : : +- Scan parquet (2060)
: : : : +- Project (2100)
: : : : +- BroadcastHashJoin Inner BuildLeft (2099)
: : : : :- BroadcastExchange (2074)
: : : : : +- Project (2073)
: : : : : +- Generate (2072)
: : : : : +- Project (2071)
: : : : : +- Filter (2070)
: : : : : +- Generate (2069)
: : : : : +- Exchange (2068)
: : : : : +- Project (2067)
: : : : : +- Filter (2066)
: : : : : +- Scan parquet (2065)
: : : : +- HashAggregate (2098)
: : : : +- Exchange (2097)
: : : : +- HashAggregate (2096)
: : : : +- Project (2095)
: : : : +- Generate (2094)
: : : : +- Project (2093)
: : : : +- Generate (2092)
: : : : +- Project (2091)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2090)
: : : : :- Project (2084)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (2083)
: : : : : :- Exchange (2077)
: : : : : : +- Filter (2076)
: : : : : : +- Scan parquet (2075)
: : : : : +- BroadcastExchange (2082)
: : : : : +- Project (2081)
: : : : : +- Exchange (2080)
: : : : : +- Project (2079)
: : : : : +- Scan parquet (2078)
: : : : +- BroadcastExchange (2089)
: : : : +- Exchange (2088)
: : : : +- Project (2087)
: : : : +- Filter (2086)
: : : : +- Scan parquet (2085)
: : : +- Sort (2132)
: : : +- Project (2131)
: : : +- Generate (2130)
: : : +- Project (2129)
: : : +- Generate (2128)
: : : +- Project (2127)
: : : +- BroadcastHashJoin LeftOuter BuildRight (2126)
: : : :- Project (2120)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2119)
: : : : :- Exchange (2113)
: : : : : +- Filter (2112)
: : : : : +- Scan parquet (2111)
: : : : +- BroadcastExchange (2118)
: : : : +- Project (2117)
: : : : +- Exchange (2116)
: : : : +- Project (2115)
: : : : +- Scan parquet (2114)
: : : +- BroadcastExchange (2125)
: : : +- Exchange (2124)
: : : +- Project (2123)
: : : +- Filter (2122)
: : : +- Scan parquet (2121)
: : +- Sort (2215)
: : +- Exchange (2214)
: : +- HashAggregate (2213)
: : +- HashAggregate (2212)
: : +- Project (2211)
: : +- SortMergeJoin Inner (2210)
: : :- Sort (2187)
: : : +- Exchange (2186)
: : : +- Project (2185)
: : : +- Filter (2184)
: : : +- Generate (2183)
: : : +- Filter (2182)
: : : +- ObjectHashAggregate (2181)
: : : +- ObjectHashAggregate (2180)
: : : +- Generate (2179)
: : : +- BroadcastHashJoin Inner BuildLeft (2178)
: : : :- BroadcastExchange (2141)
: : : : +- Exchange (2140)
: : : : +- Project (2139)
: : : : +- Filter (2138)
: : : : +- Scan parquet (2137)
: : : +- Project (2177)
: : : +- BroadcastHashJoin Inner BuildLeft (2176)
: : : :- BroadcastExchange (2151)
: : : : +- Project (2150)
: : : : +- Generate (2149)
: : : : +- Project (2148)
: : : : +- Filter (2147)
: : : : +- Generate (2146)
: : : : +- Exchange (2145)
: : : : +- Project (2144)
: : : : +- Filter (2143)
: : : : +- Scan parquet (2142)
: : : +- HashAggregate (2175)
: : : +- Exchange (2174)
: : : +- HashAggregate (2173)
: : : +- Project (2172)
: : : +- Generate (2171)
: : : +- Project (2170)
: : : +- Generate (2169)
: : : +- Project (2168)
: : : +- BroadcastHashJoin LeftOuter BuildRight (2167)
: : : :- Project (2161)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2160)
: : : : :- Exchange (2154)
: : : : : +- Filter (2153)
: : : : : +- Scan parquet (2152)
: : : : +- BroadcastExchange (2159)
: : : : +- Project (2158)
: : : : +- Exchange (2157)
: : : : +- Project (2156)
: : : : +- Scan parquet (2155)
: : : +- BroadcastExchange (2166)
: : : +- Exchange (2165)
: : : +- Project (2164)
: : : +- Filter (2163)
: : : +- Scan parquet (2162)
: : +- Sort (2209)
: : +- Project (2208)
: : +- Generate (2207)
: : +- Project (2206)
: : +- Generate (2205)
: : +- Project (2204)
: : +- BroadcastHashJoin LeftOuter BuildRight (2203)
: : :- Project (2197)
: : : +- BroadcastHashJoin LeftOuter BuildRight (2196)
: : : :- Exchange (2190)
: : : : +- Filter (2189)
: : : : +- Scan parquet (2188)
: : : +- BroadcastExchange (2195)
: : : +- Project (2194)
: : : +- Exchange (2193)
: : : +- Project (2192)
: : : +- Scan parquet (2191)
: : +- BroadcastExchange (2202)
: : +- Exchange (2201)
: : +- Project (2200)
: : +- Filter (2199)
: : +- Scan parquet (2198)
: +- Sort (2431)
: +- Exchange (2430)
: +- SerializeFromObject (2429)
: +- MapElements (2428)
: +- DeserializeToObject (2427)
: +- Project (2426)
: +- BroadcastHashJoin LeftOuter BuildRight (2425)
: :- ObjectHashAggregate (2420)
: : +- Exchange (2419)
: : +- ObjectHashAggregate (2418)
: : +- Project (2417)
: : +- SortMergeJoin LeftOuter (2416)
: : :- Sort (2412)
: : : +- Exchange (2411)
: : : +- Project (2410)
: : : +- SortMergeJoin LeftOuter (2409)
: : : :- Sort (2246)
: : : : +- Project (2245)
: : : : +- Project (2244)
: : : : +- Generate (2243)
: : : : +- Generate (2242)
: : : : +- Project (2241)
: : : : +- Project (2240)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2239)
: : : : :- BroadcastHashJoin LeftOuter BuildRight (2233)
: : : : : :- Exchange (2227)
: : : : : : +- Scan parquet (2226)
: : : : : +- BroadcastExchange (2232)
: : : : : +- Project (2231)
: : : : : +- Exchange (2230)
: : : : : +- Project (2229)
: : : : : +- Scan parquet (2228)
: : : : +- BroadcastExchange (2238)
: : : : +- Exchange (2237)
: : : : +- Project (2236)
: : : : +- Filter (2235)
: : : : +- Scan parquet (2234)
: : : +- Sort (2408)
: : : +- HashAggregate (2407)
: : : +- Exchange (2406)
: : : +- HashAggregate (2405)
: : : +- Project (2404)
: : : +- SortMergeJoin Inner (2403)
: : : :- Sort (2323)
: : : : +- Exchange (2322)
: : : : +- Project (2321)
: : : : +- SortMergeJoin Inner (2320)
: : : : :- Sort (2297)
: : : : : +- Exchange (2296)
: : : : : +- Project (2295)
: : : : : +- Filter (2294)
: : : : : +- Generate (2293)
: : : : : +- Filter (2292)
: : : : : +- ObjectHashAggregate (2291)
: : : : : +- ObjectHashAggregate (2290)
: : : : : +- Generate (2289)
: : : : : +- BroadcastHashJoin Inner BuildLeft (2288)
: : : : : :- BroadcastExchange (2251)
: : : : : : +- Exchange (2250)
: : : : : : +- Project (2249)
: : : : : : +- Filter (2248)
: : : : : : +- Scan parquet (2247)
: : : : : +- Project (2287)
: : : : : +- BroadcastHashJoin Inner BuildLeft (2286)
: : : : : :- BroadcastExchange (2261)
: : : : : : +- Project (2260)
: : : : : : +- Generate (2259)
: : : : : : +- Project (2258)
: : : : : : +- Filter (2257)
: : : : : : +- Generate (2256)
: : : : : : +- Exchange (2255)
: : : : : : +- Project (2254)
: : : : : : +- Filter (2253)
: : : : : : +- Scan parquet (2252)
: : : : : +- HashAggregate (2285)
: : : : : +- Exchange (2284)
: : : : : +- HashAggregate (2283)
: : : : : +- Project (2282)
: : : : : +- Generate (2281)
: : : : : +- Project (2280)
: : : : : +- Generate (2279)
: : : : : +- Project (2278)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (2277)
: : : : : :- Project (2271)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (2270)
: : : : : : :- Exchange (2264)
: : : : : : : +- Filter (2263)
: : : : : : : +- Scan parquet (2262)
: : : : : : +- BroadcastExchange (2269)
: : : : : : +- Project (2268)
: : : : : : +- Exchange (2267)
: : : : : : +- Project (2266)
: : : : : : +- Scan parquet (2265)
: : : : : +- BroadcastExchange (2276)
: : : : : +- Exchange (2275)
: : : : : +- Project (2274)
: : : : : +- Filter (2273)
: : : : : +- Scan parquet (2272)
: : : : +- Sort (2319)
: : : : +- Project (2318)
: : : : +- Generate (2317)
: : : : +- Project (2316)
: : : : +- Generate (2315)
: : : : +- Project (2314)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2313)
: : : : :- Project (2307)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (2306)
: : : : : :- Exchange (2300)
: : : : : : +- Filter (2299)
: : : : : : +- Scan parquet (2298)
: : : : : +- BroadcastExchange (2305)
: : : : : +- Project (2304)
: : : : : +- Exchange (2303)
: : : : : +- Project (2302)
: : : : : +- Scan parquet (2301)
: : : : +- BroadcastExchange (2312)
: : : : +- Exchange (2311)
: : : : +- Project (2310)
: : : : +- Filter (2309)
: : : : +- Scan parquet (2308)
: : : +- Sort (2402)
: : : +- Exchange (2401)
: : : +- HashAggregate (2400)
: : : +- HashAggregate (2399)
: : : +- Project (2398)
: : : +- SortMergeJoin Inner (2397)
: : : :- Sort (2374)
: : : : +- Exchange (2373)
: : : : +- Project (2372)
: : : : +- Filter (2371)
: : : : +- Generate (2370)
: : : : +- Filter (2369)
: : : : +- ObjectHashAggregate (2368)
: : : : +- ObjectHashAggregate (2367)
: : : : +- Generate (2366)
: : : : +- BroadcastHashJoin Inner BuildLeft (2365)
: : : : :- BroadcastExchange (2328)
: : : : : +- Exchange (2327)
: : : : : +- Project (2326)
: : : : : +- Filter (2325)
: : : : : +- Scan parquet (2324)
: : : : +- Project (2364)
: : : : +- BroadcastHashJoin Inner BuildLeft (2363)
: : : : :- BroadcastExchange (2338)
: : : : : +- Project (2337)
: : : : : +- Generate (2336)
: : : : : +- Project (2335)
: : : : : +- Filter (2334)
: : : : : +- Generate (2333)
: : : : : +- Exchange (2332)
: : : : : +- Project (2331)
: : : : : +- Filter (2330)
: : : : : +- Scan parquet (2329)
: : : : +- HashAggregate (2362)
: : : : +- Exchange (2361)
: : : : +- HashAggregate (2360)
: : : : +- Project (2359)
: : : : +- Generate (2358)
: : : : +- Project (2357)
: : : : +- Generate (2356)
: : : : +- Project (2355)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2354)
: : : : :- Project (2348)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (2347)
: : : : : :- Exchange (2341)
: : : : : : +- Filter (2340)
: : : : : : +- Scan parquet (2339)
: : : : : +- BroadcastExchange (2346)
: : : : : +- Project (2345)
: : : : : +- Exchange (2344)
: : : : : +- Project (2343)
: : : : : +- Scan parquet (2342)
: : : : +- BroadcastExchange (2353)
: : : : +- Exchange (2352)
: : : : +- Project (2351)
: : : : +- Filter (2350)
: : : : +- Scan parquet (2349)
: : : +- Sort (2396)
: : : +- Project (2395)
: : : +- Generate (2394)
: : : +- Project (2393)
: : : +- Generate (2392)
: : : +- Project (2391)
: : : +- BroadcastHashJoin LeftOuter BuildRight (2390)
: : : :- Project (2384)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2383)
: : : : :- Exchange (2377)
: : : : : +- Filter (2376)
: : : : : +- Scan parquet (2375)
: : : : +- BroadcastExchange (2382)
: : : : +- Project (2381)
: : : : +- Exchange (2380)
: : : : +- Project (2379)
: : : : +- Scan parquet (2378)
: : : +- BroadcastExchange (2389)
: : : +- Exchange (2388)
: : : +- Project (2387)
: : : +- Filter (2386)
: : : +- Scan parquet (2385)
: : +- Sort (2415)
: : +- Exchange (2414)
: : +- Scan parquet (2413)
: +- BroadcastExchange (2424)
: +- Exchange (2423)
: +- Project (2422)
: +- Scan parquet (2421)
+- BroadcastExchange (2441)
+- Project (2440)
+- Filter (2439)
+- Generate (2438)
+- Exchange (2437)
+- Project (2436)
+- Filter (2435)
+- Scan parquet (2434)
(1) Scan parquet
Output [3]: [product#944305, plant#944306, orderDateTime#944307]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2) ColumnarToRow [codegen id : 1]
Input [3]: [product#944305, plant#944306, orderDateTime#944307]
(3) Exchange
Input [3]: [product#944305, plant#944306, orderDateTime#944307]
Arguments: hashpartitioning(product#944305, plant#944306, 37), REPARTITION_BY_NUM, [plan_id=1467391]
(4) ShuffleQueryStage
Output [3]: [product#944305, plant#944306, orderDateTime#944307]
Arguments: 0
(5) Scan parquet
Output [4]: [plant#944363, product#944364, productionAspect#944366, systemId#944361]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(6) ColumnarToRow [codegen id : 2]
Input [4]: [plant#944363, product#944364, productionAspect#944366, systemId#944361]
(7) Project [codegen id : 2]
Output [4]: [plant#944363.internalRefUUID AS _extract_internalRefUUID#952090, product#944364.internalRefUUID AS _extract_internalRefUUID#952089, productionAspect#944366.productMovementPlants.unitOfIssue.code AS _extract_code#952087, productionAspect#944366.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952088]
Input [4]: [plant#944363, product#944364, productionAspect#944366, systemId#944361]
(8) Exchange
Input [4]: [_extract_internalRefUUID#952090, _extract_internalRefUUID#952089, _extract_code#952087, _extract_internalRefUUID#952088]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1467405]
(9) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#952090, _extract_internalRefUUID#952089, _extract_code#952087, _extract_internalRefUUID#952088]
Arguments: 1
(10) Project [codegen id : 163]
Output [4]: [_extract_code#952087, _extract_internalRefUUID#952088, _extract_internalRefUUID#952089, _extract_internalRefUUID#952090]
Input [4]: [_extract_internalRefUUID#952090, _extract_internalRefUUID#952089, _extract_code#952087, _extract_internalRefUUID#952088]
(11) BroadcastExchange
Input [4]: [_extract_code#952087, _extract_internalRefUUID#952088, _extract_internalRefUUID#952089, _extract_internalRefUUID#952090]
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=1501503]
(12) BroadcastQueryStage
Output [4]: [_extract_code#952087, _extract_internalRefUUID#952088, _extract_internalRefUUID#952089, _extract_internalRefUUID#952090]
Arguments: 314
(13) BroadcastHashJoin [codegen id : 333]
Left keys [4]: [coalesce(product#944305, ), isnull(product#944305), coalesce(plant#944306, ), isnull(plant#944306)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952089, ), isnull(_extract_internalRefUUID#952089), coalesce(_extract_internalRefUUID#952090, ), isnull(_extract_internalRefUUID#952090)]
Join type: LeftOuter
Join condition: None
(14) Project [codegen id : 333]
Output [5]: [product#944305, plant#944306, orderDateTime#944307, _extract_code#952087, _extract_internalRefUUID#952088]
Input [7]: [product#944305, plant#944306, orderDateTime#944307, _extract_code#952087, _extract_internalRefUUID#952088, _extract_internalRefUUID#952089, _extract_internalRefUUID#952090]
(15) Scan parquet
Output [4]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403, systemId#944396]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(16) ColumnarToRow [codegen id : 3]
Input [4]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403, systemId#944396]
(17) Filter [codegen id : 3]
Input [4]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403, systemId#944396]
Condition : isnotnull(internalUUID#944397)
(18) Project [codegen id : 3]
Output [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Input [4]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403, systemId#944396]
(19) Exchange
Input [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1467426]
(20) ShuffleQueryStage
Output [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Arguments: 2
(21) BroadcastExchange
Input [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1467436]
(22) BroadcastQueryStage
Output [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Arguments: 315
(23) BroadcastHashJoin [codegen id : 333]
Left keys [1]: [product#944305]
Right keys [1]: [internalUUID#944397]
Join type: LeftOuter
Join condition: None
(24) Project
Output [4]: [product#944305, plant#944306, orderDateTime#944307, filter(unitOfMeasureConversions#944403, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952087) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952088)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#944401.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#944401.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#944409]
Input [8]: [product#944305, plant#944306, orderDateTime#944307, _extract_code#952087, _extract_internalRefUUID#952088, internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
(25) Project [codegen id : 334]
Output [5]: [product#944305, plant#944306, orderDateTime#944307, filteredUnitOfMeasureConversions#944409.quantityDenominator AS _extract_quantityDenominator#952085, filteredUnitOfMeasureConversions#944409.quantityNumerator AS _extract_quantityNumerator#952086]
Input [4]: [product#944305, plant#944306, orderDateTime#944307, filteredUnitOfMeasureConversions#944409]
(26) Generate [codegen id : 334]
Input [5]: [product#944305, plant#944306, orderDateTime#944307, _extract_quantityDenominator#952085, _extract_quantityNumerator#952086]
Arguments: explode(_extract_quantityNumerator#952086), [product#944305, plant#944306, orderDateTime#944307, _extract_quantityDenominator#952085], true, [quantityNumerator#944417]
(27) Generate [codegen id : 334]
Input [5]: [product#944305, plant#944306, orderDateTime#944307, _extract_quantityDenominator#952085, quantityNumerator#944417]
Arguments: explode(_extract_quantityDenominator#952085), [product#944305, plant#944306, orderDateTime#944307, quantityNumerator#944417], true, [quantityDenominator#944420]
(28) Project [codegen id : 334]
Output [4]: [product#944305, plant#944306, orderDateTime#944307, (cast(quantityNumerator#944417 as double) / cast(quantityDenominator#944420 as double)) AS outboundUnit#944421]
Input [5]: [product#944305, plant#944306, orderDateTime#944307, quantityNumerator#944417, quantityDenominator#944420]
(29) Project [codegen id : 334]
Output [4]: [product#944305, plant#944306, orderDateTime#944307, CASE WHEN (isnull(outboundUnit#944421) OR (outboundUnit#944421 <= 0.0)) THEN 1.0 ELSE outboundUnit#944421 END AS outboundUnit#944422]
Input [4]: [product#944305, plant#944306, orderDateTime#944307, outboundUnit#944421]
(30) Scan parquet
Output [6]: [internalUUID#944561, product#944562, plant#944563, calculationDateTime#944564, stockQuantities#944565, systemId#944560]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(31) ColumnarToRow [codegen id : 4]
Input [6]: [internalUUID#944561, product#944562, plant#944563, calculationDateTime#944564, stockQuantities#944565, systemId#944560]
(32) Filter [codegen id : 4]
Input [6]: [internalUUID#944561, product#944562, plant#944563, calculationDateTime#944564, stockQuantities#944565, systemId#944560]
Condition : (isnotnull(plant#944563.internalRefUUID) AND isnotnull(product#944562.internalRefUUID))
(33) Project [codegen id : 4]
Output [6]: [systemId#944560, internalUUID#944561, product#944562, plant#944563, calculationDateTime#944564, stockQuantities#944565]
Input [6]: [internalUUID#944561, product#944562, plant#944563, calculationDateTime#944564, stockQuantities#944565, systemId#944560]
(34) Exchange
Input [6]: [systemId#944560, internalUUID#944561, product#944562, plant#944563, calculationDateTime#944564, stockQuantities#944565]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1467454]
(35) ShuffleQueryStage
Output [6]: [systemId#944560, internalUUID#944561, product#944562, plant#944563, calculationDateTime#944564, stockQuantities#944565]
Arguments: 3
(36) BroadcastExchange
Input [6]: [systemId#944560, internalUUID#944561, product#944562, plant#944563, calculationDateTime#944564, stockQuantities#944565]
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=1467464]
(37) BroadcastQueryStage
Output [6]: [systemId#944560, internalUUID#944561, product#944562, plant#944563, calculationDateTime#944564, stockQuantities#944565]
Arguments: 316
(38) Scan parquet
Output [2]: [marketUnit#944474, distributionCenters#944480]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(39) ColumnarToRow [codegen id : 5]
Input [2]: [marketUnit#944474, distributionCenters#944480]
(40) Filter [codegen id : 5]
Input [2]: [marketUnit#944474, distributionCenters#944480]
Condition : (((marketUnit#944474 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#944480, true) > 0)) AND isnotnull(distributionCenters#944480))
(41) Project [codegen id : 5]
Output [1]: [distributionCenters#944480]
Input [2]: [marketUnit#944474, distributionCenters#944480]
(42) Exchange
Input [1]: [distributionCenters#944480]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1467474]
(43) ShuffleQueryStage
Output [1]: [distributionCenters#944480]
Arguments: 4
(44) Generate [codegen id : 164]
Input [1]: [distributionCenters#944480]
Arguments: explode(distributionCenters#944480), false, [distributionCenters#944497]
(45) Filter [codegen id : 164]
Input [1]: [distributionCenters#944497]
Condition : (((size(distributionCenters#944497.storageLocations, true) > 0) AND isnotnull(distributionCenters#944497.storageLocations)) AND isnotnull(distributionCenters#944497.internalRefUUID))
(46) Project [codegen id : 164]
Output [2]: [distributionCenters#944497.internalRefUUID AS _extract_internalRefUUID#951523, distributionCenters#944497.storageLocations AS _extract_storageLocations#951524]
Input [1]: [distributionCenters#944497]
(47) Generate [codegen id : 164]
Input [2]: [_extract_internalRefUUID#951523, _extract_storageLocations#951524]
Arguments: explode(_extract_storageLocations#951524), [_extract_internalRefUUID#951523], false, [storageLocations#944504]
(48) Project [codegen id : 164]
Output [3]: [_extract_internalRefUUID#951523 AS plantUuid#944499, storageLocations#944504.id AS storageLocId#944505, storageLocations#944504.internalRefUUID AS storageLocUuid#944506]
Input [2]: [_extract_internalRefUUID#951523, storageLocations#944504]
(49) BroadcastExchange
Input [3]: [plantUuid#944499, storageLocId#944505, storageLocUuid#944506]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1501529]
(50) BroadcastQueryStage
Output [3]: [plantUuid#944499, storageLocId#944505, storageLocUuid#944506]
Arguments: 317
(51) Scan parquet
Output [2]: [product#944777, plant#944778]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(52) ColumnarToRow [codegen id : 6]
Input [2]: [product#944777, plant#944778]
(53) Filter [codegen id : 6]
Input [2]: [product#944777, plant#944778]
Condition : isnotnull(plant#944778)
(54) Exchange
Input [2]: [product#944777, plant#944778]
Arguments: hashpartitioning(product#944777, plant#944778, 37), REPARTITION_BY_NUM, [plan_id=1467497]
(55) ShuffleQueryStage
Output [2]: [product#944777, plant#944778]
Arguments: 5
(56) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#952091, _extract_internalRefUUID#952092, _extract_internalRefUUID#952093, _extract_internalRefUUID#952094]
(57) BroadcastQueryStage
Output [4]: [_extract_code#952091, _extract_internalRefUUID#952092, _extract_internalRefUUID#952093, _extract_internalRefUUID#952094]
Arguments: 319
(58) BroadcastHashJoin [codegen id : 221]
Left keys [4]: [coalesce(product#944777, ), isnull(product#944777), coalesce(plant#944778, ), isnull(plant#944778)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952093, ), isnull(_extract_internalRefUUID#952093), coalesce(_extract_internalRefUUID#952094, ), isnull(_extract_internalRefUUID#952094)]
Join type: LeftOuter
Join condition: None
(59) Project [codegen id : 221]
Output [4]: [product#944777, plant#944778, _extract_code#952091, _extract_internalRefUUID#952092]
Input [6]: [product#944777, plant#944778, _extract_code#952091, _extract_internalRefUUID#952092, _extract_internalRefUUID#952093, _extract_internalRefUUID#952094]
(60) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#944792, baseUnitOfMeasure#944796, unitOfMeasureConversions#944798]
(61) BroadcastQueryStage
Output [3]: [internalUUID#944792, baseUnitOfMeasure#944796, unitOfMeasureConversions#944798]
Arguments: 320
(62) BroadcastHashJoin [codegen id : 221]
Left keys [1]: [product#944777]
Right keys [1]: [internalUUID#944792]
Join type: LeftOuter
Join condition: None
(63) Project
Output [2]: [plant#944778, filter(unitOfMeasureConversions#944798, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952091) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952092)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#944796.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#944796.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#944803]
Input [7]: [product#944777, plant#944778, _extract_code#952091, _extract_internalRefUUID#952092, internalUUID#944792, baseUnitOfMeasure#944796, unitOfMeasureConversions#944798]
(64) Generate [codegen id : 222]
Input [2]: [plant#944778, filteredUnitOfMeasureConversions#944803]
Arguments: explode(filteredUnitOfMeasureConversions#944803.quantityNumerator), [plant#944778, filteredUnitOfMeasureConversions#944803], true, [quantityNumerator#944804]
(65) Project [codegen id : 222]
Output [2]: [plant#944778, filteredUnitOfMeasureConversions#944803.quantityDenominator AS _extract_quantityDenominator#951525]
Input [3]: [plant#944778, filteredUnitOfMeasureConversions#944803, quantityNumerator#944804]
(66) Generate [codegen id : 222]
Input [2]: [plant#944778, _extract_quantityDenominator#951525]
Arguments: explode(_extract_quantityDenominator#951525), [plant#944778], true, [quantityDenominator#944805]
(67) Project [codegen id : 222]
Output [1]: [plant#944778]
Input [2]: [plant#944778, quantityDenominator#944805]
(68) HashAggregate [codegen id : 222]
Input [1]: [plant#944778]
Keys [1]: [plant#944778]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#944778]
(69) Exchange
Input [1]: [plant#944778]
Arguments: hashpartitioning(plant#944778, 37), ENSURE_REQUIREMENTS, [plan_id=1517504]
(70) ShuffleQueryStage
Output [1]: [plant#944778]
Arguments: 486
(71) AQEShuffleRead
Input [1]: [plant#944778]
Arguments: coalesced
(72) HashAggregate
Input [1]: [plant#944778]
Keys [1]: [plant#944778]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#944778]
(73) BroadcastHashJoin
Left keys [1]: [plantUuid#944499]
Right keys [1]: [plant#944778]
Join type: Inner
Join condition: None
(74) Project
Output [3]: [plantUuid#944499, storageLocId#944505, storageLocUuid#944506]
Input [4]: [plantUuid#944499, storageLocId#944505, storageLocUuid#944506, plant#944778]
(75) BroadcastHashJoin [codegen id : 253]
Left keys [2]: [coalesce(plant#944563.internalRefUUID, ), isnull(plant#944563.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#944499, ), isnull(plantUuid#944499)]
Join type: Inner
Join condition: None
(76) Generate
Input [9]: [systemId#944560, internalUUID#944561, product#944562, plant#944563, calculationDateTime#944564, stockQuantities#944565, plantUuid#944499, storageLocId#944505, storageLocUuid#944506]
Arguments: explode(filter(stockQuantities#944565, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#944506) AND (lambda x#944569.storageLocation.Id = storageLocId#944505)), lambda x#944569, false))), [systemId#944560, internalUUID#944561, product#944562, plant#944563, calculationDateTime#944564, plantUuid#944499], false, [stockQuantity#944570]
(77) ObjectHashAggregate
Input [7]: [systemId#944560, internalUUID#944561, product#944562, plant#944563, calculationDateTime#944564, plantUuid#944499, stockQuantity#944570]
Keys [5]: [plantUuid#944499, internalUUID#944561, plant#944563, product#944562, systemId#944560]
Functions [2]: [partial_first(calculationDateTime#944564, false), partial_collect_list(stockQuantity#944570, 0, 0)]
Aggregate Attributes [3]: [first#953105, valueSet#953106, buf#953107]
Results [8]: [plantUuid#944499, internalUUID#944561, plant#944563, product#944562, systemId#944560, first#953108, valueSet#953109, buf#953110]
(78) ObjectHashAggregate
Input [8]: [plantUuid#944499, internalUUID#944561, plant#944563, product#944562, systemId#944560, first#953108, valueSet#953109, buf#953110]
Keys [5]: [plantUuid#944499, internalUUID#944561, plant#944563, product#944562, systemId#944560]
Functions [2]: [first(calculationDateTime#944564, false), collect_list(stockQuantity#944570, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#944564)()#944584, collect_list(stockQuantity#944570, 0, 0)#944585]
Results [4]: [product#944562, plant#944563, first(calculationDateTime#944564)()#944584 AS calculationDateTime#944571, collect_list(stockQuantity#944570, 0, 0)#944585 AS stockQuantities#944572]
(79) Filter [codegen id : 254]
Input [4]: [product#944562, plant#944563, calculationDateTime#944571, stockQuantities#944572]
Condition : ((size(stockQuantities#944572, true) > 0) AND isnotnull(calculationDateTime#944571))
(80) Generate [codegen id : 254]
Input [4]: [product#944562, plant#944563, calculationDateTime#944571, stockQuantities#944572]
Arguments: explode(stockQuantities#944572), [product#944562, plant#944563, calculationDateTime#944571], false, [stockQuantity#944587]
(81) Filter [codegen id : 254]
Input [4]: [product#944562, plant#944563, calculationDateTime#944571, stockQuantity#944587]
Condition : (((isnotnull(stockQuantity#944587.specialStockIndicator.code) AND isnotnull(stockQuantity#944587.stockType.code)) AND (stockQuantity#944587.specialStockIndicator.code = )) AND (stockQuantity#944587.stockType.code = 01))
(82) Project [codegen id : 254]
Output [5]: [plant#944563.internalRefUUID AS plantUuid#944589, product#944562.internalRefUUID AS productUuid#944591, calculationDateTime#944571, stockQuantity#944587.storagelocation.id AS storageLocId#944592, stockQuantity#944587.quantity.measure AS quantity#944594]
Input [4]: [product#944562, plant#944563, calculationDateTime#944571, stockQuantity#944587]
(83) Exchange
Input [5]: [plantUuid#944589, productUuid#944591, calculationDateTime#944571, storageLocId#944592, quantity#944594]
Arguments: hashpartitioning(productUuid#944591, plantUuid#944589, 37), ENSURE_REQUIREMENTS, [plan_id=1536527]
(84) ShuffleQueryStage
Output [5]: [plantUuid#944589, productUuid#944591, calculationDateTime#944571, storageLocId#944592, quantity#944594]
Arguments: 517
(85) AQEShuffleRead
Input [5]: [plantUuid#944589, productUuid#944591, calculationDateTime#944571, storageLocId#944592, quantity#944594]
Arguments: local
(86) BroadcastExchange
Input [5]: [plantUuid#944589, productUuid#944591, calculationDateTime#944571, storageLocId#944592, quantity#944594]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1543273]
(87) BroadcastQueryStage
Output [5]: [plantUuid#944589, productUuid#944591, calculationDateTime#944571, storageLocId#944592, quantity#944594]
Arguments: 547
(88) Scan parquet
Output [3]: [product#944606, plant#944607, orderDateTime#944608]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(89) ColumnarToRow [codegen id : 9]
Input [3]: [product#944606, plant#944607, orderDateTime#944608]
(90) Filter [codegen id : 9]
Input [3]: [product#944606, plant#944607, orderDateTime#944608]
Condition : ((isnotnull(orderDateTime#944608) AND isnotnull(plant#944607)) AND isnotnull(product#944606))
(91) Exchange
Input [3]: [product#944606, plant#944607, orderDateTime#944608]
Arguments: hashpartitioning(product#944606, plant#944607, 37), REPARTITION_BY_NUM, [plan_id=1467577]
(92) ShuffleQueryStage
Output [3]: [product#944606, plant#944607, orderDateTime#944608]
Arguments: 10
(93) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#952097, _extract_internalRefUUID#952098, _extract_internalRefUUID#952095, _extract_internalRefUUID#952096]
(94) BroadcastQueryStage
Output [4]: [_extract_code#952097, _extract_internalRefUUID#952098, _extract_internalRefUUID#952095, _extract_internalRefUUID#952096]
Arguments: 322
(95) BroadcastHashJoin [codegen id : 285]
Left keys [4]: [coalesce(product#944606, ), isnull(product#944606), coalesce(plant#944607, ), isnull(plant#944607)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952095, ), isnull(_extract_internalRefUUID#952095), coalesce(_extract_internalRefUUID#952096, ), isnull(_extract_internalRefUUID#952096)]
Join type: LeftOuter
Join condition: None
(96) Project [codegen id : 285]
Output [5]: [product#944606, plant#944607, orderDateTime#944608, _extract_code#952097, _extract_internalRefUUID#952098]
Input [7]: [product#944606, plant#944607, orderDateTime#944608, _extract_code#952097, _extract_internalRefUUID#952098, _extract_internalRefUUID#952095, _extract_internalRefUUID#952096]
(97) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#944621, baseUnitOfMeasure#944625, unitOfMeasureConversions#944627]
(98) BroadcastQueryStage
Output [3]: [internalUUID#944621, baseUnitOfMeasure#944625, unitOfMeasureConversions#944627]
Arguments: 323
(99) BroadcastHashJoin [codegen id : 285]
Left keys [1]: [product#944606]
Right keys [1]: [internalUUID#944621]
Join type: LeftOuter
Join condition: None
(100) Project
Output [4]: [product#944606, plant#944607, orderDateTime#944608, filter(unitOfMeasureConversions#944627, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952097) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952098)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#944625.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#944625.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#944632]
Input [8]: [product#944606, plant#944607, orderDateTime#944608, _extract_code#952097, _extract_internalRefUUID#952098, internalUUID#944621, baseUnitOfMeasure#944625, unitOfMeasureConversions#944627]
(101) Generate
Input [4]: [product#944606, plant#944607, orderDateTime#944608, filteredUnitOfMeasureConversions#944632]
Arguments: explode(filteredUnitOfMeasureConversions#944632.quantityNumerator), [product#944606, plant#944607, orderDateTime#944608, filteredUnitOfMeasureConversions#944632], true, [quantityNumerator#944633]
(102) Project
Output [4]: [product#944606, plant#944607, orderDateTime#944608, filteredUnitOfMeasureConversions#944632.quantityDenominator AS _extract_quantityDenominator#951532]
Input [5]: [product#944606, plant#944607, orderDateTime#944608, filteredUnitOfMeasureConversions#944632, quantityNumerator#944633]
(103) Generate
Input [4]: [product#944606, plant#944607, orderDateTime#944608, _extract_quantityDenominator#951532]
Arguments: explode(_extract_quantityDenominator#951532), [product#944606, plant#944607, orderDateTime#944608], true, [quantityDenominator#944634]
(104) Project
Output [3]: [product#944606, plant#944607, orderDateTime#944608]
Input [4]: [product#944606, plant#944607, orderDateTime#944608, quantityDenominator#944634]
(105) BroadcastHashJoin [codegen id : 286]
Left keys [2]: [plantUuid#944589, productUuid#944591]
Right keys [2]: [plant#944607, product#944606]
Join type: Inner
Join condition: (calculationDateTime#944571 <= orderDateTime#944608)
(106) Project [codegen id : 286]
Output [5]: [plantUuid#944589 AS plant#944640, productUuid#944591 AS product#944641, storageLocId#944592, calculationDateTime#944571, quantity#944594]
Input [8]: [plantUuid#944589, productUuid#944591, calculationDateTime#944571, storageLocId#944592, quantity#944594, product#944606, plant#944607, orderDateTime#944608]
(107) Exchange
Input [5]: [plant#944640, product#944641, storageLocId#944592, calculationDateTime#944571, quantity#944594]
Arguments: hashpartitioning(coalesce(plant#944640, ), isnull(plant#944640), coalesce(product#944641, ), isnull(product#944641), coalesce(storageLocId#944592, ), isnull(storageLocId#944592), coalesce(calculationDateTime#944571, 1970-01-01 00:00:00), isnull(calculationDateTime#944571), 37), ENSURE_REQUIREMENTS, [plan_id=1548604]
(108) ShuffleQueryStage
Output [5]: [plant#944640, product#944641, storageLocId#944592, calculationDateTime#944571, quantity#944594]
Arguments: 558
(109) AQEShuffleRead
Input [5]: [plant#944640, product#944641, storageLocId#944592, calculationDateTime#944571, quantity#944594]
Arguments: local
(110) BroadcastExchange
Input [5]: [plant#944640, product#944641, storageLocId#944592, calculationDateTime#944571, quantity#944594]
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=1553725]
(111) BroadcastQueryStage
Output [5]: [plant#944640, product#944641, storageLocId#944592, calculationDateTime#944571, quantity#944594]
Arguments: 606
(112) ReusedExchange [Reuses operator id: 36]
Output [6]: [systemId#944649, internalUUID#944650, product#944651, plant#944652, calculationDateTime#944653, stockQuantities#944654]
(113) BroadcastQueryStage
Output [6]: [systemId#944649, internalUUID#944650, product#944651, plant#944652, calculationDateTime#944653, stockQuantities#944654]
Arguments: 324
(114) ReusedExchange [Reuses operator id: 49]
Output [3]: [plantUuid#944679, storageLocId#944680, storageLocUuid#944681]
(115) BroadcastQueryStage
Output [3]: [plantUuid#944679, storageLocId#944680, storageLocUuid#944681]
Arguments: 326
(116) ReusedExchange [Reuses operator id: 69]
Output [1]: [plant#944683]
(117) ShuffleQueryStage
Output [1]: [plant#944683]
Arguments: 488
(118) AQEShuffleRead
Input [1]: [plant#944683]
Arguments: coalesced
(119) HashAggregate
Input [1]: [plant#944683]
Keys [1]: [plant#944683]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#944683]
(120) BroadcastHashJoin
Left keys [1]: [plantUuid#944679]
Right keys [1]: [plant#944683]
Join type: Inner
Join condition: None
(121) Project
Output [3]: [plantUuid#944679, storageLocId#944680, storageLocUuid#944681]
Input [4]: [plantUuid#944679, storageLocId#944680, storageLocUuid#944681, plant#944683]
(122) BroadcastHashJoin [codegen id : 255]
Left keys [2]: [coalesce(plant#944652.internalRefUUID, ), isnull(plant#944652.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#944679, ), isnull(plantUuid#944679)]
Join type: Inner
Join condition: None
(123) Generate
Input [9]: [systemId#944649, internalUUID#944650, product#944651, plant#944652, calculationDateTime#944653, stockQuantities#944654, plantUuid#944679, storageLocId#944680, storageLocUuid#944681]
Arguments: explode(filter(stockQuantities#944654, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#944681) AND (lambda x#944569.storageLocation.Id = storageLocId#944680)), lambda x#944569, false))), [systemId#944649, internalUUID#944650, product#944651, plant#944652, calculationDateTime#944653, plantUuid#944679], false, [stockQuantity#944713]
(124) ObjectHashAggregate
Input [7]: [systemId#944649, internalUUID#944650, product#944651, plant#944652, calculationDateTime#944653, plantUuid#944679, stockQuantity#944713]
Keys [5]: [plantUuid#944679, internalUUID#944650, plant#944652, product#944651, systemId#944649]
Functions [2]: [partial_first(calculationDateTime#944653, false), partial_collect_list(stockQuantity#944713, 0, 0)]
Aggregate Attributes [3]: [first#953113, valueSet#953114, buf#953115]
Results [8]: [plantUuid#944679, internalUUID#944650, plant#944652, product#944651, systemId#944649, first#953116, valueSet#953117, buf#953118]
(125) ObjectHashAggregate
Input [8]: [plantUuid#944679, internalUUID#944650, plant#944652, product#944651, systemId#944649, first#953116, valueSet#953117, buf#953118]
Keys [5]: [plantUuid#944679, internalUUID#944650, plant#944652, product#944651, systemId#944649]
Functions [2]: [first(calculationDateTime#944653, false), collect_list(stockQuantity#944713, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#944653)()#944584, collect_list(stockQuantity#944713, 0, 0)#944585]
Results [4]: [product#944651, plant#944652, first(calculationDateTime#944653)()#944584 AS calculationDateTime#944714, collect_list(stockQuantity#944713, 0, 0)#944585 AS stockQuantities#944715]
(126) Filter [codegen id : 256]
Input [4]: [product#944651, plant#944652, calculationDateTime#944714, stockQuantities#944715]
Condition : ((size(stockQuantities#944715, true) > 0) AND isnotnull(calculationDateTime#944714))
(127) Generate [codegen id : 256]
Input [4]: [product#944651, plant#944652, calculationDateTime#944714, stockQuantities#944715]
Arguments: explode(stockQuantities#944715), [product#944651, plant#944652, calculationDateTime#944714], false, [stockQuantity#944716]
(128) Filter [codegen id : 256]
Input [4]: [product#944651, plant#944652, calculationDateTime#944714, stockQuantity#944716]
Condition : (((isnotnull(stockQuantity#944716.specialStockIndicator.code) AND isnotnull(stockQuantity#944716.stockType.code)) AND (stockQuantity#944716.specialStockIndicator.code = )) AND (stockQuantity#944716.stockType.code = 01))
(129) Project [codegen id : 256]
Output [4]: [plant#944652.internalRefUUID AS plantUuid#944718, product#944651.internalRefUUID AS productUuid#944720, calculationDateTime#944714, stockQuantity#944716.storagelocation.id AS storageLocId#944721]
Input [4]: [product#944651, plant#944652, calculationDateTime#944714, stockQuantity#944716]
(130) Exchange
Input [4]: [plantUuid#944718, productUuid#944720, calculationDateTime#944714, storageLocId#944721]
Arguments: hashpartitioning(productUuid#944720, plantUuid#944718, 37), ENSURE_REQUIREMENTS, [plan_id=1536595]
(131) ShuffleQueryStage
Output [4]: [plantUuid#944718, productUuid#944720, calculationDateTime#944714, storageLocId#944721]
Arguments: 518
(132) AQEShuffleRead
Input [4]: [plantUuid#944718, productUuid#944720, calculationDateTime#944714, storageLocId#944721]
Arguments: local
(133) BroadcastExchange
Input [4]: [plantUuid#944718, productUuid#944720, calculationDateTime#944714, storageLocId#944721]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1548638]
(134) BroadcastQueryStage
Output [4]: [plantUuid#944718, productUuid#944720, calculationDateTime#944714, storageLocId#944721]
Arguments: 559
(135) ReusedExchange [Reuses operator id: 91]
Output [3]: [product#944726, plant#944727, orderDateTime#944728]
(136) ShuffleQueryStage
Output [3]: [product#944726, plant#944727, orderDateTime#944728]
Arguments: 26
(137) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#952103, _extract_internalRefUUID#952104, _extract_internalRefUUID#952105, _extract_internalRefUUID#952106]
(138) BroadcastQueryStage
Output [4]: [_extract_code#952103, _extract_internalRefUUID#952104, _extract_internalRefUUID#952105, _extract_internalRefUUID#952106]
Arguments: 331
(139) BroadcastHashJoin [codegen id : 297]
Left keys [4]: [coalesce(product#944726, ), isnull(product#944726), coalesce(plant#944727, ), isnull(plant#944727)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952105, ), isnull(_extract_internalRefUUID#952105), coalesce(_extract_internalRefUUID#952106, ), isnull(_extract_internalRefUUID#952106)]
Join type: LeftOuter
Join condition: None
(140) Project [codegen id : 297]
Output [5]: [product#944726, plant#944727, orderDateTime#944728, _extract_code#952103, _extract_internalRefUUID#952104]
Input [7]: [product#944726, plant#944727, orderDateTime#944728, _extract_code#952103, _extract_internalRefUUID#952104, _extract_internalRefUUID#952105, _extract_internalRefUUID#952106]
(141) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#944741, baseUnitOfMeasure#944745, unitOfMeasureConversions#944747]
(142) BroadcastQueryStage
Output [3]: [internalUUID#944741, baseUnitOfMeasure#944745, unitOfMeasureConversions#944747]
Arguments: 332
(143) BroadcastHashJoin [codegen id : 297]
Left keys [1]: [product#944726]
Right keys [1]: [internalUUID#944741]
Join type: LeftOuter
Join condition: None
(144) Project
Output [4]: [product#944726, plant#944727, orderDateTime#944728, filter(unitOfMeasureConversions#944747, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952103) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952104)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#944745.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#944745.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#944752]
Input [8]: [product#944726, plant#944727, orderDateTime#944728, _extract_code#952103, _extract_internalRefUUID#952104, internalUUID#944741, baseUnitOfMeasure#944745, unitOfMeasureConversions#944747]
(145) Generate
Input [4]: [product#944726, plant#944727, orderDateTime#944728, filteredUnitOfMeasureConversions#944752]
Arguments: explode(filteredUnitOfMeasureConversions#944752.quantityNumerator), [product#944726, plant#944727, orderDateTime#944728, filteredUnitOfMeasureConversions#944752], true, [quantityNumerator#944753]
(146) Project
Output [4]: [product#944726, plant#944727, orderDateTime#944728, filteredUnitOfMeasureConversions#944752.quantityDenominator AS _extract_quantityDenominator#951548]
Input [5]: [product#944726, plant#944727, orderDateTime#944728, filteredUnitOfMeasureConversions#944752, quantityNumerator#944753]
(147) Generate
Input [4]: [product#944726, plant#944727, orderDateTime#944728, _extract_quantityDenominator#951548]
Arguments: explode(_extract_quantityDenominator#951548), [product#944726, plant#944727, orderDateTime#944728], true, [quantityDenominator#944754]
(148) Project
Output [3]: [product#944726, plant#944727, orderDateTime#944728]
Input [4]: [product#944726, plant#944727, orderDateTime#944728, quantityDenominator#944754]
(149) BroadcastHashJoin [codegen id : 298]
Left keys [2]: [plantUuid#944718, productUuid#944720]
Right keys [2]: [plant#944727, product#944726]
Join type: Inner
Join condition: (calculationDateTime#944714 <= orderDateTime#944728)
(150) Project [codegen id : 298]
Output [4]: [plantUuid#944718 AS plant#944757, productUuid#944720 AS product#944758, storageLocId#944721, calculationDateTime#944714]
Input [7]: [plantUuid#944718, productUuid#944720, calculationDateTime#944714, storageLocId#944721, product#944726, plant#944727, orderDateTime#944728]
(151) HashAggregate [codegen id : 298]
Input [4]: [plant#944757, product#944758, storageLocId#944721, calculationDateTime#944714]
Keys [3]: [plant#944757, product#944758, storageLocId#944721]
Functions [1]: [partial_max(calculationDateTime#944714)]
Aggregate Attributes [1]: [max#953111]
Results [4]: [plant#944757, product#944758, storageLocId#944721, max#953112]
(152) HashAggregate [codegen id : 298]
Input [4]: [plant#944757, product#944758, storageLocId#944721, max#953112]
Keys [3]: [plant#944757, product#944758, storageLocId#944721]
Functions [1]: [max(calculationDateTime#944714)]
Aggregate Attributes [1]: [max(calculationDateTime#944714)#944648]
Results [4]: [plant#944757, product#944758, storageLocId#944721, max(calculationDateTime#944714)#944648 AS max_calc_datetime#944642]
(153) Exchange
Input [4]: [plant#944757, product#944758, storageLocId#944721, max_calc_datetime#944642]
Arguments: hashpartitioning(coalesce(plant#944757, ), isnull(plant#944757), coalesce(product#944758, ), isnull(product#944758), coalesce(storageLocId#944721, ), isnull(storageLocId#944721), coalesce(max_calc_datetime#944642, 1970-01-01 00:00:00), isnull(max_calc_datetime#944642), 37), ENSURE_REQUIREMENTS, [plan_id=1551404]
(154) ShuffleQueryStage
Output [4]: [plant#944757, product#944758, storageLocId#944721, max_calc_datetime#944642]
Arguments: 588
(155) AQEShuffleRead
Input [4]: [plant#944757, product#944758, storageLocId#944721, max_calc_datetime#944642]
Arguments: local
(156) BroadcastHashJoin [codegen id : 317]
Left keys [8]: [coalesce(plant#944640, ), isnull(plant#944640), coalesce(product#944641, ), isnull(product#944641), coalesce(storageLocId#944592, ), isnull(storageLocId#944592), coalesce(calculationDateTime#944571, 1970-01-01 00:00:00), isnull(calculationDateTime#944571)]
Right keys [8]: [coalesce(plant#944757, ), isnull(plant#944757), coalesce(product#944758, ), isnull(product#944758), coalesce(storageLocId#944721, ), isnull(storageLocId#944721), coalesce(max_calc_datetime#944642, 1970-01-01 00:00:00), isnull(max_calc_datetime#944642)]
Join type: Inner
Join condition: None
(157) Project [codegen id : 317]
Output [4]: [plant#944640, product#944641, calculationDateTime#944571, quantity#944594]
Input [9]: [plant#944640, product#944641, storageLocId#944592, calculationDateTime#944571, quantity#944594, plant#944757, product#944758, storageLocId#944721, max_calc_datetime#944642]
(158) HashAggregate [codegen id : 317]
Input [4]: [plant#944640, product#944641, calculationDateTime#944571, quantity#944594]
Keys [2]: [product#944641, plant#944640]
Functions [2]: [partial_min(calculationDateTime#944571), partial_sum(quantity#944594)]
Aggregate Attributes [2]: [min#953101, sum#953102]
Results [4]: [product#944641, plant#944640, min#953103, sum#953104]
(159) Exchange
Input [4]: [product#944641, plant#944640, min#953103, sum#953104]
Arguments: hashpartitioning(product#944641, plant#944640, 37), ENSURE_REQUIREMENTS, [plan_id=1558074]
(160) ShuffleQueryStage
Output [4]: [product#944641, plant#944640, min#953103, sum#953104]
Arguments: 620
(161) AQEShuffleRead
Input [4]: [product#944641, plant#944640, min#953103, sum#953104]
Arguments: coalesced
(162) HashAggregate [codegen id : 325]
Input [4]: [product#944641, plant#944640, min#953103, sum#953104]
Keys [2]: [product#944641, plant#944640]
Functions [2]: [min(calculationDateTime#944571), sum(quantity#944594)]
Aggregate Attributes [2]: [min(calculationDateTime#944571)#944775, sum(quantity#944594)#944774]
Results [4]: [product#944641, plant#944640, min(calculationDateTime#944571)#944775 AS minCalculationDateTime#944768, round(sum(quantity#944594)#944774, 0) AS roundedQuantitySum#944776]
(163) BroadcastExchange
Input [4]: [product#944641, plant#944640, minCalculationDateTime#944768, roundedQuantitySum#944776]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=1560859]
(164) BroadcastQueryStage
Output [4]: [product#944641, plant#944640, minCalculationDateTime#944768, roundedQuantitySum#944776]
Arguments: 634
(165) BroadcastHashJoin [codegen id : 334]
Left keys [2]: [plant#944306, product#944305]
Right keys [2]: [plant#944640, product#944641]
Join type: LeftOuter
Join condition: None
(166) Project [codegen id : 334]
Output [5]: [product#944305, plant#944306, outboundUnit#944422, CASE WHEN isnotnull(minCalculationDateTime#944768) THEN minCalculationDateTime#944768 ELSE orderDateTime#944307 END AS stockDatetime#944811, CASE WHEN isnotnull(roundedQuantitySum#944776) THEN array(roundedQuantitySum#944776) ELSE [0.0] END AS stockBatchQuantities#944812]
Input [8]: [product#944305, plant#944306, orderDateTime#944307, outboundUnit#944422, product#944641, plant#944640, minCalculationDateTime#944768, roundedQuantitySum#944776]
(167) Exchange
Input [5]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812]
Arguments: hashpartitioning(coalesce(plant#944306, ), isnull(plant#944306), coalesce(product#944305, ), isnull(product#944305), 37), ENSURE_REQUIREMENTS, [plan_id=1563295]
(168) ShuffleQueryStage
Output [5]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812]
Arguments: 648
(169) AQEShuffleRead
Input [5]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812]
Arguments: coalesced
(170) Sort [codegen id : 365]
Input [5]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812]
Arguments: [coalesce(plant#944306, ) ASC NULLS FIRST, isnull(plant#944306) ASC NULLS FIRST, coalesce(product#944305, ) ASC NULLS FIRST, isnull(product#944305) ASC NULLS FIRST], false, 0
(171) ReusedExchange [Reuses operator id: 3]
Output [3]: [product#945954, plant#945955, orderDateTime#945956]
(172) ShuffleQueryStage
Output [3]: [product#945954, plant#945955, orderDateTime#945956]
Arguments: 32
(173) Scan parquet
Output [9]: [internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966, systemId#945958]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>
(174) ColumnarToRow [codegen id : 21]
Input [9]: [internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966, systemId#945958]
(175) Project [codegen id : 21]
Output [9]: [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966]
Input [9]: [internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966, systemId#945958]
(176) Exchange
Input [9]: [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1467876]
(177) ShuffleQueryStage
Output [9]: [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966]
Arguments: 33
(178) Project [codegen id : 170]
Output [1]: [struct(systemId, systemId#945958, internalUUID, internalUUID#945959, plant, plant#945960, product, product#945961, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#945962, productionAspect, productionAspect#945963, salesPlant, salesPlant#945964, listing, listing#945965, sourceOfSupplyCategory, sourceOfSupplyCategory#945966) AS productPlant#945967]
Input [9]: [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966]
(179) BroadcastExchange
Input [1]: [productPlant#945967]
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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].plant.internalRefUUID)),false), [plan_id=1501713]
(180) BroadcastQueryStage
Output [1]: [productPlant#945967]
Arguments: 333
(181) BroadcastHashJoin [codegen id : 335]
Left keys [4]: [coalesce(product#945954, ), isnull(product#945954), coalesce(plant#945955, ), isnull(plant#945955)]
Right keys [4]: [coalesce(productPlant#945967.product.internalRefUUID, ), isnull(productPlant#945967.product.internalRefUUID), coalesce(productPlant#945967.plant.internalRefUUID, ), isnull(productPlant#945967.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(182) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975]
(183) BroadcastQueryStage
Output [3]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975]
Arguments: 334
(184) BroadcastHashJoin [codegen id : 335]
Left keys [1]: [product#945954]
Right keys [1]: [internalUUID#945969]
Join type: LeftOuter
Join condition: None
(185) Project
Output [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, filter(unitOfMeasureConversions#945975, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#945973.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#945973.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#945980]
Input [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975]
(186) Project [codegen id : 336]
Output [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, filteredUnitOfMeasureConversions#945980.quantityDenominator AS _extract_quantityDenominator#952107, filteredUnitOfMeasureConversions#945980.quantityNumerator AS _extract_quantityNumerator#952108]
Input [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, filteredUnitOfMeasureConversions#945980]
(187) Generate [codegen id : 336]
Input [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, _extract_quantityDenominator#952107, _extract_quantityNumerator#952108]
Arguments: explode(_extract_quantityNumerator#952108), [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, _extract_quantityDenominator#952107], true, [quantityNumerator#945981]
(188) Generate [codegen id : 336]
Input [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, _extract_quantityDenominator#952107, quantityNumerator#945981]
Arguments: explode(_extract_quantityDenominator#952107), [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, quantityNumerator#945981], true, [quantityDenominator#945982]
(189) Project [codegen id : 336]
Output [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, (cast(quantityNumerator#945981 as double) / cast(quantityDenominator#945982 as double)) AS outboundUnit#945983]
Input [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, quantityNumerator#945981, quantityDenominator#945982]
(190) Project [codegen id : 336]
Output [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, CASE WHEN (isnull(outboundUnit#945983) OR (outboundUnit#945983 <= 0.0)) THEN 1.0 ELSE outboundUnit#945983 END AS outboundUnit#945984]
Input [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945983]
(191) ReusedExchange [Reuses operator id: 163]
Output [4]: [product#946094, plant#946093, minCalculationDateTime#946207, roundedQuantitySum#946208]
(192) BroadcastQueryStage
Output [4]: [product#946094, plant#946093, minCalculationDateTime#946207, roundedQuantitySum#946208]
Arguments: 636
(193) BroadcastHashJoin [codegen id : 336]
Left keys [2]: [plant#945955, product#945954]
Right keys [2]: [plant#946093, product#946094]
Join type: LeftOuter
Join condition: None
(194) Project [codegen id : 336]
Output [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, CASE WHEN isnotnull(minCalculationDateTime#946207) THEN minCalculationDateTime#946207 ELSE orderDateTime#945956 END AS stockDatetime#946209, CASE WHEN isnotnull(roundedQuantitySum#946208) THEN array(roundedQuantitySum#946208) ELSE [0.0] END AS stockBatchQuantities#946210]
Input [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, product#946094, plant#946093, minCalculationDateTime#946207, roundedQuantitySum#946208]
(195) Exchange
Input [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210]
Arguments: hashpartitioning(coalesce(plant#945955, ), isnull(plant#945955), coalesce(product#945954, ), isnull(product#945954), 37), ENSURE_REQUIREMENTS, [plan_id=1563346]
(196) ShuffleQueryStage
Output [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210]
Arguments: 649
(197) AQEShuffleRead
Input [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210]
Arguments: coalesced
(198) Sort [codegen id : 349]
Input [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210]
Arguments: [coalesce(plant#945955, ) ASC NULLS FIRST, isnull(plant#945955) ASC NULLS FIRST, coalesce(product#945954, ) ASC NULLS FIRST, isnull(product#945954) ASC NULLS FIRST], false, 0
(199) Scan parquet
Output [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000678/0_1_10000000678]
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>>>
(200) ColumnarToRow [codegen id : 39]
Input [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
(201) Exchange
Input [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
Arguments: hashpartitioning(coalesce(plant#944815, ), isnull(plant#944815), coalesce(product#944814, ), isnull(product#944814), 37), ENSURE_REQUIREMENTS, [plan_id=1468340]
(202) ShuffleQueryStage
Output [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
Arguments: 68
(203) AQEShuffleRead
Input [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
Arguments: coalesced
(204) Sort [codegen id : 350]
Input [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
Arguments: [coalesce(plant#944815, ) ASC NULLS FIRST, isnull(plant#944815) ASC NULLS FIRST, coalesce(product#944814, ) ASC NULLS FIRST, isnull(product#944814) ASC NULLS FIRST], false, 0
(205) SortMergeJoin [codegen id : 351]
Left keys [4]: [coalesce(plant#945955, ), isnull(plant#945955), coalesce(product#945954, ), isnull(product#945954)]
Right keys [4]: [coalesce(plant#944815, ), isnull(plant#944815), coalesce(product#944814, ), isnull(product#944814)]
Join type: LeftOuter
Join condition: None
(206) Project [codegen id : 351]
Output [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, CASE WHEN isnotnull(product#944814) THEN struct(demandChannel, demandChannel#944816, demandStream, demandStream#944817, considerVariance, considerVariance#944818, demandTimeBuckets, demandTimeBuckets#944819, demandPointInTimeStart, demandPointInTimeStart#944820, demandPointInTimeEnd, demandPointInTimeEnd#944821, demandPointInTime, demandPointInTime#944822) END AS rawDemands#944824]
Input [16]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
(207) ObjectHashAggregate
Input [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, rawDemands#944824]
Keys [8]: [product#945954, plant#945955, orderDateTime#945956, knownfloatingpointnormalized(if (isnull(productPlant#945967)) null else named_struct(systemId, productPlant#945967.systemId, internalUUID, productPlant#945967.internalUUID, plant, productPlant#945967.plant, product, productPlant#945967.product, blockedForReplenishmentStartingFrom, productPlant#945967.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#945967.productionAspect)) null else named_struct(productMovementPlants, productPlant#945967.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#945967.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#945967.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#945967.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#945967.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#945967.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#945967.salesPlant, listing, productPlant#945967.listing, sourceOfSupplyCategory, productPlant#945967.sourceOfSupplyCategory)) AS productPlant#945967, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#945984)) AS outboundUnit#945984, stockDatetime#946209, knownfloatingpointnormalized(transform(stockBatchQuantities#946210, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#957465)), lambda arg#957465, false))) AS stockBatchQuantities#946210, [7226582400000000] AS [7226582400000000]#957464]
Functions [1]: [partial_collect_list(rawDemands#944824, 0, 0)]
Aggregate Attributes [1]: [buf#947905]
Results [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#957464, buf#947906]
(208) Exchange
Input [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#957464, buf#947906]
Arguments: hashpartitioning(product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#957464, 37), ENSURE_REQUIREMENTS, [plan_id=1566973]
(209) ShuffleQueryStage
Output [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#957464, buf#947906]
Arguments: 661
(210) AQEShuffleRead
Input [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#957464, buf#947906]
Arguments: coalesced
(211) ObjectHashAggregate
Input [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#957464, buf#947906]
Keys [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#957464]
Functions [1]: [collect_list(rawDemands#944824, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#944824, 0, 0)#944844]
Results [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, collect_list(rawDemands#944824, 0, 0)#944844 AS rawDemands#944825]
(212) Scan parquet
Output [3]: [internalUUID#945905, address#945911, systemId#945904]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(213) ColumnarToRow [codegen id : 40]
Input [3]: [internalUUID#945905, address#945911, systemId#945904]
(214) Project [codegen id : 40]
Output [2]: [internalUUID#945905, address#945911.timeZone.code AS timezonecode#945917]
Input [3]: [internalUUID#945905, address#945911, systemId#945904]
(215) Exchange
Input [2]: [internalUUID#945905, timezonecode#945917]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1468360]
(216) ShuffleQueryStage
Output [2]: [internalUUID#945905, timezonecode#945917]
Arguments: 69
(217) BroadcastExchange
Input [2]: [internalUUID#945905, timezonecode#945917]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1468368]
(218) BroadcastQueryStage
Output [2]: [internalUUID#945905, timezonecode#945917]
Arguments: 353
(219) BroadcastHashJoin [codegen id : 361]
Left keys [2]: [coalesce(plant#945955, ), isnull(plant#945955)]
Right keys [2]: [coalesce(internalUUID#945905, ), isnull(internalUUID#945905)]
Join type: LeftOuter
Join condition: None
(220) Project [codegen id : 361]
Output [10]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#946211, rawDemands#944825, CASE WHEN isnotnull(timezonecode#945917) THEN timezonecode#945917 ELSE UTC END AS timezonecode#945919]
Input [10]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, rawDemands#944825, internalUUID#945905, timezonecode#945917]
(221) DeserializeToObject [codegen id : 361]
Input [10]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, stockBatchShelfLifeEndDatetimes#946211, rawDemands#944825, timezonecode#945919]
Arguments: createexternalrow(invoke(product#945954.toString()), invoke(plant#945955.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#945956)), if (isnull(productPlant#945967)) null else createexternalrow(invoke(productPlant#945967.systemId.toString()), invoke(productPlant#945967.internalUUID.toString()), if (isnull(productPlant#945967.plant)) null else createexternalrow(invoke(productPlant#945967.plant.internalRefUUID.toString()), invoke(productPlant#945967.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#945967.product)) null else createexternalrow(invoke(productPlant#945967.product.internalRefUUID.toString()), invoke(productPlant#945967.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#945967.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#945967.productionAspect)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#945967.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#945967.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#945967.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)), if (isnull(productPlant#945967.salesPlant)) null else createexternalrow(if (isnull(productPlant#945967.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#945967.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#945967.salesPlant.loadingGroup.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#945967.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#945967.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#945967.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#945967.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), 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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#945984)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#946209)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#946210, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#946211, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14), createexternalrow(invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandChannel.toString()), invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).demandVariance)), StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandTimeBuckets, Some(class scala.collection.mutable.ArraySeq)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandPointInTimeStart)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).demandVariance)), StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandPointInTime, Some(class scala.collection.mutable.ArraySeq)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)), rawDemands#944825, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#945919.toString()), 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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),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), StructField(timezonecode,StringType,true)), obj#945940: org.apache.spark.sql.Row
(222) MapElements [codegen id : 361]
Input [1]: [obj#945940]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@353c8b73, obj#945945: org.apache.spark.sql.Row
(223) SerializeFromObject [codegen id : 361]
Input [1]: [obj#945945]
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#945950, 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#945951, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)))) null else named_struct(demandChannel, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(0))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 0, demandChannel), StringType, ObjectType(class java.lang.String)))), demandStream, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(1))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 1, demandStream), StringType, ObjectType(class java.lang.String)))), considerVariance, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(2))) null else invoke(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 2, considerVariance), BooleanType, ObjectType(class java.lang.Boolean)).booleanValue()), demandValues, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(3))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -2), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -2), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)), None), demandVariances, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(4))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -3), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -3), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)), None), anchorDatetimes, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(5))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -4), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -4), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 5, anchorDatetimes), ArrayType(TimestampType,false), ObjectType(class java.lang.Object)), None), anchorWeekdays, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(6))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -5), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -5), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 6, anchorWeekdays), ArrayType(StringType,false), ObjectType(class java.lang.Object)), None), anchorIndices, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(7))) null else if (invoke(class [I.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 7, anchorIndices), ArrayType(IntegerType,false), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 7, anchorIndices), ArrayType(IntegerType,false), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -6), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -6), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 7, anchorIndices), ArrayType(IntegerType,false), ObjectType(class java.lang.Object)), None))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 2, dayBucketDemands), ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandValues,ArrayType(DoubleType,false),true),StructField(demandVariances,ArrayType(DoubleType,true),true),StructField(anchorDatetimes,ArrayType(TimestampType,false),true),StructField(anchorWeekdays,ArrayType(StringType,false),true),StructField(anchorIndices,ArrayType(IntegerType,false),true)),false), ObjectType(class java.lang.Object)), None) AS dayBucketDemands#945952, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)))) null else named_struct(demandChannel, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(0))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 0, demandChannel), StringType, ObjectType(class java.lang.String)))), demandStream, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(1))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 1, demandStream), StringType, ObjectType(class java.lang.String)))), considerVariance, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(2))) null else invoke(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 2, considerVariance), BooleanType, ObjectType(class java.lang.Boolean)).booleanValue()), demandDatetimes, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -8), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -8), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandDatetimes), ArrayType(TimestampType,false), ObjectType(class java.lang.Object)), None), demandValues, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(4))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -9), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -9), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)), None), demandVariances, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(5))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 5, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 5, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -10), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -10), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 5, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)), None), horizonStartDatetime, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(6))) null else static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 6, horizonStartDatetime), TimestampType, ObjectType(class java.sql.Timestamp)))), horizonEndDatetime, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(7))) null else static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 7, horizonEndDatetime), TimestampType, ObjectType(class java.sql.Timestamp)))))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 3, pointInTimeDemands), ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandDatetimes,ArrayType(TimestampType,false),true),StructField(demandValues,ArrayType(DoubleType,false),true),StructField(demandVariances,ArrayType(DoubleType,true),true),StructField(horizonStartDatetime,TimestampType,true),StructField(horizonEndDatetime,TimestampType,true)),false), ObjectType(class java.lang.Object)), None) AS pointInTimeDemands#945953]
(224) Exchange
Input [4]: [product#945950, plant#945951, dayBucketDemands#945952, pointInTimeDemands#945953]
Arguments: hashpartitioning(coalesce(plant#945951, ), isnull(plant#945951), coalesce(product#945950, ), isnull(product#945950), 37), ENSURE_REQUIREMENTS, [plan_id=1567678]
(225) ShuffleQueryStage
Output [4]: [product#945950, plant#945951, dayBucketDemands#945952, pointInTimeDemands#945953]
Arguments: 668
(226) AQEShuffleRead
Input [4]: [product#945950, plant#945951, dayBucketDemands#945952, pointInTimeDemands#945953]
Arguments: coalesced
(227) Sort [codegen id : 366]
Input [4]: [product#945950, plant#945951, dayBucketDemands#945952, pointInTimeDemands#945953]
Arguments: [coalesce(plant#945951, ) ASC NULLS FIRST, isnull(plant#945951) ASC NULLS FIRST, coalesce(product#945950, ) ASC NULLS FIRST, isnull(product#945950) ASC NULLS FIRST], false, 0
(228) SortMergeJoin [codegen id : 367]
Left keys [4]: [coalesce(plant#944306, ), isnull(plant#944306), coalesce(product#944305, ), isnull(product#944305)]
Right keys [4]: [coalesce(plant#945951, ), isnull(plant#945951), coalesce(product#945950, ), isnull(product#945950)]
Join type: LeftOuter
Join condition: None
(229) Project [codegen id : 367]
Output [7]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, dayBucketDemands#945952, pointInTimeDemands#945953]
Input [9]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, product#945950, plant#945951, dayBucketDemands#945952, pointInTimeDemands#945953]
(230) Exchange
Input [7]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, dayBucketDemands#945952, pointInTimeDemands#945953]
Arguments: hashpartitioning(product#944305, plant#944306, 37), ENSURE_REQUIREMENTS, [plan_id=1568791]
(231) ShuffleQueryStage
Output [7]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, dayBucketDemands#945952, pointInTimeDemands#945953]
Arguments: 677
(232) Sort [codegen id : 378]
Input [7]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, dayBucketDemands#945952, pointInTimeDemands#945953]
Arguments: [product#944305 ASC NULLS FIRST, plant#944306 ASC NULLS FIRST], false, 0
(233) InMemoryTableScan
Output [3]: [product#946271, plant#946270, openGoodsMovements#946371]
Arguments: [product#946271, plant#946270, openGoodsMovements#946371], [isnotnull(product#946271), isnotnull(plant#946270)]
(234) InMemoryRelation
Arguments: [product#946271, plant#946270, openGoodsMovements#946371], StorageLevel(disk, memory, 2 replicas)
(235) Scan parquet
Output [2]: [product#944305, plant#944306]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string>
(236) ColumnarToRow [codegen id : 1]
Input [2]: [product#944305, plant#944306]
(237) Filter [codegen id : 1]
Input [2]: [product#944305, plant#944306]
Condition : (isnotnull(plant#944306) AND isnotnull(product#944305))
(238) Exchange
Input [2]: [product#944305, plant#944306]
Arguments: hashpartitioning(product#944305, plant#944306, 37), REPARTITION_BY_NUM, [plan_id=1474193]
(239) ShuffleQueryStage
Output [2]: [product#944305, plant#944306]
Arguments: 0
(240) Scan parquet
Output [4]: [plant#944363, product#944364, productionAspect#944366, systemId#944361]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(241) ColumnarToRow [codegen id : 2]
Input [4]: [plant#944363, product#944364, productionAspect#944366, systemId#944361]
(242) Project [codegen id : 2]
Output [4]: [plant#944363.internalRefUUID AS _extract_internalRefUUID#946552, product#944364.internalRefUUID AS _extract_internalRefUUID#946551, productionAspect#944366.productMovementPlants.unitOfIssue.code AS _extract_code#946549, productionAspect#944366.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#946550]
Input [4]: [plant#944363, product#944364, productionAspect#944366, systemId#944361]
(243) Exchange
Input [4]: [_extract_internalRefUUID#946552, _extract_internalRefUUID#946551, _extract_code#946549, _extract_internalRefUUID#946550]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1474209]
(244) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#946552, _extract_internalRefUUID#946551, _extract_code#946549, _extract_internalRefUUID#946550]
Arguments: 1
(245) Project [codegen id : 30]
Output [4]: [_extract_code#946549, _extract_internalRefUUID#946550, _extract_internalRefUUID#946551, _extract_internalRefUUID#946552]
Input [4]: [_extract_internalRefUUID#946552, _extract_internalRefUUID#946551, _extract_code#946549, _extract_internalRefUUID#946550]
(246) BroadcastExchange
Input [4]: [_extract_code#946549, _extract_internalRefUUID#946550, _extract_internalRefUUID#946551, _extract_internalRefUUID#946552]
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=1475940]
(247) BroadcastQueryStage
Output [4]: [_extract_code#946549, _extract_internalRefUUID#946550, _extract_internalRefUUID#946551, _extract_internalRefUUID#946552]
Arguments: 46
(248) BroadcastHashJoin [codegen id : 47]
Left keys [4]: [coalesce(product#944305, ), isnull(product#944305), coalesce(plant#944306, ), isnull(plant#944306)]
Right keys [4]: [coalesce(_extract_internalRefUUID#946551, ), isnull(_extract_internalRefUUID#946551), coalesce(_extract_internalRefUUID#946552, ), isnull(_extract_internalRefUUID#946552)]
Join type: LeftOuter
Join condition: None
(249) Project [codegen id : 47]
Output [4]: [product#944305, plant#944306, _extract_code#946549, _extract_internalRefUUID#946550]
Input [6]: [product#944305, plant#944306, _extract_code#946549, _extract_internalRefUUID#946550, _extract_internalRefUUID#946551, _extract_internalRefUUID#946552]
(250) Scan parquet
Output [4]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403, systemId#944396]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(251) ColumnarToRow [codegen id : 3]
Input [4]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403, systemId#944396]
(252) Filter [codegen id : 3]
Input [4]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403, systemId#944396]
Condition : isnotnull(internalUUID#944397)
(253) Project [codegen id : 3]
Output [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Input [4]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403, systemId#944396]
(254) Exchange
Input [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1474230]
(255) ShuffleQueryStage
Output [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Arguments: 2
(256) BroadcastExchange
Input [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1476599]
(257) BroadcastQueryStage
Output [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Arguments: 57
(258) BroadcastHashJoin [codegen id : 47]
Left keys [1]: [product#944305]
Right keys [1]: [internalUUID#944397]
Join type: LeftOuter
Join condition: None
(259) Project
Output [3]: [product#944305, plant#944306, filter(unitOfMeasureConversions#944403, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#946549) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#946550)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#944401.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#944401.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#944409]
Input [7]: [product#944305, plant#944306, _extract_code#946549, _extract_internalRefUUID#946550, internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
(260) Generate [codegen id : 48]
Input [3]: [product#944305, plant#944306, filteredUnitOfMeasureConversions#944409]
Arguments: explode(filteredUnitOfMeasureConversions#944409.quantityNumerator), [product#944305, plant#944306, filteredUnitOfMeasureConversions#944409], true, [quantityNumerator#944417]
(261) Project [codegen id : 48]
Output [3]: [product#944305, plant#944306, filteredUnitOfMeasureConversions#944409.quantityDenominator AS _extract_quantityDenominator#946387]
Input [4]: [product#944305, plant#944306, filteredUnitOfMeasureConversions#944409, quantityNumerator#944417]
(262) Generate [codegen id : 48]
Input [3]: [product#944305, plant#944306, _extract_quantityDenominator#946387]
Arguments: explode(_extract_quantityDenominator#946387), [product#944305, plant#944306], true, [quantityDenominator#944420]
(263) Project [codegen id : 48]
Output [2]: [product#944305, plant#944306]
Input [3]: [product#944305, plant#944306, quantityDenominator#944420]
(264) Exchange
Input [2]: [product#944305, plant#944306]
Arguments: hashpartitioning(coalesce(plant#944306, ), isnull(plant#944306), coalesce(product#944305, ), isnull(product#944305), 37), ENSURE_REQUIREMENTS, [plan_id=1491459]
(265) ShuffleQueryStage
Output [2]: [product#944305, plant#944306]
Arguments: 78
(266) AQEShuffleRead
Input [2]: [product#944305, plant#944306]
Arguments: local
(267) Scan parquet
Output [3]: [product#945954, plant#945955, orderDateTime#945956]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(268) ColumnarToRow [codegen id : 4]
Input [3]: [product#945954, plant#945955, orderDateTime#945956]
(269) Exchange
Input [3]: [product#945954, plant#945955, orderDateTime#945956]
Arguments: hashpartitioning(product#945954, plant#945955, 37), REPARTITION_BY_NUM, [plan_id=1474254]
(270) ShuffleQueryStage
Output [3]: [product#945954, plant#945955, orderDateTime#945956]
Arguments: 3
(271) Scan parquet
Output [9]: [internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966, systemId#945958]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>
(272) ColumnarToRow [codegen id : 5]
Input [9]: [internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966, systemId#945958]
(273) Project [codegen id : 5]
Output [9]: [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966]
Input [9]: [internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966, systemId#945958]
(274) Exchange
Input [9]: [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1474268]
(275) ShuffleQueryStage
Output [9]: [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966]
Arguments: 4
(276) Project [codegen id : 39]
Output [1]: [struct(systemId, systemId#945958, internalUUID, internalUUID#945959, plant, plant#945960, product, product#945961, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#945962, productionAspect, productionAspect#945963, salesPlant, salesPlant#945964, listing, listing#945965, sourceOfSupplyCategory, sourceOfSupplyCategory#945966) AS productPlant#945967]
Input [9]: [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966]
(277) BroadcastExchange
Input [1]: [productPlant#945967]
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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].plant.internalRefUUID)),false), [plan_id=1479015]
(278) BroadcastQueryStage
Output [1]: [productPlant#945967]
Arguments: 68
(279) BroadcastHashJoin [codegen id : 59]
Left keys [4]: [coalesce(product#945954, ), isnull(product#945954), coalesce(plant#945955, ), isnull(plant#945955)]
Right keys [4]: [coalesce(productPlant#945967.product.internalRefUUID, ), isnull(productPlant#945967.product.internalRefUUID), coalesce(productPlant#945967.plant.internalRefUUID, ), isnull(productPlant#945967.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(280) ReusedExchange [Reuses operator id: 256]
Output [3]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975]
(281) BroadcastQueryStage
Output [3]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975]
Arguments: 58
(282) BroadcastHashJoin [codegen id : 59]
Left keys [1]: [product#945954]
Right keys [1]: [internalUUID#945969]
Join type: LeftOuter
Join condition: None
(283) Project
Output [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, filter(unitOfMeasureConversions#945975, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#945973.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#945973.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#945980]
Input [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975]
(284) Project [codegen id : 60]
Output [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, filteredUnitOfMeasureConversions#945980.quantityDenominator AS _extract_quantityDenominator#946553, filteredUnitOfMeasureConversions#945980.quantityNumerator AS _extract_quantityNumerator#946554]
Input [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, filteredUnitOfMeasureConversions#945980]
(285) Generate [codegen id : 60]
Input [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, _extract_quantityDenominator#946553, _extract_quantityNumerator#946554]
Arguments: explode(_extract_quantityNumerator#946554), [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, _extract_quantityDenominator#946553], true, [quantityNumerator#945981]
(286) Generate [codegen id : 60]
Input [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, _extract_quantityDenominator#946553, quantityNumerator#945981]
Arguments: explode(_extract_quantityDenominator#946553), [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, quantityNumerator#945981], true, [quantityDenominator#945982]
(287) Project [codegen id : 60]
Output [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, (cast(quantityNumerator#945981 as double) / cast(quantityDenominator#945982 as double)) AS outboundUnit#945983]
Input [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, quantityNumerator#945981, quantityDenominator#945982]
(288) Project [codegen id : 60]
Output [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, CASE WHEN (isnull(outboundUnit#945983) OR (outboundUnit#945983 <= 0.0)) THEN 1.0 ELSE outboundUnit#945983 END AS outboundUnit#945984]
Input [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945983]
(289) Scan parquet
Output [6]: [internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990, systemId#945985]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(290) ColumnarToRow [codegen id : 7]
Input [6]: [internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990, systemId#945985]
(291) Filter [codegen id : 7]
Input [6]: [internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990, systemId#945985]
Condition : (isnotnull(plant#945988.internalRefUUID) AND isnotnull(product#945987.internalRefUUID))
(292) Project [codegen id : 7]
Output [6]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990]
Input [6]: [internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990, systemId#945985]
(293) Exchange
Input [6]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1474318]
(294) ShuffleQueryStage
Output [6]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990]
Arguments: 7
(295) BroadcastExchange
Input [6]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990]
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=1480302]
(296) BroadcastQueryStage
Output [6]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990]
Arguments: 71
(297) Scan parquet
Output [2]: [marketUnit#945991, distributionCenters#945997]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(298) ColumnarToRow [codegen id : 8]
Input [2]: [marketUnit#945991, distributionCenters#945997]
(299) Filter [codegen id : 8]
Input [2]: [marketUnit#945991, distributionCenters#945997]
Condition : (((marketUnit#945991 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#945997, true) > 0)) AND isnotnull(distributionCenters#945997))
(300) Project [codegen id : 8]
Output [1]: [distributionCenters#945997]
Input [2]: [marketUnit#945991, distributionCenters#945997]
(301) Exchange
Input [1]: [distributionCenters#945997]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1474338]
(302) ShuffleQueryStage
Output [1]: [distributionCenters#945997]
Arguments: 8
(303) Generate [codegen id : 36]
Input [1]: [distributionCenters#945997]
Arguments: explode(distributionCenters#945997), false, [distributionCenters#946012]
(304) Filter [codegen id : 36]
Input [1]: [distributionCenters#946012]
Condition : (((size(distributionCenters#946012.storageLocations, true) > 0) AND isnotnull(distributionCenters#946012.storageLocations)) AND isnotnull(distributionCenters#946012.internalRefUUID))
(305) Project [codegen id : 36]
Output [2]: [distributionCenters#946012.internalRefUUID AS _extract_internalRefUUID#946427, distributionCenters#946012.storageLocations AS _extract_storageLocations#946428]
Input [1]: [distributionCenters#946012]
(306) Generate [codegen id : 36]
Input [2]: [_extract_internalRefUUID#946427, _extract_storageLocations#946428]
Arguments: explode(_extract_storageLocations#946428), [_extract_internalRefUUID#946427], false, [storageLocations#946013]
(307) Project [codegen id : 36]
Output [3]: [_extract_internalRefUUID#946427 AS plantUuid#946015, storageLocations#946013.id AS storageLocId#946016, storageLocations#946013.internalRefUUID AS storageLocUuid#946017]
Input [2]: [_extract_internalRefUUID#946427, storageLocations#946013]
(308) BroadcastExchange
Input [3]: [plantUuid#946015, storageLocId#946016, storageLocUuid#946017]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1478192]
(309) BroadcastQueryStage
Output [3]: [plantUuid#946015, storageLocId#946016, storageLocUuid#946017]
Arguments: 64
(310) Scan parquet
Output [2]: [product#946018, plant#946019]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(311) ColumnarToRow [codegen id : 9]
Input [2]: [product#946018, plant#946019]
(312) Filter [codegen id : 9]
Input [2]: [product#946018, plant#946019]
Condition : isnotnull(plant#946019)
(313) Exchange
Input [2]: [product#946018, plant#946019]
Arguments: hashpartitioning(product#946018, plant#946019, 37), REPARTITION_BY_NUM, [plan_id=1474361]
(314) ShuffleQueryStage
Output [2]: [product#946018, plant#946019]
Arguments: 9
(315) ReusedExchange [Reuses operator id: 246]
Output [4]: [_extract_code#946557, _extract_internalRefUUID#946558, _extract_internalRefUUID#946556, _extract_internalRefUUID#946555]
(316) BroadcastQueryStage
Output [4]: [_extract_code#946557, _extract_internalRefUUID#946558, _extract_internalRefUUID#946556, _extract_internalRefUUID#946555]
Arguments: 48
(317) BroadcastHashJoin [codegen id : 41]
Left keys [4]: [coalesce(product#946018, ), isnull(product#946018), coalesce(plant#946019, ), isnull(plant#946019)]
Right keys [4]: [coalesce(_extract_internalRefUUID#946556, ), isnull(_extract_internalRefUUID#946556), coalesce(_extract_internalRefUUID#946555, ), isnull(_extract_internalRefUUID#946555)]
Join type: LeftOuter
Join condition: None
(318) Project [codegen id : 41]
Output [4]: [product#946018, plant#946019, _extract_code#946557, _extract_internalRefUUID#946558]
Input [6]: [product#946018, plant#946019, _extract_code#946557, _extract_internalRefUUID#946558, _extract_internalRefUUID#946556, _extract_internalRefUUID#946555]
(319) ReusedExchange [Reuses operator id: 256]
Output [3]: [internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039]
(320) BroadcastQueryStage
Output [3]: [internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039]
Arguments: 59
(321) BroadcastHashJoin [codegen id : 41]
Left keys [1]: [product#946018]
Right keys [1]: [internalUUID#946033]
Join type: LeftOuter
Join condition: None
(322) Project
Output [2]: [plant#946019, filter(unitOfMeasureConversions#946039, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#946557) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#946558)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946037.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946037.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946044]
Input [7]: [product#946018, plant#946019, _extract_code#946557, _extract_internalRefUUID#946558, internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039]
(323) Generate [codegen id : 42]
Input [2]: [plant#946019, filteredUnitOfMeasureConversions#946044]
Arguments: explode(filteredUnitOfMeasureConversions#946044.quantityNumerator), [plant#946019, filteredUnitOfMeasureConversions#946044], true, [quantityNumerator#946045]
(324) Project [codegen id : 42]
Output [2]: [plant#946019, filteredUnitOfMeasureConversions#946044.quantityDenominator AS _extract_quantityDenominator#946429]
Input [3]: [plant#946019, filteredUnitOfMeasureConversions#946044, quantityNumerator#946045]
(325) Generate [codegen id : 42]
Input [2]: [plant#946019, _extract_quantityDenominator#946429]
Arguments: explode(_extract_quantityDenominator#946429), [plant#946019], true, [quantityDenominator#946046]
(326) Project [codegen id : 42]
Output [1]: [plant#946019]
Input [2]: [plant#946019, quantityDenominator#946046]
(327) HashAggregate [codegen id : 42]
Input [1]: [plant#946019]
Keys [1]: [plant#946019]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946019]
(328) Exchange
Input [1]: [plant#946019]
Arguments: hashpartitioning(plant#946019, 37), ENSURE_REQUIREMENTS, [plan_id=1489461]
(329) ShuffleQueryStage
Output [1]: [plant#946019]
Arguments: 73
(330) AQEShuffleRead
Input [1]: [plant#946019]
Arguments: coalesced
(331) HashAggregate
Input [1]: [plant#946019]
Keys [1]: [plant#946019]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946019]
(332) BroadcastHashJoin
Left keys [1]: [plantUuid#946015]
Right keys [1]: [plant#946019]
Join type: Inner
Join condition: None
(333) Project
Output [3]: [plantUuid#946015, storageLocId#946016, storageLocUuid#946017]
Input [4]: [plantUuid#946015, storageLocId#946016, storageLocUuid#946017, plant#946019]
(334) BroadcastHashJoin [codegen id : 49]
Left keys [2]: [coalesce(plant#945988.internalRefUUID, ), isnull(plant#945988.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#946015, ), isnull(plantUuid#946015)]
Join type: Inner
Join condition: None
(335) Generate
Input [9]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990, plantUuid#946015, storageLocId#946016, storageLocUuid#946017]
Arguments: explode(filter(stockQuantities#945990, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#946017) AND (lambda x#944569.storageLocation.Id = storageLocId#946016)), lambda x#944569, false))), [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, plantUuid#946015], false, [stockQuantity#946049]
(336) ObjectHashAggregate
Input [7]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, plantUuid#946015, stockQuantity#946049]
Keys [5]: [plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985]
Functions [2]: [partial_first(calculationDateTime#945989, false), partial_collect_list(stockQuantity#946049, 0, 0)]
Aggregate Attributes [3]: [first#947911, valueSet#947912, buf#947913]
Results [8]: [plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985, first#947914, valueSet#947915, buf#947916]
(337) ObjectHashAggregate
Input [8]: [plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985, first#947914, valueSet#947915, buf#947916]
Keys [5]: [plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985]
Functions [2]: [first(calculationDateTime#945989, false), collect_list(stockQuantity#946049, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#945989)()#944584, collect_list(stockQuantity#946049, 0, 0)#944585]
Results [4]: [product#945987, plant#945988, first(calculationDateTime#945989)()#944584 AS calculationDateTime#946050, collect_list(stockQuantity#946049, 0, 0)#944585 AS stockQuantities#946051]
(338) Filter [codegen id : 50]
Input [4]: [product#945987, plant#945988, calculationDateTime#946050, stockQuantities#946051]
Condition : ((size(stockQuantities#946051, true) > 0) AND isnotnull(calculationDateTime#946050))
(339) Generate [codegen id : 50]
Input [4]: [product#945987, plant#945988, calculationDateTime#946050, stockQuantities#946051]
Arguments: explode(stockQuantities#946051), [product#945987, plant#945988, calculationDateTime#946050], false, [stockQuantity#946052]
(340) Filter [codegen id : 50]
Input [4]: [product#945987, plant#945988, calculationDateTime#946050, stockQuantity#946052]
Condition : (((isnotnull(stockQuantity#946052.specialStockIndicator.code) AND isnotnull(stockQuantity#946052.stockType.code)) AND (stockQuantity#946052.specialStockIndicator.code = )) AND (stockQuantity#946052.stockType.code = 01))
(341) Project [codegen id : 50]
Output [5]: [plant#945988.internalRefUUID AS plantUuid#946054, product#945987.internalRefUUID AS productUuid#946056, calculationDateTime#946050, stockQuantity#946052.storagelocation.id AS storageLocId#946057, stockQuantity#946052.quantity.measure AS quantity#946059]
Input [4]: [product#945987, plant#945988, calculationDateTime#946050, stockQuantity#946052]
(342) Exchange
Input [5]: [plantUuid#946054, productUuid#946056, calculationDateTime#946050, storageLocId#946057, quantity#946059]
Arguments: hashpartitioning(productUuid#946056, plantUuid#946054, 37), ENSURE_REQUIREMENTS, [plan_id=1492626]
(343) ShuffleQueryStage
Output [5]: [plantUuid#946054, productUuid#946056, calculationDateTime#946050, storageLocId#946057, quantity#946059]
Arguments: 79
(344) AQEShuffleRead
Input [5]: [plantUuid#946054, productUuid#946056, calculationDateTime#946050, storageLocId#946057, quantity#946059]
Arguments: local
(345) BroadcastExchange
Input [5]: [plantUuid#946054, productUuid#946056, calculationDateTime#946050, storageLocId#946057, quantity#946059]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1493204]
(346) BroadcastQueryStage
Output [5]: [plantUuid#946054, productUuid#946056, calculationDateTime#946050, storageLocId#946057, quantity#946059]
Arguments: 81
(347) Scan parquet
Output [3]: [product#946062, plant#946063, orderDateTime#946064]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(348) ColumnarToRow [codegen id : 12]
Input [3]: [product#946062, plant#946063, orderDateTime#946064]
(349) Filter [codegen id : 12]
Input [3]: [product#946062, plant#946063, orderDateTime#946064]
Condition : ((isnotnull(orderDateTime#946064) AND isnotnull(plant#946063)) AND isnotnull(product#946062))
(350) Exchange
Input [3]: [product#946062, plant#946063, orderDateTime#946064]
Arguments: hashpartitioning(product#946062, plant#946063, 37), REPARTITION_BY_NUM, [plan_id=1474441]
(351) ShuffleQueryStage
Output [3]: [product#946062, plant#946063, orderDateTime#946064]
Arguments: 14
(352) ReusedExchange [Reuses operator id: 246]
Output [4]: [_extract_code#946559, _extract_internalRefUUID#946560, _extract_internalRefUUID#946561, _extract_internalRefUUID#946562]
(353) BroadcastQueryStage
Output [4]: [_extract_code#946559, _extract_internalRefUUID#946560, _extract_internalRefUUID#946561, _extract_internalRefUUID#946562]
Arguments: 50
(354) BroadcastHashJoin [codegen id : 53]
Left keys [4]: [coalesce(product#946062, ), isnull(product#946062), coalesce(plant#946063, ), isnull(plant#946063)]
Right keys [4]: [coalesce(_extract_internalRefUUID#946561, ), isnull(_extract_internalRefUUID#946561), coalesce(_extract_internalRefUUID#946562, ), isnull(_extract_internalRefUUID#946562)]
Join type: LeftOuter
Join condition: None
(355) Project [codegen id : 53]
Output [5]: [product#946062, plant#946063, orderDateTime#946064, _extract_code#946559, _extract_internalRefUUID#946560]
Input [7]: [product#946062, plant#946063, orderDateTime#946064, _extract_code#946559, _extract_internalRefUUID#946560, _extract_internalRefUUID#946561, _extract_internalRefUUID#946562]
(356) ReusedExchange [Reuses operator id: 256]
Output [3]: [internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083]
(357) BroadcastQueryStage
Output [3]: [internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083]
Arguments: 60
(358) BroadcastHashJoin [codegen id : 53]
Left keys [1]: [product#946062]
Right keys [1]: [internalUUID#946077]
Join type: LeftOuter
Join condition: None
(359) Project
Output [4]: [product#946062, plant#946063, orderDateTime#946064, filter(unitOfMeasureConversions#946083, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#946559) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#946560)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946081.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946081.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946088]
Input [8]: [product#946062, plant#946063, orderDateTime#946064, _extract_code#946559, _extract_internalRefUUID#946560, internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083]
(360) Generate
Input [4]: [product#946062, plant#946063, orderDateTime#946064, filteredUnitOfMeasureConversions#946088]
Arguments: explode(filteredUnitOfMeasureConversions#946088.quantityNumerator), [product#946062, plant#946063, orderDateTime#946064, filteredUnitOfMeasureConversions#946088], true, [quantityNumerator#946089]
(361) Project
Output [4]: [product#946062, plant#946063, orderDateTime#946064, filteredUnitOfMeasureConversions#946088.quantityDenominator AS _extract_quantityDenominator#946436]
Input [5]: [product#946062, plant#946063, orderDateTime#946064, filteredUnitOfMeasureConversions#946088, quantityNumerator#946089]
(362) Generate
Input [4]: [product#946062, plant#946063, orderDateTime#946064, _extract_quantityDenominator#946436]
Arguments: explode(_extract_quantityDenominator#946436), [product#946062, plant#946063, orderDateTime#946064], true, [quantityDenominator#946090]
(363) Project
Output [3]: [product#946062, plant#946063, orderDateTime#946064]
Input [4]: [product#946062, plant#946063, orderDateTime#946064, quantityDenominator#946090]
(364) BroadcastHashJoin [codegen id : 54]
Left keys [2]: [plantUuid#946054, productUuid#946056]
Right keys [2]: [plant#946063, product#946062]
Join type: Inner
Join condition: (calculationDateTime#946050 <= orderDateTime#946064)
(365) Project [codegen id : 54]
Output [5]: [plantUuid#946054 AS plant#946093, productUuid#946056 AS product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
Input [8]: [plantUuid#946054, productUuid#946056, calculationDateTime#946050, storageLocId#946057, quantity#946059, product#946062, plant#946063, orderDateTime#946064]
(366) Exchange
Input [5]: [plant#946093, product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
Arguments: hashpartitioning(coalesce(plant#946093, ), isnull(plant#946093), coalesce(product#946094, ), isnull(product#946094), coalesce(storageLocId#946057, ), isnull(storageLocId#946057), coalesce(calculationDateTime#946050, 1970-01-01 00:00:00), isnull(calculationDateTime#946050), 37), ENSURE_REQUIREMENTS, [plan_id=1494152]
(367) ShuffleQueryStage
Output [5]: [plant#946093, product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
Arguments: 83
(368) AQEShuffleRead
Input [5]: [plant#946093, product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
Arguments: local
(369) BroadcastExchange
Input [5]: [plant#946093, product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
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=1494954]
(370) BroadcastQueryStage
Output [5]: [plant#946093, product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
Arguments: 85
(371) ReusedExchange [Reuses operator id: 295]
Output [6]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100]
(372) BroadcastQueryStage
Output [6]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100]
Arguments: 72
(373) ReusedExchange [Reuses operator id: 308]
Output [3]: [plantUuid#946125, storageLocId#946126, storageLocUuid#946127]
(374) BroadcastQueryStage
Output [3]: [plantUuid#946125, storageLocId#946126, storageLocUuid#946127]
Arguments: 66
(375) ReusedExchange [Reuses operator id: 328]
Output [1]: [plant#946129]
(376) ShuffleQueryStage
Output [1]: [plant#946129]
Arguments: 75
(377) AQEShuffleRead
Input [1]: [plant#946129]
Arguments: coalesced
(378) HashAggregate
Input [1]: [plant#946129]
Keys [1]: [plant#946129]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946129]
(379) BroadcastHashJoin
Left keys [1]: [plantUuid#946125]
Right keys [1]: [plant#946129]
Join type: Inner
Join condition: None
(380) Project
Output [3]: [plantUuid#946125, storageLocId#946126, storageLocUuid#946127]
Input [4]: [plantUuid#946125, storageLocId#946126, storageLocUuid#946127, plant#946129]
(381) BroadcastHashJoin [codegen id : 51]
Left keys [2]: [coalesce(plant#946098.internalRefUUID, ), isnull(plant#946098.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#946125, ), isnull(plantUuid#946125)]
Join type: Inner
Join condition: None
(382) Generate
Input [9]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100, plantUuid#946125, storageLocId#946126, storageLocUuid#946127]
Arguments: explode(filter(stockQuantities#946100, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#946127) AND (lambda x#944569.storageLocation.Id = storageLocId#946126)), lambda x#944569, false))), [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, plantUuid#946125], false, [stockQuantity#946159]
(383) ObjectHashAggregate
Input [7]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, plantUuid#946125, stockQuantity#946159]
Keys [5]: [plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095]
Functions [2]: [partial_first(calculationDateTime#946099, false), partial_collect_list(stockQuantity#946159, 0, 0)]
Aggregate Attributes [3]: [first#947919, valueSet#947920, buf#947921]
Results [8]: [plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095, first#947922, valueSet#947923, buf#947924]
(384) ObjectHashAggregate
Input [8]: [plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095, first#947922, valueSet#947923, buf#947924]
Keys [5]: [plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095]
Functions [2]: [first(calculationDateTime#946099, false), collect_list(stockQuantity#946159, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#946099)()#944584, collect_list(stockQuantity#946159, 0, 0)#944585]
Results [4]: [product#946097, plant#946098, first(calculationDateTime#946099)()#944584 AS calculationDateTime#946160, collect_list(stockQuantity#946159, 0, 0)#944585 AS stockQuantities#946161]
(385) Filter [codegen id : 52]
Input [4]: [product#946097, plant#946098, calculationDateTime#946160, stockQuantities#946161]
Condition : ((size(stockQuantities#946161, true) > 0) AND isnotnull(calculationDateTime#946160))
(386) Generate [codegen id : 52]
Input [4]: [product#946097, plant#946098, calculationDateTime#946160, stockQuantities#946161]
Arguments: explode(stockQuantities#946161), [product#946097, plant#946098, calculationDateTime#946160], false, [stockQuantity#946162]
(387) Filter [codegen id : 52]
Input [4]: [product#946097, plant#946098, calculationDateTime#946160, stockQuantity#946162]
Condition : (((isnotnull(stockQuantity#946162.specialStockIndicator.code) AND isnotnull(stockQuantity#946162.stockType.code)) AND (stockQuantity#946162.specialStockIndicator.code = )) AND (stockQuantity#946162.stockType.code = 01))
(388) Project [codegen id : 52]
Output [4]: [plant#946098.internalRefUUID AS plantUuid#946164, product#946097.internalRefUUID AS productUuid#946166, calculationDateTime#946160, stockQuantity#946162.storagelocation.id AS storageLocId#946167]
Input [4]: [product#946097, plant#946098, calculationDateTime#946160, stockQuantity#946162]
(389) Exchange
Input [4]: [plantUuid#946164, productUuid#946166, calculationDateTime#946160, storageLocId#946167]
Arguments: hashpartitioning(productUuid#946166, plantUuid#946164, 37), ENSURE_REQUIREMENTS, [plan_id=1492694]
(390) ShuffleQueryStage
Output [4]: [plantUuid#946164, productUuid#946166, calculationDateTime#946160, storageLocId#946167]
Arguments: 80
(391) AQEShuffleRead
Input [4]: [plantUuid#946164, productUuid#946166, calculationDateTime#946160, storageLocId#946167]
Arguments: local
(392) BroadcastExchange
Input [4]: [plantUuid#946164, productUuid#946166, calculationDateTime#946160, storageLocId#946167]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1493673]
(393) BroadcastQueryStage
Output [4]: [plantUuid#946164, productUuid#946166, calculationDateTime#946160, storageLocId#946167]
Arguments: 82
(394) ReusedExchange [Reuses operator id: 350]
Output [3]: [product#946172, plant#946173, orderDateTime#946174]
(395) ShuffleQueryStage
Output [3]: [product#946172, plant#946173, orderDateTime#946174]
Arguments: 30
(396) ReusedExchange [Reuses operator id: 246]
Output [4]: [_extract_code#946569, _extract_internalRefUUID#946570, _extract_internalRefUUID#946567, _extract_internalRefUUID#946568]
(397) BroadcastQueryStage
Output [4]: [_extract_code#946569, _extract_internalRefUUID#946570, _extract_internalRefUUID#946567, _extract_internalRefUUID#946568]
Arguments: 54
(398) BroadcastHashJoin [codegen id : 55]
Left keys [4]: [coalesce(product#946172, ), isnull(product#946172), coalesce(plant#946173, ), isnull(plant#946173)]
Right keys [4]: [coalesce(_extract_internalRefUUID#946567, ), isnull(_extract_internalRefUUID#946567), coalesce(_extract_internalRefUUID#946568, ), isnull(_extract_internalRefUUID#946568)]
Join type: LeftOuter
Join condition: None
(399) Project [codegen id : 55]
Output [5]: [product#946172, plant#946173, orderDateTime#946174, _extract_code#946569, _extract_internalRefUUID#946570]
Input [7]: [product#946172, plant#946173, orderDateTime#946174, _extract_code#946569, _extract_internalRefUUID#946570, _extract_internalRefUUID#946567, _extract_internalRefUUID#946568]
(400) ReusedExchange [Reuses operator id: 256]
Output [3]: [internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193]
(401) BroadcastQueryStage
Output [3]: [internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193]
Arguments: 62
(402) BroadcastHashJoin [codegen id : 55]
Left keys [1]: [product#946172]
Right keys [1]: [internalUUID#946187]
Join type: LeftOuter
Join condition: None
(403) Project
Output [4]: [product#946172, plant#946173, orderDateTime#946174, filter(unitOfMeasureConversions#946193, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#946569) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#946570)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946191.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946191.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946198]
Input [8]: [product#946172, plant#946173, orderDateTime#946174, _extract_code#946569, _extract_internalRefUUID#946570, internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193]
(404) Generate
Input [4]: [product#946172, plant#946173, orderDateTime#946174, filteredUnitOfMeasureConversions#946198]
Arguments: explode(filteredUnitOfMeasureConversions#946198.quantityNumerator), [product#946172, plant#946173, orderDateTime#946174, filteredUnitOfMeasureConversions#946198], true, [quantityNumerator#946199]
(405) Project
Output [4]: [product#946172, plant#946173, orderDateTime#946174, filteredUnitOfMeasureConversions#946198.quantityDenominator AS _extract_quantityDenominator#946452]
Input [5]: [product#946172, plant#946173, orderDateTime#946174, filteredUnitOfMeasureConversions#946198, quantityNumerator#946199]
(406) Generate
Input [4]: [product#946172, plant#946173, orderDateTime#946174, _extract_quantityDenominator#946452]
Arguments: explode(_extract_quantityDenominator#946452), [product#946172, plant#946173, orderDateTime#946174], true, [quantityDenominator#946200]
(407) Project
Output [3]: [product#946172, plant#946173, orderDateTime#946174]
Input [4]: [product#946172, plant#946173, orderDateTime#946174, quantityDenominator#946200]
(408) BroadcastHashJoin [codegen id : 56]
Left keys [2]: [plantUuid#946164, productUuid#946166]
Right keys [2]: [plant#946173, product#946172]
Join type: Inner
Join condition: (calculationDateTime#946160 <= orderDateTime#946174)
(409) Project [codegen id : 56]
Output [4]: [plantUuid#946164 AS plant#946203, productUuid#946166 AS product#946204, storageLocId#946167, calculationDateTime#946160]
Input [7]: [plantUuid#946164, productUuid#946166, calculationDateTime#946160, storageLocId#946167, product#946172, plant#946173, orderDateTime#946174]
(410) HashAggregate [codegen id : 56]
Input [4]: [plant#946203, product#946204, storageLocId#946167, calculationDateTime#946160]
Keys [3]: [plant#946203, product#946204, storageLocId#946167]
Functions [1]: [partial_max(calculationDateTime#946160)]
Aggregate Attributes [1]: [max#947917]
Results [4]: [plant#946203, product#946204, storageLocId#946167, max#947918]
(411) HashAggregate [codegen id : 56]
Input [4]: [plant#946203, product#946204, storageLocId#946167, max#947918]
Keys [3]: [plant#946203, product#946204, storageLocId#946167]
Functions [1]: [max(calculationDateTime#946160)]
Aggregate Attributes [1]: [max(calculationDateTime#946160)#944648]
Results [4]: [plant#946203, product#946204, storageLocId#946167, max(calculationDateTime#946160)#944648 AS max_calc_datetime#946205]
(412) Exchange
Input [4]: [plant#946203, product#946204, storageLocId#946167, max_calc_datetime#946205]
Arguments: hashpartitioning(coalesce(plant#946203, ), isnull(plant#946203), coalesce(product#946204, ), isnull(product#946204), coalesce(storageLocId#946167, ), isnull(storageLocId#946167), coalesce(max_calc_datetime#946205, 1970-01-01 00:00:00), isnull(max_calc_datetime#946205), 37), ENSURE_REQUIREMENTS, [plan_id=1494596]
(413) ShuffleQueryStage
Output [4]: [plant#946203, product#946204, storageLocId#946167, max_calc_datetime#946205]
Arguments: 84
(414) AQEShuffleRead
Input [4]: [plant#946203, product#946204, storageLocId#946167, max_calc_datetime#946205]
Arguments: local
(415) BroadcastHashJoin [codegen id : 57]
Left keys [8]: [coalesce(plant#946093, ), isnull(plant#946093), coalesce(product#946094, ), isnull(product#946094), coalesce(storageLocId#946057, ), isnull(storageLocId#946057), coalesce(calculationDateTime#946050, 1970-01-01 00:00:00), isnull(calculationDateTime#946050)]
Right keys [8]: [coalesce(plant#946203, ), isnull(plant#946203), coalesce(product#946204, ), isnull(product#946204), coalesce(storageLocId#946167, ), isnull(storageLocId#946167), coalesce(max_calc_datetime#946205, 1970-01-01 00:00:00), isnull(max_calc_datetime#946205)]
Join type: Inner
Join condition: None
(416) Project [codegen id : 57]
Output [4]: [plant#946093, product#946094, calculationDateTime#946050, quantity#946059]
Input [9]: [plant#946093, product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059, plant#946203, product#946204, storageLocId#946167, max_calc_datetime#946205]
(417) HashAggregate [codegen id : 57]
Input [4]: [plant#946093, product#946094, calculationDateTime#946050, quantity#946059]
Keys [2]: [product#946094, plant#946093]
Functions [2]: [partial_min(calculationDateTime#946050), partial_sum(quantity#946059)]
Aggregate Attributes [2]: [min#947907, sum#947908]
Results [4]: [product#946094, plant#946093, min#947909, sum#947910]
(418) Exchange
Input [4]: [product#946094, plant#946093, min#947909, sum#947910]
Arguments: hashpartitioning(product#946094, plant#946093, 37), ENSURE_REQUIREMENTS, [plan_id=1495563]
(419) ShuffleQueryStage
Output [4]: [product#946094, plant#946093, min#947909, sum#947910]
Arguments: 86
(420) AQEShuffleRead
Input [4]: [product#946094, plant#946093, min#947909, sum#947910]
Arguments: coalesced
(421) HashAggregate [codegen id : 58]
Input [4]: [product#946094, plant#946093, min#947909, sum#947910]
Keys [2]: [product#946094, plant#946093]
Functions [2]: [min(calculationDateTime#946050), sum(quantity#946059)]
Aggregate Attributes [2]: [min(calculationDateTime#946050)#944775, sum(quantity#946059)#944774]
Results [4]: [product#946094, plant#946093, min(calculationDateTime#946050)#944775 AS minCalculationDateTime#946207, round(sum(quantity#946059)#944774, 0) AS roundedQuantitySum#946208]
(422) BroadcastExchange
Input [4]: [product#946094, plant#946093, minCalculationDateTime#946207, roundedQuantitySum#946208]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=1495864]
(423) BroadcastQueryStage
Output [4]: [product#946094, plant#946093, minCalculationDateTime#946207, roundedQuantitySum#946208]
Arguments: 87
(424) BroadcastHashJoin [codegen id : 60]
Left keys [2]: [plant#945955, product#945954]
Right keys [2]: [plant#946093, product#946094]
Join type: LeftOuter
Join condition: None
(425) Project [codegen id : 60]
Output [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, CASE WHEN isnotnull(minCalculationDateTime#946207) THEN minCalculationDateTime#946207 ELSE orderDateTime#945956 END AS stockDatetime#946209, CASE WHEN isnotnull(roundedQuantitySum#946208) THEN array(roundedQuantitySum#946208) ELSE [0.0] END AS stockBatchQuantities#946210]
Input [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, product#946094, plant#946093, minCalculationDateTime#946207, roundedQuantitySum#946208]
(426) Exchange
Input [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210]
Arguments: hashpartitioning(coalesce(plant#945955, ), isnull(plant#945955), coalesce(product#945954, ), isnull(product#945954), 37), ENSURE_REQUIREMENTS, [plan_id=1496161]
(427) ShuffleQueryStage
Output [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210]
Arguments: 88
(428) AQEShuffleRead
Input [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210]
Arguments: coalesced
(429) Sort [codegen id : 61]
Input [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210]
Arguments: [coalesce(plant#945955, ) ASC NULLS FIRST, isnull(plant#945955) ASC NULLS FIRST, coalesce(product#945954, ) ASC NULLS FIRST, isnull(product#945954) ASC NULLS FIRST], false, 0
(430) Scan parquet
Output [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000678/0_1_10000000678]
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>>>
(431) ColumnarToRow [codegen id : 23]
Input [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
(432) Exchange
Input [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
Arguments: hashpartitioning(coalesce(plant#944815, ), isnull(plant#944815), coalesce(product#944814, ), isnull(product#944814), 37), ENSURE_REQUIREMENTS, [plan_id=1474724]
(433) ShuffleQueryStage
Output [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
Arguments: 35
(434) AQEShuffleRead
Input [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
Arguments: coalesced
(435) Sort [codegen id : 62]
Input [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
Arguments: [coalesce(plant#944815, ) ASC NULLS FIRST, isnull(plant#944815) ASC NULLS FIRST, coalesce(product#944814, ) ASC NULLS FIRST, isnull(product#944814) ASC NULLS FIRST], false, 0
(436) SortMergeJoin [codegen id : 63]
Left keys [4]: [coalesce(plant#945955, ), isnull(plant#945955), coalesce(product#945954, ), isnull(product#945954)]
Right keys [4]: [coalesce(plant#944815, ), isnull(plant#944815), coalesce(product#944814, ), isnull(product#944814)]
Join type: LeftOuter
Join condition: None
(437) Project [codegen id : 63]
Output [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, CASE WHEN isnotnull(product#944814) THEN struct(demandChannel, demandChannel#944816, demandStream, demandStream#944817, considerVariance, considerVariance#944818, demandTimeBuckets, demandTimeBuckets#944819, demandPointInTimeStart, demandPointInTimeStart#944820, demandPointInTimeEnd, demandPointInTimeEnd#944821, demandPointInTime, demandPointInTime#944822) END AS rawDemands#944824]
Input [16]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
(438) ObjectHashAggregate
Input [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, rawDemands#944824]
Keys [8]: [product#945954, plant#945955, orderDateTime#945956, knownfloatingpointnormalized(if (isnull(productPlant#945967)) null else named_struct(systemId, productPlant#945967.systemId, internalUUID, productPlant#945967.internalUUID, plant, productPlant#945967.plant, product, productPlant#945967.product, blockedForReplenishmentStartingFrom, productPlant#945967.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#945967.productionAspect)) null else named_struct(productMovementPlants, productPlant#945967.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#945967.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#945967.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#945967.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#945967.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#945967.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#945967.salesPlant, listing, productPlant#945967.listing, sourceOfSupplyCategory, productPlant#945967.sourceOfSupplyCategory)) AS productPlant#945967, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#945984)) AS outboundUnit#945984, stockDatetime#946209, knownfloatingpointnormalized(transform(stockBatchQuantities#946210, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#954362)), lambda arg#954362, false))) AS stockBatchQuantities#946210, [7226582400000000] AS [7226582400000000]#954361]
Functions [1]: [partial_collect_list(rawDemands#944824, 0, 0)]
Aggregate Attributes [1]: [buf#947905]
Results [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#954361, buf#947906]
(439) Exchange
Input [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#954361, buf#947906]
Arguments: hashpartitioning(product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#954361, 37), ENSURE_REQUIREMENTS, [plan_id=1496422]
(440) ShuffleQueryStage
Output [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#954361, buf#947906]
Arguments: 89
(441) AQEShuffleRead
Input [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#954361, buf#947906]
Arguments: coalesced
(442) ObjectHashAggregate
Input [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#954361, buf#947906]
Keys [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#954361]
Functions [1]: [collect_list(rawDemands#944824, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#944824, 0, 0)#944844]
Results [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, collect_list(rawDemands#944824, 0, 0)#944844 AS rawDemands#944825]
(443) Scan parquet
Output [3]: [internalUUID#945905, address#945911, systemId#945904]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(444) ColumnarToRow [codegen id : 24]
Input [3]: [internalUUID#945905, address#945911, systemId#945904]
(445) Project [codegen id : 24]
Output [2]: [internalUUID#945905, address#945911.timeZone.code AS timezonecode#945917]
Input [3]: [internalUUID#945905, address#945911, systemId#945904]
(446) Exchange
Input [2]: [internalUUID#945905, timezonecode#945917]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1474744]
(447) ShuffleQueryStage
Output [2]: [internalUUID#945905, timezonecode#945917]
Arguments: 36
(448) BroadcastExchange
Input [2]: [internalUUID#945905, timezonecode#945917]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1479549]
(449) BroadcastQueryStage
Output [2]: [internalUUID#945905, timezonecode#945917]
Arguments: 70
(450) BroadcastHashJoin [codegen id : 64]
Left keys [2]: [coalesce(plant#945955, ), isnull(plant#945955)]
Right keys [2]: [coalesce(internalUUID#945905, ), isnull(internalUUID#945905)]
Join type: LeftOuter
Join condition: None
(451) Project [codegen id : 64]
Output [10]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#946211, rawDemands#944825, CASE WHEN isnotnull(timezonecode#945917) THEN timezonecode#945917 ELSE UTC END AS timezonecode#945919]
Input [10]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, rawDemands#944825, internalUUID#945905, timezonecode#945917]
(452) DeserializeToObject [codegen id : 64]
Input [10]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, stockBatchShelfLifeEndDatetimes#946211, rawDemands#944825, timezonecode#945919]
Arguments: createexternalrow(invoke(product#945954.toString()), invoke(plant#945955.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#945956)), if (isnull(productPlant#945967)) null else createexternalrow(invoke(productPlant#945967.systemId.toString()), invoke(productPlant#945967.internalUUID.toString()), if (isnull(productPlant#945967.plant)) null else createexternalrow(invoke(productPlant#945967.plant.internalRefUUID.toString()), invoke(productPlant#945967.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#945967.product)) null else createexternalrow(invoke(productPlant#945967.product.internalRefUUID.toString()), invoke(productPlant#945967.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#945967.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#945967.productionAspect)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#945967.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#945967.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#945967.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)), if (isnull(productPlant#945967.salesPlant)) null else createexternalrow(if (isnull(productPlant#945967.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#945967.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#945967.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#945967.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#945967.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#945967.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#945967.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), 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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#945984)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#946209)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#946210, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#946211, 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#944825, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#945919.toString()), 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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),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), StructField(timezonecode,StringType,true)), obj#945940: org.apache.spark.sql.Row
(453) MapElements [codegen id : 64]
Input [1]: [obj#945940]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@353c8b73, obj#945945: org.apache.spark.sql.Row
(454) SerializeFromObject [codegen id : 64]
Input [1]: [obj#945945]
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#945950, 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#945951]
(455) Exchange
Input [2]: [product#945950, plant#945951]
Arguments: hashpartitioning(coalesce(plant#945951, ), isnull(plant#945951), coalesce(product#945950, ), isnull(product#945950), 37), ENSURE_REQUIREMENTS, [plan_id=1496618]
(456) ShuffleQueryStage
Output [2]: [product#945950, plant#945951]
Arguments: 90
(457) AQEShuffleRead
Input [2]: [product#945950, plant#945951]
Arguments: local
(458) BroadcastExchange
Input [2]: [product#945950, plant#945951]
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=1496761]
(459) BroadcastQueryStage
Output [2]: [product#945950, plant#945951]
Arguments: 91
(460) BroadcastHashJoin [codegen id : 65]
Left keys [4]: [coalesce(plant#944306, ), isnull(plant#944306), coalesce(product#944305, ), isnull(product#944305)]
Right keys [4]: [coalesce(plant#945951, ), isnull(plant#945951), coalesce(product#945950, ), isnull(product#945950)]
Join type: LeftOuter
Join condition: None
(461) Project [codegen id : 65]
Output [2]: [product#944305, plant#944306]
Input [4]: [product#944305, plant#944306, product#945950, plant#945951]
(462) Exchange
Input [2]: [product#944305, plant#944306]
Arguments: hashpartitioning(plant#944306, 37), ENSURE_REQUIREMENTS, [plan_id=1496886]
(463) ShuffleQueryStage
Output [2]: [product#944305, plant#944306]
Arguments: 92
(464) AQEShuffleRead
Input [2]: [product#944305, plant#944306]
Arguments: coalesced
(465) Sort [codegen id : 66]
Input [2]: [product#944305, plant#944306]
Arguments: [plant#944306 ASC NULLS FIRST], false, 0
(466) ReusedExchange [Reuses operator id: 301]
Output [1]: [distributionCenters#946295]
(467) ShuffleQueryStage
Output [1]: [distributionCenters#946295]
Arguments: 38
(468) Generate [codegen id : 38]
Input [1]: [distributionCenters#946295]
Arguments: explode(distributionCenters#946295), false, [distributionCenters#946310]
(469) Filter [codegen id : 38]
Input [1]: [distributionCenters#946310]
Condition : (((size(distributionCenters#946310.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#946310.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#946310.internalRefUUID))
(470) Project [codegen id : 38]
Output [2]: [distributionCenters#946310.internalRefUUID AS _extract_internalRefUUID#946460, distributionCenters#946310.storageLocations.internalRefUUID AS _extract_internalRefUUID#946576]
Input [1]: [distributionCenters#946310]
(471) Generate [codegen id : 38]
Input [2]: [_extract_internalRefUUID#946460, _extract_internalRefUUID#946576]
Arguments: explode(_extract_internalRefUUID#946576), [_extract_internalRefUUID#946460], false, [storageLocations#946311]
(472) Filter [codegen id : 38]
Input [2]: [_extract_internalRefUUID#946460, storageLocations#946311]
Condition : isnotnull(storageLocations#946311)
(473) Project [codegen id : 38]
Output [2]: [_extract_internalRefUUID#946460 AS plantUuid#946313, storageLocations#946311 AS storageLocUuid#946315]
Input [2]: [_extract_internalRefUUID#946460, storageLocations#946311]
(474) BroadcastExchange
Input [2]: [plantUuid#946313, storageLocUuid#946315]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1478299]
(475) BroadcastQueryStage
Output [2]: [plantUuid#946313, storageLocUuid#946315]
Arguments: 67
(476) ReusedExchange [Reuses operator id: 328]
Output [1]: [plant#946317]
(477) ShuffleQueryStage
Output [1]: [plant#946317]
Arguments: 77
(478) AQEShuffleRead
Input [1]: [plant#946317]
Arguments: coalesced
(479) HashAggregate
Input [1]: [plant#946317]
Keys [1]: [plant#946317]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946317]
(480) BroadcastHashJoin [codegen id : 67]
Left keys [1]: [plantUuid#946313]
Right keys [1]: [plant#946317]
Join type: Inner
Join condition: None
(481) Project [codegen id : 67]
Output [2]: [plantUuid#946313 AS plant#946288, storageLocUuid#946315]
Input [3]: [plantUuid#946313, storageLocUuid#946315, plant#946317]
(482) Sort [codegen id : 67]
Input [2]: [plant#946288, storageLocUuid#946315]
Arguments: [plant#946288 ASC NULLS FIRST], false, 0
(483) SortMergeJoin [codegen id : 68]
Left keys [1]: [plant#944306]
Right keys [1]: [plant#946288]
Join type: Inner
Join condition: None
(484) Project [codegen id : 68]
Output [3]: [plant#944306, product#944305, storageLocUuid#946315]
Input [4]: [product#944305, plant#944306, plant#946288, storageLocUuid#946315]
(485) Scan parquet
Output [5]: [internalUUID#946254, id#946255, isMarkedForDeletion#946260, items#946261, systemId#946253]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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,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>>>>>
(486) ColumnarToRow [codegen id : 29]
Input [5]: [internalUUID#946254, id#946255, isMarkedForDeletion#946260, items#946261, systemId#946253]
(487) Filter [codegen id : 29]
Input [5]: [internalUUID#946254, id#946255, isMarkedForDeletion#946260, items#946261, systemId#946253]
Condition : (((isnotnull(isMarkedForDeletion#946260) AND NOT isMarkedForDeletion#946260) AND (size(items#946261, true) > 0)) AND isnotnull(items#946261))
(488) Project [codegen id : 29]
Output [3]: [internalUUID#946254, id#946255, items#946261]
Input [5]: [internalUUID#946254, id#946255, isMarkedForDeletion#946260, items#946261, systemId#946253]
(489) Exchange
Input [3]: [internalUUID#946254, id#946255, items#946261]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1474876]
(490) ShuffleQueryStage
Output [3]: [internalUUID#946254, id#946255, items#946261]
Arguments: 45
(491) Generate [codegen id : 40]
Input [3]: [internalUUID#946254, id#946255, items#946261]
Arguments: explode(items#946261), [internalUUID#946254, id#946255], false, [item#946265]
(492) Filter [codegen id : 40]
Input [3]: [internalUUID#946254, id#946255, item#946265]
Condition : ((((isnotnull(item#946265.deletionIndicator) AND isnotnull(item#946265.completeIndicator)) AND isnotnull(item#946265.returnIndicator)) AND ((NOT item#946265.deletionIndicator AND NOT item#946265.completeIndicator) AND NOT item#946265.returnIndicator)) AND ((isnotnull(item#946265.product.internalRefUUID) AND isnotnull(item#946265.plant.internalRefUUID)) AND isnotnull(item#946265.storageLocation.internalRefUUID)))
(493) Project [codegen id : 40]
Output [11]: [id#946255, internalUUID#946254, item#946265.plant.internalRefUUID AS plant#946270, item#946265.product.internalRefUUID AS product#946271, item#946265.storageLocation.internalRefUUID AS storageLocUuid#946272, item#946265.quantityUnit.code AS quantityUom#946273, item#946265.quantityUnit.internalRefUUID AS quantityUomUuid#946274, item#946265.quantityNumerator AS quantityNumerator#946275, item#946265.quantityDenominator AS quantityDenominator#946276, item#946265.scheduleLines AS scheduleLines#946277, item#946265.confirmations AS confirmations#946278]
Input [3]: [internalUUID#946254, id#946255, item#946265]
(494) BroadcastExchange
Input [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, storageLocUuid#946272, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278]
Arguments: HashedRelationBroadcastMode(List(input[3, string, true], input[2, string, true], input[4, string, true]),false), [plan_id=1479058]
(495) BroadcastQueryStage
Output [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, storageLocUuid#946272, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278]
Arguments: 69
(496) BroadcastHashJoin [codegen id : 68]
Left keys [3]: [product#944305, plant#944306, storageLocUuid#946315]
Right keys [3]: [product#946271, plant#946270, storageLocUuid#946272]
Join type: Inner
Join condition: None
(497) Project
Output [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, size(filter(confirmations#946278, lambdafunction(((NOT lambda x_140#946362.deletionIndicator AND lambda x_140#946362.isRelevantForConfirmation) AND isnotnull(lambda x_140#946362.confirmedDeliveryAt)), lambda x_140#946362, false)), false) AS _w0#946369]
Input [14]: [plant#944306, product#944305, storageLocUuid#946315, id#946255, internalUUID#946254, plant#946270, product#946271, storageLocUuid#946272, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278]
(498) Exchange
Input [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, _w0#946369]
Arguments: hashpartitioning(internalUUID#946254, 37), ENSURE_REQUIREMENTS, [plan_id=1497019]
(499) ShuffleQueryStage
Output [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, _w0#946369]
Arguments: 93
(500) AQEShuffleRead
Input [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, _w0#946369]
Arguments: coalesced
(501) Sort [codegen id : 69]
Input [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, _w0#946369]
Arguments: [internalUUID#946254 ASC NULLS FIRST], false, 0
(502) Window
Input [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, _w0#946369]
Arguments: [sum(_w0#946369) windowspecdefinition(internalUUID#946254, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#946370L], [internalUUID#946254]
(503) Project
Output [3]: [plant#946270, product#946271, filter(transform(CASE WHEN (_we0#946370L > 0) THEN transform(filter(confirmations#946278, lambdafunction(((NOT lambda x_140#946363.deletionIndicator AND lambda x_140#946363.isRelevantForConfirmation) AND isnotnull(lambda x_140#946363.confirmedDeliveryAt)), lambda x_140#946363, false)), lambdafunction(struct(openQty, greatest((lambda x_141#946366.confirmedQuantity - coalesce(lambda x_141#946366.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_141#946366.confirmedDeliveryAt), lambda x_141#946366, false)) ELSE transform(scheduleLines#946277, lambdafunction(struct(openQty, greatest((lambda x_139#946364.quantity - coalesce(lambda x_139#946364.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_139#946364.deliveryAt), lambda x_139#946364, false)) END, lambdafunction(struct(documentId, id#946255, documentUuid, internalUUID#946254, openQty, lambda x_142#946367.openQty, openQtyInBaseUnit, ((lambda x_142#946367.openQty * quantityNumerator#946275) / quantityDenominator#946276), qtyUom, quantityUom#946273, qtyUomUuid, quantityUomUuid#946274, availabilityDatetime, lambda x_142#946367.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_142#946367, false)), lambdafunction(NOT (lambda x_143#946368.openQty = 0.0), lambda x_143#946368, false)) AS openGoodsMovements#946361]
Input [12]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, _w0#946369, _we0#946370L]
(504) ObjectHashAggregate
Input [3]: [plant#946270, product#946271, openGoodsMovements#946361]
Keys [2]: [product#946271, plant#946270]
Functions [1]: [partial_collect_list(openGoodsMovements#946361, 0, 0)]
Aggregate Attributes [1]: [buf#947901]
Results [3]: [product#946271, plant#946270, buf#947902]
(505) Exchange
Input [3]: [product#946271, plant#946270, buf#947902]
Arguments: hashpartitioning(product#946271, plant#946270, 37), ENSURE_REQUIREMENTS, [plan_id=1497104]
(506) ShuffleQueryStage
Output [3]: [product#946271, plant#946270, buf#947902]
Arguments: 94
(507) ObjectHashAggregate
Input [3]: [product#946271, plant#946270, buf#947902]
Keys [2]: [product#946271, plant#946270]
Functions [1]: [collect_list(openGoodsMovements#946361, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#946361, 0, 0)#946386]
Results [3]: [product#946271, plant#946270, flatten(collect_list(openGoodsMovements#946361, 0, 0)#946386) AS openGoodsMovements#946371]
(508) Filter [codegen id : 70]
Input [3]: [product#946271, plant#946270, openGoodsMovements#946371]
Condition : (size(openGoodsMovements#946371, false) > 0)
(509) ResultQueryStage
Output [3]: [product#946271, plant#946270, openGoodsMovements#946371]
Arguments: 95
(510) Filter
Input [2]: [product#944305, plant#944306]
Condition : (isnotnull(plant#944306) AND isnotnull(product#944305))
(511) Exchange
Input [2]: [product#944305, plant#944306]
Arguments: hashpartitioning(product#944305, plant#944306, 37), REPARTITION_BY_NUM, [plan_id=1459298]
(512) Project
Output [4]: [plant#944363.internalRefUUID AS _extract_internalRefUUID#946552, product#944364.internalRefUUID AS _extract_internalRefUUID#946551, productionAspect#944366.productMovementPlants.unitOfIssue.code AS _extract_code#946549, productionAspect#944366.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#946550]
Input [4]: [plant#944363, product#944364, productionAspect#944366, systemId#944361]
(513) Exchange
Input [4]: [_extract_internalRefUUID#946552, _extract_internalRefUUID#946551, _extract_code#946549, _extract_internalRefUUID#946550]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1459058]
(514) Project
Output [4]: [_extract_code#946549, _extract_internalRefUUID#946550, _extract_internalRefUUID#946551, _extract_internalRefUUID#946552]
Input [4]: [_extract_internalRefUUID#946552, _extract_internalRefUUID#946551, _extract_code#946549, _extract_internalRefUUID#946550]
(515) BroadcastExchange
Input [4]: [_extract_code#946549, _extract_internalRefUUID#946550, _extract_internalRefUUID#946551, _extract_internalRefUUID#946552]
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=1459412]
(516) BroadcastHashJoin
Left keys [4]: [coalesce(product#944305, ), isnull(product#944305), coalesce(plant#944306, ), isnull(plant#944306)]
Right keys [4]: [coalesce(_extract_internalRefUUID#946551, ), isnull(_extract_internalRefUUID#946551), coalesce(_extract_internalRefUUID#946552, ), isnull(_extract_internalRefUUID#946552)]
Join type: LeftOuter
Join condition: None
(517) Project
Output [4]: [product#944305, plant#944306, _extract_code#946549, _extract_internalRefUUID#946550]
Input [6]: [product#944305, plant#944306, _extract_code#946549, _extract_internalRefUUID#946550, _extract_internalRefUUID#946551, _extract_internalRefUUID#946552]
(518) Filter
Input [4]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403, systemId#944396]
Condition : isnotnull(internalUUID#944397)
(519) Project
Output [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Input [4]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403, systemId#944396]
(520) Exchange
Input [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1459065]
(521) BroadcastExchange
Input [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1459416]
(522) BroadcastHashJoin
Left keys [1]: [product#944305]
Right keys [1]: [internalUUID#944397]
Join type: LeftOuter
Join condition: None
(523) Project
Output [3]: [product#944305, plant#944306, filter(unitOfMeasureConversions#944403, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#946549) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#946550)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#944401.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#944401.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#944409]
Input [7]: [product#944305, plant#944306, _extract_code#946549, _extract_internalRefUUID#946550, internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
(524) Generate
Input [3]: [product#944305, plant#944306, filteredUnitOfMeasureConversions#944409]
Arguments: explode(filteredUnitOfMeasureConversions#944409.quantityNumerator), [product#944305, plant#944306, filteredUnitOfMeasureConversions#944409], true, [quantityNumerator#944417]
(525) Project
Output [3]: [product#944305, plant#944306, filteredUnitOfMeasureConversions#944409.quantityDenominator AS _extract_quantityDenominator#946387]
Input [4]: [product#944305, plant#944306, filteredUnitOfMeasureConversions#944409, quantityNumerator#944417]
(526) Generate
Input [3]: [product#944305, plant#944306, _extract_quantityDenominator#946387]
Arguments: explode(_extract_quantityDenominator#946387), [product#944305, plant#944306], true, [quantityDenominator#944420]
(527) Project
Output [2]: [product#944305, plant#944306]
Input [3]: [product#944305, plant#944306, quantityDenominator#944420]
(528) Exchange
Input [2]: [product#944305, plant#944306]
Arguments: hashpartitioning(coalesce(plant#944306, ), isnull(plant#944306), coalesce(product#944305, ), isnull(product#944305), 37), ENSURE_REQUIREMENTS, [plan_id=1459569]
(529) Sort
Input [2]: [product#944305, plant#944306]
Arguments: [coalesce(plant#944306, ) ASC NULLS FIRST, isnull(plant#944306) ASC NULLS FIRST, coalesce(product#944305, ) ASC NULLS FIRST, isnull(product#944305) ASC NULLS FIRST], false, 0
(530) Exchange
Input [3]: [product#945954, plant#945955, orderDateTime#945956]
Arguments: hashpartitioning(product#945954, plant#945955, 37), REPARTITION_BY_NUM, [plan_id=1459073]
(531) Project
Output [9]: [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966]
Input [9]: [internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966, systemId#945958]
(532) Exchange
Input [9]: [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1459076]
(533) Project
Output [1]: [struct(systemId, systemId#945958, internalUUID, internalUUID#945959, plant, plant#945960, product, product#945961, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#945962, productionAspect, productionAspect#945963, salesPlant, salesPlant#945964, listing, listing#945965, sourceOfSupplyCategory, sourceOfSupplyCategory#945966) AS productPlant#945967]
Input [9]: [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966]
(534) BroadcastExchange
Input [1]: [productPlant#945967]
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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].plant.internalRefUUID)),false), [plan_id=1459423]
(535) BroadcastHashJoin
Left keys [4]: [coalesce(product#945954, ), isnull(product#945954), coalesce(plant#945955, ), isnull(plant#945955)]
Right keys [4]: [coalesce(productPlant#945967.product.internalRefUUID, ), isnull(productPlant#945967.product.internalRefUUID), coalesce(productPlant#945967.plant.internalRefUUID, ), isnull(productPlant#945967.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(536) Scan parquet
Output [4]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975, systemId#945968]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(537) Filter
Input [4]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975, systemId#945968]
Condition : isnotnull(internalUUID#945969)
(538) Project
Output [3]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975]
Input [4]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975, systemId#945968]
(539) Exchange
Input [3]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1459082]
(540) BroadcastExchange
Input [3]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1459426]
(541) BroadcastHashJoin
Left keys [1]: [product#945954]
Right keys [1]: [internalUUID#945969]
Join type: LeftOuter
Join condition: None
(542) Project
Output [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, filter(unitOfMeasureConversions#945975, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#945973.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#945973.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#945980]
Input [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975]
(543) Project
Output [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, filteredUnitOfMeasureConversions#945980.quantityDenominator AS _extract_quantityDenominator#946553, filteredUnitOfMeasureConversions#945980.quantityNumerator AS _extract_quantityNumerator#946554]
Input [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, filteredUnitOfMeasureConversions#945980]
(544) Generate
Input [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, _extract_quantityDenominator#946553, _extract_quantityNumerator#946554]
Arguments: explode(_extract_quantityNumerator#946554), [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, _extract_quantityDenominator#946553], true, [quantityNumerator#945981]
(545) Generate
Input [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, _extract_quantityDenominator#946553, quantityNumerator#945981]
Arguments: explode(_extract_quantityDenominator#946553), [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, quantityNumerator#945981], true, [quantityDenominator#945982]
(546) Project
Output [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, (cast(quantityNumerator#945981 as double) / cast(quantityDenominator#945982 as double)) AS outboundUnit#945983]
Input [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, quantityNumerator#945981, quantityDenominator#945982]
(547) Project
Output [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, CASE WHEN (isnull(outboundUnit#945983) OR (outboundUnit#945983 <= 0.0)) THEN 1.0 ELSE outboundUnit#945983 END AS outboundUnit#945984]
Input [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945983]
(548) Sort
Input [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984]
Arguments: [product#945954 ASC NULLS FIRST, plant#945955 ASC NULLS FIRST], false, 0
(549) Filter
Input [6]: [internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990, systemId#945985]
Condition : (isnotnull(plant#945988.internalRefUUID) AND isnotnull(product#945987.internalRefUUID))
(550) Project
Output [6]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990]
Input [6]: [internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990, systemId#945985]
(551) Exchange
Input [6]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1459093]
(552) BroadcastExchange
Input [6]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990]
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=1459454]
(553) Filter
Input [2]: [marketUnit#945991, distributionCenters#945997]
Condition : (((marketUnit#945991 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#945997, true) > 0)) AND isnotnull(distributionCenters#945997))
(554) Project
Output [1]: [distributionCenters#945997]
Input [2]: [marketUnit#945991, distributionCenters#945997]
(555) Exchange
Input [1]: [distributionCenters#945997]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1459097]
(556) Generate
Input [1]: [distributionCenters#945997]
Arguments: explode(distributionCenters#945997), false, [distributionCenters#946012]
(557) Filter
Input [1]: [distributionCenters#946012]
Condition : (((size(distributionCenters#946012.storageLocations, true) > 0) AND isnotnull(distributionCenters#946012.storageLocations)) AND isnotnull(distributionCenters#946012.internalRefUUID))
(558) Project
Output [2]: [distributionCenters#946012.internalRefUUID AS _extract_internalRefUUID#946427, distributionCenters#946012.storageLocations AS _extract_storageLocations#946428]
Input [1]: [distributionCenters#946012]
(559) Generate
Input [2]: [_extract_internalRefUUID#946427, _extract_storageLocations#946428]
Arguments: explode(_extract_storageLocations#946428), [_extract_internalRefUUID#946427], false, [storageLocations#946013]
(560) Project
Output [3]: [_extract_internalRefUUID#946427 AS plantUuid#946015, storageLocations#946013.id AS storageLocId#946016, storageLocations#946013.internalRefUUID AS storageLocUuid#946017]
Input [2]: [_extract_internalRefUUID#946427, storageLocations#946013]
(561) BroadcastExchange
Input [3]: [plantUuid#946015, storageLocId#946016, storageLocUuid#946017]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1459450]
(562) Filter
Input [2]: [product#946018, plant#946019]
Condition : isnotnull(plant#946019)
(563) Exchange
Input [2]: [product#946018, plant#946019]
Arguments: hashpartitioning(product#946018, plant#946019, 37), REPARTITION_BY_NUM, [plan_id=1459307]
(564) Scan parquet
Output [4]: [plant#946024, product#946025, productionAspect#946027, systemId#946022]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(565) Project
Output [4]: [plant#946024.internalRefUUID AS _extract_internalRefUUID#946555, product#946025.internalRefUUID AS _extract_internalRefUUID#946556, productionAspect#946027.productMovementPlants.unitOfIssue.code AS _extract_code#946557, productionAspect#946027.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#946558]
Input [4]: [plant#946024, product#946025, productionAspect#946027, systemId#946022]
(566) Exchange
Input [4]: [_extract_internalRefUUID#946555, _extract_internalRefUUID#946556, _extract_code#946557, _extract_internalRefUUID#946558]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1459109]
(567) Project
Output [4]: [_extract_code#946557, _extract_internalRefUUID#946558, _extract_internalRefUUID#946556, _extract_internalRefUUID#946555]
Input [4]: [_extract_internalRefUUID#946555, _extract_internalRefUUID#946556, _extract_code#946557, _extract_internalRefUUID#946558]
(568) BroadcastExchange
Input [4]: [_extract_code#946557, _extract_internalRefUUID#946558, _extract_internalRefUUID#946556, _extract_internalRefUUID#946555]
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=1459434]
(569) BroadcastHashJoin
Left keys [4]: [coalesce(product#946018, ), isnull(product#946018), coalesce(plant#946019, ), isnull(plant#946019)]
Right keys [4]: [coalesce(_extract_internalRefUUID#946556, ), isnull(_extract_internalRefUUID#946556), coalesce(_extract_internalRefUUID#946555, ), isnull(_extract_internalRefUUID#946555)]
Join type: LeftOuter
Join condition: None
(570) Project
Output [4]: [product#946018, plant#946019, _extract_code#946557, _extract_internalRefUUID#946558]
Input [6]: [product#946018, plant#946019, _extract_code#946557, _extract_internalRefUUID#946558, _extract_internalRefUUID#946556, _extract_internalRefUUID#946555]
(571) Scan parquet
Output [4]: [internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039, systemId#946032]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(572) Filter
Input [4]: [internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039, systemId#946032]
Condition : isnotnull(internalUUID#946033)
(573) Project
Output [3]: [internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039]
Input [4]: [internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039, systemId#946032]
(574) Exchange
Input [3]: [internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1459116]
(575) BroadcastExchange
Input [3]: [internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1459438]
(576) BroadcastHashJoin
Left keys [1]: [product#946018]
Right keys [1]: [internalUUID#946033]
Join type: LeftOuter
Join condition: None
(577) Project
Output [2]: [plant#946019, filter(unitOfMeasureConversions#946039, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#946557) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#946558)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946037.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946037.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946044]
Input [7]: [product#946018, plant#946019, _extract_code#946557, _extract_internalRefUUID#946558, internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039]
(578) Generate
Input [2]: [plant#946019, filteredUnitOfMeasureConversions#946044]
Arguments: explode(filteredUnitOfMeasureConversions#946044.quantityNumerator), [plant#946019, filteredUnitOfMeasureConversions#946044], true, [quantityNumerator#946045]
(579) Project
Output [2]: [plant#946019, filteredUnitOfMeasureConversions#946044.quantityDenominator AS _extract_quantityDenominator#946429]
Input [3]: [plant#946019, filteredUnitOfMeasureConversions#946044, quantityNumerator#946045]
(580) Generate
Input [2]: [plant#946019, _extract_quantityDenominator#946429]
Arguments: explode(_extract_quantityDenominator#946429), [plant#946019], true, [quantityDenominator#946046]
(581) Project
Output [1]: [plant#946019]
Input [2]: [plant#946019, quantityDenominator#946046]
(582) HashAggregate
Input [1]: [plant#946019]
Keys [1]: [plant#946019]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946019]
(583) Exchange
Input [1]: [plant#946019]
Arguments: hashpartitioning(plant#946019, 37), ENSURE_REQUIREMENTS, [plan_id=1459447]
(584) HashAggregate
Input [1]: [plant#946019]
Keys [1]: [plant#946019]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946019]
(585) BroadcastHashJoin
Left keys [1]: [plantUuid#946015]
Right keys [1]: [plant#946019]
Join type: Inner
Join condition: None
(586) Project
Output [3]: [plantUuid#946015, storageLocId#946016, storageLocUuid#946017]
Input [4]: [plantUuid#946015, storageLocId#946016, storageLocUuid#946017, plant#946019]
(587) BroadcastHashJoin
Left keys [2]: [coalesce(plant#945988.internalRefUUID, ), isnull(plant#945988.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#946015, ), isnull(plantUuid#946015)]
Join type: Inner
Join condition: None
(588) Generate
Input [9]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990, plantUuid#946015, storageLocId#946016, storageLocUuid#946017]
Arguments: explode(filter(stockQuantities#945990, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#946017) AND (lambda x#944569.storageLocation.Id = storageLocId#946016)), lambda x#944569, false))), [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, plantUuid#946015], false, [stockQuantity#946049]
(589) ObjectHashAggregate
Input [7]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, plantUuid#946015, stockQuantity#946049]
Keys [5]: [plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985]
Functions [2]: [partial_first(calculationDateTime#945989, false), partial_collect_list(stockQuantity#946049, 0, 0)]
Aggregate Attributes [3]: [first#947911, valueSet#947912, buf#947913]
Results [8]: [plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985, first#947914, valueSet#947915, buf#947916]
(590) ObjectHashAggregate
Input [8]: [plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985, first#947914, valueSet#947915, buf#947916]
Keys [5]: [plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985]
Functions [2]: [first(calculationDateTime#945989, false), collect_list(stockQuantity#946049, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#945989)()#944584, collect_list(stockQuantity#946049, 0, 0)#944585]
Results [4]: [product#945987, plant#945988, first(calculationDateTime#945989)()#944584 AS calculationDateTime#946050, collect_list(stockQuantity#946049, 0, 0)#944585 AS stockQuantities#946051]
(591) Filter
Input [4]: [product#945987, plant#945988, calculationDateTime#946050, stockQuantities#946051]
Condition : ((size(stockQuantities#946051, true) > 0) AND isnotnull(calculationDateTime#946050))
(592) Generate
Input [4]: [product#945987, plant#945988, calculationDateTime#946050, stockQuantities#946051]
Arguments: explode(stockQuantities#946051), [product#945987, plant#945988, calculationDateTime#946050], false, [stockQuantity#946052]
(593) Filter
Input [4]: [product#945987, plant#945988, calculationDateTime#946050, stockQuantity#946052]
Condition : (((isnotnull(stockQuantity#946052.specialStockIndicator.code) AND isnotnull(stockQuantity#946052.stockType.code)) AND (stockQuantity#946052.specialStockIndicator.code = )) AND (stockQuantity#946052.stockType.code = 01))
(594) Project
Output [5]: [plant#945988.internalRefUUID AS plantUuid#946054, product#945987.internalRefUUID AS productUuid#946056, calculationDateTime#946050, stockQuantity#946052.storagelocation.id AS storageLocId#946057, stockQuantity#946052.quantity.measure AS quantity#946059]
Input [4]: [product#945987, plant#945988, calculationDateTime#946050, stockQuantity#946052]
(595) Exchange
Input [5]: [plantUuid#946054, productUuid#946056, calculationDateTime#946050, storageLocId#946057, quantity#946059]
Arguments: hashpartitioning(productUuid#946056, plantUuid#946054, 37), ENSURE_REQUIREMENTS, [plan_id=1459476]
(596) Sort
Input [5]: [plantUuid#946054, productUuid#946056, calculationDateTime#946050, storageLocId#946057, quantity#946059]
Arguments: [productUuid#946056 ASC NULLS FIRST, plantUuid#946054 ASC NULLS FIRST], false, 0
(597) Filter
Input [3]: [product#946062, plant#946063, orderDateTime#946064]
Condition : ((isnotnull(orderDateTime#946064) AND isnotnull(plant#946063)) AND isnotnull(product#946062))
(598) Exchange
Input [3]: [product#946062, plant#946063, orderDateTime#946064]
Arguments: hashpartitioning(product#946062, plant#946063, 37), REPARTITION_BY_NUM, [plan_id=1459328]
(599) Scan parquet
Output [4]: [plant#946068, product#946069, productionAspect#946071, systemId#946066]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(600) Project
Output [4]: [plant#946068.internalRefUUID AS _extract_internalRefUUID#946562, product#946069.internalRefUUID AS _extract_internalRefUUID#946561, productionAspect#946071.productMovementPlants.unitOfIssue.code AS _extract_code#946559, productionAspect#946071.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#946560]
Input [4]: [plant#946068, product#946069, productionAspect#946071, systemId#946066]
(601) Exchange
Input [4]: [_extract_internalRefUUID#946562, _extract_internalRefUUID#946561, _extract_code#946559, _extract_internalRefUUID#946560]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1459141]
(602) Project
Output [4]: [_extract_code#946559, _extract_internalRefUUID#946560, _extract_internalRefUUID#946561, _extract_internalRefUUID#946562]
Input [4]: [_extract_internalRefUUID#946562, _extract_internalRefUUID#946561, _extract_code#946559, _extract_internalRefUUID#946560]
(603) BroadcastExchange
Input [4]: [_extract_code#946559, _extract_internalRefUUID#946560, _extract_internalRefUUID#946561, _extract_internalRefUUID#946562]
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=1459463]
(604) BroadcastHashJoin
Left keys [4]: [coalesce(product#946062, ), isnull(product#946062), coalesce(plant#946063, ), isnull(plant#946063)]
Right keys [4]: [coalesce(_extract_internalRefUUID#946561, ), isnull(_extract_internalRefUUID#946561), coalesce(_extract_internalRefUUID#946562, ), isnull(_extract_internalRefUUID#946562)]
Join type: LeftOuter
Join condition: None
(605) Project
Output [5]: [product#946062, plant#946063, orderDateTime#946064, _extract_code#946559, _extract_internalRefUUID#946560]
Input [7]: [product#946062, plant#946063, orderDateTime#946064, _extract_code#946559, _extract_internalRefUUID#946560, _extract_internalRefUUID#946561, _extract_internalRefUUID#946562]
(606) Scan parquet
Output [4]: [internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083, systemId#946076]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(607) Filter
Input [4]: [internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083, systemId#946076]
Condition : isnotnull(internalUUID#946077)
(608) Project
Output [3]: [internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083]
Input [4]: [internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083, systemId#946076]
(609) Exchange
Input [3]: [internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1459148]
(610) BroadcastExchange
Input [3]: [internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1459467]
(611) BroadcastHashJoin
Left keys [1]: [product#946062]
Right keys [1]: [internalUUID#946077]
Join type: LeftOuter
Join condition: None
(612) Project
Output [4]: [product#946062, plant#946063, orderDateTime#946064, filter(unitOfMeasureConversions#946083, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#946559) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#946560)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946081.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946081.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946088]
Input [8]: [product#946062, plant#946063, orderDateTime#946064, _extract_code#946559, _extract_internalRefUUID#946560, internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083]
(613) Generate
Input [4]: [product#946062, plant#946063, orderDateTime#946064, filteredUnitOfMeasureConversions#946088]
Arguments: explode(filteredUnitOfMeasureConversions#946088.quantityNumerator), [product#946062, plant#946063, orderDateTime#946064, filteredUnitOfMeasureConversions#946088], true, [quantityNumerator#946089]
(614) Project
Output [4]: [product#946062, plant#946063, orderDateTime#946064, filteredUnitOfMeasureConversions#946088.quantityDenominator AS _extract_quantityDenominator#946436]
Input [5]: [product#946062, plant#946063, orderDateTime#946064, filteredUnitOfMeasureConversions#946088, quantityNumerator#946089]
(615) Generate
Input [4]: [product#946062, plant#946063, orderDateTime#946064, _extract_quantityDenominator#946436]
Arguments: explode(_extract_quantityDenominator#946436), [product#946062, plant#946063, orderDateTime#946064], true, [quantityDenominator#946090]
(616) Project
Output [3]: [product#946062, plant#946063, orderDateTime#946064]
Input [4]: [product#946062, plant#946063, orderDateTime#946064, quantityDenominator#946090]
(617) Sort
Input [3]: [product#946062, plant#946063, orderDateTime#946064]
Arguments: [product#946062 ASC NULLS FIRST, plant#946063 ASC NULLS FIRST], false, 0
(618) SortMergeJoin
Left keys [2]: [productUuid#946056, plantUuid#946054]
Right keys [2]: [product#946062, plant#946063]
Join type: Inner
Join condition: (calculationDateTime#946050 <= orderDateTime#946064)
(619) Project
Output [5]: [plantUuid#946054 AS plant#946093, productUuid#946056 AS product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
Input [8]: [plantUuid#946054, productUuid#946056, calculationDateTime#946050, storageLocId#946057, quantity#946059, product#946062, plant#946063, orderDateTime#946064]
(620) Exchange
Input [5]: [plant#946093, product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
Arguments: hashpartitioning(coalesce(plant#946093, ), isnull(plant#946093), coalesce(product#946094, ), isnull(product#946094), coalesce(storageLocId#946057, ), isnull(storageLocId#946057), coalesce(calculationDateTime#946050, 1970-01-01 00:00:00), isnull(calculationDateTime#946050), 37), ENSURE_REQUIREMENTS, [plan_id=1459532]
(621) Sort
Input [5]: [plant#946093, product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
Arguments: [coalesce(plant#946093, ) ASC NULLS FIRST, isnull(plant#946093) ASC NULLS FIRST, coalesce(product#946094, ) ASC NULLS FIRST, isnull(product#946094) ASC NULLS FIRST, coalesce(storageLocId#946057, ) ASC NULLS FIRST, isnull(storageLocId#946057) ASC NULLS FIRST, coalesce(calculationDateTime#946050, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#946050) ASC NULLS FIRST], false, 0
(622) Scan parquet
Output [6]: [internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100, systemId#946095]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(623) Filter
Input [6]: [internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100, systemId#946095]
Condition : (isnotnull(plant#946098.internalRefUUID) AND isnotnull(product#946097.internalRefUUID))
(624) Project
Output [6]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100]
Input [6]: [internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100, systemId#946095]
(625) Exchange
Input [6]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1459160]
(626) BroadcastExchange
Input [6]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100]
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=1459501]
(627) Scan parquet
Output [2]: [marketUnit#946101, distributionCenters#946107]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(628) Filter
Input [2]: [marketUnit#946101, distributionCenters#946107]
Condition : (((marketUnit#946101 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#946107, true) > 0)) AND isnotnull(distributionCenters#946107))
(629) Project
Output [1]: [distributionCenters#946107]
Input [2]: [marketUnit#946101, distributionCenters#946107]
(630) Exchange
Input [1]: [distributionCenters#946107]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1459164]
(631) Generate
Input [1]: [distributionCenters#946107]
Arguments: explode(distributionCenters#946107), false, [distributionCenters#946122]
(632) Filter
Input [1]: [distributionCenters#946122]
Condition : (((size(distributionCenters#946122.storageLocations, true) > 0) AND isnotnull(distributionCenters#946122.storageLocations)) AND isnotnull(distributionCenters#946122.internalRefUUID))
(633) Project
Output [2]: [distributionCenters#946122.internalRefUUID AS _extract_internalRefUUID#946443, distributionCenters#946122.storageLocations AS _extract_storageLocations#946444]
Input [1]: [distributionCenters#946122]
(634) Generate
Input [2]: [_extract_internalRefUUID#946443, _extract_storageLocations#946444]
Arguments: explode(_extract_storageLocations#946444), [_extract_internalRefUUID#946443], false, [storageLocations#946123]
(635) Project
Output [3]: [_extract_internalRefUUID#946443 AS plantUuid#946125, storageLocations#946123.id AS storageLocId#946126, storageLocations#946123.internalRefUUID AS storageLocUuid#946127]
Input [2]: [_extract_internalRefUUID#946443, storageLocations#946123]
(636) BroadcastExchange
Input [3]: [plantUuid#946125, storageLocId#946126, storageLocUuid#946127]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1459497]
(637) Scan parquet
Output [2]: [product#946128, plant#946129]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(638) Filter
Input [2]: [product#946128, plant#946129]
Condition : isnotnull(plant#946129)
(639) Exchange
Input [2]: [product#946128, plant#946129]
Arguments: hashpartitioning(product#946128, plant#946129, 37), REPARTITION_BY_NUM, [plan_id=1459339]
(640) Scan parquet
Output [4]: [plant#946134, product#946135, productionAspect#946137, systemId#946132]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(641) Project
Output [4]: [plant#946134.internalRefUUID AS _extract_internalRefUUID#946566, product#946135.internalRefUUID AS _extract_internalRefUUID#946563, productionAspect#946137.productMovementPlants.unitOfIssue.code AS _extract_code#946564, productionAspect#946137.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#946565]
Input [4]: [plant#946134, product#946135, productionAspect#946137, systemId#946132]
(642) Exchange
Input [4]: [_extract_internalRefUUID#946566, _extract_internalRefUUID#946563, _extract_code#946564, _extract_internalRefUUID#946565]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1459176]
(643) Project
Output [4]: [_extract_code#946564, _extract_internalRefUUID#946565, _extract_internalRefUUID#946563, _extract_internalRefUUID#946566]
Input [4]: [_extract_internalRefUUID#946566, _extract_internalRefUUID#946563, _extract_code#946564, _extract_internalRefUUID#946565]
(644) BroadcastExchange
Input [4]: [_extract_code#946564, _extract_internalRefUUID#946565, _extract_internalRefUUID#946563, _extract_internalRefUUID#946566]
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=1459481]
(645) BroadcastHashJoin
Left keys [4]: [coalesce(product#946128, ), isnull(product#946128), coalesce(plant#946129, ), isnull(plant#946129)]
Right keys [4]: [coalesce(_extract_internalRefUUID#946563, ), isnull(_extract_internalRefUUID#946563), coalesce(_extract_internalRefUUID#946566, ), isnull(_extract_internalRefUUID#946566)]
Join type: LeftOuter
Join condition: None
(646) Project
Output [4]: [product#946128, plant#946129, _extract_code#946564, _extract_internalRefUUID#946565]
Input [6]: [product#946128, plant#946129, _extract_code#946564, _extract_internalRefUUID#946565, _extract_internalRefUUID#946563, _extract_internalRefUUID#946566]
(647) Scan parquet
Output [4]: [internalUUID#946143, baseUnitOfMeasure#946147, unitOfMeasureConversions#946149, systemId#946142]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(648) Filter
Input [4]: [internalUUID#946143, baseUnitOfMeasure#946147, unitOfMeasureConversions#946149, systemId#946142]
Condition : isnotnull(internalUUID#946143)
(649) Project
Output [3]: [internalUUID#946143, baseUnitOfMeasure#946147, unitOfMeasureConversions#946149]
Input [4]: [internalUUID#946143, baseUnitOfMeasure#946147, unitOfMeasureConversions#946149, systemId#946142]
(650) Exchange
Input [3]: [internalUUID#946143, baseUnitOfMeasure#946147, unitOfMeasureConversions#946149]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1459183]
(651) BroadcastExchange
Input [3]: [internalUUID#946143, baseUnitOfMeasure#946147, unitOfMeasureConversions#946149]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1459485]
(652) BroadcastHashJoin
Left keys [1]: [product#946128]
Right keys [1]: [internalUUID#946143]
Join type: LeftOuter
Join condition: None
(653) Project
Output [2]: [plant#946129, filter(unitOfMeasureConversions#946149, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#946564) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#946565)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946147.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946147.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946154]
Input [7]: [product#946128, plant#946129, _extract_code#946564, _extract_internalRefUUID#946565, internalUUID#946143, baseUnitOfMeasure#946147, unitOfMeasureConversions#946149]
(654) Generate
Input [2]: [plant#946129, filteredUnitOfMeasureConversions#946154]
Arguments: explode(filteredUnitOfMeasureConversions#946154.quantityNumerator), [plant#946129, filteredUnitOfMeasureConversions#946154], true, [quantityNumerator#946155]
(655) Project
Output [2]: [plant#946129, filteredUnitOfMeasureConversions#946154.quantityDenominator AS _extract_quantityDenominator#946445]
Input [3]: [plant#946129, filteredUnitOfMeasureConversions#946154, quantityNumerator#946155]
(656) Generate
Input [2]: [plant#946129, _extract_quantityDenominator#946445]
Arguments: explode(_extract_quantityDenominator#946445), [plant#946129], true, [quantityDenominator#946156]
(657) Project
Output [1]: [plant#946129]
Input [2]: [plant#946129, quantityDenominator#946156]
(658) HashAggregate
Input [1]: [plant#946129]
Keys [1]: [plant#946129]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946129]
(659) Exchange
Input [1]: [plant#946129]
Arguments: hashpartitioning(plant#946129, 37), ENSURE_REQUIREMENTS, [plan_id=1459494]
(660) HashAggregate
Input [1]: [plant#946129]
Keys [1]: [plant#946129]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946129]
(661) BroadcastHashJoin
Left keys [1]: [plantUuid#946125]
Right keys [1]: [plant#946129]
Join type: Inner
Join condition: None
(662) Project
Output [3]: [plantUuid#946125, storageLocId#946126, storageLocUuid#946127]
Input [4]: [plantUuid#946125, storageLocId#946126, storageLocUuid#946127, plant#946129]
(663) BroadcastHashJoin
Left keys [2]: [coalesce(plant#946098.internalRefUUID, ), isnull(plant#946098.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#946125, ), isnull(plantUuid#946125)]
Join type: Inner
Join condition: None
(664) Generate
Input [9]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100, plantUuid#946125, storageLocId#946126, storageLocUuid#946127]
Arguments: explode(filter(stockQuantities#946100, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#946127) AND (lambda x#944569.storageLocation.Id = storageLocId#946126)), lambda x#944569, false))), [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, plantUuid#946125], false, [stockQuantity#946159]
(665) ObjectHashAggregate
Input [7]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, plantUuid#946125, stockQuantity#946159]
Keys [5]: [plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095]
Functions [2]: [partial_first(calculationDateTime#946099, false), partial_collect_list(stockQuantity#946159, 0, 0)]
Aggregate Attributes [3]: [first#947919, valueSet#947920, buf#947921]
Results [8]: [plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095, first#947922, valueSet#947923, buf#947924]
(666) ObjectHashAggregate
Input [8]: [plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095, first#947922, valueSet#947923, buf#947924]
Keys [5]: [plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095]
Functions [2]: [first(calculationDateTime#946099, false), collect_list(stockQuantity#946159, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#946099)()#944584, collect_list(stockQuantity#946159, 0, 0)#944585]
Results [4]: [product#946097, plant#946098, first(calculationDateTime#946099)()#944584 AS calculationDateTime#946160, collect_list(stockQuantity#946159, 0, 0)#944585 AS stockQuantities#946161]
(667) Filter
Input [4]: [product#946097, plant#946098, calculationDateTime#946160, stockQuantities#946161]
Condition : ((size(stockQuantities#946161, true) > 0) AND isnotnull(calculationDateTime#946160))
(668) Generate
Input [4]: [product#946097, plant#946098, calculationDateTime#946160, stockQuantities#946161]
Arguments: explode(stockQuantities#946161), [product#946097, plant#946098, calculationDateTime#946160], false, [stockQuantity#946162]
(669) Filter
Input [4]: [product#946097, plant#946098, calculationDateTime#946160, stockQuantity#946162]
Condition : (((isnotnull(stockQuantity#946162.specialStockIndicator.code) AND isnotnull(stockQuantity#946162.stockType.code)) AND (stockQuantity#946162.specialStockIndicator.code = )) AND (stockQuantity#946162.stockType.code = 01))
(670) Project
Output [4]: [plant#946098.internalRefUUID AS plantUuid#946164, product#946097.internalRefUUID AS productUuid#946166, calculationDateTime#946160, stockQuantity#946162.storagelocation.id AS storageLocId#946167]
Input [4]: [product#946097, plant#946098, calculationDateTime#946160, stockQuantity#946162]
(671) Exchange
Input [4]: [plantUuid#946164, productUuid#946166, calculationDateTime#946160, storageLocId#946167]
Arguments: hashpartitioning(productUuid#946166, plantUuid#946164, 37), ENSURE_REQUIREMENTS, [plan_id=1459523]
(672) Sort
Input [4]: [plantUuid#946164, productUuid#946166, calculationDateTime#946160, storageLocId#946167]
Arguments: [productUuid#946166 ASC NULLS FIRST, plantUuid#946164 ASC NULLS FIRST], false, 0
(673) Scan parquet
Output [3]: [product#946172, plant#946173, orderDateTime#946174]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(674) Filter
Input [3]: [product#946172, plant#946173, orderDateTime#946174]
Condition : ((isnotnull(orderDateTime#946174) AND isnotnull(plant#946173)) AND isnotnull(product#946172))
(675) Exchange
Input [3]: [product#946172, plant#946173, orderDateTime#946174]
Arguments: hashpartitioning(product#946172, plant#946173, 37), REPARTITION_BY_NUM, [plan_id=1459360]
(676) Scan parquet
Output [4]: [plant#946178, product#946179, productionAspect#946181, systemId#946176]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(677) Project
Output [4]: [plant#946178.internalRefUUID AS _extract_internalRefUUID#946568, product#946179.internalRefUUID AS _extract_internalRefUUID#946567, productionAspect#946181.productMovementPlants.unitOfIssue.code AS _extract_code#946569, productionAspect#946181.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#946570]
Input [4]: [plant#946178, product#946179, productionAspect#946181, systemId#946176]
(678) Exchange
Input [4]: [_extract_internalRefUUID#946568, _extract_internalRefUUID#946567, _extract_code#946569, _extract_internalRefUUID#946570]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1459208]
(679) Project
Output [4]: [_extract_code#946569, _extract_internalRefUUID#946570, _extract_internalRefUUID#946567, _extract_internalRefUUID#946568]
Input [4]: [_extract_internalRefUUID#946568, _extract_internalRefUUID#946567, _extract_code#946569, _extract_internalRefUUID#946570]
(680) BroadcastExchange
Input [4]: [_extract_code#946569, _extract_internalRefUUID#946570, _extract_internalRefUUID#946567, _extract_internalRefUUID#946568]
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=1459510]
(681) BroadcastHashJoin
Left keys [4]: [coalesce(product#946172, ), isnull(product#946172), coalesce(plant#946173, ), isnull(plant#946173)]
Right keys [4]: [coalesce(_extract_internalRefUUID#946567, ), isnull(_extract_internalRefUUID#946567), coalesce(_extract_internalRefUUID#946568, ), isnull(_extract_internalRefUUID#946568)]
Join type: LeftOuter
Join condition: None
(682) Project
Output [5]: [product#946172, plant#946173, orderDateTime#946174, _extract_code#946569, _extract_internalRefUUID#946570]
Input [7]: [product#946172, plant#946173, orderDateTime#946174, _extract_code#946569, _extract_internalRefUUID#946570, _extract_internalRefUUID#946567, _extract_internalRefUUID#946568]
(683) Scan parquet
Output [4]: [internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193, systemId#946186]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(684) Filter
Input [4]: [internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193, systemId#946186]
Condition : isnotnull(internalUUID#946187)
(685) Project
Output [3]: [internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193]
Input [4]: [internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193, systemId#946186]
(686) Exchange
Input [3]: [internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1459215]
(687) BroadcastExchange
Input [3]: [internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1459514]
(688) BroadcastHashJoin
Left keys [1]: [product#946172]
Right keys [1]: [internalUUID#946187]
Join type: LeftOuter
Join condition: None
(689) Project
Output [4]: [product#946172, plant#946173, orderDateTime#946174, filter(unitOfMeasureConversions#946193, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#946569) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#946570)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946191.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946191.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946198]
Input [8]: [product#946172, plant#946173, orderDateTime#946174, _extract_code#946569, _extract_internalRefUUID#946570, internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193]
(690) Generate
Input [4]: [product#946172, plant#946173, orderDateTime#946174, filteredUnitOfMeasureConversions#946198]
Arguments: explode(filteredUnitOfMeasureConversions#946198.quantityNumerator), [product#946172, plant#946173, orderDateTime#946174, filteredUnitOfMeasureConversions#946198], true, [quantityNumerator#946199]
(691) Project
Output [4]: [product#946172, plant#946173, orderDateTime#946174, filteredUnitOfMeasureConversions#946198.quantityDenominator AS _extract_quantityDenominator#946452]
Input [5]: [product#946172, plant#946173, orderDateTime#946174, filteredUnitOfMeasureConversions#946198, quantityNumerator#946199]
(692) Generate
Input [4]: [product#946172, plant#946173, orderDateTime#946174, _extract_quantityDenominator#946452]
Arguments: explode(_extract_quantityDenominator#946452), [product#946172, plant#946173, orderDateTime#946174], true, [quantityDenominator#946200]
(693) Project
Output [3]: [product#946172, plant#946173, orderDateTime#946174]
Input [4]: [product#946172, plant#946173, orderDateTime#946174, quantityDenominator#946200]
(694) Sort
Input [3]: [product#946172, plant#946173, orderDateTime#946174]
Arguments: [product#946172 ASC NULLS FIRST, plant#946173 ASC NULLS FIRST], false, 0
(695) SortMergeJoin
Left keys [2]: [productUuid#946166, plantUuid#946164]
Right keys [2]: [product#946172, plant#946173]
Join type: Inner
Join condition: (calculationDateTime#946160 <= orderDateTime#946174)
(696) Project
Output [4]: [plantUuid#946164 AS plant#946203, productUuid#946166 AS product#946204, storageLocId#946167, calculationDateTime#946160]
Input [7]: [plantUuid#946164, productUuid#946166, calculationDateTime#946160, storageLocId#946167, product#946172, plant#946173, orderDateTime#946174]
(697) HashAggregate
Input [4]: [plant#946203, product#946204, storageLocId#946167, calculationDateTime#946160]
Keys [3]: [plant#946203, product#946204, storageLocId#946167]
Functions [1]: [partial_max(calculationDateTime#946160)]
Aggregate Attributes [1]: [max#947917]
Results [4]: [plant#946203, product#946204, storageLocId#946167, max#947918]
(698) HashAggregate
Input [4]: [plant#946203, product#946204, storageLocId#946167, max#947918]
Keys [3]: [plant#946203, product#946204, storageLocId#946167]
Functions [1]: [max(calculationDateTime#946160)]
Aggregate Attributes [1]: [max(calculationDateTime#946160)#944648]
Results [4]: [plant#946203, product#946204, storageLocId#946167, max(calculationDateTime#946160)#944648 AS max_calc_datetime#946205]
(699) Exchange
Input [4]: [plant#946203, product#946204, storageLocId#946167, max_calc_datetime#946205]
Arguments: hashpartitioning(coalesce(plant#946203, ), isnull(plant#946203), coalesce(product#946204, ), isnull(product#946204), coalesce(storageLocId#946167, ), isnull(storageLocId#946167), coalesce(max_calc_datetime#946205, 1970-01-01 00:00:00), isnull(max_calc_datetime#946205), 37), ENSURE_REQUIREMENTS, [plan_id=1459533]
(700) Sort
Input [4]: [plant#946203, product#946204, storageLocId#946167, max_calc_datetime#946205]
Arguments: [coalesce(plant#946203, ) ASC NULLS FIRST, isnull(plant#946203) ASC NULLS FIRST, coalesce(product#946204, ) ASC NULLS FIRST, isnull(product#946204) ASC NULLS FIRST, coalesce(storageLocId#946167, ) ASC NULLS FIRST, isnull(storageLocId#946167) ASC NULLS FIRST, coalesce(max_calc_datetime#946205, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#946205) ASC NULLS FIRST], false, 0
(701) SortMergeJoin
Left keys [8]: [coalesce(plant#946093, ), isnull(plant#946093), coalesce(product#946094, ), isnull(product#946094), coalesce(storageLocId#946057, ), isnull(storageLocId#946057), coalesce(calculationDateTime#946050, 1970-01-01 00:00:00), isnull(calculationDateTime#946050)]
Right keys [8]: [coalesce(plant#946203, ), isnull(plant#946203), coalesce(product#946204, ), isnull(product#946204), coalesce(storageLocId#946167, ), isnull(storageLocId#946167), coalesce(max_calc_datetime#946205, 1970-01-01 00:00:00), isnull(max_calc_datetime#946205)]
Join type: Inner
Join condition: None
(702) Project
Output [4]: [plant#946093, product#946094, calculationDateTime#946050, quantity#946059]
Input [9]: [plant#946093, product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059, plant#946203, product#946204, storageLocId#946167, max_calc_datetime#946205]
(703) HashAggregate
Input [4]: [plant#946093, product#946094, calculationDateTime#946050, quantity#946059]
Keys [2]: [product#946094, plant#946093]
Functions [2]: [partial_min(calculationDateTime#946050), partial_sum(quantity#946059)]
Aggregate Attributes [2]: [min#947907, sum#947908]
Results [4]: [product#946094, plant#946093, min#947909, sum#947910]
(704) Exchange
Input [4]: [product#946094, plant#946093, min#947909, sum#947910]
Arguments: hashpartitioning(product#946094, plant#946093, 37), ENSURE_REQUIREMENTS, [plan_id=1459540]
(705) HashAggregate
Input [4]: [product#946094, plant#946093, min#947909, sum#947910]
Keys [2]: [product#946094, plant#946093]
Functions [2]: [min(calculationDateTime#946050), sum(quantity#946059)]
Aggregate Attributes [2]: [min(calculationDateTime#946050)#944775, sum(quantity#946059)#944774]
Results [4]: [product#946094, plant#946093, min(calculationDateTime#946050)#944775 AS minCalculationDateTime#946207, round(sum(quantity#946059)#944774, 0) AS roundedQuantitySum#946208]
(706) Sort
Input [4]: [product#946094, plant#946093, minCalculationDateTime#946207, roundedQuantitySum#946208]
Arguments: [product#946094 ASC NULLS FIRST, plant#946093 ASC NULLS FIRST], false, 0
(707) SortMergeJoin
Left keys [2]: [product#945954, plant#945955]
Right keys [2]: [product#946094, plant#946093]
Join type: LeftOuter
Join condition: None
(708) Project
Output [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, CASE WHEN isnotnull(minCalculationDateTime#946207) THEN minCalculationDateTime#946207 ELSE orderDateTime#945956 END AS stockDatetime#946209, CASE WHEN isnotnull(roundedQuantitySum#946208) THEN array(roundedQuantitySum#946208) ELSE [0.0] END AS stockBatchQuantities#946210]
Input [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, product#946094, plant#946093, minCalculationDateTime#946207, roundedQuantitySum#946208]
(709) Exchange
Input [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210]
Arguments: hashpartitioning(coalesce(plant#945955, ), isnull(plant#945955), coalesce(product#945954, ), isnull(product#945954), 37), ENSURE_REQUIREMENTS, [plan_id=1459550]
(710) Sort
Input [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210]
Arguments: [coalesce(plant#945955, ) ASC NULLS FIRST, isnull(plant#945955) ASC NULLS FIRST, coalesce(product#945954, ) ASC NULLS FIRST, isnull(product#945954) ASC NULLS FIRST], false, 0
(711) Exchange
Input [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
Arguments: hashpartitioning(coalesce(plant#944815, ), isnull(plant#944815), coalesce(product#944814, ), isnull(product#944814), 37), ENSURE_REQUIREMENTS, [plan_id=1459551]
(712) Sort
Input [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
Arguments: [coalesce(plant#944815, ) ASC NULLS FIRST, isnull(plant#944815) ASC NULLS FIRST, coalesce(product#944814, ) ASC NULLS FIRST, isnull(product#944814) ASC NULLS FIRST], false, 0
(713) SortMergeJoin
Left keys [4]: [coalesce(plant#945955, ), isnull(plant#945955), coalesce(product#945954, ), isnull(product#945954)]
Right keys [4]: [coalesce(plant#944815, ), isnull(plant#944815), coalesce(product#944814, ), isnull(product#944814)]
Join type: LeftOuter
Join condition: None
(714) Project
Output [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, CASE WHEN isnotnull(product#944814) THEN struct(demandChannel, demandChannel#944816, demandStream, demandStream#944817, considerVariance, considerVariance#944818, demandTimeBuckets, demandTimeBuckets#944819, demandPointInTimeStart, demandPointInTimeStart#944820, demandPointInTimeEnd, demandPointInTimeEnd#944821, demandPointInTime, demandPointInTime#944822) END AS rawDemands#944824]
Input [16]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
(715) ObjectHashAggregate
Input [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, rawDemands#944824]
Keys [8]: [product#945954, plant#945955, orderDateTime#945956, knownfloatingpointnormalized(if (isnull(productPlant#945967)) null else named_struct(systemId, productPlant#945967.systemId, internalUUID, productPlant#945967.internalUUID, plant, productPlant#945967.plant, product, productPlant#945967.product, blockedForReplenishmentStartingFrom, productPlant#945967.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#945967.productionAspect)) null else named_struct(productMovementPlants, productPlant#945967.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#945967.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#945967.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#945967.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#945967.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#945967.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#945967.salesPlant, listing, productPlant#945967.listing, sourceOfSupplyCategory, productPlant#945967.sourceOfSupplyCategory)) AS productPlant#945967, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#945984)) AS outboundUnit#945984, stockDatetime#946209, knownfloatingpointnormalized(transform(stockBatchQuantities#946210, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#947904)), lambda arg#947904, false))) AS stockBatchQuantities#946210, [7226582400000000] AS [7226582400000000]#947903]
Functions [1]: [partial_collect_list(rawDemands#944824, 0, 0)]
Aggregate Attributes [1]: [buf#947905]
Results [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#947903, buf#947906]
(716) Exchange
Input [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#947903, buf#947906]
Arguments: hashpartitioning(product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#947903, 37), ENSURE_REQUIREMENTS, [plan_id=1459558]
(717) ObjectHashAggregate
Input [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#947903, buf#947906]
Keys [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#947903]
Functions [1]: [collect_list(rawDemands#944824, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#944824, 0, 0)#944844]
Results [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, collect_list(rawDemands#944824, 0, 0)#944844 AS rawDemands#944825]
(718) Project
Output [2]: [internalUUID#945905, address#945911.timeZone.code AS timezonecode#945917]
Input [3]: [internalUUID#945905, address#945911, systemId#945904]
(719) Exchange
Input [2]: [internalUUID#945905, timezonecode#945917]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1459239]
(720) BroadcastExchange
Input [2]: [internalUUID#945905, timezonecode#945917]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1459561]
(721) BroadcastHashJoin
Left keys [2]: [coalesce(plant#945955, ), isnull(plant#945955)]
Right keys [2]: [coalesce(internalUUID#945905, ), isnull(internalUUID#945905)]
Join type: LeftOuter
Join condition: None
(722) Project
Output [10]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#946211, rawDemands#944825, CASE WHEN isnotnull(timezonecode#945917) THEN timezonecode#945917 ELSE UTC END AS timezonecode#945919]
Input [10]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, rawDemands#944825, internalUUID#945905, timezonecode#945917]
(723) DeserializeToObject
Input [10]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, stockBatchShelfLifeEndDatetimes#946211, rawDemands#944825, timezonecode#945919]
Arguments: createexternalrow(invoke(product#945954.toString()), invoke(plant#945955.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#945956)), if (isnull(productPlant#945967)) null else createexternalrow(invoke(productPlant#945967.systemId.toString()), invoke(productPlant#945967.internalUUID.toString()), if (isnull(productPlant#945967.plant)) null else createexternalrow(invoke(productPlant#945967.plant.internalRefUUID.toString()), invoke(productPlant#945967.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#945967.product)) null else createexternalrow(invoke(productPlant#945967.product.internalRefUUID.toString()), invoke(productPlant#945967.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#945967.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#945967.productionAspect)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#945967.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#945967.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#945967.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)), if (isnull(productPlant#945967.salesPlant)) null else createexternalrow(if (isnull(productPlant#945967.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#945967.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#945967.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#945967.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#945967.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#945967.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#945967.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), 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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#945984)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#946209)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#946210, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#946211, 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#944825, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#945919.toString()), 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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),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), StructField(timezonecode,StringType,true)), obj#945940: org.apache.spark.sql.Row
(724) MapElements
Input [1]: [obj#945940]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@353c8b73, obj#945945: org.apache.spark.sql.Row
(725) SerializeFromObject
Input [1]: [obj#945945]
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#945950, 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#945951]
(726) Exchange
Input [2]: [product#945950, plant#945951]
Arguments: hashpartitioning(coalesce(plant#945951, ), isnull(plant#945951), coalesce(product#945950, ), isnull(product#945950), 37), ENSURE_REQUIREMENTS, [plan_id=1459570]
(727) Sort
Input [2]: [product#945950, plant#945951]
Arguments: [coalesce(plant#945951, ) ASC NULLS FIRST, isnull(plant#945951) ASC NULLS FIRST, coalesce(product#945950, ) ASC NULLS FIRST, isnull(product#945950) ASC NULLS FIRST], false, 0
(728) SortMergeJoin
Left keys [4]: [coalesce(plant#944306, ), isnull(plant#944306), coalesce(product#944305, ), isnull(product#944305)]
Right keys [4]: [coalesce(plant#945951, ), isnull(plant#945951), coalesce(product#945950, ), isnull(product#945950)]
Join type: LeftOuter
Join condition: None
(729) Project
Output [2]: [product#944305, plant#944306]
Input [4]: [product#944305, plant#944306, product#945950, plant#945951]
(730) Exchange
Input [2]: [product#944305, plant#944306]
Arguments: hashpartitioning(plant#944306, 37), ENSURE_REQUIREMENTS, [plan_id=1459596]
(731) Sort
Input [2]: [product#944305, plant#944306]
Arguments: [plant#944306 ASC NULLS FIRST], false, 0
(732) Scan parquet
Output [2]: [marketUnit#946289, distributionCenters#946295]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(733) Filter
Input [2]: [marketUnit#946289, distributionCenters#946295]
Condition : (((marketUnit#946289 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#946295, true) > 0)) AND isnotnull(distributionCenters#946295))
(734) Project
Output [1]: [distributionCenters#946295]
Input [2]: [marketUnit#946289, distributionCenters#946295]
(735) Exchange
Input [1]: [distributionCenters#946295]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1459250]
(736) Generate
Input [1]: [distributionCenters#946295]
Arguments: explode(distributionCenters#946295), false, [distributionCenters#946310]
(737) Filter
Input [1]: [distributionCenters#946310]
Condition : (((size(distributionCenters#946310.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#946310.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#946310.internalRefUUID))
(738) Project
Output [2]: [distributionCenters#946310.internalRefUUID AS _extract_internalRefUUID#946460, distributionCenters#946310.storageLocations.internalRefUUID AS _extract_internalRefUUID#946576]
Input [1]: [distributionCenters#946310]
(739) Generate
Input [2]: [_extract_internalRefUUID#946460, _extract_internalRefUUID#946576]
Arguments: explode(_extract_internalRefUUID#946576), [_extract_internalRefUUID#946460], false, [storageLocations#946311]
(740) Filter
Input [2]: [_extract_internalRefUUID#946460, storageLocations#946311]
Condition : isnotnull(storageLocations#946311)
(741) Project
Output [2]: [_extract_internalRefUUID#946460 AS plantUuid#946313, storageLocations#946311 AS storageLocUuid#946315]
Input [2]: [_extract_internalRefUUID#946460, storageLocations#946311]
(742) BroadcastExchange
Input [2]: [plantUuid#946313, storageLocUuid#946315]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1459591]
(743) Scan parquet
Output [2]: [product#946316, plant#946317]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(744) Filter
Input [2]: [product#946316, plant#946317]
Condition : isnotnull(plant#946317)
(745) Exchange
Input [2]: [product#946316, plant#946317]
Arguments: hashpartitioning(product#946316, plant#946317, 37), REPARTITION_BY_NUM, [plan_id=1459390]
(746) Scan parquet
Output [4]: [plant#946322, product#946323, productionAspect#946325, systemId#946320]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(747) Project
Output [4]: [plant#946322.internalRefUUID AS _extract_internalRefUUID#946573, product#946323.internalRefUUID AS _extract_internalRefUUID#946574, productionAspect#946325.productMovementPlants.unitOfIssue.code AS _extract_code#946571, productionAspect#946325.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#946572]
Input [4]: [plant#946322, product#946323, productionAspect#946325, systemId#946320]
(748) Exchange
Input [4]: [_extract_internalRefUUID#946573, _extract_internalRefUUID#946574, _extract_code#946571, _extract_internalRefUUID#946572]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1459263]
(749) Project
Output [4]: [_extract_code#946571, _extract_internalRefUUID#946572, _extract_internalRefUUID#946574, _extract_internalRefUUID#946573]
Input [4]: [_extract_internalRefUUID#946573, _extract_internalRefUUID#946574, _extract_code#946571, _extract_internalRefUUID#946572]
(750) BroadcastExchange
Input [4]: [_extract_code#946571, _extract_internalRefUUID#946572, _extract_internalRefUUID#946574, _extract_internalRefUUID#946573]
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=1459575]
(751) BroadcastHashJoin
Left keys [4]: [coalesce(product#946316, ), isnull(product#946316), coalesce(plant#946317, ), isnull(plant#946317)]
Right keys [4]: [coalesce(_extract_internalRefUUID#946574, ), isnull(_extract_internalRefUUID#946574), coalesce(_extract_internalRefUUID#946573, ), isnull(_extract_internalRefUUID#946573)]
Join type: LeftOuter
Join condition: None
(752) Project
Output [4]: [product#946316, plant#946317, _extract_code#946571, _extract_internalRefUUID#946572]
Input [6]: [product#946316, plant#946317, _extract_code#946571, _extract_internalRefUUID#946572, _extract_internalRefUUID#946574, _extract_internalRefUUID#946573]
(753) Scan parquet
Output [4]: [internalUUID#946331, baseUnitOfMeasure#946335, unitOfMeasureConversions#946337, systemId#946330]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(754) Filter
Input [4]: [internalUUID#946331, baseUnitOfMeasure#946335, unitOfMeasureConversions#946337, systemId#946330]
Condition : isnotnull(internalUUID#946331)
(755) Project
Output [3]: [internalUUID#946331, baseUnitOfMeasure#946335, unitOfMeasureConversions#946337]
Input [4]: [internalUUID#946331, baseUnitOfMeasure#946335, unitOfMeasureConversions#946337, systemId#946330]
(756) Exchange
Input [3]: [internalUUID#946331, baseUnitOfMeasure#946335, unitOfMeasureConversions#946337]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1459270]
(757) BroadcastExchange
Input [3]: [internalUUID#946331, baseUnitOfMeasure#946335, unitOfMeasureConversions#946337]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1459579]
(758) BroadcastHashJoin
Left keys [1]: [product#946316]
Right keys [1]: [internalUUID#946331]
Join type: LeftOuter
Join condition: None
(759) Project
Output [2]: [plant#946317, filter(unitOfMeasureConversions#946337, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#946571) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#946572)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946335.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946335.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946342]
Input [7]: [product#946316, plant#946317, _extract_code#946571, _extract_internalRefUUID#946572, internalUUID#946331, baseUnitOfMeasure#946335, unitOfMeasureConversions#946337]
(760) Generate
Input [2]: [plant#946317, filteredUnitOfMeasureConversions#946342]
Arguments: explode(filteredUnitOfMeasureConversions#946342.quantityNumerator), [plant#946317, filteredUnitOfMeasureConversions#946342], true, [quantityNumerator#946343]
(761) Project
Output [2]: [plant#946317, filteredUnitOfMeasureConversions#946342.quantityDenominator AS _extract_quantityDenominator#946462]
Input [3]: [plant#946317, filteredUnitOfMeasureConversions#946342, quantityNumerator#946343]
(762) Generate
Input [2]: [plant#946317, _extract_quantityDenominator#946462]
Arguments: explode(_extract_quantityDenominator#946462), [plant#946317], true, [quantityDenominator#946344]
(763) Project
Output [1]: [plant#946317]
Input [2]: [plant#946317, quantityDenominator#946344]
(764) HashAggregate
Input [1]: [plant#946317]
Keys [1]: [plant#946317]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946317]
(765) Exchange
Input [1]: [plant#946317]
Arguments: hashpartitioning(plant#946317, 37), ENSURE_REQUIREMENTS, [plan_id=1459588]
(766) HashAggregate
Input [1]: [plant#946317]
Keys [1]: [plant#946317]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946317]
(767) BroadcastHashJoin
Left keys [1]: [plantUuid#946313]
Right keys [1]: [plant#946317]
Join type: Inner
Join condition: None
(768) Project
Output [2]: [plantUuid#946313 AS plant#946288, storageLocUuid#946315]
Input [3]: [plantUuid#946313, storageLocUuid#946315, plant#946317]
(769) Sort
Input [2]: [plant#946288, storageLocUuid#946315]
Arguments: [plant#946288 ASC NULLS FIRST], false, 0
(770) SortMergeJoin
Left keys [1]: [plant#944306]
Right keys [1]: [plant#946288]
Join type: Inner
Join condition: None
(771) Project
Output [3]: [plant#944306, product#944305, storageLocUuid#946315]
Input [4]: [product#944305, plant#944306, plant#946288, storageLocUuid#946315]
(772) Filter
Input [5]: [internalUUID#946254, id#946255, isMarkedForDeletion#946260, items#946261, systemId#946253]
Condition : (((isnotnull(isMarkedForDeletion#946260) AND NOT isMarkedForDeletion#946260) AND (size(items#946261, true) > 0)) AND isnotnull(items#946261))
(773) Project
Output [3]: [internalUUID#946254, id#946255, items#946261]
Input [5]: [internalUUID#946254, id#946255, isMarkedForDeletion#946260, items#946261, systemId#946253]
(774) Exchange
Input [3]: [internalUUID#946254, id#946255, items#946261]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1459286]
(775) Generate
Input [3]: [internalUUID#946254, id#946255, items#946261]
Arguments: explode(items#946261), [internalUUID#946254, id#946255], false, [item#946265]
(776) Filter
Input [3]: [internalUUID#946254, id#946255, item#946265]
Condition : ((((isnotnull(item#946265.deletionIndicator) AND isnotnull(item#946265.completeIndicator)) AND isnotnull(item#946265.returnIndicator)) AND ((NOT item#946265.deletionIndicator AND NOT item#946265.completeIndicator) AND NOT item#946265.returnIndicator)) AND ((isnotnull(item#946265.product.internalRefUUID) AND isnotnull(item#946265.plant.internalRefUUID)) AND isnotnull(item#946265.storageLocation.internalRefUUID)))
(777) Project
Output [11]: [id#946255, internalUUID#946254, item#946265.plant.internalRefUUID AS plant#946270, item#946265.product.internalRefUUID AS product#946271, item#946265.storageLocation.internalRefUUID AS storageLocUuid#946272, item#946265.quantityUnit.code AS quantityUom#946273, item#946265.quantityUnit.internalRefUUID AS quantityUomUuid#946274, item#946265.quantityNumerator AS quantityNumerator#946275, item#946265.quantityDenominator AS quantityDenominator#946276, item#946265.scheduleLines AS scheduleLines#946277, item#946265.confirmations AS confirmations#946278]
Input [3]: [internalUUID#946254, id#946255, item#946265]
(778) BroadcastExchange
Input [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, storageLocUuid#946272, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278]
Arguments: HashedRelationBroadcastMode(List(input[3, string, true], input[2, string, true], input[4, string, true]),false), [plan_id=1459602]
(779) BroadcastHashJoin
Left keys [3]: [product#944305, plant#944306, storageLocUuid#946315]
Right keys [3]: [product#946271, plant#946270, storageLocUuid#946272]
Join type: Inner
Join condition: None
(780) Project
Output [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, size(filter(confirmations#946278, lambdafunction(((NOT lambda x_140#946362.deletionIndicator AND lambda x_140#946362.isRelevantForConfirmation) AND isnotnull(lambda x_140#946362.confirmedDeliveryAt)), lambda x_140#946362, false)), false) AS _w0#946369]
Input [14]: [plant#944306, product#944305, storageLocUuid#946315, id#946255, internalUUID#946254, plant#946270, product#946271, storageLocUuid#946272, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278]
(781) Exchange
Input [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, _w0#946369]
Arguments: hashpartitioning(internalUUID#946254, 37), ENSURE_REQUIREMENTS, [plan_id=1459606]
(782) Sort
Input [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, _w0#946369]
Arguments: [internalUUID#946254 ASC NULLS FIRST], false, 0
(783) Window
Input [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, _w0#946369]
Arguments: [sum(_w0#946369) windowspecdefinition(internalUUID#946254, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#946370L], [internalUUID#946254]
(784) Project
Output [3]: [plant#946270, product#946271, filter(transform(CASE WHEN (_we0#946370L > 0) THEN transform(filter(confirmations#946278, lambdafunction(((NOT lambda x_140#946363.deletionIndicator AND lambda x_140#946363.isRelevantForConfirmation) AND isnotnull(lambda x_140#946363.confirmedDeliveryAt)), lambda x_140#946363, false)), lambdafunction(struct(openQty, greatest((lambda x_141#946366.confirmedQuantity - coalesce(lambda x_141#946366.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_141#946366.confirmedDeliveryAt), lambda x_141#946366, false)) ELSE transform(scheduleLines#946277, lambdafunction(struct(openQty, greatest((lambda x_139#946364.quantity - coalesce(lambda x_139#946364.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_139#946364.deliveryAt), lambda x_139#946364, false)) END, lambdafunction(struct(documentId, id#946255, documentUuid, internalUUID#946254, openQty, lambda x_142#946367.openQty, openQtyInBaseUnit, ((lambda x_142#946367.openQty * quantityNumerator#946275) / quantityDenominator#946276), qtyUom, quantityUom#946273, qtyUomUuid, quantityUomUuid#946274, availabilityDatetime, lambda x_142#946367.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_142#946367, false)), lambdafunction(NOT (lambda x_143#946368.openQty = 0.0), lambda x_143#946368, false)) AS openGoodsMovements#946361]
Input [12]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, _w0#946369, _we0#946370L]
(785) ObjectHashAggregate
Input [3]: [plant#946270, product#946271, openGoodsMovements#946361]
Keys [2]: [product#946271, plant#946270]
Functions [1]: [partial_collect_list(openGoodsMovements#946361, 0, 0)]
Aggregate Attributes [1]: [buf#947901]
Results [3]: [product#946271, plant#946270, buf#947902]
(786) Exchange
Input [3]: [product#946271, plant#946270, buf#947902]
Arguments: hashpartitioning(product#946271, plant#946270, 37), ENSURE_REQUIREMENTS, [plan_id=1459612]
(787) ObjectHashAggregate
Input [3]: [product#946271, plant#946270, buf#947902]
Keys [2]: [product#946271, plant#946270]
Functions [1]: [collect_list(openGoodsMovements#946361, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#946361, 0, 0)#946386]
Results [3]: [product#946271, plant#946270, flatten(collect_list(openGoodsMovements#946361, 0, 0)#946386) AS openGoodsMovements#946371]
(788) Filter
Input [3]: [product#946271, plant#946270, openGoodsMovements#946371]
Condition : (size(openGoodsMovements#946371, false) > 0)
(789) AdaptiveSparkPlan
Output [3]: [product#946271, plant#946270, openGoodsMovements#946371]
Arguments: isFinalPlan=true
(790) TableCacheQueryStage
Output [3]: [product#946271, plant#946270, openGoodsMovements#946371]
Arguments: 70
(791) Filter [codegen id : 379]
Input [3]: [product#946271, plant#946270, openGoodsMovements#946371]
Condition : (isnotnull(product#946271) AND isnotnull(plant#946270))
(792) ObjectHashAggregate
Input [3]: [product#946271, plant#946270, openGoodsMovements#946371]
Keys [2]: [product#946271, plant#946270]
Functions [1]: [partial_collect_list(openGoodsMovements#946371, 0, 0)]
Aggregate Attributes [1]: [buf#953121]
Results [3]: [product#946271, plant#946270, buf#953122]
(793) ObjectHashAggregate
Input [3]: [product#946271, plant#946270, buf#953122]
Keys [2]: [product#946271, plant#946270]
Functions [1]: [collect_list(openGoodsMovements#946371, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#946371, 0, 0)#948579]
Results [3]: [product#946271, plant#946270, flatten(collect_list(openGoodsMovements#946371, 0, 0)#948579) AS openGoodsMovements#948575]
(794) Project [codegen id : 380]
Output [5]: [product#946271, plant#946270, openGoodsMovements#948575.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#952082, openGoodsMovements#948575.availabilityDatetime AS _extract_availabilityDatetime#952083, openGoodsMovements#948575.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#952084]
Input [3]: [product#946271, plant#946270, openGoodsMovements#948575]
(795) Sort [codegen id : 380]
Input [5]: [product#946271, plant#946270, _extract_openQtyInBaseUnit#952082, _extract_availabilityDatetime#952083, _extract_shelfLifeEndDatetime#952084]
Arguments: [product#946271 ASC NULLS FIRST, plant#946270 ASC NULLS FIRST], false, 0
(796) SortMergeJoin [codegen id : 381]
Left keys [2]: [product#944305, plant#944306]
Right keys [2]: [product#946271, plant#946270]
Join type: LeftOuter
Join condition: None
(797) Project [codegen id : 381]
Output [10]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, dayBucketDemands#945952, pointInTimeDemands#945953, coalesce(_extract_openQtyInBaseUnit#952082, []) AS openGoodsMovementQuantities#949165, coalesce(_extract_availabilityDatetime#952083, []) AS openGoodsMovementAvailabilityDatetimes#949166, coalesce(_extract_shelfLifeEndDatetime#952084, []) AS openGoodsMovementShelfLifeEndDatetimes#949167]
Input [12]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, dayBucketDemands#945952, pointInTimeDemands#945953, product#946271, plant#946270, _extract_openQtyInBaseUnit#952082, _extract_availabilityDatetime#952083, _extract_shelfLifeEndDatetime#952084]
(798) ReusedExchange [Reuses operator id: 195]
Output [7]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720]
(799) ShuffleQueryStage
Output [7]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720]
Arguments: 653
(800) AQEShuffleRead
Input [7]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720]
Arguments: coalesced
(801) Sort [codegen id : 368]
Input [7]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720]
Arguments: [coalesce(plant#949465, ) ASC NULLS FIRST, isnull(plant#949465) ASC NULLS FIRST, coalesce(product#949464, ) ASC NULLS FIRST, isnull(product#949464) ASC NULLS FIRST], false, 0
(802) ReusedExchange [Reuses operator id: 224]
Output [4]: [product#950005, plant#950006, dayBucketDemands#950007, pointInTimeDemands#950008]
(803) ShuffleQueryStage
Output [4]: [product#950005, plant#950006, dayBucketDemands#950007, pointInTimeDemands#950008]
Arguments: 671
(804) AQEShuffleRead
Input [4]: [product#950005, plant#950006, dayBucketDemands#950007, pointInTimeDemands#950008]
Arguments: coalesced
(805) Sort [codegen id : 369]
Input [4]: [product#950005, plant#950006, dayBucketDemands#950007, pointInTimeDemands#950008]
Arguments: [coalesce(plant#950006, ) ASC NULLS FIRST, isnull(plant#950006) ASC NULLS FIRST, coalesce(product#950005, ) ASC NULLS FIRST, isnull(product#950005) ASC NULLS FIRST], false, 0
(806) SortMergeJoin [codegen id : 370]
Left keys [4]: [coalesce(plant#949465, ), isnull(plant#949465), coalesce(product#949464, ), isnull(product#949464)]
Right keys [4]: [coalesce(plant#950006, ), isnull(plant#950006), coalesce(product#950005, ), isnull(product#950005)]
Join type: LeftOuter
Join condition: None
(807) Project [codegen id : 370]
Output [9]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, dayBucketDemands#950007, pointInTimeDemands#950008]
Input [11]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, product#950005, plant#950006, dayBucketDemands#950007, pointInTimeDemands#950008]
(808) Exchange
Input [9]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, dayBucketDemands#950007, pointInTimeDemands#950008]
Arguments: hashpartitioning(product#949464, plant#949465, 37), ENSURE_REQUIREMENTS, [plan_id=1568895]
(809) ShuffleQueryStage
Output [9]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, dayBucketDemands#950007, pointInTimeDemands#950008]
Arguments: 678
(810) Sort [codegen id : 373]
Input [9]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, dayBucketDemands#950007, pointInTimeDemands#950008]
Arguments: [product#949464 ASC NULLS FIRST, plant#949465 ASC NULLS FIRST], false, 0
(811) InMemoryTableScan
Output [3]: [product#950625, plant#950624, openGoodsMovements#950636]
Arguments: [product#950625, plant#950624, openGoodsMovements#950636], [isnotnull(product#950625), isnotnull(plant#950624)]
(812) InMemoryRelation
Arguments: [product#950625, plant#950624, openGoodsMovements#950636], StorageLevel(disk, memory, 2 replicas)
(813) TableCacheQueryStage
Output [3]: [product#950625, plant#950624, openGoodsMovements#950636]
Arguments: 231
(814) Filter [codegen id : 374]
Input [3]: [product#950625, plant#950624, openGoodsMovements#950636]
Condition : (isnotnull(product#950625) AND isnotnull(plant#950624))
(815) ObjectHashAggregate
Input [3]: [product#950625, plant#950624, openGoodsMovements#950636]
Keys [2]: [product#950625, plant#950624]
Functions [1]: [partial_collect_list(openGoodsMovements#950636, 0, 0)]
Aggregate Attributes [1]: [buf#953203]
Results [3]: [product#950625, plant#950624, buf#953204]
(816) ObjectHashAggregate
Input [3]: [product#950625, plant#950624, buf#953204]
Keys [2]: [product#950625, plant#950624]
Functions [1]: [collect_list(openGoodsMovements#950636, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#950636, 0, 0)#948579]
Results [3]: [product#950625, plant#950624, flatten(collect_list(openGoodsMovements#950636, 0, 0)#948579) AS openGoodsMovements#951204]
(817) Project [codegen id : 375]
Output [5]: [product#950625, plant#950624, openGoodsMovements#951204.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#952163, openGoodsMovements#951204.availabilityDatetime AS _extract_availabilityDatetime#952164, openGoodsMovements#951204.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#952165]
Input [3]: [product#950625, plant#950624, openGoodsMovements#951204]
(818) Sort [codegen id : 375]
Input [5]: [product#950625, plant#950624, _extract_openQtyInBaseUnit#952163, _extract_availabilityDatetime#952164, _extract_shelfLifeEndDatetime#952165]
Arguments: [product#950625 ASC NULLS FIRST, plant#950624 ASC NULLS FIRST], false, 0
(819) SortMergeJoin [codegen id : 376]
Left keys [2]: [product#949464, plant#949465]
Right keys [2]: [product#950625, plant#950624]
Join type: LeftOuter
Join condition: None
(820) Project
Output [15]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#949721, dayBucketDemands#950007, pointInTimeDemands#950008, coalesce(_extract_openQtyInBaseUnit#952163, []) AS openGoodsMovementQuantities#951205, coalesce(_extract_availabilityDatetime#952164, []) AS openGoodsMovementAvailabilityDatetimes#951206, coalesce(_extract_shelfLifeEndDatetime#952165, []) AS openGoodsMovementShelfLifeEndDatetimes#951207, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#951208, array_sort(filter(CASE WHEN isnotnull(productPlant#949477.listing) THEN productPlant#949477.listing ELSE [] END, lambdafunction(lambda listing#949410.isListed, lambda listing#949410, false)), lambdafunction(if ((isnull(lambda left#949412) AND isnull(lambda right#949413))) 0 else if (isnull(lambda left#949412)) 1 else if (isnull(lambda right#949413)) -1 else if ((lambda left#949412 < lambda right#949413)) -1 else if ((lambda left#949412 > lambda right#949413)) 1 else 0, lambda left#949412, lambda right#949413, false), false) AS listing#949411]
Input [14]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, dayBucketDemands#950007, pointInTimeDemands#950008, product#950625, plant#950624, _extract_openQtyInBaseUnit#952163, _extract_availabilityDatetime#952164, _extract_shelfLifeEndDatetime#952165]
(821) DeserializeToObject [codegen id : 377]
Input [15]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, stockBatchShelfLifeEndDatetimes#949721, dayBucketDemands#950007, pointInTimeDemands#950008, openGoodsMovementQuantities#951205, openGoodsMovementAvailabilityDatetimes#951206, openGoodsMovementShelfLifeEndDatetimes#951207, configuration#951208, listing#949411]
Arguments: createexternalrow(invoke(product#949464.toString()), invoke(plant#949465.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#949466)), if (isnull(productPlant#949477)) null else createexternalrow(invoke(productPlant#949477.systemId.toString()), invoke(productPlant#949477.internalUUID.toString()), if (isnull(productPlant#949477.plant)) null else createexternalrow(invoke(productPlant#949477.plant.internalRefUUID.toString()), invoke(productPlant#949477.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#949477.product)) null else createexternalrow(invoke(productPlant#949477.product.internalRefUUID.toString()), invoke(productPlant#949477.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#949477.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#949477.productionAspect)) null else createexternalrow(if (isnull(productPlant#949477.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#949477.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#949477.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#949477.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#949477.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#949477.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#949477.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#949477.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#949477.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#949477.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#949477.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#949477.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#949477.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#949477.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#949477.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#949477.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#949477.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#949477.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)), if (isnull(productPlant#949477.salesPlant)) null else createexternalrow(if (isnull(productPlant#949477.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#949477.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#949477.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, -21), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#949477.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#949477.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#949477.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#949477.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), 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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#949494)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#949719)), mapobjects(lambdavariable(MapObject, DoubleType, true, -22), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -22))), stockBatchQuantities#949720, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -23), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -23))), stockBatchShelfLifeEndDatetimes#949721, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24), createexternalrow(invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).demandChannel.toString()), invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).considerVariance)), mapobjects(lambdavariable(MapObject, DoubleType, false, -25), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, false, -25))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -26), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -26))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).demandVariances, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -27), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -27))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).anchorDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StringType, false, -28), invoke(lambdavariable(MapObject, StringType, false, -28).toString()), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).anchorWeekdays, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, IntegerType, false, -29), static_invoke(java.lang.Integer.valueOf(lambdavariable(MapObject, IntegerType, false, -29))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).anchorIndices, Some(class scala.collection.mutable.ArraySeq)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true)), dayBucketDemands#950007, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30), createexternalrow(invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).demandChannel.toString()), invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).considerVariance)), mapobjects(lambdavariable(MapObject, TimestampType, false, -31), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -31))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).demandDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, false, -32), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, false, -32))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -33), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -33))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).demandVariances, 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(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).horizonStartDatetime)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).horizonEndDatetime)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true)), pointInTimeDemands#950008, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -34), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -34))), openGoodsMovementQuantities#951205, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, -35), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, true, -35))), openGoodsMovementAvailabilityDatetimes#951206, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -36), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -36))), openGoodsMovementShelfLifeEndDatetimes#951207, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37), createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37).configurationValidityDatetime)), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37).configurationName.toString()), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37).configurationValue.toString()), StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false)), configuration#951208, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), listing#949411, 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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(dayBucketDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandValues,ArrayType(DoubleType,false),true),StructField(demandVariances,ArrayType(DoubleType,true),true),StructField(anchorDatetimes,ArrayType(TimestampType,false),true),StructField(anchorWeekdays,ArrayType(StringType,false),true),StructField(anchorIndices,ArrayType(IntegerType,false),true)),false),true), StructField(pointInTimeDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandDatetimes,ArrayType(TimestampType,false),true),StructField(demandValues,ArrayType(DoubleType,false),true),StructField(demandVariances,ArrayType(DoubleType,true),true),StructField(horizonStartDatetime,TimestampType,true),StructField(horizonEndDatetime,TimestampType,true)),false),true), ... 5 more fields), obj#949444: org.apache.spark.sql.Row
(822) MapElements [codegen id : 377]
Input [1]: [obj#949444]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.ListingSnapshotEnhancementImpl$$Lambda/0x0000000801ff9ec8@c142349, obj#949451: org.apache.spark.sql.Row
(823) SerializeFromObject [codegen id : 377]
Input [1]: [obj#949451]
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#949458, 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#949459, mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -17), static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -17), StringType, ObjectType(class java.lang.String)))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 2, timeDependentSettingsName), ArrayType(StringType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsName#949460, mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -18), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -18), TimestampType, ObjectType(class java.sql.Timestamp)))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 3, timeDependentSettingsStartDatetime), ArrayType(TimestampType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsStartDatetime#949461, mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -19), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -19), TimestampType, ObjectType(class java.sql.Timestamp)))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 4, timeDependentSettingsEndDatetime), ArrayType(TimestampType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsEndDatetime#949462, if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, timeDependentSettingsValue), ArrayType(DoubleType,true), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, timeDependentSettingsValue), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -20), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -20), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, timeDependentSettingsValue), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsValue#949463]
(824) Filter [codegen id : 377]
Input [6]: [product#949458, plant#949459, timeDependentSettingsName#949460, timeDependentSettingsStartDatetime#949461, timeDependentSettingsEndDatetime#949462, timeDependentSettingsValue#949463]
Condition : (isnotnull(product#949458) AND isnotnull(plant#949459))
(825) Exchange
Input [6]: [product#949458, plant#949459, timeDependentSettingsName#949460, timeDependentSettingsStartDatetime#949461, timeDependentSettingsEndDatetime#949462, timeDependentSettingsValue#949463]
Arguments: hashpartitioning(product#949458, plant#949459, 37), ENSURE_REQUIREMENTS, [plan_id=1569545]
(826) ShuffleQueryStage
Output [6]: [product#949458, plant#949459, timeDependentSettingsName#949460, timeDependentSettingsStartDatetime#949461, timeDependentSettingsEndDatetime#949462, timeDependentSettingsValue#949463]
Arguments: 682
(827) AQEShuffleRead
Input [6]: [product#949458, plant#949459, timeDependentSettingsName#949460, timeDependentSettingsStartDatetime#949461, timeDependentSettingsEndDatetime#949462, timeDependentSettingsValue#949463]
Arguments: local
(828) BroadcastExchange
Input [6]: [product#949458, plant#949459, timeDependentSettingsName#949460, timeDependentSettingsStartDatetime#949461, timeDependentSettingsEndDatetime#949462, timeDependentSettingsValue#949463]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=1569623]
(829) BroadcastQueryStage
Output [6]: [product#949458, plant#949459, timeDependentSettingsName#949460, timeDependentSettingsStartDatetime#949461, timeDependentSettingsEndDatetime#949462, timeDependentSettingsValue#949463]
Arguments: 683
(830) BroadcastHashJoin [codegen id : 381]
Left keys [2]: [product#944305, plant#944306]
Right keys [2]: [product#949458, plant#949459]
Join type: LeftOuter
Join condition: None
(831) Project [codegen id : 381]
Output [16]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#944813, dayBucketDemands#945952, pointInTimeDemands#945953, openGoodsMovementQuantities#949165, openGoodsMovementAvailabilityDatetimes#949166, openGoodsMovementShelfLifeEndDatetimes#949167, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#949267, CASE WHEN isnotnull(timeDependentSettingsName#949460) THEN timeDependentSettingsName#949460 ELSE [] END AS timeDependentSettingsName#951335, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#949461) THEN timeDependentSettingsStartDatetime#949461 ELSE [] END AS timeDependentSettingsStartDatetime#951336, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#949462) THEN timeDependentSettingsEndDatetime#949462 ELSE [] END AS timeDependentSettingsEndDatetime#951337, CASE WHEN isnotnull(timeDependentSettingsValue#949463) THEN timeDependentSettingsValue#949463 ELSE [] END AS timeDependentSettingsValue#951338]
Input [16]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, dayBucketDemands#945952, pointInTimeDemands#945953, openGoodsMovementQuantities#949165, openGoodsMovementAvailabilityDatetimes#949166, openGoodsMovementShelfLifeEndDatetimes#949167, product#949458, plant#949459, timeDependentSettingsName#949460, timeDependentSettingsStartDatetime#949461, timeDependentSettingsEndDatetime#949462, timeDependentSettingsValue#949463]
(832) ResultQueryStage
Output [16]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, stockBatchShelfLifeEndDatetimes#944813, dayBucketDemands#945952, pointInTimeDemands#945953, openGoodsMovementQuantities#949165, openGoodsMovementAvailabilityDatetimes#949166, openGoodsMovementShelfLifeEndDatetimes#949167, configuration#949267, timeDependentSettingsName#951335, timeDependentSettingsStartDatetime#951336, timeDependentSettingsEndDatetime#951337, timeDependentSettingsValue#951338]
Arguments: 685
(833) Exchange
Input [3]: [product#944305, plant#944306, orderDateTime#944307]
Arguments: hashpartitioning(product#944305, plant#944306, 37), REPARTITION_BY_NUM, [plan_id=1463469]
(834) Project
Output [4]: [plant#944363.internalRefUUID AS _extract_internalRefUUID#952090, product#944364.internalRefUUID AS _extract_internalRefUUID#952089, productionAspect#944366.productMovementPlants.unitOfIssue.code AS _extract_code#952087, productionAspect#944366.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952088]
Input [4]: [plant#944363, product#944364, productionAspect#944366, systemId#944361]
(835) Exchange
Input [4]: [_extract_internalRefUUID#952090, _extract_internalRefUUID#952089, _extract_code#952087, _extract_internalRefUUID#952088]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463472]
(836) Project
Output [4]: [_extract_code#952087, _extract_internalRefUUID#952088, _extract_internalRefUUID#952089, _extract_internalRefUUID#952090]
Input [4]: [_extract_internalRefUUID#952090, _extract_internalRefUUID#952089, _extract_code#952087, _extract_internalRefUUID#952088]
(837) BroadcastExchange
Input [4]: [_extract_code#952087, _extract_internalRefUUID#952088, _extract_internalRefUUID#952089, _extract_internalRefUUID#952090]
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=1465526]
(838) BroadcastHashJoin
Left keys [4]: [coalesce(product#944305, ), isnull(product#944305), coalesce(plant#944306, ), isnull(plant#944306)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952089, ), isnull(_extract_internalRefUUID#952089), coalesce(_extract_internalRefUUID#952090, ), isnull(_extract_internalRefUUID#952090)]
Join type: LeftOuter
Join condition: None
(839) Project
Output [5]: [product#944305, plant#944306, orderDateTime#944307, _extract_code#952087, _extract_internalRefUUID#952088]
Input [7]: [product#944305, plant#944306, orderDateTime#944307, _extract_code#952087, _extract_internalRefUUID#952088, _extract_internalRefUUID#952089, _extract_internalRefUUID#952090]
(840) Filter
Input [4]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403, systemId#944396]
Condition : isnotnull(internalUUID#944397)
(841) Project
Output [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Input [4]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403, systemId#944396]
(842) Exchange
Input [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463479]
(843) BroadcastExchange
Input [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465530]
(844) BroadcastHashJoin
Left keys [1]: [product#944305]
Right keys [1]: [internalUUID#944397]
Join type: LeftOuter
Join condition: None
(845) Project
Output [4]: [product#944305, plant#944306, orderDateTime#944307, filter(unitOfMeasureConversions#944403, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952087) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952088)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#944401.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#944401.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#944409]
Input [8]: [product#944305, plant#944306, orderDateTime#944307, _extract_code#952087, _extract_internalRefUUID#952088, internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
(846) Project
Output [5]: [product#944305, plant#944306, orderDateTime#944307, filteredUnitOfMeasureConversions#944409.quantityDenominator AS _extract_quantityDenominator#952085, filteredUnitOfMeasureConversions#944409.quantityNumerator AS _extract_quantityNumerator#952086]
Input [4]: [product#944305, plant#944306, orderDateTime#944307, filteredUnitOfMeasureConversions#944409]
(847) Generate
Input [5]: [product#944305, plant#944306, orderDateTime#944307, _extract_quantityDenominator#952085, _extract_quantityNumerator#952086]
Arguments: explode(_extract_quantityNumerator#952086), [product#944305, plant#944306, orderDateTime#944307, _extract_quantityDenominator#952085], true, [quantityNumerator#944417]
(848) Generate
Input [5]: [product#944305, plant#944306, orderDateTime#944307, _extract_quantityDenominator#952085, quantityNumerator#944417]
Arguments: explode(_extract_quantityDenominator#952085), [product#944305, plant#944306, orderDateTime#944307, quantityNumerator#944417], true, [quantityDenominator#944420]
(849) Project
Output [4]: [product#944305, plant#944306, orderDateTime#944307, (cast(quantityNumerator#944417 as double) / cast(quantityDenominator#944420 as double)) AS outboundUnit#944421]
Input [5]: [product#944305, plant#944306, orderDateTime#944307, quantityNumerator#944417, quantityDenominator#944420]
(850) Project
Output [4]: [product#944305, plant#944306, orderDateTime#944307, CASE WHEN (isnull(outboundUnit#944421) OR (outboundUnit#944421 <= 0.0)) THEN 1.0 ELSE outboundUnit#944421 END AS outboundUnit#944422]
Input [4]: [product#944305, plant#944306, orderDateTime#944307, outboundUnit#944421]
(851) Sort
Input [4]: [product#944305, plant#944306, orderDateTime#944307, outboundUnit#944422]
Arguments: [product#944305 ASC NULLS FIRST, plant#944306 ASC NULLS FIRST], false, 0
(852) Filter
Input [6]: [internalUUID#944561, product#944562, plant#944563, calculationDateTime#944564, stockQuantities#944565, systemId#944560]
Condition : (isnotnull(plant#944563.internalRefUUID) AND isnotnull(product#944562.internalRefUUID))
(853) Project
Output [6]: [systemId#944560, internalUUID#944561, product#944562, plant#944563, calculationDateTime#944564, stockQuantities#944565]
Input [6]: [internalUUID#944561, product#944562, plant#944563, calculationDateTime#944564, stockQuantities#944565, systemId#944560]
(854) Exchange
Input [6]: [systemId#944560, internalUUID#944561, product#944562, plant#944563, calculationDateTime#944564, stockQuantities#944565]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463490]
(855) BroadcastExchange
Input [6]: [systemId#944560, internalUUID#944561, product#944562, plant#944563, calculationDateTime#944564, stockQuantities#944565]
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=1465558]
(856) Filter
Input [2]: [marketUnit#944474, distributionCenters#944480]
Condition : (((marketUnit#944474 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#944480, true) > 0)) AND isnotnull(distributionCenters#944480))
(857) Project
Output [1]: [distributionCenters#944480]
Input [2]: [marketUnit#944474, distributionCenters#944480]
(858) Exchange
Input [1]: [distributionCenters#944480]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463494]
(859) Generate
Input [1]: [distributionCenters#944480]
Arguments: explode(distributionCenters#944480), false, [distributionCenters#944497]
(860) Filter
Input [1]: [distributionCenters#944497]
Condition : (((size(distributionCenters#944497.storageLocations, true) > 0) AND isnotnull(distributionCenters#944497.storageLocations)) AND isnotnull(distributionCenters#944497.internalRefUUID))
(861) Project
Output [2]: [distributionCenters#944497.internalRefUUID AS _extract_internalRefUUID#951523, distributionCenters#944497.storageLocations AS _extract_storageLocations#951524]
Input [1]: [distributionCenters#944497]
(862) Generate
Input [2]: [_extract_internalRefUUID#951523, _extract_storageLocations#951524]
Arguments: explode(_extract_storageLocations#951524), [_extract_internalRefUUID#951523], false, [storageLocations#944504]
(863) Project
Output [3]: [_extract_internalRefUUID#951523 AS plantUuid#944499, storageLocations#944504.id AS storageLocId#944505, storageLocations#944504.internalRefUUID AS storageLocUuid#944506]
Input [2]: [_extract_internalRefUUID#951523, storageLocations#944504]
(864) BroadcastExchange
Input [3]: [plantUuid#944499, storageLocId#944505, storageLocUuid#944506]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465554]
(865) Filter
Input [2]: [product#944777, plant#944778]
Condition : isnotnull(plant#944778)
(866) Exchange
Input [2]: [product#944777, plant#944778]
Arguments: hashpartitioning(product#944777, plant#944778, 37), REPARTITION_BY_NUM, [plan_id=1464860]
(867) Scan parquet
Output [4]: [plant#944783, product#944784, productionAspect#944786, systemId#944781]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(868) Project
Output [4]: [plant#944783.internalRefUUID AS _extract_internalRefUUID#952094, product#944784.internalRefUUID AS _extract_internalRefUUID#952093, productionAspect#944786.productMovementPlants.unitOfIssue.code AS _extract_code#952091, productionAspect#944786.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952092]
Input [4]: [plant#944783, product#944784, productionAspect#944786, systemId#944781]
(869) Exchange
Input [4]: [_extract_internalRefUUID#952094, _extract_internalRefUUID#952093, _extract_code#952091, _extract_internalRefUUID#952092]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463506]
(870) Project
Output [4]: [_extract_code#952091, _extract_internalRefUUID#952092, _extract_internalRefUUID#952093, _extract_internalRefUUID#952094]
Input [4]: [_extract_internalRefUUID#952094, _extract_internalRefUUID#952093, _extract_code#952091, _extract_internalRefUUID#952092]
(871) BroadcastExchange
Input [4]: [_extract_code#952091, _extract_internalRefUUID#952092, _extract_internalRefUUID#952093, _extract_internalRefUUID#952094]
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=1465538]
(872) BroadcastHashJoin
Left keys [4]: [coalesce(product#944777, ), isnull(product#944777), coalesce(plant#944778, ), isnull(plant#944778)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952093, ), isnull(_extract_internalRefUUID#952093), coalesce(_extract_internalRefUUID#952094, ), isnull(_extract_internalRefUUID#952094)]
Join type: LeftOuter
Join condition: None
(873) Project
Output [4]: [product#944777, plant#944778, _extract_code#952091, _extract_internalRefUUID#952092]
Input [6]: [product#944777, plant#944778, _extract_code#952091, _extract_internalRefUUID#952092, _extract_internalRefUUID#952093, _extract_internalRefUUID#952094]
(874) Scan parquet
Output [4]: [internalUUID#944792, baseUnitOfMeasure#944796, unitOfMeasureConversions#944798, systemId#944791]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(875) Filter
Input [4]: [internalUUID#944792, baseUnitOfMeasure#944796, unitOfMeasureConversions#944798, systemId#944791]
Condition : isnotnull(internalUUID#944792)
(876) Project
Output [3]: [internalUUID#944792, baseUnitOfMeasure#944796, unitOfMeasureConversions#944798]
Input [4]: [internalUUID#944792, baseUnitOfMeasure#944796, unitOfMeasureConversions#944798, systemId#944791]
(877) Exchange
Input [3]: [internalUUID#944792, baseUnitOfMeasure#944796, unitOfMeasureConversions#944798]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463513]
(878) BroadcastExchange
Input [3]: [internalUUID#944792, baseUnitOfMeasure#944796, unitOfMeasureConversions#944798]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465542]
(879) BroadcastHashJoin
Left keys [1]: [product#944777]
Right keys [1]: [internalUUID#944792]
Join type: LeftOuter
Join condition: None
(880) Project
Output [2]: [plant#944778, filter(unitOfMeasureConversions#944798, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952091) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952092)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#944796.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#944796.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#944803]
Input [7]: [product#944777, plant#944778, _extract_code#952091, _extract_internalRefUUID#952092, internalUUID#944792, baseUnitOfMeasure#944796, unitOfMeasureConversions#944798]
(881) Generate
Input [2]: [plant#944778, filteredUnitOfMeasureConversions#944803]
Arguments: explode(filteredUnitOfMeasureConversions#944803.quantityNumerator), [plant#944778, filteredUnitOfMeasureConversions#944803], true, [quantityNumerator#944804]
(882) Project
Output [2]: [plant#944778, filteredUnitOfMeasureConversions#944803.quantityDenominator AS _extract_quantityDenominator#951525]
Input [3]: [plant#944778, filteredUnitOfMeasureConversions#944803, quantityNumerator#944804]
(883) Generate
Input [2]: [plant#944778, _extract_quantityDenominator#951525]
Arguments: explode(_extract_quantityDenominator#951525), [plant#944778], true, [quantityDenominator#944805]
(884) Project
Output [1]: [plant#944778]
Input [2]: [plant#944778, quantityDenominator#944805]
(885) HashAggregate
Input [1]: [plant#944778]
Keys [1]: [plant#944778]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#944778]
(886) Exchange
Input [1]: [plant#944778]
Arguments: hashpartitioning(plant#944778, 37), ENSURE_REQUIREMENTS, [plan_id=1465551]
(887) HashAggregate
Input [1]: [plant#944778]
Keys [1]: [plant#944778]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#944778]
(888) BroadcastHashJoin
Left keys [1]: [plantUuid#944499]
Right keys [1]: [plant#944778]
Join type: Inner
Join condition: None
(889) Project
Output [3]: [plantUuid#944499, storageLocId#944505, storageLocUuid#944506]
Input [4]: [plantUuid#944499, storageLocId#944505, storageLocUuid#944506, plant#944778]
(890) BroadcastHashJoin
Left keys [2]: [coalesce(plant#944563.internalRefUUID, ), isnull(plant#944563.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#944499, ), isnull(plantUuid#944499)]
Join type: Inner
Join condition: None
(891) Generate
Input [9]: [systemId#944560, internalUUID#944561, product#944562, plant#944563, calculationDateTime#944564, stockQuantities#944565, plantUuid#944499, storageLocId#944505, storageLocUuid#944506]
Arguments: explode(filter(stockQuantities#944565, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#944506) AND (lambda x#944569.storageLocation.Id = storageLocId#944505)), lambda x#944569, false))), [systemId#944560, internalUUID#944561, product#944562, plant#944563, calculationDateTime#944564, plantUuid#944499], false, [stockQuantity#944570]
(892) ObjectHashAggregate
Input [7]: [systemId#944560, internalUUID#944561, product#944562, plant#944563, calculationDateTime#944564, plantUuid#944499, stockQuantity#944570]
Keys [5]: [plantUuid#944499, internalUUID#944561, plant#944563, product#944562, systemId#944560]
Functions [2]: [partial_first(calculationDateTime#944564, false), partial_collect_list(stockQuantity#944570, 0, 0)]
Aggregate Attributes [3]: [first#953105, valueSet#953106, buf#953107]
Results [8]: [plantUuid#944499, internalUUID#944561, plant#944563, product#944562, systemId#944560, first#953108, valueSet#953109, buf#953110]
(893) ObjectHashAggregate
Input [8]: [plantUuid#944499, internalUUID#944561, plant#944563, product#944562, systemId#944560, first#953108, valueSet#953109, buf#953110]
Keys [5]: [plantUuid#944499, internalUUID#944561, plant#944563, product#944562, systemId#944560]
Functions [2]: [first(calculationDateTime#944564, false), collect_list(stockQuantity#944570, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#944564)()#944584, collect_list(stockQuantity#944570, 0, 0)#944585]
Results [4]: [product#944562, plant#944563, first(calculationDateTime#944564)()#944584 AS calculationDateTime#944571, collect_list(stockQuantity#944570, 0, 0)#944585 AS stockQuantities#944572]
(894) Filter
Input [4]: [product#944562, plant#944563, calculationDateTime#944571, stockQuantities#944572]
Condition : ((size(stockQuantities#944572, true) > 0) AND isnotnull(calculationDateTime#944571))
(895) Generate
Input [4]: [product#944562, plant#944563, calculationDateTime#944571, stockQuantities#944572]
Arguments: explode(stockQuantities#944572), [product#944562, plant#944563, calculationDateTime#944571], false, [stockQuantity#944587]
(896) Filter
Input [4]: [product#944562, plant#944563, calculationDateTime#944571, stockQuantity#944587]
Condition : (((isnotnull(stockQuantity#944587.specialStockIndicator.code) AND isnotnull(stockQuantity#944587.stockType.code)) AND (stockQuantity#944587.specialStockIndicator.code = )) AND (stockQuantity#944587.stockType.code = 01))
(897) Project
Output [5]: [plant#944563.internalRefUUID AS plantUuid#944589, product#944562.internalRefUUID AS productUuid#944591, calculationDateTime#944571, stockQuantity#944587.storagelocation.id AS storageLocId#944592, stockQuantity#944587.quantity.measure AS quantity#944594]
Input [4]: [product#944562, plant#944563, calculationDateTime#944571, stockQuantity#944587]
(898) Exchange
Input [5]: [plantUuid#944589, productUuid#944591, calculationDateTime#944571, storageLocId#944592, quantity#944594]
Arguments: hashpartitioning(productUuid#944591, plantUuid#944589, 37), ENSURE_REQUIREMENTS, [plan_id=1465580]
(899) Sort
Input [5]: [plantUuid#944589, productUuid#944591, calculationDateTime#944571, storageLocId#944592, quantity#944594]
Arguments: [productUuid#944591 ASC NULLS FIRST, plantUuid#944589 ASC NULLS FIRST], false, 0
(900) Filter
Input [3]: [product#944606, plant#944607, orderDateTime#944608]
Condition : ((isnotnull(orderDateTime#944608) AND isnotnull(plant#944607)) AND isnotnull(product#944606))
(901) Exchange
Input [3]: [product#944606, plant#944607, orderDateTime#944608]
Arguments: hashpartitioning(product#944606, plant#944607, 37), REPARTITION_BY_NUM, [plan_id=1464881]
(902) Scan parquet
Output [4]: [plant#944612, product#944613, productionAspect#944615, systemId#944610]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(903) Project
Output [4]: [plant#944612.internalRefUUID AS _extract_internalRefUUID#952096, product#944613.internalRefUUID AS _extract_internalRefUUID#952095, productionAspect#944615.productMovementPlants.unitOfIssue.code AS _extract_code#952097, productionAspect#944615.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952098]
Input [4]: [plant#944612, product#944613, productionAspect#944615, systemId#944610]
(904) Exchange
Input [4]: [_extract_internalRefUUID#952096, _extract_internalRefUUID#952095, _extract_code#952097, _extract_internalRefUUID#952098]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463538]
(905) Project
Output [4]: [_extract_code#952097, _extract_internalRefUUID#952098, _extract_internalRefUUID#952095, _extract_internalRefUUID#952096]
Input [4]: [_extract_internalRefUUID#952096, _extract_internalRefUUID#952095, _extract_code#952097, _extract_internalRefUUID#952098]
(906) BroadcastExchange
Input [4]: [_extract_code#952097, _extract_internalRefUUID#952098, _extract_internalRefUUID#952095, _extract_internalRefUUID#952096]
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=1465567]
(907) BroadcastHashJoin
Left keys [4]: [coalesce(product#944606, ), isnull(product#944606), coalesce(plant#944607, ), isnull(plant#944607)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952095, ), isnull(_extract_internalRefUUID#952095), coalesce(_extract_internalRefUUID#952096, ), isnull(_extract_internalRefUUID#952096)]
Join type: LeftOuter
Join condition: None
(908) Project
Output [5]: [product#944606, plant#944607, orderDateTime#944608, _extract_code#952097, _extract_internalRefUUID#952098]
Input [7]: [product#944606, plant#944607, orderDateTime#944608, _extract_code#952097, _extract_internalRefUUID#952098, _extract_internalRefUUID#952095, _extract_internalRefUUID#952096]
(909) Scan parquet
Output [4]: [internalUUID#944621, baseUnitOfMeasure#944625, unitOfMeasureConversions#944627, systemId#944620]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(910) Filter
Input [4]: [internalUUID#944621, baseUnitOfMeasure#944625, unitOfMeasureConversions#944627, systemId#944620]
Condition : isnotnull(internalUUID#944621)
(911) Project
Output [3]: [internalUUID#944621, baseUnitOfMeasure#944625, unitOfMeasureConversions#944627]
Input [4]: [internalUUID#944621, baseUnitOfMeasure#944625, unitOfMeasureConversions#944627, systemId#944620]
(912) Exchange
Input [3]: [internalUUID#944621, baseUnitOfMeasure#944625, unitOfMeasureConversions#944627]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463545]
(913) BroadcastExchange
Input [3]: [internalUUID#944621, baseUnitOfMeasure#944625, unitOfMeasureConversions#944627]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465571]
(914) BroadcastHashJoin
Left keys [1]: [product#944606]
Right keys [1]: [internalUUID#944621]
Join type: LeftOuter
Join condition: None
(915) Project
Output [4]: [product#944606, plant#944607, orderDateTime#944608, filter(unitOfMeasureConversions#944627, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952097) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952098)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#944625.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#944625.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#944632]
Input [8]: [product#944606, plant#944607, orderDateTime#944608, _extract_code#952097, _extract_internalRefUUID#952098, internalUUID#944621, baseUnitOfMeasure#944625, unitOfMeasureConversions#944627]
(916) Generate
Input [4]: [product#944606, plant#944607, orderDateTime#944608, filteredUnitOfMeasureConversions#944632]
Arguments: explode(filteredUnitOfMeasureConversions#944632.quantityNumerator), [product#944606, plant#944607, orderDateTime#944608, filteredUnitOfMeasureConversions#944632], true, [quantityNumerator#944633]
(917) Project
Output [4]: [product#944606, plant#944607, orderDateTime#944608, filteredUnitOfMeasureConversions#944632.quantityDenominator AS _extract_quantityDenominator#951532]
Input [5]: [product#944606, plant#944607, orderDateTime#944608, filteredUnitOfMeasureConversions#944632, quantityNumerator#944633]
(918) Generate
Input [4]: [product#944606, plant#944607, orderDateTime#944608, _extract_quantityDenominator#951532]
Arguments: explode(_extract_quantityDenominator#951532), [product#944606, plant#944607, orderDateTime#944608], true, [quantityDenominator#944634]
(919) Project
Output [3]: [product#944606, plant#944607, orderDateTime#944608]
Input [4]: [product#944606, plant#944607, orderDateTime#944608, quantityDenominator#944634]
(920) Sort
Input [3]: [product#944606, plant#944607, orderDateTime#944608]
Arguments: [product#944606 ASC NULLS FIRST, plant#944607 ASC NULLS FIRST], false, 0
(921) SortMergeJoin
Left keys [2]: [productUuid#944591, plantUuid#944589]
Right keys [2]: [product#944606, plant#944607]
Join type: Inner
Join condition: (calculationDateTime#944571 <= orderDateTime#944608)
(922) Project
Output [5]: [plantUuid#944589 AS plant#944640, productUuid#944591 AS product#944641, storageLocId#944592, calculationDateTime#944571, quantity#944594]
Input [8]: [plantUuid#944589, productUuid#944591, calculationDateTime#944571, storageLocId#944592, quantity#944594, product#944606, plant#944607, orderDateTime#944608]
(923) Exchange
Input [5]: [plant#944640, product#944641, storageLocId#944592, calculationDateTime#944571, quantity#944594]
Arguments: hashpartitioning(coalesce(plant#944640, ), isnull(plant#944640), coalesce(product#944641, ), isnull(product#944641), coalesce(storageLocId#944592, ), isnull(storageLocId#944592), coalesce(calculationDateTime#944571, 1970-01-01 00:00:00), isnull(calculationDateTime#944571), 37), ENSURE_REQUIREMENTS, [plan_id=1465636]
(924) Sort
Input [5]: [plant#944640, product#944641, storageLocId#944592, calculationDateTime#944571, quantity#944594]
Arguments: [coalesce(plant#944640, ) ASC NULLS FIRST, isnull(plant#944640) ASC NULLS FIRST, coalesce(product#944641, ) ASC NULLS FIRST, isnull(product#944641) ASC NULLS FIRST, coalesce(storageLocId#944592, ) ASC NULLS FIRST, isnull(storageLocId#944592) ASC NULLS FIRST, coalesce(calculationDateTime#944571, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#944571) ASC NULLS FIRST], false, 0
(925) Scan parquet
Output [6]: [internalUUID#944650, product#944651, plant#944652, calculationDateTime#944653, stockQuantities#944654, systemId#944649]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(926) Filter
Input [6]: [internalUUID#944650, product#944651, plant#944652, calculationDateTime#944653, stockQuantities#944654, systemId#944649]
Condition : (isnotnull(plant#944652.internalRefUUID) AND isnotnull(product#944651.internalRefUUID))
(927) Project
Output [6]: [systemId#944649, internalUUID#944650, product#944651, plant#944652, calculationDateTime#944653, stockQuantities#944654]
Input [6]: [internalUUID#944650, product#944651, plant#944652, calculationDateTime#944653, stockQuantities#944654, systemId#944649]
(928) Exchange
Input [6]: [systemId#944649, internalUUID#944650, product#944651, plant#944652, calculationDateTime#944653, stockQuantities#944654]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463557]
(929) BroadcastExchange
Input [6]: [systemId#944649, internalUUID#944650, product#944651, plant#944652, calculationDateTime#944653, stockQuantities#944654]
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=1465605]
(930) Scan parquet
Output [2]: [marketUnit#944655, distributionCenters#944661]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(931) Filter
Input [2]: [marketUnit#944655, distributionCenters#944661]
Condition : (((marketUnit#944655 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#944661, true) > 0)) AND isnotnull(distributionCenters#944661))
(932) Project
Output [1]: [distributionCenters#944661]
Input [2]: [marketUnit#944655, distributionCenters#944661]
(933) Exchange
Input [1]: [distributionCenters#944661]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463561]
(934) Generate
Input [1]: [distributionCenters#944661]
Arguments: explode(distributionCenters#944661), false, [distributionCenters#944676]
(935) Filter
Input [1]: [distributionCenters#944676]
Condition : (((size(distributionCenters#944676.storageLocations, true) > 0) AND isnotnull(distributionCenters#944676.storageLocations)) AND isnotnull(distributionCenters#944676.internalRefUUID))
(936) Project
Output [2]: [distributionCenters#944676.internalRefUUID AS _extract_internalRefUUID#951539, distributionCenters#944676.storageLocations AS _extract_storageLocations#951540]
Input [1]: [distributionCenters#944676]
(937) Generate
Input [2]: [_extract_internalRefUUID#951539, _extract_storageLocations#951540]
Arguments: explode(_extract_storageLocations#951540), [_extract_internalRefUUID#951539], false, [storageLocations#944677]
(938) Project
Output [3]: [_extract_internalRefUUID#951539 AS plantUuid#944679, storageLocations#944677.id AS storageLocId#944680, storageLocations#944677.internalRefUUID AS storageLocUuid#944681]
Input [2]: [_extract_internalRefUUID#951539, storageLocations#944677]
(939) BroadcastExchange
Input [3]: [plantUuid#944679, storageLocId#944680, storageLocUuid#944681]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465601]
(940) Scan parquet
Output [2]: [product#944682, plant#944683]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(941) Filter
Input [2]: [product#944682, plant#944683]
Condition : isnotnull(plant#944683)
(942) Exchange
Input [2]: [product#944682, plant#944683]
Arguments: hashpartitioning(product#944682, plant#944683, 37), REPARTITION_BY_NUM, [plan_id=1464892]
(943) Scan parquet
Output [4]: [plant#944688, product#944689, productionAspect#944691, systemId#944686]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(944) Project
Output [4]: [plant#944688.internalRefUUID AS _extract_internalRefUUID#952100, product#944689.internalRefUUID AS _extract_internalRefUUID#952099, productionAspect#944691.productMovementPlants.unitOfIssue.code AS _extract_code#952101, productionAspect#944691.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952102]
Input [4]: [plant#944688, product#944689, productionAspect#944691, systemId#944686]
(945) Exchange
Input [4]: [_extract_internalRefUUID#952100, _extract_internalRefUUID#952099, _extract_code#952101, _extract_internalRefUUID#952102]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463573]
(946) Project
Output [4]: [_extract_code#952101, _extract_internalRefUUID#952102, _extract_internalRefUUID#952099, _extract_internalRefUUID#952100]
Input [4]: [_extract_internalRefUUID#952100, _extract_internalRefUUID#952099, _extract_code#952101, _extract_internalRefUUID#952102]
(947) BroadcastExchange
Input [4]: [_extract_code#952101, _extract_internalRefUUID#952102, _extract_internalRefUUID#952099, _extract_internalRefUUID#952100]
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=1465585]
(948) BroadcastHashJoin
Left keys [4]: [coalesce(product#944682, ), isnull(product#944682), coalesce(plant#944683, ), isnull(plant#944683)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952099, ), isnull(_extract_internalRefUUID#952099), coalesce(_extract_internalRefUUID#952100, ), isnull(_extract_internalRefUUID#952100)]
Join type: LeftOuter
Join condition: None
(949) Project
Output [4]: [product#944682, plant#944683, _extract_code#952101, _extract_internalRefUUID#952102]
Input [6]: [product#944682, plant#944683, _extract_code#952101, _extract_internalRefUUID#952102, _extract_internalRefUUID#952099, _extract_internalRefUUID#952100]
(950) Scan parquet
Output [4]: [internalUUID#944697, baseUnitOfMeasure#944701, unitOfMeasureConversions#944703, systemId#944696]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(951) Filter
Input [4]: [internalUUID#944697, baseUnitOfMeasure#944701, unitOfMeasureConversions#944703, systemId#944696]
Condition : isnotnull(internalUUID#944697)
(952) Project
Output [3]: [internalUUID#944697, baseUnitOfMeasure#944701, unitOfMeasureConversions#944703]
Input [4]: [internalUUID#944697, baseUnitOfMeasure#944701, unitOfMeasureConversions#944703, systemId#944696]
(953) Exchange
Input [3]: [internalUUID#944697, baseUnitOfMeasure#944701, unitOfMeasureConversions#944703]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463580]
(954) BroadcastExchange
Input [3]: [internalUUID#944697, baseUnitOfMeasure#944701, unitOfMeasureConversions#944703]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465589]
(955) BroadcastHashJoin
Left keys [1]: [product#944682]
Right keys [1]: [internalUUID#944697]
Join type: LeftOuter
Join condition: None
(956) Project
Output [2]: [plant#944683, filter(unitOfMeasureConversions#944703, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952101) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952102)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#944701.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#944701.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#944708]
Input [7]: [product#944682, plant#944683, _extract_code#952101, _extract_internalRefUUID#952102, internalUUID#944697, baseUnitOfMeasure#944701, unitOfMeasureConversions#944703]
(957) Generate
Input [2]: [plant#944683, filteredUnitOfMeasureConversions#944708]
Arguments: explode(filteredUnitOfMeasureConversions#944708.quantityNumerator), [plant#944683, filteredUnitOfMeasureConversions#944708], true, [quantityNumerator#944709]
(958) Project
Output [2]: [plant#944683, filteredUnitOfMeasureConversions#944708.quantityDenominator AS _extract_quantityDenominator#951541]
Input [3]: [plant#944683, filteredUnitOfMeasureConversions#944708, quantityNumerator#944709]
(959) Generate
Input [2]: [plant#944683, _extract_quantityDenominator#951541]
Arguments: explode(_extract_quantityDenominator#951541), [plant#944683], true, [quantityDenominator#944710]
(960) Project
Output [1]: [plant#944683]
Input [2]: [plant#944683, quantityDenominator#944710]
(961) HashAggregate
Input [1]: [plant#944683]
Keys [1]: [plant#944683]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#944683]
(962) Exchange
Input [1]: [plant#944683]
Arguments: hashpartitioning(plant#944683, 37), ENSURE_REQUIREMENTS, [plan_id=1465598]
(963) HashAggregate
Input [1]: [plant#944683]
Keys [1]: [plant#944683]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#944683]
(964) BroadcastHashJoin
Left keys [1]: [plantUuid#944679]
Right keys [1]: [plant#944683]
Join type: Inner
Join condition: None
(965) Project
Output [3]: [plantUuid#944679, storageLocId#944680, storageLocUuid#944681]
Input [4]: [plantUuid#944679, storageLocId#944680, storageLocUuid#944681, plant#944683]
(966) BroadcastHashJoin
Left keys [2]: [coalesce(plant#944652.internalRefUUID, ), isnull(plant#944652.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#944679, ), isnull(plantUuid#944679)]
Join type: Inner
Join condition: None
(967) Generate
Input [9]: [systemId#944649, internalUUID#944650, product#944651, plant#944652, calculationDateTime#944653, stockQuantities#944654, plantUuid#944679, storageLocId#944680, storageLocUuid#944681]
Arguments: explode(filter(stockQuantities#944654, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#944681) AND (lambda x#944569.storageLocation.Id = storageLocId#944680)), lambda x#944569, false))), [systemId#944649, internalUUID#944650, product#944651, plant#944652, calculationDateTime#944653, plantUuid#944679], false, [stockQuantity#944713]
(968) ObjectHashAggregate
Input [7]: [systemId#944649, internalUUID#944650, product#944651, plant#944652, calculationDateTime#944653, plantUuid#944679, stockQuantity#944713]
Keys [5]: [plantUuid#944679, internalUUID#944650, plant#944652, product#944651, systemId#944649]
Functions [2]: [partial_first(calculationDateTime#944653, false), partial_collect_list(stockQuantity#944713, 0, 0)]
Aggregate Attributes [3]: [first#953113, valueSet#953114, buf#953115]
Results [8]: [plantUuid#944679, internalUUID#944650, plant#944652, product#944651, systemId#944649, first#953116, valueSet#953117, buf#953118]
(969) ObjectHashAggregate
Input [8]: [plantUuid#944679, internalUUID#944650, plant#944652, product#944651, systemId#944649, first#953116, valueSet#953117, buf#953118]
Keys [5]: [plantUuid#944679, internalUUID#944650, plant#944652, product#944651, systemId#944649]
Functions [2]: [first(calculationDateTime#944653, false), collect_list(stockQuantity#944713, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#944653)()#944584, collect_list(stockQuantity#944713, 0, 0)#944585]
Results [4]: [product#944651, plant#944652, first(calculationDateTime#944653)()#944584 AS calculationDateTime#944714, collect_list(stockQuantity#944713, 0, 0)#944585 AS stockQuantities#944715]
(970) Filter
Input [4]: [product#944651, plant#944652, calculationDateTime#944714, stockQuantities#944715]
Condition : ((size(stockQuantities#944715, true) > 0) AND isnotnull(calculationDateTime#944714))
(971) Generate
Input [4]: [product#944651, plant#944652, calculationDateTime#944714, stockQuantities#944715]
Arguments: explode(stockQuantities#944715), [product#944651, plant#944652, calculationDateTime#944714], false, [stockQuantity#944716]
(972) Filter
Input [4]: [product#944651, plant#944652, calculationDateTime#944714, stockQuantity#944716]
Condition : (((isnotnull(stockQuantity#944716.specialStockIndicator.code) AND isnotnull(stockQuantity#944716.stockType.code)) AND (stockQuantity#944716.specialStockIndicator.code = )) AND (stockQuantity#944716.stockType.code = 01))
(973) Project
Output [4]: [plant#944652.internalRefUUID AS plantUuid#944718, product#944651.internalRefUUID AS productUuid#944720, calculationDateTime#944714, stockQuantity#944716.storagelocation.id AS storageLocId#944721]
Input [4]: [product#944651, plant#944652, calculationDateTime#944714, stockQuantity#944716]
(974) Exchange
Input [4]: [plantUuid#944718, productUuid#944720, calculationDateTime#944714, storageLocId#944721]
Arguments: hashpartitioning(productUuid#944720, plantUuid#944718, 37), ENSURE_REQUIREMENTS, [plan_id=1465627]
(975) Sort
Input [4]: [plantUuid#944718, productUuid#944720, calculationDateTime#944714, storageLocId#944721]
Arguments: [productUuid#944720 ASC NULLS FIRST, plantUuid#944718 ASC NULLS FIRST], false, 0
(976) Scan parquet
Output [3]: [product#944726, plant#944727, orderDateTime#944728]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(977) Filter
Input [3]: [product#944726, plant#944727, orderDateTime#944728]
Condition : ((isnotnull(orderDateTime#944728) AND isnotnull(plant#944727)) AND isnotnull(product#944726))
(978) Exchange
Input [3]: [product#944726, plant#944727, orderDateTime#944728]
Arguments: hashpartitioning(product#944726, plant#944727, 37), REPARTITION_BY_NUM, [plan_id=1464913]
(979) Scan parquet
Output [4]: [plant#944732, product#944733, productionAspect#944735, systemId#944730]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(980) Project
Output [4]: [plant#944732.internalRefUUID AS _extract_internalRefUUID#952106, product#944733.internalRefUUID AS _extract_internalRefUUID#952105, productionAspect#944735.productMovementPlants.unitOfIssue.code AS _extract_code#952103, productionAspect#944735.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952104]
Input [4]: [plant#944732, product#944733, productionAspect#944735, systemId#944730]
(981) Exchange
Input [4]: [_extract_internalRefUUID#952106, _extract_internalRefUUID#952105, _extract_code#952103, _extract_internalRefUUID#952104]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463605]
(982) Project
Output [4]: [_extract_code#952103, _extract_internalRefUUID#952104, _extract_internalRefUUID#952105, _extract_internalRefUUID#952106]
Input [4]: [_extract_internalRefUUID#952106, _extract_internalRefUUID#952105, _extract_code#952103, _extract_internalRefUUID#952104]
(983) BroadcastExchange
Input [4]: [_extract_code#952103, _extract_internalRefUUID#952104, _extract_internalRefUUID#952105, _extract_internalRefUUID#952106]
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=1465614]
(984) BroadcastHashJoin
Left keys [4]: [coalesce(product#944726, ), isnull(product#944726), coalesce(plant#944727, ), isnull(plant#944727)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952105, ), isnull(_extract_internalRefUUID#952105), coalesce(_extract_internalRefUUID#952106, ), isnull(_extract_internalRefUUID#952106)]
Join type: LeftOuter
Join condition: None
(985) Project
Output [5]: [product#944726, plant#944727, orderDateTime#944728, _extract_code#952103, _extract_internalRefUUID#952104]
Input [7]: [product#944726, plant#944727, orderDateTime#944728, _extract_code#952103, _extract_internalRefUUID#952104, _extract_internalRefUUID#952105, _extract_internalRefUUID#952106]
(986) Scan parquet
Output [4]: [internalUUID#944741, baseUnitOfMeasure#944745, unitOfMeasureConversions#944747, systemId#944740]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(987) Filter
Input [4]: [internalUUID#944741, baseUnitOfMeasure#944745, unitOfMeasureConversions#944747, systemId#944740]
Condition : isnotnull(internalUUID#944741)
(988) Project
Output [3]: [internalUUID#944741, baseUnitOfMeasure#944745, unitOfMeasureConversions#944747]
Input [4]: [internalUUID#944741, baseUnitOfMeasure#944745, unitOfMeasureConversions#944747, systemId#944740]
(989) Exchange
Input [3]: [internalUUID#944741, baseUnitOfMeasure#944745, unitOfMeasureConversions#944747]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463612]
(990) BroadcastExchange
Input [3]: [internalUUID#944741, baseUnitOfMeasure#944745, unitOfMeasureConversions#944747]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465618]
(991) BroadcastHashJoin
Left keys [1]: [product#944726]
Right keys [1]: [internalUUID#944741]
Join type: LeftOuter
Join condition: None
(992) Project
Output [4]: [product#944726, plant#944727, orderDateTime#944728, filter(unitOfMeasureConversions#944747, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952103) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952104)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#944745.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#944745.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#944752]
Input [8]: [product#944726, plant#944727, orderDateTime#944728, _extract_code#952103, _extract_internalRefUUID#952104, internalUUID#944741, baseUnitOfMeasure#944745, unitOfMeasureConversions#944747]
(993) Generate
Input [4]: [product#944726, plant#944727, orderDateTime#944728, filteredUnitOfMeasureConversions#944752]
Arguments: explode(filteredUnitOfMeasureConversions#944752.quantityNumerator), [product#944726, plant#944727, orderDateTime#944728, filteredUnitOfMeasureConversions#944752], true, [quantityNumerator#944753]
(994) Project
Output [4]: [product#944726, plant#944727, orderDateTime#944728, filteredUnitOfMeasureConversions#944752.quantityDenominator AS _extract_quantityDenominator#951548]
Input [5]: [product#944726, plant#944727, orderDateTime#944728, filteredUnitOfMeasureConversions#944752, quantityNumerator#944753]
(995) Generate
Input [4]: [product#944726, plant#944727, orderDateTime#944728, _extract_quantityDenominator#951548]
Arguments: explode(_extract_quantityDenominator#951548), [product#944726, plant#944727, orderDateTime#944728], true, [quantityDenominator#944754]
(996) Project
Output [3]: [product#944726, plant#944727, orderDateTime#944728]
Input [4]: [product#944726, plant#944727, orderDateTime#944728, quantityDenominator#944754]
(997) Sort
Input [3]: [product#944726, plant#944727, orderDateTime#944728]
Arguments: [product#944726 ASC NULLS FIRST, plant#944727 ASC NULLS FIRST], false, 0
(998) SortMergeJoin
Left keys [2]: [productUuid#944720, plantUuid#944718]
Right keys [2]: [product#944726, plant#944727]
Join type: Inner
Join condition: (calculationDateTime#944714 <= orderDateTime#944728)
(999) Project
Output [4]: [plantUuid#944718 AS plant#944757, productUuid#944720 AS product#944758, storageLocId#944721, calculationDateTime#944714]
Input [7]: [plantUuid#944718, productUuid#944720, calculationDateTime#944714, storageLocId#944721, product#944726, plant#944727, orderDateTime#944728]
(1000) HashAggregate
Input [4]: [plant#944757, product#944758, storageLocId#944721, calculationDateTime#944714]
Keys [3]: [plant#944757, product#944758, storageLocId#944721]
Functions [1]: [partial_max(calculationDateTime#944714)]
Aggregate Attributes [1]: [max#953111]
Results [4]: [plant#944757, product#944758, storageLocId#944721, max#953112]
(1001) HashAggregate
Input [4]: [plant#944757, product#944758, storageLocId#944721, max#953112]
Keys [3]: [plant#944757, product#944758, storageLocId#944721]
Functions [1]: [max(calculationDateTime#944714)]
Aggregate Attributes [1]: [max(calculationDateTime#944714)#944648]
Results [4]: [plant#944757, product#944758, storageLocId#944721, max(calculationDateTime#944714)#944648 AS max_calc_datetime#944642]
(1002) Exchange
Input [4]: [plant#944757, product#944758, storageLocId#944721, max_calc_datetime#944642]
Arguments: hashpartitioning(coalesce(plant#944757, ), isnull(plant#944757), coalesce(product#944758, ), isnull(product#944758), coalesce(storageLocId#944721, ), isnull(storageLocId#944721), coalesce(max_calc_datetime#944642, 1970-01-01 00:00:00), isnull(max_calc_datetime#944642), 37), ENSURE_REQUIREMENTS, [plan_id=1465637]
(1003) Sort
Input [4]: [plant#944757, product#944758, storageLocId#944721, max_calc_datetime#944642]
Arguments: [coalesce(plant#944757, ) ASC NULLS FIRST, isnull(plant#944757) ASC NULLS FIRST, coalesce(product#944758, ) ASC NULLS FIRST, isnull(product#944758) ASC NULLS FIRST, coalesce(storageLocId#944721, ) ASC NULLS FIRST, isnull(storageLocId#944721) ASC NULLS FIRST, coalesce(max_calc_datetime#944642, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#944642) ASC NULLS FIRST], false, 0
(1004) SortMergeJoin
Left keys [8]: [coalesce(plant#944640, ), isnull(plant#944640), coalesce(product#944641, ), isnull(product#944641), coalesce(storageLocId#944592, ), isnull(storageLocId#944592), coalesce(calculationDateTime#944571, 1970-01-01 00:00:00), isnull(calculationDateTime#944571)]
Right keys [8]: [coalesce(plant#944757, ), isnull(plant#944757), coalesce(product#944758, ), isnull(product#944758), coalesce(storageLocId#944721, ), isnull(storageLocId#944721), coalesce(max_calc_datetime#944642, 1970-01-01 00:00:00), isnull(max_calc_datetime#944642)]
Join type: Inner
Join condition: None
(1005) Project
Output [4]: [plant#944640, product#944641, calculationDateTime#944571, quantity#944594]
Input [9]: [plant#944640, product#944641, storageLocId#944592, calculationDateTime#944571, quantity#944594, plant#944757, product#944758, storageLocId#944721, max_calc_datetime#944642]
(1006) HashAggregate
Input [4]: [plant#944640, product#944641, calculationDateTime#944571, quantity#944594]
Keys [2]: [product#944641, plant#944640]
Functions [2]: [partial_min(calculationDateTime#944571), partial_sum(quantity#944594)]
Aggregate Attributes [2]: [min#953101, sum#953102]
Results [4]: [product#944641, plant#944640, min#953103, sum#953104]
(1007) Exchange
Input [4]: [product#944641, plant#944640, min#953103, sum#953104]
Arguments: hashpartitioning(product#944641, plant#944640, 37), ENSURE_REQUIREMENTS, [plan_id=1465644]
(1008) HashAggregate
Input [4]: [product#944641, plant#944640, min#953103, sum#953104]
Keys [2]: [product#944641, plant#944640]
Functions [2]: [min(calculationDateTime#944571), sum(quantity#944594)]
Aggregate Attributes [2]: [min(calculationDateTime#944571)#944775, sum(quantity#944594)#944774]
Results [4]: [product#944641, plant#944640, min(calculationDateTime#944571)#944775 AS minCalculationDateTime#944768, round(sum(quantity#944594)#944774, 0) AS roundedQuantitySum#944776]
(1009) Sort
Input [4]: [product#944641, plant#944640, minCalculationDateTime#944768, roundedQuantitySum#944776]
Arguments: [product#944641 ASC NULLS FIRST, plant#944640 ASC NULLS FIRST], false, 0
(1010) SortMergeJoin
Left keys [2]: [product#944305, plant#944306]
Right keys [2]: [product#944641, plant#944640]
Join type: LeftOuter
Join condition: None
(1011) Project
Output [5]: [product#944305, plant#944306, outboundUnit#944422, CASE WHEN isnotnull(minCalculationDateTime#944768) THEN minCalculationDateTime#944768 ELSE orderDateTime#944307 END AS stockDatetime#944811, CASE WHEN isnotnull(roundedQuantitySum#944776) THEN array(roundedQuantitySum#944776) ELSE [0.0] END AS stockBatchQuantities#944812]
Input [8]: [product#944305, plant#944306, orderDateTime#944307, outboundUnit#944422, product#944641, plant#944640, minCalculationDateTime#944768, roundedQuantitySum#944776]
(1012) Exchange
Input [5]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812]
Arguments: hashpartitioning(coalesce(plant#944306, ), isnull(plant#944306), coalesce(product#944305, ), isnull(product#944305), 37), ENSURE_REQUIREMENTS, [plan_id=1465798]
(1013) Sort
Input [5]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812]
Arguments: [coalesce(plant#944306, ) ASC NULLS FIRST, isnull(plant#944306) ASC NULLS FIRST, coalesce(product#944305, ) ASC NULLS FIRST, isnull(product#944305) ASC NULLS FIRST], false, 0
(1014) Scan parquet
Output [3]: [product#945954, plant#945955, orderDateTime#945956]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1015) Exchange
Input [3]: [product#945954, plant#945955, orderDateTime#945956]
Arguments: hashpartitioning(product#945954, plant#945955, 37), REPARTITION_BY_NUM, [plan_id=1463630]
(1016) Project
Output [9]: [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966]
Input [9]: [internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966, systemId#945958]
(1017) Exchange
Input [9]: [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463633]
(1018) Project
Output [1]: [struct(systemId, systemId#945958, internalUUID, internalUUID#945959, plant, plant#945960, product, product#945961, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#945962, productionAspect, productionAspect#945963, salesPlant, salesPlant#945964, listing, listing#945965, sourceOfSupplyCategory, sourceOfSupplyCategory#945966) AS productPlant#945967]
Input [9]: [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966]
(1019) BroadcastExchange
Input [1]: [productPlant#945967]
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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].plant.internalRefUUID)),false), [plan_id=1465652]
(1020) BroadcastHashJoin
Left keys [4]: [coalesce(product#945954, ), isnull(product#945954), coalesce(plant#945955, ), isnull(plant#945955)]
Right keys [4]: [coalesce(productPlant#945967.product.internalRefUUID, ), isnull(productPlant#945967.product.internalRefUUID), coalesce(productPlant#945967.plant.internalRefUUID, ), isnull(productPlant#945967.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1021) Scan parquet
Output [4]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975, systemId#945968]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1022) Filter
Input [4]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975, systemId#945968]
Condition : isnotnull(internalUUID#945969)
(1023) Project
Output [3]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975]
Input [4]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975, systemId#945968]
(1024) Exchange
Input [3]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463639]
(1025) BroadcastExchange
Input [3]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465655]
(1026) BroadcastHashJoin
Left keys [1]: [product#945954]
Right keys [1]: [internalUUID#945969]
Join type: LeftOuter
Join condition: None
(1027) Project
Output [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, filter(unitOfMeasureConversions#945975, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#945973.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#945973.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#945980]
Input [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975]
(1028) Project
Output [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, filteredUnitOfMeasureConversions#945980.quantityDenominator AS _extract_quantityDenominator#952107, filteredUnitOfMeasureConversions#945980.quantityNumerator AS _extract_quantityNumerator#952108]
Input [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, filteredUnitOfMeasureConversions#945980]
(1029) Generate
Input [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, _extract_quantityDenominator#952107, _extract_quantityNumerator#952108]
Arguments: explode(_extract_quantityNumerator#952108), [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, _extract_quantityDenominator#952107], true, [quantityNumerator#945981]
(1030) Generate
Input [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, _extract_quantityDenominator#952107, quantityNumerator#945981]
Arguments: explode(_extract_quantityDenominator#952107), [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, quantityNumerator#945981], true, [quantityDenominator#945982]
(1031) Project
Output [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, (cast(quantityNumerator#945981 as double) / cast(quantityDenominator#945982 as double)) AS outboundUnit#945983]
Input [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, quantityNumerator#945981, quantityDenominator#945982]
(1032) Project
Output [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, CASE WHEN (isnull(outboundUnit#945983) OR (outboundUnit#945983 <= 0.0)) THEN 1.0 ELSE outboundUnit#945983 END AS outboundUnit#945984]
Input [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945983]
(1033) Sort
Input [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984]
Arguments: [product#945954 ASC NULLS FIRST, plant#945955 ASC NULLS FIRST], false, 0
(1034) Scan parquet
Output [6]: [internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990, systemId#945985]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(1035) Filter
Input [6]: [internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990, systemId#945985]
Condition : (isnotnull(plant#945988.internalRefUUID) AND isnotnull(product#945987.internalRefUUID))
(1036) Project
Output [6]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990]
Input [6]: [internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990, systemId#945985]
(1037) Exchange
Input [6]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463650]
(1038) BroadcastExchange
Input [6]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990]
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=1465683]
(1039) Scan parquet
Output [2]: [marketUnit#945991, distributionCenters#945997]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1040) Filter
Input [2]: [marketUnit#945991, distributionCenters#945997]
Condition : (((marketUnit#945991 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#945997, true) > 0)) AND isnotnull(distributionCenters#945997))
(1041) Project
Output [1]: [distributionCenters#945997]
Input [2]: [marketUnit#945991, distributionCenters#945997]
(1042) Exchange
Input [1]: [distributionCenters#945997]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463654]
(1043) Generate
Input [1]: [distributionCenters#945997]
Arguments: explode(distributionCenters#945997), false, [distributionCenters#946012]
(1044) Filter
Input [1]: [distributionCenters#946012]
Condition : (((size(distributionCenters#946012.storageLocations, true) > 0) AND isnotnull(distributionCenters#946012.storageLocations)) AND isnotnull(distributionCenters#946012.internalRefUUID))
(1045) Project
Output [2]: [distributionCenters#946012.internalRefUUID AS _extract_internalRefUUID#951556, distributionCenters#946012.storageLocations AS _extract_storageLocations#951557]
Input [1]: [distributionCenters#946012]
(1046) Generate
Input [2]: [_extract_internalRefUUID#951556, _extract_storageLocations#951557]
Arguments: explode(_extract_storageLocations#951557), [_extract_internalRefUUID#951556], false, [storageLocations#946013]
(1047) Project
Output [3]: [_extract_internalRefUUID#951556 AS plantUuid#946015, storageLocations#946013.id AS storageLocId#946016, storageLocations#946013.internalRefUUID AS storageLocUuid#946017]
Input [2]: [_extract_internalRefUUID#951556, storageLocations#946013]
(1048) BroadcastExchange
Input [3]: [plantUuid#946015, storageLocId#946016, storageLocUuid#946017]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465679]
(1049) Scan parquet
Output [2]: [product#946018, plant#946019]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1050) Filter
Input [2]: [product#946018, plant#946019]
Condition : isnotnull(plant#946019)
(1051) Exchange
Input [2]: [product#946018, plant#946019]
Arguments: hashpartitioning(product#946018, plant#946019, 37), REPARTITION_BY_NUM, [plan_id=1464932]
(1052) Scan parquet
Output [4]: [plant#946024, product#946025, productionAspect#946027, systemId#946022]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(1053) Project
Output [4]: [plant#946024.internalRefUUID AS _extract_internalRefUUID#952109, product#946025.internalRefUUID AS _extract_internalRefUUID#952110, productionAspect#946027.productMovementPlants.unitOfIssue.code AS _extract_code#952111, productionAspect#946027.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952112]
Input [4]: [plant#946024, product#946025, productionAspect#946027, systemId#946022]
(1054) Exchange
Input [4]: [_extract_internalRefUUID#952109, _extract_internalRefUUID#952110, _extract_code#952111, _extract_internalRefUUID#952112]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463666]
(1055) Project
Output [4]: [_extract_code#952111, _extract_internalRefUUID#952112, _extract_internalRefUUID#952110, _extract_internalRefUUID#952109]
Input [4]: [_extract_internalRefUUID#952109, _extract_internalRefUUID#952110, _extract_code#952111, _extract_internalRefUUID#952112]
(1056) BroadcastExchange
Input [4]: [_extract_code#952111, _extract_internalRefUUID#952112, _extract_internalRefUUID#952110, _extract_internalRefUUID#952109]
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=1465663]
(1057) BroadcastHashJoin
Left keys [4]: [coalesce(product#946018, ), isnull(product#946018), coalesce(plant#946019, ), isnull(plant#946019)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952110, ), isnull(_extract_internalRefUUID#952110), coalesce(_extract_internalRefUUID#952109, ), isnull(_extract_internalRefUUID#952109)]
Join type: LeftOuter
Join condition: None
(1058) Project
Output [4]: [product#946018, plant#946019, _extract_code#952111, _extract_internalRefUUID#952112]
Input [6]: [product#946018, plant#946019, _extract_code#952111, _extract_internalRefUUID#952112, _extract_internalRefUUID#952110, _extract_internalRefUUID#952109]
(1059) Scan parquet
Output [4]: [internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039, systemId#946032]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1060) Filter
Input [4]: [internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039, systemId#946032]
Condition : isnotnull(internalUUID#946033)
(1061) Project
Output [3]: [internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039]
Input [4]: [internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039, systemId#946032]
(1062) Exchange
Input [3]: [internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463673]
(1063) BroadcastExchange
Input [3]: [internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465667]
(1064) BroadcastHashJoin
Left keys [1]: [product#946018]
Right keys [1]: [internalUUID#946033]
Join type: LeftOuter
Join condition: None
(1065) Project
Output [2]: [plant#946019, filter(unitOfMeasureConversions#946039, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952111) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952112)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946037.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946037.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946044]
Input [7]: [product#946018, plant#946019, _extract_code#952111, _extract_internalRefUUID#952112, internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039]
(1066) Generate
Input [2]: [plant#946019, filteredUnitOfMeasureConversions#946044]
Arguments: explode(filteredUnitOfMeasureConversions#946044.quantityNumerator), [plant#946019, filteredUnitOfMeasureConversions#946044], true, [quantityNumerator#946045]
(1067) Project
Output [2]: [plant#946019, filteredUnitOfMeasureConversions#946044.quantityDenominator AS _extract_quantityDenominator#951558]
Input [3]: [plant#946019, filteredUnitOfMeasureConversions#946044, quantityNumerator#946045]
(1068) Generate
Input [2]: [plant#946019, _extract_quantityDenominator#951558]
Arguments: explode(_extract_quantityDenominator#951558), [plant#946019], true, [quantityDenominator#946046]
(1069) Project
Output [1]: [plant#946019]
Input [2]: [plant#946019, quantityDenominator#946046]
(1070) HashAggregate
Input [1]: [plant#946019]
Keys [1]: [plant#946019]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946019]
(1071) Exchange
Input [1]: [plant#946019]
Arguments: hashpartitioning(plant#946019, 37), ENSURE_REQUIREMENTS, [plan_id=1465676]
(1072) HashAggregate
Input [1]: [plant#946019]
Keys [1]: [plant#946019]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946019]
(1073) BroadcastHashJoin
Left keys [1]: [plantUuid#946015]
Right keys [1]: [plant#946019]
Join type: Inner
Join condition: None
(1074) Project
Output [3]: [plantUuid#946015, storageLocId#946016, storageLocUuid#946017]
Input [4]: [plantUuid#946015, storageLocId#946016, storageLocUuid#946017, plant#946019]
(1075) BroadcastHashJoin
Left keys [2]: [coalesce(plant#945988.internalRefUUID, ), isnull(plant#945988.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#946015, ), isnull(plantUuid#946015)]
Join type: Inner
Join condition: None
(1076) Generate
Input [9]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990, plantUuid#946015, storageLocId#946016, storageLocUuid#946017]
Arguments: explode(filter(stockQuantities#945990, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#946017) AND (lambda x#944569.storageLocation.Id = storageLocId#946016)), lambda x#944569, false))), [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, plantUuid#946015], false, [stockQuantity#946049]
(1077) ObjectHashAggregate
Input [7]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, plantUuid#946015, stockQuantity#946049]
Keys [5]: [plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985]
Functions [2]: [partial_first(calculationDateTime#945989, false), partial_collect_list(stockQuantity#946049, 0, 0)]
Aggregate Attributes [3]: [first#947911, valueSet#947912, buf#947913]
Results [8]: [plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985, first#947914, valueSet#947915, buf#947916]
(1078) ObjectHashAggregate
Input [8]: [plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985, first#947914, valueSet#947915, buf#947916]
Keys [5]: [plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985]
Functions [2]: [first(calculationDateTime#945989, false), collect_list(stockQuantity#946049, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#945989)()#944584, collect_list(stockQuantity#946049, 0, 0)#944585]
Results [4]: [product#945987, plant#945988, first(calculationDateTime#945989)()#944584 AS calculationDateTime#946050, collect_list(stockQuantity#946049, 0, 0)#944585 AS stockQuantities#946051]
(1079) Filter
Input [4]: [product#945987, plant#945988, calculationDateTime#946050, stockQuantities#946051]
Condition : ((size(stockQuantities#946051, true) > 0) AND isnotnull(calculationDateTime#946050))
(1080) Generate
Input [4]: [product#945987, plant#945988, calculationDateTime#946050, stockQuantities#946051]
Arguments: explode(stockQuantities#946051), [product#945987, plant#945988, calculationDateTime#946050], false, [stockQuantity#946052]
(1081) Filter
Input [4]: [product#945987, plant#945988, calculationDateTime#946050, stockQuantity#946052]
Condition : (((isnotnull(stockQuantity#946052.specialStockIndicator.code) AND isnotnull(stockQuantity#946052.stockType.code)) AND (stockQuantity#946052.specialStockIndicator.code = )) AND (stockQuantity#946052.stockType.code = 01))
(1082) Project
Output [5]: [plant#945988.internalRefUUID AS plantUuid#946054, product#945987.internalRefUUID AS productUuid#946056, calculationDateTime#946050, stockQuantity#946052.storagelocation.id AS storageLocId#946057, stockQuantity#946052.quantity.measure AS quantity#946059]
Input [4]: [product#945987, plant#945988, calculationDateTime#946050, stockQuantity#946052]
(1083) Exchange
Input [5]: [plantUuid#946054, productUuid#946056, calculationDateTime#946050, storageLocId#946057, quantity#946059]
Arguments: hashpartitioning(productUuid#946056, plantUuid#946054, 37), ENSURE_REQUIREMENTS, [plan_id=1465705]
(1084) Sort
Input [5]: [plantUuid#946054, productUuid#946056, calculationDateTime#946050, storageLocId#946057, quantity#946059]
Arguments: [productUuid#946056 ASC NULLS FIRST, plantUuid#946054 ASC NULLS FIRST], false, 0
(1085) Scan parquet
Output [3]: [product#946062, plant#946063, orderDateTime#946064]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1086) Filter
Input [3]: [product#946062, plant#946063, orderDateTime#946064]
Condition : ((isnotnull(orderDateTime#946064) AND isnotnull(plant#946063)) AND isnotnull(product#946062))
(1087) Exchange
Input [3]: [product#946062, plant#946063, orderDateTime#946064]
Arguments: hashpartitioning(product#946062, plant#946063, 37), REPARTITION_BY_NUM, [plan_id=1464953]
(1088) Scan parquet
Output [4]: [plant#946068, product#946069, productionAspect#946071, systemId#946066]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(1089) Project
Output [4]: [plant#946068.internalRefUUID AS _extract_internalRefUUID#952116, product#946069.internalRefUUID AS _extract_internalRefUUID#952115, productionAspect#946071.productMovementPlants.unitOfIssue.code AS _extract_code#952113, productionAspect#946071.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952114]
Input [4]: [plant#946068, product#946069, productionAspect#946071, systemId#946066]
(1090) Exchange
Input [4]: [_extract_internalRefUUID#952116, _extract_internalRefUUID#952115, _extract_code#952113, _extract_internalRefUUID#952114]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463698]
(1091) Project
Output [4]: [_extract_code#952113, _extract_internalRefUUID#952114, _extract_internalRefUUID#952115, _extract_internalRefUUID#952116]
Input [4]: [_extract_internalRefUUID#952116, _extract_internalRefUUID#952115, _extract_code#952113, _extract_internalRefUUID#952114]
(1092) BroadcastExchange
Input [4]: [_extract_code#952113, _extract_internalRefUUID#952114, _extract_internalRefUUID#952115, _extract_internalRefUUID#952116]
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=1465692]
(1093) BroadcastHashJoin
Left keys [4]: [coalesce(product#946062, ), isnull(product#946062), coalesce(plant#946063, ), isnull(plant#946063)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952115, ), isnull(_extract_internalRefUUID#952115), coalesce(_extract_internalRefUUID#952116, ), isnull(_extract_internalRefUUID#952116)]
Join type: LeftOuter
Join condition: None
(1094) Project
Output [5]: [product#946062, plant#946063, orderDateTime#946064, _extract_code#952113, _extract_internalRefUUID#952114]
Input [7]: [product#946062, plant#946063, orderDateTime#946064, _extract_code#952113, _extract_internalRefUUID#952114, _extract_internalRefUUID#952115, _extract_internalRefUUID#952116]
(1095) Scan parquet
Output [4]: [internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083, systemId#946076]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1096) Filter
Input [4]: [internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083, systemId#946076]
Condition : isnotnull(internalUUID#946077)
(1097) Project
Output [3]: [internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083]
Input [4]: [internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083, systemId#946076]
(1098) Exchange
Input [3]: [internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463705]
(1099) BroadcastExchange
Input [3]: [internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465696]
(1100) BroadcastHashJoin
Left keys [1]: [product#946062]
Right keys [1]: [internalUUID#946077]
Join type: LeftOuter
Join condition: None
(1101) Project
Output [4]: [product#946062, plant#946063, orderDateTime#946064, filter(unitOfMeasureConversions#946083, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952113) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952114)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946081.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946081.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946088]
Input [8]: [product#946062, plant#946063, orderDateTime#946064, _extract_code#952113, _extract_internalRefUUID#952114, internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083]
(1102) Generate
Input [4]: [product#946062, plant#946063, orderDateTime#946064, filteredUnitOfMeasureConversions#946088]
Arguments: explode(filteredUnitOfMeasureConversions#946088.quantityNumerator), [product#946062, plant#946063, orderDateTime#946064, filteredUnitOfMeasureConversions#946088], true, [quantityNumerator#946089]
(1103) Project
Output [4]: [product#946062, plant#946063, orderDateTime#946064, filteredUnitOfMeasureConversions#946088.quantityDenominator AS _extract_quantityDenominator#951565]
Input [5]: [product#946062, plant#946063, orderDateTime#946064, filteredUnitOfMeasureConversions#946088, quantityNumerator#946089]
(1104) Generate
Input [4]: [product#946062, plant#946063, orderDateTime#946064, _extract_quantityDenominator#951565]
Arguments: explode(_extract_quantityDenominator#951565), [product#946062, plant#946063, orderDateTime#946064], true, [quantityDenominator#946090]
(1105) Project
Output [3]: [product#946062, plant#946063, orderDateTime#946064]
Input [4]: [product#946062, plant#946063, orderDateTime#946064, quantityDenominator#946090]
(1106) Sort
Input [3]: [product#946062, plant#946063, orderDateTime#946064]
Arguments: [product#946062 ASC NULLS FIRST, plant#946063 ASC NULLS FIRST], false, 0
(1107) SortMergeJoin
Left keys [2]: [productUuid#946056, plantUuid#946054]
Right keys [2]: [product#946062, plant#946063]
Join type: Inner
Join condition: (calculationDateTime#946050 <= orderDateTime#946064)
(1108) Project
Output [5]: [plantUuid#946054 AS plant#946093, productUuid#946056 AS product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
Input [8]: [plantUuid#946054, productUuid#946056, calculationDateTime#946050, storageLocId#946057, quantity#946059, product#946062, plant#946063, orderDateTime#946064]
(1109) Exchange
Input [5]: [plant#946093, product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
Arguments: hashpartitioning(coalesce(plant#946093, ), isnull(plant#946093), coalesce(product#946094, ), isnull(product#946094), coalesce(storageLocId#946057, ), isnull(storageLocId#946057), coalesce(calculationDateTime#946050, 1970-01-01 00:00:00), isnull(calculationDateTime#946050), 37), ENSURE_REQUIREMENTS, [plan_id=1465761]
(1110) Sort
Input [5]: [plant#946093, product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
Arguments: [coalesce(plant#946093, ) ASC NULLS FIRST, isnull(plant#946093) ASC NULLS FIRST, coalesce(product#946094, ) ASC NULLS FIRST, isnull(product#946094) ASC NULLS FIRST, coalesce(storageLocId#946057, ) ASC NULLS FIRST, isnull(storageLocId#946057) ASC NULLS FIRST, coalesce(calculationDateTime#946050, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#946050) ASC NULLS FIRST], false, 0
(1111) Scan parquet
Output [6]: [internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100, systemId#946095]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(1112) Filter
Input [6]: [internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100, systemId#946095]
Condition : (isnotnull(plant#946098.internalRefUUID) AND isnotnull(product#946097.internalRefUUID))
(1113) Project
Output [6]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100]
Input [6]: [internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100, systemId#946095]
(1114) Exchange
Input [6]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463717]
(1115) BroadcastExchange
Input [6]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100]
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=1465730]
(1116) Scan parquet
Output [2]: [marketUnit#946101, distributionCenters#946107]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1117) Filter
Input [2]: [marketUnit#946101, distributionCenters#946107]
Condition : (((marketUnit#946101 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#946107, true) > 0)) AND isnotnull(distributionCenters#946107))
(1118) Project
Output [1]: [distributionCenters#946107]
Input [2]: [marketUnit#946101, distributionCenters#946107]
(1119) Exchange
Input [1]: [distributionCenters#946107]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463721]
(1120) Generate
Input [1]: [distributionCenters#946107]
Arguments: explode(distributionCenters#946107), false, [distributionCenters#946122]
(1121) Filter
Input [1]: [distributionCenters#946122]
Condition : (((size(distributionCenters#946122.storageLocations, true) > 0) AND isnotnull(distributionCenters#946122.storageLocations)) AND isnotnull(distributionCenters#946122.internalRefUUID))
(1122) Project
Output [2]: [distributionCenters#946122.internalRefUUID AS _extract_internalRefUUID#951572, distributionCenters#946122.storageLocations AS _extract_storageLocations#951573]
Input [1]: [distributionCenters#946122]
(1123) Generate
Input [2]: [_extract_internalRefUUID#951572, _extract_storageLocations#951573]
Arguments: explode(_extract_storageLocations#951573), [_extract_internalRefUUID#951572], false, [storageLocations#946123]
(1124) Project
Output [3]: [_extract_internalRefUUID#951572 AS plantUuid#946125, storageLocations#946123.id AS storageLocId#946126, storageLocations#946123.internalRefUUID AS storageLocUuid#946127]
Input [2]: [_extract_internalRefUUID#951572, storageLocations#946123]
(1125) BroadcastExchange
Input [3]: [plantUuid#946125, storageLocId#946126, storageLocUuid#946127]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465726]
(1126) Scan parquet
Output [2]: [product#946128, plant#946129]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1127) Filter
Input [2]: [product#946128, plant#946129]
Condition : isnotnull(plant#946129)
(1128) Exchange
Input [2]: [product#946128, plant#946129]
Arguments: hashpartitioning(product#946128, plant#946129, 37), REPARTITION_BY_NUM, [plan_id=1464964]
(1129) Scan parquet
Output [4]: [plant#946134, product#946135, productionAspect#946137, systemId#946132]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(1130) Project
Output [4]: [plant#946134.internalRefUUID AS _extract_internalRefUUID#952120, product#946135.internalRefUUID AS _extract_internalRefUUID#952117, productionAspect#946137.productMovementPlants.unitOfIssue.code AS _extract_code#952118, productionAspect#946137.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952119]
Input [4]: [plant#946134, product#946135, productionAspect#946137, systemId#946132]
(1131) Exchange
Input [4]: [_extract_internalRefUUID#952120, _extract_internalRefUUID#952117, _extract_code#952118, _extract_internalRefUUID#952119]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463733]
(1132) Project
Output [4]: [_extract_code#952118, _extract_internalRefUUID#952119, _extract_internalRefUUID#952117, _extract_internalRefUUID#952120]
Input [4]: [_extract_internalRefUUID#952120, _extract_internalRefUUID#952117, _extract_code#952118, _extract_internalRefUUID#952119]
(1133) BroadcastExchange
Input [4]: [_extract_code#952118, _extract_internalRefUUID#952119, _extract_internalRefUUID#952117, _extract_internalRefUUID#952120]
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=1465710]
(1134) BroadcastHashJoin
Left keys [4]: [coalesce(product#946128, ), isnull(product#946128), coalesce(plant#946129, ), isnull(plant#946129)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952117, ), isnull(_extract_internalRefUUID#952117), coalesce(_extract_internalRefUUID#952120, ), isnull(_extract_internalRefUUID#952120)]
Join type: LeftOuter
Join condition: None
(1135) Project
Output [4]: [product#946128, plant#946129, _extract_code#952118, _extract_internalRefUUID#952119]
Input [6]: [product#946128, plant#946129, _extract_code#952118, _extract_internalRefUUID#952119, _extract_internalRefUUID#952117, _extract_internalRefUUID#952120]
(1136) Scan parquet
Output [4]: [internalUUID#946143, baseUnitOfMeasure#946147, unitOfMeasureConversions#946149, systemId#946142]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1137) Filter
Input [4]: [internalUUID#946143, baseUnitOfMeasure#946147, unitOfMeasureConversions#946149, systemId#946142]
Condition : isnotnull(internalUUID#946143)
(1138) Project
Output [3]: [internalUUID#946143, baseUnitOfMeasure#946147, unitOfMeasureConversions#946149]
Input [4]: [internalUUID#946143, baseUnitOfMeasure#946147, unitOfMeasureConversions#946149, systemId#946142]
(1139) Exchange
Input [3]: [internalUUID#946143, baseUnitOfMeasure#946147, unitOfMeasureConversions#946149]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463740]
(1140) BroadcastExchange
Input [3]: [internalUUID#946143, baseUnitOfMeasure#946147, unitOfMeasureConversions#946149]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465714]
(1141) BroadcastHashJoin
Left keys [1]: [product#946128]
Right keys [1]: [internalUUID#946143]
Join type: LeftOuter
Join condition: None
(1142) Project
Output [2]: [plant#946129, filter(unitOfMeasureConversions#946149, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952118) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952119)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946147.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946147.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946154]
Input [7]: [product#946128, plant#946129, _extract_code#952118, _extract_internalRefUUID#952119, internalUUID#946143, baseUnitOfMeasure#946147, unitOfMeasureConversions#946149]
(1143) Generate
Input [2]: [plant#946129, filteredUnitOfMeasureConversions#946154]
Arguments: explode(filteredUnitOfMeasureConversions#946154.quantityNumerator), [plant#946129, filteredUnitOfMeasureConversions#946154], true, [quantityNumerator#946155]
(1144) Project
Output [2]: [plant#946129, filteredUnitOfMeasureConversions#946154.quantityDenominator AS _extract_quantityDenominator#951574]
Input [3]: [plant#946129, filteredUnitOfMeasureConversions#946154, quantityNumerator#946155]
(1145) Generate
Input [2]: [plant#946129, _extract_quantityDenominator#951574]
Arguments: explode(_extract_quantityDenominator#951574), [plant#946129], true, [quantityDenominator#946156]
(1146) Project
Output [1]: [plant#946129]
Input [2]: [plant#946129, quantityDenominator#946156]
(1147) HashAggregate
Input [1]: [plant#946129]
Keys [1]: [plant#946129]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946129]
(1148) Exchange
Input [1]: [plant#946129]
Arguments: hashpartitioning(plant#946129, 37), ENSURE_REQUIREMENTS, [plan_id=1465723]
(1149) HashAggregate
Input [1]: [plant#946129]
Keys [1]: [plant#946129]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946129]
(1150) BroadcastHashJoin
Left keys [1]: [plantUuid#946125]
Right keys [1]: [plant#946129]
Join type: Inner
Join condition: None
(1151) Project
Output [3]: [plantUuid#946125, storageLocId#946126, storageLocUuid#946127]
Input [4]: [plantUuid#946125, storageLocId#946126, storageLocUuid#946127, plant#946129]
(1152) BroadcastHashJoin
Left keys [2]: [coalesce(plant#946098.internalRefUUID, ), isnull(plant#946098.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#946125, ), isnull(plantUuid#946125)]
Join type: Inner
Join condition: None
(1153) Generate
Input [9]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100, plantUuid#946125, storageLocId#946126, storageLocUuid#946127]
Arguments: explode(filter(stockQuantities#946100, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#946127) AND (lambda x#944569.storageLocation.Id = storageLocId#946126)), lambda x#944569, false))), [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, plantUuid#946125], false, [stockQuantity#946159]
(1154) ObjectHashAggregate
Input [7]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, plantUuid#946125, stockQuantity#946159]
Keys [5]: [plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095]
Functions [2]: [partial_first(calculationDateTime#946099, false), partial_collect_list(stockQuantity#946159, 0, 0)]
Aggregate Attributes [3]: [first#947919, valueSet#947920, buf#947921]
Results [8]: [plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095, first#947922, valueSet#947923, buf#947924]
(1155) ObjectHashAggregate
Input [8]: [plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095, first#947922, valueSet#947923, buf#947924]
Keys [5]: [plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095]
Functions [2]: [first(calculationDateTime#946099, false), collect_list(stockQuantity#946159, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#946099)()#944584, collect_list(stockQuantity#946159, 0, 0)#944585]
Results [4]: [product#946097, plant#946098, first(calculationDateTime#946099)()#944584 AS calculationDateTime#946160, collect_list(stockQuantity#946159, 0, 0)#944585 AS stockQuantities#946161]
(1156) Filter
Input [4]: [product#946097, plant#946098, calculationDateTime#946160, stockQuantities#946161]
Condition : ((size(stockQuantities#946161, true) > 0) AND isnotnull(calculationDateTime#946160))
(1157) Generate
Input [4]: [product#946097, plant#946098, calculationDateTime#946160, stockQuantities#946161]
Arguments: explode(stockQuantities#946161), [product#946097, plant#946098, calculationDateTime#946160], false, [stockQuantity#946162]
(1158) Filter
Input [4]: [product#946097, plant#946098, calculationDateTime#946160, stockQuantity#946162]
Condition : (((isnotnull(stockQuantity#946162.specialStockIndicator.code) AND isnotnull(stockQuantity#946162.stockType.code)) AND (stockQuantity#946162.specialStockIndicator.code = )) AND (stockQuantity#946162.stockType.code = 01))
(1159) Project
Output [4]: [plant#946098.internalRefUUID AS plantUuid#946164, product#946097.internalRefUUID AS productUuid#946166, calculationDateTime#946160, stockQuantity#946162.storagelocation.id AS storageLocId#946167]
Input [4]: [product#946097, plant#946098, calculationDateTime#946160, stockQuantity#946162]
(1160) Exchange
Input [4]: [plantUuid#946164, productUuid#946166, calculationDateTime#946160, storageLocId#946167]
Arguments: hashpartitioning(productUuid#946166, plantUuid#946164, 37), ENSURE_REQUIREMENTS, [plan_id=1465752]
(1161) Sort
Input [4]: [plantUuid#946164, productUuid#946166, calculationDateTime#946160, storageLocId#946167]
Arguments: [productUuid#946166 ASC NULLS FIRST, plantUuid#946164 ASC NULLS FIRST], false, 0
(1162) Scan parquet
Output [3]: [product#946172, plant#946173, orderDateTime#946174]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1163) Filter
Input [3]: [product#946172, plant#946173, orderDateTime#946174]
Condition : ((isnotnull(orderDateTime#946174) AND isnotnull(plant#946173)) AND isnotnull(product#946172))
(1164) Exchange
Input [3]: [product#946172, plant#946173, orderDateTime#946174]
Arguments: hashpartitioning(product#946172, plant#946173, 37), REPARTITION_BY_NUM, [plan_id=1464985]
(1165) Scan parquet
Output [4]: [plant#946178, product#946179, productionAspect#946181, systemId#946176]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(1166) Project
Output [4]: [plant#946178.internalRefUUID AS _extract_internalRefUUID#952122, product#946179.internalRefUUID AS _extract_internalRefUUID#952121, productionAspect#946181.productMovementPlants.unitOfIssue.code AS _extract_code#952123, productionAspect#946181.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952124]
Input [4]: [plant#946178, product#946179, productionAspect#946181, systemId#946176]
(1167) Exchange
Input [4]: [_extract_internalRefUUID#952122, _extract_internalRefUUID#952121, _extract_code#952123, _extract_internalRefUUID#952124]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463765]
(1168) Project
Output [4]: [_extract_code#952123, _extract_internalRefUUID#952124, _extract_internalRefUUID#952121, _extract_internalRefUUID#952122]
Input [4]: [_extract_internalRefUUID#952122, _extract_internalRefUUID#952121, _extract_code#952123, _extract_internalRefUUID#952124]
(1169) BroadcastExchange
Input [4]: [_extract_code#952123, _extract_internalRefUUID#952124, _extract_internalRefUUID#952121, _extract_internalRefUUID#952122]
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=1465739]
(1170) BroadcastHashJoin
Left keys [4]: [coalesce(product#946172, ), isnull(product#946172), coalesce(plant#946173, ), isnull(plant#946173)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952121, ), isnull(_extract_internalRefUUID#952121), coalesce(_extract_internalRefUUID#952122, ), isnull(_extract_internalRefUUID#952122)]
Join type: LeftOuter
Join condition: None
(1171) Project
Output [5]: [product#946172, plant#946173, orderDateTime#946174, _extract_code#952123, _extract_internalRefUUID#952124]
Input [7]: [product#946172, plant#946173, orderDateTime#946174, _extract_code#952123, _extract_internalRefUUID#952124, _extract_internalRefUUID#952121, _extract_internalRefUUID#952122]
(1172) Scan parquet
Output [4]: [internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193, systemId#946186]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1173) Filter
Input [4]: [internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193, systemId#946186]
Condition : isnotnull(internalUUID#946187)
(1174) Project
Output [3]: [internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193]
Input [4]: [internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193, systemId#946186]
(1175) Exchange
Input [3]: [internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463772]
(1176) BroadcastExchange
Input [3]: [internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465743]
(1177) BroadcastHashJoin
Left keys [1]: [product#946172]
Right keys [1]: [internalUUID#946187]
Join type: LeftOuter
Join condition: None
(1178) Project
Output [4]: [product#946172, plant#946173, orderDateTime#946174, filter(unitOfMeasureConversions#946193, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952123) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952124)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946191.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946191.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946198]
Input [8]: [product#946172, plant#946173, orderDateTime#946174, _extract_code#952123, _extract_internalRefUUID#952124, internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193]
(1179) Generate
Input [4]: [product#946172, plant#946173, orderDateTime#946174, filteredUnitOfMeasureConversions#946198]
Arguments: explode(filteredUnitOfMeasureConversions#946198.quantityNumerator), [product#946172, plant#946173, orderDateTime#946174, filteredUnitOfMeasureConversions#946198], true, [quantityNumerator#946199]
(1180) Project
Output [4]: [product#946172, plant#946173, orderDateTime#946174, filteredUnitOfMeasureConversions#946198.quantityDenominator AS _extract_quantityDenominator#951581]
Input [5]: [product#946172, plant#946173, orderDateTime#946174, filteredUnitOfMeasureConversions#946198, quantityNumerator#946199]
(1181) Generate
Input [4]: [product#946172, plant#946173, orderDateTime#946174, _extract_quantityDenominator#951581]
Arguments: explode(_extract_quantityDenominator#951581), [product#946172, plant#946173, orderDateTime#946174], true, [quantityDenominator#946200]
(1182) Project
Output [3]: [product#946172, plant#946173, orderDateTime#946174]
Input [4]: [product#946172, plant#946173, orderDateTime#946174, quantityDenominator#946200]
(1183) Sort
Input [3]: [product#946172, plant#946173, orderDateTime#946174]
Arguments: [product#946172 ASC NULLS FIRST, plant#946173 ASC NULLS FIRST], false, 0
(1184) SortMergeJoin
Left keys [2]: [productUuid#946166, plantUuid#946164]
Right keys [2]: [product#946172, plant#946173]
Join type: Inner
Join condition: (calculationDateTime#946160 <= orderDateTime#946174)
(1185) Project
Output [4]: [plantUuid#946164 AS plant#946203, productUuid#946166 AS product#946204, storageLocId#946167, calculationDateTime#946160]
Input [7]: [plantUuid#946164, productUuid#946166, calculationDateTime#946160, storageLocId#946167, product#946172, plant#946173, orderDateTime#946174]
(1186) HashAggregate
Input [4]: [plant#946203, product#946204, storageLocId#946167, calculationDateTime#946160]
Keys [3]: [plant#946203, product#946204, storageLocId#946167]
Functions [1]: [partial_max(calculationDateTime#946160)]
Aggregate Attributes [1]: [max#947917]
Results [4]: [plant#946203, product#946204, storageLocId#946167, max#947918]
(1187) HashAggregate
Input [4]: [plant#946203, product#946204, storageLocId#946167, max#947918]
Keys [3]: [plant#946203, product#946204, storageLocId#946167]
Functions [1]: [max(calculationDateTime#946160)]
Aggregate Attributes [1]: [max(calculationDateTime#946160)#944648]
Results [4]: [plant#946203, product#946204, storageLocId#946167, max(calculationDateTime#946160)#944648 AS max_calc_datetime#946205]
(1188) Exchange
Input [4]: [plant#946203, product#946204, storageLocId#946167, max_calc_datetime#946205]
Arguments: hashpartitioning(coalesce(plant#946203, ), isnull(plant#946203), coalesce(product#946204, ), isnull(product#946204), coalesce(storageLocId#946167, ), isnull(storageLocId#946167), coalesce(max_calc_datetime#946205, 1970-01-01 00:00:00), isnull(max_calc_datetime#946205), 37), ENSURE_REQUIREMENTS, [plan_id=1465762]
(1189) Sort
Input [4]: [plant#946203, product#946204, storageLocId#946167, max_calc_datetime#946205]
Arguments: [coalesce(plant#946203, ) ASC NULLS FIRST, isnull(plant#946203) ASC NULLS FIRST, coalesce(product#946204, ) ASC NULLS FIRST, isnull(product#946204) ASC NULLS FIRST, coalesce(storageLocId#946167, ) ASC NULLS FIRST, isnull(storageLocId#946167) ASC NULLS FIRST, coalesce(max_calc_datetime#946205, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#946205) ASC NULLS FIRST], false, 0
(1190) SortMergeJoin
Left keys [8]: [coalesce(plant#946093, ), isnull(plant#946093), coalesce(product#946094, ), isnull(product#946094), coalesce(storageLocId#946057, ), isnull(storageLocId#946057), coalesce(calculationDateTime#946050, 1970-01-01 00:00:00), isnull(calculationDateTime#946050)]
Right keys [8]: [coalesce(plant#946203, ), isnull(plant#946203), coalesce(product#946204, ), isnull(product#946204), coalesce(storageLocId#946167, ), isnull(storageLocId#946167), coalesce(max_calc_datetime#946205, 1970-01-01 00:00:00), isnull(max_calc_datetime#946205)]
Join type: Inner
Join condition: None
(1191) Project
Output [4]: [plant#946093, product#946094, calculationDateTime#946050, quantity#946059]
Input [9]: [plant#946093, product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059, plant#946203, product#946204, storageLocId#946167, max_calc_datetime#946205]
(1192) HashAggregate
Input [4]: [plant#946093, product#946094, calculationDateTime#946050, quantity#946059]
Keys [2]: [product#946094, plant#946093]
Functions [2]: [partial_min(calculationDateTime#946050), partial_sum(quantity#946059)]
Aggregate Attributes [2]: [min#947907, sum#947908]
Results [4]: [product#946094, plant#946093, min#947909, sum#947910]
(1193) Exchange
Input [4]: [product#946094, plant#946093, min#947909, sum#947910]
Arguments: hashpartitioning(product#946094, plant#946093, 37), ENSURE_REQUIREMENTS, [plan_id=1465769]
(1194) HashAggregate
Input [4]: [product#946094, plant#946093, min#947909, sum#947910]
Keys [2]: [product#946094, plant#946093]
Functions [2]: [min(calculationDateTime#946050), sum(quantity#946059)]
Aggregate Attributes [2]: [min(calculationDateTime#946050)#944775, sum(quantity#946059)#944774]
Results [4]: [product#946094, plant#946093, min(calculationDateTime#946050)#944775 AS minCalculationDateTime#946207, round(sum(quantity#946059)#944774, 0) AS roundedQuantitySum#946208]
(1195) Sort
Input [4]: [product#946094, plant#946093, minCalculationDateTime#946207, roundedQuantitySum#946208]
Arguments: [product#946094 ASC NULLS FIRST, plant#946093 ASC NULLS FIRST], false, 0
(1196) SortMergeJoin
Left keys [2]: [product#945954, plant#945955]
Right keys [2]: [product#946094, plant#946093]
Join type: LeftOuter
Join condition: None
(1197) Project
Output [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, CASE WHEN isnotnull(minCalculationDateTime#946207) THEN minCalculationDateTime#946207 ELSE orderDateTime#945956 END AS stockDatetime#946209, CASE WHEN isnotnull(roundedQuantitySum#946208) THEN array(roundedQuantitySum#946208) ELSE [0.0] END AS stockBatchQuantities#946210]
Input [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, product#946094, plant#946093, minCalculationDateTime#946207, roundedQuantitySum#946208]
(1198) Exchange
Input [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210]
Arguments: hashpartitioning(coalesce(plant#945955, ), isnull(plant#945955), coalesce(product#945954, ), isnull(product#945954), 37), ENSURE_REQUIREMENTS, [plan_id=1465779]
(1199) Sort
Input [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210]
Arguments: [coalesce(plant#945955, ) ASC NULLS FIRST, isnull(plant#945955) ASC NULLS FIRST, coalesce(product#945954, ) ASC NULLS FIRST, isnull(product#945954) ASC NULLS FIRST], false, 0
(1200) Exchange
Input [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
Arguments: hashpartitioning(coalesce(plant#944815, ), isnull(plant#944815), coalesce(product#944814, ), isnull(product#944814), 37), ENSURE_REQUIREMENTS, [plan_id=1465780]
(1201) Sort
Input [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
Arguments: [coalesce(plant#944815, ) ASC NULLS FIRST, isnull(plant#944815) ASC NULLS FIRST, coalesce(product#944814, ) ASC NULLS FIRST, isnull(product#944814) ASC NULLS FIRST], false, 0
(1202) SortMergeJoin
Left keys [4]: [coalesce(plant#945955, ), isnull(plant#945955), coalesce(product#945954, ), isnull(product#945954)]
Right keys [4]: [coalesce(plant#944815, ), isnull(plant#944815), coalesce(product#944814, ), isnull(product#944814)]
Join type: LeftOuter
Join condition: None
(1203) Project
Output [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, CASE WHEN isnotnull(product#944814) THEN struct(demandChannel, demandChannel#944816, demandStream, demandStream#944817, considerVariance, considerVariance#944818, demandTimeBuckets, demandTimeBuckets#944819, demandPointInTimeStart, demandPointInTimeStart#944820, demandPointInTimeEnd, demandPointInTimeEnd#944821, demandPointInTime, demandPointInTime#944822) END AS rawDemands#944824]
Input [16]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
(1204) ObjectHashAggregate
Input [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, rawDemands#944824]
Keys [8]: [product#945954, plant#945955, orderDateTime#945956, knownfloatingpointnormalized(if (isnull(productPlant#945967)) null else named_struct(systemId, productPlant#945967.systemId, internalUUID, productPlant#945967.internalUUID, plant, productPlant#945967.plant, product, productPlant#945967.product, blockedForReplenishmentStartingFrom, productPlant#945967.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#945967.productionAspect)) null else named_struct(productMovementPlants, productPlant#945967.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#945967.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#945967.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#945967.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#945967.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#945967.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#945967.salesPlant, listing, productPlant#945967.listing, sourceOfSupplyCategory, productPlant#945967.sourceOfSupplyCategory)) AS productPlant#945967, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#945984)) AS outboundUnit#945984, stockDatetime#946209, knownfloatingpointnormalized(transform(stockBatchQuantities#946210, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#953120)), lambda arg#953120, false))) AS stockBatchQuantities#946210, [7226582400000000] AS [7226582400000000]#953119]
Functions [1]: [partial_collect_list(rawDemands#944824, 0, 0)]
Aggregate Attributes [1]: [buf#947905]
Results [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#953119, buf#947906]
(1205) Exchange
Input [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#953119, buf#947906]
Arguments: hashpartitioning(product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#953119, 37), ENSURE_REQUIREMENTS, [plan_id=1465787]
(1206) ObjectHashAggregate
Input [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#953119, buf#947906]
Keys [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#953119]
Functions [1]: [collect_list(rawDemands#944824, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#944824, 0, 0)#944844]
Results [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, collect_list(rawDemands#944824, 0, 0)#944844 AS rawDemands#944825]
(1207) Project
Output [2]: [internalUUID#945905, address#945911.timeZone.code AS timezonecode#945917]
Input [3]: [internalUUID#945905, address#945911, systemId#945904]
(1208) Exchange
Input [2]: [internalUUID#945905, timezonecode#945917]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463796]
(1209) BroadcastExchange
Input [2]: [internalUUID#945905, timezonecode#945917]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1465790]
(1210) BroadcastHashJoin
Left keys [2]: [coalesce(plant#945955, ), isnull(plant#945955)]
Right keys [2]: [coalesce(internalUUID#945905, ), isnull(internalUUID#945905)]
Join type: LeftOuter
Join condition: None
(1211) Project
Output [10]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#946211, rawDemands#944825, CASE WHEN isnotnull(timezonecode#945917) THEN timezonecode#945917 ELSE UTC END AS timezonecode#945919]
Input [10]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, rawDemands#944825, internalUUID#945905, timezonecode#945917]
(1212) DeserializeToObject
Input [10]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, stockBatchShelfLifeEndDatetimes#946211, rawDemands#944825, timezonecode#945919]
Arguments: createexternalrow(invoke(product#945954.toString()), invoke(plant#945955.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#945956)), if (isnull(productPlant#945967)) null else createexternalrow(invoke(productPlant#945967.systemId.toString()), invoke(productPlant#945967.internalUUID.toString()), if (isnull(productPlant#945967.plant)) null else createexternalrow(invoke(productPlant#945967.plant.internalRefUUID.toString()), invoke(productPlant#945967.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#945967.product)) null else createexternalrow(invoke(productPlant#945967.product.internalRefUUID.toString()), invoke(productPlant#945967.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#945967.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#945967.productionAspect)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#945967.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#945967.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#945967.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)), if (isnull(productPlant#945967.salesPlant)) null else createexternalrow(if (isnull(productPlant#945967.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#945967.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#945967.salesPlant.loadingGroup.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#945967.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#945967.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#945967.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#945967.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), 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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#945984)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#946209)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#946210, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#946211, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14), createexternalrow(invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandChannel.toString()), invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).demandVariance)), StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandTimeBuckets, Some(class scala.collection.mutable.ArraySeq)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandPointInTimeStart)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).demandVariance)), StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandPointInTime, Some(class scala.collection.mutable.ArraySeq)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)), rawDemands#944825, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#945919.toString()), 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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),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), StructField(timezonecode,StringType,true)), obj#945940: org.apache.spark.sql.Row
(1213) MapElements
Input [1]: [obj#945940]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@353c8b73, obj#945945: org.apache.spark.sql.Row
(1214) SerializeFromObject
Input [1]: [obj#945945]
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#945950, 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#945951, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)))) null else named_struct(demandChannel, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(0))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 0, demandChannel), StringType, ObjectType(class java.lang.String)))), demandStream, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(1))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 1, demandStream), StringType, ObjectType(class java.lang.String)))), considerVariance, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(2))) null else invoke(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 2, considerVariance), BooleanType, ObjectType(class java.lang.Boolean)).booleanValue()), demandValues, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(3))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -2), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -2), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)), None), demandVariances, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(4))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -3), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -3), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)), None), anchorDatetimes, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(5))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -4), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -4), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 5, anchorDatetimes), ArrayType(TimestampType,false), ObjectType(class java.lang.Object)), None), anchorWeekdays, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(6))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -5), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -5), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 6, anchorWeekdays), ArrayType(StringType,false), ObjectType(class java.lang.Object)), None), anchorIndices, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(7))) null else if (invoke(class [I.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 7, anchorIndices), ArrayType(IntegerType,false), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 7, anchorIndices), ArrayType(IntegerType,false), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -6), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -6), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 7, anchorIndices), ArrayType(IntegerType,false), ObjectType(class java.lang.Object)), None))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 2, dayBucketDemands), ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandValues,ArrayType(DoubleType,false),true),StructField(demandVariances,ArrayType(DoubleType,true),true),StructField(anchorDatetimes,ArrayType(TimestampType,false),true),StructField(anchorWeekdays,ArrayType(StringType,false),true),StructField(anchorIndices,ArrayType(IntegerType,false),true)),false), ObjectType(class java.lang.Object)), None) AS dayBucketDemands#945952, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)))) null else named_struct(demandChannel, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(0))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 0, demandChannel), StringType, ObjectType(class java.lang.String)))), demandStream, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(1))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 1, demandStream), StringType, ObjectType(class java.lang.String)))), considerVariance, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(2))) null else invoke(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 2, considerVariance), BooleanType, ObjectType(class java.lang.Boolean)).booleanValue()), demandDatetimes, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -8), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -8), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandDatetimes), ArrayType(TimestampType,false), ObjectType(class java.lang.Object)), None), demandValues, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(4))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -9), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -9), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)), None), demandVariances, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(5))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 5, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 5, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -10), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -10), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 5, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)), None), horizonStartDatetime, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(6))) null else static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 6, horizonStartDatetime), TimestampType, ObjectType(class java.sql.Timestamp)))), horizonEndDatetime, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(7))) null else static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 7, horizonEndDatetime), TimestampType, ObjectType(class java.sql.Timestamp)))))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 3, pointInTimeDemands), ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandDatetimes,ArrayType(TimestampType,false),true),StructField(demandValues,ArrayType(DoubleType,false),true),StructField(demandVariances,ArrayType(DoubleType,true),true),StructField(horizonStartDatetime,TimestampType,true),StructField(horizonEndDatetime,TimestampType,true)),false), ObjectType(class java.lang.Object)), None) AS pointInTimeDemands#945953]
(1215) Exchange
Input [4]: [product#945950, plant#945951, dayBucketDemands#945952, pointInTimeDemands#945953]
Arguments: hashpartitioning(coalesce(plant#945951, ), isnull(plant#945951), coalesce(product#945950, ), isnull(product#945950), 37), ENSURE_REQUIREMENTS, [plan_id=1465799]
(1216) Sort
Input [4]: [product#945950, plant#945951, dayBucketDemands#945952, pointInTimeDemands#945953]
Arguments: [coalesce(plant#945951, ) ASC NULLS FIRST, isnull(plant#945951) ASC NULLS FIRST, coalesce(product#945950, ) ASC NULLS FIRST, isnull(product#945950) ASC NULLS FIRST], false, 0
(1217) SortMergeJoin
Left keys [4]: [coalesce(plant#944306, ), isnull(plant#944306), coalesce(product#944305, ), isnull(product#944305)]
Right keys [4]: [coalesce(plant#945951, ), isnull(plant#945951), coalesce(product#945950, ), isnull(product#945950)]
Join type: LeftOuter
Join condition: None
(1218) Project
Output [7]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, dayBucketDemands#945952, pointInTimeDemands#945953]
Input [9]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, product#945950, plant#945951, dayBucketDemands#945952, pointInTimeDemands#945953]
(1219) Exchange
Input [7]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, dayBucketDemands#945952, pointInTimeDemands#945953]
Arguments: hashpartitioning(product#944305, plant#944306, 37), ENSURE_REQUIREMENTS, [plan_id=1466098]
(1220) Sort
Input [7]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, dayBucketDemands#945952, pointInTimeDemands#945953]
Arguments: [product#944305 ASC NULLS FIRST, plant#944306 ASC NULLS FIRST], false, 0
(1221) Filter
Input [3]: [product#946271, plant#946270, openGoodsMovements#946371]
Condition : (isnotnull(product#946271) AND isnotnull(plant#946270))
(1222) Scan parquet
Output [3]: [product#947969, plant#947970, orderDateTime#947971]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1223) Filter
Input [3]: [product#947969, plant#947970, orderDateTime#947971]
Condition : isnotnull(plant#947970)
(1224) Exchange
Input [3]: [product#947969, plant#947970, orderDateTime#947971]
Arguments: hashpartitioning(product#947969, plant#947970, 37), REPARTITION_BY_NUM, [plan_id=1465015]
(1225) Scan parquet
Output [4]: [plant#947975, product#947976, productionAspect#947978, systemId#947973]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(1226) Project
Output [4]: [plant#947975.internalRefUUID AS _extract_internalRefUUID#952128, product#947976.internalRefUUID AS _extract_internalRefUUID#952125, productionAspect#947978.productMovementPlants.unitOfIssue.code AS _extract_code#952126, productionAspect#947978.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952127]
Input [4]: [plant#947975, product#947976, productionAspect#947978, systemId#947973]
(1227) Exchange
Input [4]: [_extract_internalRefUUID#952128, _extract_internalRefUUID#952125, _extract_code#952126, _extract_internalRefUUID#952127]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463812]
(1228) Project
Output [4]: [_extract_code#952126, _extract_internalRefUUID#952127, _extract_internalRefUUID#952125, _extract_internalRefUUID#952128]
Input [4]: [_extract_internalRefUUID#952128, _extract_internalRefUUID#952125, _extract_code#952126, _extract_internalRefUUID#952127]
(1229) BroadcastExchange
Input [4]: [_extract_code#952126, _extract_internalRefUUID#952127, _extract_internalRefUUID#952125, _extract_internalRefUUID#952128]
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=1465804]
(1230) BroadcastHashJoin
Left keys [4]: [coalesce(product#947969, ), isnull(product#947969), coalesce(plant#947970, ), isnull(plant#947970)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952125, ), isnull(_extract_internalRefUUID#952125), coalesce(_extract_internalRefUUID#952128, ), isnull(_extract_internalRefUUID#952128)]
Join type: LeftOuter
Join condition: None
(1231) Project
Output [5]: [product#947969, plant#947970, orderDateTime#947971, _extract_code#952126, _extract_internalRefUUID#952127]
Input [7]: [product#947969, plant#947970, orderDateTime#947971, _extract_code#952126, _extract_internalRefUUID#952127, _extract_internalRefUUID#952125, _extract_internalRefUUID#952128]
(1232) Scan parquet
Output [4]: [internalUUID#947984, baseUnitOfMeasure#947988, unitOfMeasureConversions#947990, systemId#947983]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1233) Filter
Input [4]: [internalUUID#947984, baseUnitOfMeasure#947988, unitOfMeasureConversions#947990, systemId#947983]
Condition : isnotnull(internalUUID#947984)
(1234) Project
Output [3]: [internalUUID#947984, baseUnitOfMeasure#947988, unitOfMeasureConversions#947990]
Input [4]: [internalUUID#947984, baseUnitOfMeasure#947988, unitOfMeasureConversions#947990, systemId#947983]
(1235) Exchange
Input [3]: [internalUUID#947984, baseUnitOfMeasure#947988, unitOfMeasureConversions#947990]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463819]
(1236) BroadcastExchange
Input [3]: [internalUUID#947984, baseUnitOfMeasure#947988, unitOfMeasureConversions#947990]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465808]
(1237) BroadcastHashJoin
Left keys [1]: [product#947969]
Right keys [1]: [internalUUID#947984]
Join type: LeftOuter
Join condition: None
(1238) Project
Output [4]: [product#947969, plant#947970, orderDateTime#947971, filter(unitOfMeasureConversions#947990, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952126) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952127)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#947988.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#947988.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#947995]
Input [8]: [product#947969, plant#947970, orderDateTime#947971, _extract_code#952126, _extract_internalRefUUID#952127, internalUUID#947984, baseUnitOfMeasure#947988, unitOfMeasureConversions#947990]
(1239) Generate
Input [4]: [product#947969, plant#947970, orderDateTime#947971, filteredUnitOfMeasureConversions#947995]
Arguments: explode(filteredUnitOfMeasureConversions#947995.quantityNumerator), [product#947969, plant#947970, orderDateTime#947971, filteredUnitOfMeasureConversions#947995], true, [quantityNumerator#947996]
(1240) Project
Output [4]: [product#947969, plant#947970, orderDateTime#947971, filteredUnitOfMeasureConversions#947995.quantityDenominator AS _extract_quantityDenominator#951589]
Input [5]: [product#947969, plant#947970, orderDateTime#947971, filteredUnitOfMeasureConversions#947995, quantityNumerator#947996]
(1241) Generate
Input [4]: [product#947969, plant#947970, orderDateTime#947971, _extract_quantityDenominator#951589]
Arguments: explode(_extract_quantityDenominator#951589), [product#947969, plant#947970, orderDateTime#947971], true, [quantityDenominator#947997]
(1242) Project
Output [3]: [product#947969, plant#947970, orderDateTime#947971]
Input [4]: [product#947969, plant#947970, orderDateTime#947971, quantityDenominator#947997]
(1243) Sort
Input [3]: [product#947969, plant#947970, orderDateTime#947971]
Arguments: [product#947969 ASC NULLS FIRST, plant#947970 ASC NULLS FIRST], false, 0
(1244) Scan parquet
Output [6]: [internalUUID#948001, product#948002, plant#948003, calculationDateTime#948004, stockQuantities#948005, systemId#948000]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(1245) Filter
Input [6]: [internalUUID#948001, product#948002, plant#948003, calculationDateTime#948004, stockQuantities#948005, systemId#948000]
Condition : (isnotnull(plant#948003.internalRefUUID) AND isnotnull(product#948002.internalRefUUID))
(1246) Project
Output [6]: [systemId#948000, internalUUID#948001, product#948002, plant#948003, calculationDateTime#948004, stockQuantities#948005]
Input [6]: [internalUUID#948001, product#948002, plant#948003, calculationDateTime#948004, stockQuantities#948005, systemId#948000]
(1247) Exchange
Input [6]: [systemId#948000, internalUUID#948001, product#948002, plant#948003, calculationDateTime#948004, stockQuantities#948005]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463829]
(1248) BroadcastExchange
Input [6]: [systemId#948000, internalUUID#948001, product#948002, plant#948003, calculationDateTime#948004, stockQuantities#948005]
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=1465835]
(1249) Scan parquet
Output [2]: [marketUnit#948006, distributionCenters#948012]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1250) Filter
Input [2]: [marketUnit#948006, distributionCenters#948012]
Condition : (((marketUnit#948006 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#948012, true) > 0)) AND isnotnull(distributionCenters#948012))
(1251) Project
Output [1]: [distributionCenters#948012]
Input [2]: [marketUnit#948006, distributionCenters#948012]
(1252) Exchange
Input [1]: [distributionCenters#948012]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463833]
(1253) Generate
Input [1]: [distributionCenters#948012]
Arguments: explode(distributionCenters#948012), false, [distributionCenters#948027]
(1254) Filter
Input [1]: [distributionCenters#948027]
Condition : (((size(distributionCenters#948027.storageLocations, true) > 0) AND isnotnull(distributionCenters#948027.storageLocations)) AND isnotnull(distributionCenters#948027.internalRefUUID))
(1255) Project
Output [2]: [distributionCenters#948027.internalRefUUID AS _extract_internalRefUUID#951596, distributionCenters#948027.storageLocations AS _extract_storageLocations#951597]
Input [1]: [distributionCenters#948027]
(1256) Generate
Input [2]: [_extract_internalRefUUID#951596, _extract_storageLocations#951597]
Arguments: explode(_extract_storageLocations#951597), [_extract_internalRefUUID#951596], false, [storageLocations#948028]
(1257) Project
Output [3]: [_extract_internalRefUUID#951596 AS plantUuid#948030, storageLocations#948028.id AS storageLocId#948031, storageLocations#948028.internalRefUUID AS storageLocUuid#948032]
Input [2]: [_extract_internalRefUUID#951596, storageLocations#948028]
(1258) BroadcastExchange
Input [3]: [plantUuid#948030, storageLocId#948031, storageLocUuid#948032]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465831]
(1259) Scan parquet
Output [2]: [product#948033, plant#948034]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1260) Filter
Input [2]: [product#948033, plant#948034]
Condition : isnotnull(plant#948034)
(1261) Exchange
Input [2]: [product#948033, plant#948034]
Arguments: hashpartitioning(product#948033, plant#948034, 37), REPARTITION_BY_NUM, [plan_id=1465024]
(1262) Scan parquet
Output [4]: [plant#948039, product#948040, productionAspect#948042, systemId#948037]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(1263) Project
Output [4]: [plant#948039.internalRefUUID AS _extract_internalRefUUID#952129, product#948040.internalRefUUID AS _extract_internalRefUUID#952132, productionAspect#948042.productMovementPlants.unitOfIssue.code AS _extract_code#952130, productionAspect#948042.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952131]
Input [4]: [plant#948039, product#948040, productionAspect#948042, systemId#948037]
(1264) Exchange
Input [4]: [_extract_internalRefUUID#952129, _extract_internalRefUUID#952132, _extract_code#952130, _extract_internalRefUUID#952131]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463845]
(1265) Project
Output [4]: [_extract_code#952130, _extract_internalRefUUID#952131, _extract_internalRefUUID#952132, _extract_internalRefUUID#952129]
Input [4]: [_extract_internalRefUUID#952129, _extract_internalRefUUID#952132, _extract_code#952130, _extract_internalRefUUID#952131]
(1266) BroadcastExchange
Input [4]: [_extract_code#952130, _extract_internalRefUUID#952131, _extract_internalRefUUID#952132, _extract_internalRefUUID#952129]
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=1465815]
(1267) BroadcastHashJoin
Left keys [4]: [coalesce(product#948033, ), isnull(product#948033), coalesce(plant#948034, ), isnull(plant#948034)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952132, ), isnull(_extract_internalRefUUID#952132), coalesce(_extract_internalRefUUID#952129, ), isnull(_extract_internalRefUUID#952129)]
Join type: LeftOuter
Join condition: None
(1268) Project
Output [4]: [product#948033, plant#948034, _extract_code#952130, _extract_internalRefUUID#952131]
Input [6]: [product#948033, plant#948034, _extract_code#952130, _extract_internalRefUUID#952131, _extract_internalRefUUID#952132, _extract_internalRefUUID#952129]
(1269) Scan parquet
Output [4]: [internalUUID#948048, baseUnitOfMeasure#948052, unitOfMeasureConversions#948054, systemId#948047]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1270) Filter
Input [4]: [internalUUID#948048, baseUnitOfMeasure#948052, unitOfMeasureConversions#948054, systemId#948047]
Condition : isnotnull(internalUUID#948048)
(1271) Project
Output [3]: [internalUUID#948048, baseUnitOfMeasure#948052, unitOfMeasureConversions#948054]
Input [4]: [internalUUID#948048, baseUnitOfMeasure#948052, unitOfMeasureConversions#948054, systemId#948047]
(1272) Exchange
Input [3]: [internalUUID#948048, baseUnitOfMeasure#948052, unitOfMeasureConversions#948054]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463852]
(1273) BroadcastExchange
Input [3]: [internalUUID#948048, baseUnitOfMeasure#948052, unitOfMeasureConversions#948054]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465819]
(1274) BroadcastHashJoin
Left keys [1]: [product#948033]
Right keys [1]: [internalUUID#948048]
Join type: LeftOuter
Join condition: None
(1275) Project
Output [2]: [plant#948034, filter(unitOfMeasureConversions#948054, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952130) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952131)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948052.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948052.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948059]
Input [7]: [product#948033, plant#948034, _extract_code#952130, _extract_internalRefUUID#952131, internalUUID#948048, baseUnitOfMeasure#948052, unitOfMeasureConversions#948054]
(1276) Generate
Input [2]: [plant#948034, filteredUnitOfMeasureConversions#948059]
Arguments: explode(filteredUnitOfMeasureConversions#948059.quantityNumerator), [plant#948034, filteredUnitOfMeasureConversions#948059], true, [quantityNumerator#948060]
(1277) Project
Output [2]: [plant#948034, filteredUnitOfMeasureConversions#948059.quantityDenominator AS _extract_quantityDenominator#951598]
Input [3]: [plant#948034, filteredUnitOfMeasureConversions#948059, quantityNumerator#948060]
(1278) Generate
Input [2]: [plant#948034, _extract_quantityDenominator#951598]
Arguments: explode(_extract_quantityDenominator#951598), [plant#948034], true, [quantityDenominator#948061]
(1279) Project
Output [1]: [plant#948034]
Input [2]: [plant#948034, quantityDenominator#948061]
(1280) HashAggregate
Input [1]: [plant#948034]
Keys [1]: [plant#948034]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#948034]
(1281) Exchange
Input [1]: [plant#948034]
Arguments: hashpartitioning(plant#948034, 37), ENSURE_REQUIREMENTS, [plan_id=1465828]
(1282) HashAggregate
Input [1]: [plant#948034]
Keys [1]: [plant#948034]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#948034]
(1283) BroadcastHashJoin
Left keys [1]: [plantUuid#948030]
Right keys [1]: [plant#948034]
Join type: Inner
Join condition: None
(1284) Project
Output [3]: [plantUuid#948030, storageLocId#948031, storageLocUuid#948032]
Input [4]: [plantUuid#948030, storageLocId#948031, storageLocUuid#948032, plant#948034]
(1285) BroadcastHashJoin
Left keys [2]: [coalesce(plant#948003.internalRefUUID, ), isnull(plant#948003.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#948030, ), isnull(plantUuid#948030)]
Join type: Inner
Join condition: None
(1286) Generate
Input [9]: [systemId#948000, internalUUID#948001, product#948002, plant#948003, calculationDateTime#948004, stockQuantities#948005, plantUuid#948030, storageLocId#948031, storageLocUuid#948032]
Arguments: explode(filter(stockQuantities#948005, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#948032) AND (lambda x#944569.storageLocation.Id = storageLocId#948031)), lambda x#944569, false))), [systemId#948000, internalUUID#948001, product#948002, plant#948003, calculationDateTime#948004, plantUuid#948030], false, [stockQuantity#948064]
(1287) ObjectHashAggregate
Input [7]: [systemId#948000, internalUUID#948001, product#948002, plant#948003, calculationDateTime#948004, plantUuid#948030, stockQuantity#948064]
Keys [5]: [plantUuid#948030, internalUUID#948001, plant#948003, product#948002, systemId#948000]
Functions [2]: [partial_first(calculationDateTime#948004, false), partial_collect_list(stockQuantity#948064, 0, 0)]
Aggregate Attributes [3]: [first#953127, valueSet#953128, buf#953129]
Results [8]: [plantUuid#948030, internalUUID#948001, plant#948003, product#948002, systemId#948000, first#953130, valueSet#953131, buf#953132]
(1288) ObjectHashAggregate
Input [8]: [plantUuid#948030, internalUUID#948001, plant#948003, product#948002, systemId#948000, first#953130, valueSet#953131, buf#953132]
Keys [5]: [plantUuid#948030, internalUUID#948001, plant#948003, product#948002, systemId#948000]
Functions [2]: [first(calculationDateTime#948004, false), collect_list(stockQuantity#948064, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#948004)()#944584, collect_list(stockQuantity#948064, 0, 0)#944585]
Results [4]: [product#948002, plant#948003, first(calculationDateTime#948004)()#944584 AS calculationDateTime#948065, collect_list(stockQuantity#948064, 0, 0)#944585 AS stockQuantities#948066]
(1289) Filter
Input [4]: [product#948002, plant#948003, calculationDateTime#948065, stockQuantities#948066]
Condition : ((size(stockQuantities#948066, true) > 0) AND isnotnull(calculationDateTime#948065))
(1290) Generate
Input [4]: [product#948002, plant#948003, calculationDateTime#948065, stockQuantities#948066]
Arguments: explode(stockQuantities#948066), [product#948002, plant#948003, calculationDateTime#948065], false, [stockQuantity#948067]
(1291) Filter
Input [4]: [product#948002, plant#948003, calculationDateTime#948065, stockQuantity#948067]
Condition : (((isnotnull(stockQuantity#948067.specialStockIndicator.code) AND isnotnull(stockQuantity#948067.stockType.code)) AND (stockQuantity#948067.specialStockIndicator.code = )) AND (stockQuantity#948067.stockType.code = 01))
(1292) Project
Output [4]: [plant#948003.internalRefUUID AS plantUuid#948069, product#948002.internalRefUUID AS productUuid#948071, calculationDateTime#948065, stockQuantity#948067.storagelocation.id AS storageLocId#948072]
Input [4]: [product#948002, plant#948003, calculationDateTime#948065, stockQuantity#948067]
(1293) Exchange
Input [4]: [plantUuid#948069, productUuid#948071, calculationDateTime#948065, storageLocId#948072]
Arguments: hashpartitioning(productUuid#948071, plantUuid#948069, 37), ENSURE_REQUIREMENTS, [plan_id=1465857]
(1294) Sort
Input [4]: [plantUuid#948069, productUuid#948071, calculationDateTime#948065, storageLocId#948072]
Arguments: [productUuid#948071 ASC NULLS FIRST, plantUuid#948069 ASC NULLS FIRST], false, 0
(1295) Scan parquet
Output [3]: [product#948077, plant#948078, orderDateTime#948079]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1296) Filter
Input [3]: [product#948077, plant#948078, orderDateTime#948079]
Condition : ((isnotnull(orderDateTime#948079) AND isnotnull(plant#948078)) AND isnotnull(product#948077))
(1297) Exchange
Input [3]: [product#948077, plant#948078, orderDateTime#948079]
Arguments: hashpartitioning(product#948077, plant#948078, 37), REPARTITION_BY_NUM, [plan_id=1465045]
(1298) Scan parquet
Output [4]: [plant#948083, product#948084, productionAspect#948086, systemId#948081]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(1299) Project
Output [4]: [plant#948083.internalRefUUID AS _extract_internalRefUUID#952134, product#948084.internalRefUUID AS _extract_internalRefUUID#952133, productionAspect#948086.productMovementPlants.unitOfIssue.code AS _extract_code#952135, productionAspect#948086.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952136]
Input [4]: [plant#948083, product#948084, productionAspect#948086, systemId#948081]
(1300) Exchange
Input [4]: [_extract_internalRefUUID#952134, _extract_internalRefUUID#952133, _extract_code#952135, _extract_internalRefUUID#952136]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463877]
(1301) Project
Output [4]: [_extract_code#952135, _extract_internalRefUUID#952136, _extract_internalRefUUID#952133, _extract_internalRefUUID#952134]
Input [4]: [_extract_internalRefUUID#952134, _extract_internalRefUUID#952133, _extract_code#952135, _extract_internalRefUUID#952136]
(1302) BroadcastExchange
Input [4]: [_extract_code#952135, _extract_internalRefUUID#952136, _extract_internalRefUUID#952133, _extract_internalRefUUID#952134]
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=1465844]
(1303) BroadcastHashJoin
Left keys [4]: [coalesce(product#948077, ), isnull(product#948077), coalesce(plant#948078, ), isnull(plant#948078)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952133, ), isnull(_extract_internalRefUUID#952133), coalesce(_extract_internalRefUUID#952134, ), isnull(_extract_internalRefUUID#952134)]
Join type: LeftOuter
Join condition: None
(1304) Project
Output [5]: [product#948077, plant#948078, orderDateTime#948079, _extract_code#952135, _extract_internalRefUUID#952136]
Input [7]: [product#948077, plant#948078, orderDateTime#948079, _extract_code#952135, _extract_internalRefUUID#952136, _extract_internalRefUUID#952133, _extract_internalRefUUID#952134]
(1305) Scan parquet
Output [4]: [internalUUID#948092, baseUnitOfMeasure#948096, unitOfMeasureConversions#948098, systemId#948091]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1306) Filter
Input [4]: [internalUUID#948092, baseUnitOfMeasure#948096, unitOfMeasureConversions#948098, systemId#948091]
Condition : isnotnull(internalUUID#948092)
(1307) Project
Output [3]: [internalUUID#948092, baseUnitOfMeasure#948096, unitOfMeasureConversions#948098]
Input [4]: [internalUUID#948092, baseUnitOfMeasure#948096, unitOfMeasureConversions#948098, systemId#948091]
(1308) Exchange
Input [3]: [internalUUID#948092, baseUnitOfMeasure#948096, unitOfMeasureConversions#948098]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463884]
(1309) BroadcastExchange
Input [3]: [internalUUID#948092, baseUnitOfMeasure#948096, unitOfMeasureConversions#948098]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465848]
(1310) BroadcastHashJoin
Left keys [1]: [product#948077]
Right keys [1]: [internalUUID#948092]
Join type: LeftOuter
Join condition: None
(1311) Project
Output [4]: [product#948077, plant#948078, orderDateTime#948079, filter(unitOfMeasureConversions#948098, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952135) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952136)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948096.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948096.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948103]
Input [8]: [product#948077, plant#948078, orderDateTime#948079, _extract_code#952135, _extract_internalRefUUID#952136, internalUUID#948092, baseUnitOfMeasure#948096, unitOfMeasureConversions#948098]
(1312) Generate
Input [4]: [product#948077, plant#948078, orderDateTime#948079, filteredUnitOfMeasureConversions#948103]
Arguments: explode(filteredUnitOfMeasureConversions#948103.quantityNumerator), [product#948077, plant#948078, orderDateTime#948079, filteredUnitOfMeasureConversions#948103], true, [quantityNumerator#948104]
(1313) Project
Output [4]: [product#948077, plant#948078, orderDateTime#948079, filteredUnitOfMeasureConversions#948103.quantityDenominator AS _extract_quantityDenominator#951605]
Input [5]: [product#948077, plant#948078, orderDateTime#948079, filteredUnitOfMeasureConversions#948103, quantityNumerator#948104]
(1314) Generate
Input [4]: [product#948077, plant#948078, orderDateTime#948079, _extract_quantityDenominator#951605]
Arguments: explode(_extract_quantityDenominator#951605), [product#948077, plant#948078, orderDateTime#948079], true, [quantityDenominator#948105]
(1315) Project
Output [3]: [product#948077, plant#948078, orderDateTime#948079]
Input [4]: [product#948077, plant#948078, orderDateTime#948079, quantityDenominator#948105]
(1316) Sort
Input [3]: [product#948077, plant#948078, orderDateTime#948079]
Arguments: [product#948077 ASC NULLS FIRST, plant#948078 ASC NULLS FIRST], false, 0
(1317) SortMergeJoin
Left keys [2]: [productUuid#948071, plantUuid#948069]
Right keys [2]: [product#948077, plant#948078]
Join type: Inner
Join condition: (calculationDateTime#948065 <= orderDateTime#948079)
(1318) Project
Output [4]: [plantUuid#948069 AS plant#948108, productUuid#948071 AS product#948109, storageLocId#948072, calculationDateTime#948065]
Input [7]: [plantUuid#948069, productUuid#948071, calculationDateTime#948065, storageLocId#948072, product#948077, plant#948078, orderDateTime#948079]
(1319) Exchange
Input [4]: [plant#948108, product#948109, storageLocId#948072, calculationDateTime#948065]
Arguments: hashpartitioning(coalesce(plant#948108, ), isnull(plant#948108), coalesce(product#948109, ), isnull(product#948109), coalesce(storageLocId#948072, ), isnull(storageLocId#948072), coalesce(calculationDateTime#948065, 1970-01-01 00:00:00), isnull(calculationDateTime#948065), 37), ENSURE_REQUIREMENTS, [plan_id=1465913]
(1320) Sort
Input [4]: [plant#948108, product#948109, storageLocId#948072, calculationDateTime#948065]
Arguments: [coalesce(plant#948108, ) ASC NULLS FIRST, isnull(plant#948108) ASC NULLS FIRST, coalesce(product#948109, ) ASC NULLS FIRST, isnull(product#948109) ASC NULLS FIRST, coalesce(storageLocId#948072, ) ASC NULLS FIRST, isnull(storageLocId#948072) ASC NULLS FIRST, coalesce(calculationDateTime#948065, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#948065) ASC NULLS FIRST], false, 0
(1321) Scan parquet
Output [6]: [internalUUID#948111, product#948112, plant#948113, calculationDateTime#948114, stockQuantities#948115, systemId#948110]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(1322) Filter
Input [6]: [internalUUID#948111, product#948112, plant#948113, calculationDateTime#948114, stockQuantities#948115, systemId#948110]
Condition : (isnotnull(plant#948113.internalRefUUID) AND isnotnull(product#948112.internalRefUUID))
(1323) Project
Output [6]: [systemId#948110, internalUUID#948111, product#948112, plant#948113, calculationDateTime#948114, stockQuantities#948115]
Input [6]: [internalUUID#948111, product#948112, plant#948113, calculationDateTime#948114, stockQuantities#948115, systemId#948110]
(1324) Exchange
Input [6]: [systemId#948110, internalUUID#948111, product#948112, plant#948113, calculationDateTime#948114, stockQuantities#948115]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463896]
(1325) BroadcastExchange
Input [6]: [systemId#948110, internalUUID#948111, product#948112, plant#948113, calculationDateTime#948114, stockQuantities#948115]
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=1465882]
(1326) Scan parquet
Output [2]: [marketUnit#948116, distributionCenters#948122]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1327) Filter
Input [2]: [marketUnit#948116, distributionCenters#948122]
Condition : (((marketUnit#948116 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#948122, true) > 0)) AND isnotnull(distributionCenters#948122))
(1328) Project
Output [1]: [distributionCenters#948122]
Input [2]: [marketUnit#948116, distributionCenters#948122]
(1329) Exchange
Input [1]: [distributionCenters#948122]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463900]
(1330) Generate
Input [1]: [distributionCenters#948122]
Arguments: explode(distributionCenters#948122), false, [distributionCenters#948137]
(1331) Filter
Input [1]: [distributionCenters#948137]
Condition : (((size(distributionCenters#948137.storageLocations, true) > 0) AND isnotnull(distributionCenters#948137.storageLocations)) AND isnotnull(distributionCenters#948137.internalRefUUID))
(1332) Project
Output [2]: [distributionCenters#948137.internalRefUUID AS _extract_internalRefUUID#951612, distributionCenters#948137.storageLocations AS _extract_storageLocations#951613]
Input [1]: [distributionCenters#948137]
(1333) Generate
Input [2]: [_extract_internalRefUUID#951612, _extract_storageLocations#951613]
Arguments: explode(_extract_storageLocations#951613), [_extract_internalRefUUID#951612], false, [storageLocations#948138]
(1334) Project
Output [3]: [_extract_internalRefUUID#951612 AS plantUuid#948140, storageLocations#948138.id AS storageLocId#948141, storageLocations#948138.internalRefUUID AS storageLocUuid#948142]
Input [2]: [_extract_internalRefUUID#951612, storageLocations#948138]
(1335) BroadcastExchange
Input [3]: [plantUuid#948140, storageLocId#948141, storageLocUuid#948142]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465878]
(1336) Scan parquet
Output [2]: [product#948143, plant#948144]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1337) Filter
Input [2]: [product#948143, plant#948144]
Condition : isnotnull(plant#948144)
(1338) Exchange
Input [2]: [product#948143, plant#948144]
Arguments: hashpartitioning(product#948143, plant#948144, 37), REPARTITION_BY_NUM, [plan_id=1465056]
(1339) Scan parquet
Output [4]: [plant#948149, product#948150, productionAspect#948152, systemId#948147]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(1340) Project
Output [4]: [plant#948149.internalRefUUID AS _extract_internalRefUUID#952140, product#948150.internalRefUUID AS _extract_internalRefUUID#952139, productionAspect#948152.productMovementPlants.unitOfIssue.code AS _extract_code#952137, productionAspect#948152.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952138]
Input [4]: [plant#948149, product#948150, productionAspect#948152, systemId#948147]
(1341) Exchange
Input [4]: [_extract_internalRefUUID#952140, _extract_internalRefUUID#952139, _extract_code#952137, _extract_internalRefUUID#952138]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463912]
(1342) Project
Output [4]: [_extract_code#952137, _extract_internalRefUUID#952138, _extract_internalRefUUID#952139, _extract_internalRefUUID#952140]
Input [4]: [_extract_internalRefUUID#952140, _extract_internalRefUUID#952139, _extract_code#952137, _extract_internalRefUUID#952138]
(1343) BroadcastExchange
Input [4]: [_extract_code#952137, _extract_internalRefUUID#952138, _extract_internalRefUUID#952139, _extract_internalRefUUID#952140]
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=1465862]
(1344) BroadcastHashJoin
Left keys [4]: [coalesce(product#948143, ), isnull(product#948143), coalesce(plant#948144, ), isnull(plant#948144)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952139, ), isnull(_extract_internalRefUUID#952139), coalesce(_extract_internalRefUUID#952140, ), isnull(_extract_internalRefUUID#952140)]
Join type: LeftOuter
Join condition: None
(1345) Project
Output [4]: [product#948143, plant#948144, _extract_code#952137, _extract_internalRefUUID#952138]
Input [6]: [product#948143, plant#948144, _extract_code#952137, _extract_internalRefUUID#952138, _extract_internalRefUUID#952139, _extract_internalRefUUID#952140]
(1346) Scan parquet
Output [4]: [internalUUID#948158, baseUnitOfMeasure#948162, unitOfMeasureConversions#948164, systemId#948157]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1347) Filter
Input [4]: [internalUUID#948158, baseUnitOfMeasure#948162, unitOfMeasureConversions#948164, systemId#948157]
Condition : isnotnull(internalUUID#948158)
(1348) Project
Output [3]: [internalUUID#948158, baseUnitOfMeasure#948162, unitOfMeasureConversions#948164]
Input [4]: [internalUUID#948158, baseUnitOfMeasure#948162, unitOfMeasureConversions#948164, systemId#948157]
(1349) Exchange
Input [3]: [internalUUID#948158, baseUnitOfMeasure#948162, unitOfMeasureConversions#948164]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463919]
(1350) BroadcastExchange
Input [3]: [internalUUID#948158, baseUnitOfMeasure#948162, unitOfMeasureConversions#948164]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465866]
(1351) BroadcastHashJoin
Left keys [1]: [product#948143]
Right keys [1]: [internalUUID#948158]
Join type: LeftOuter
Join condition: None
(1352) Project
Output [2]: [plant#948144, filter(unitOfMeasureConversions#948164, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952137) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952138)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948162.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948162.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948169]
Input [7]: [product#948143, plant#948144, _extract_code#952137, _extract_internalRefUUID#952138, internalUUID#948158, baseUnitOfMeasure#948162, unitOfMeasureConversions#948164]
(1353) Generate
Input [2]: [plant#948144, filteredUnitOfMeasureConversions#948169]
Arguments: explode(filteredUnitOfMeasureConversions#948169.quantityNumerator), [plant#948144, filteredUnitOfMeasureConversions#948169], true, [quantityNumerator#948170]
(1354) Project
Output [2]: [plant#948144, filteredUnitOfMeasureConversions#948169.quantityDenominator AS _extract_quantityDenominator#951614]
Input [3]: [plant#948144, filteredUnitOfMeasureConversions#948169, quantityNumerator#948170]
(1355) Generate
Input [2]: [plant#948144, _extract_quantityDenominator#951614]
Arguments: explode(_extract_quantityDenominator#951614), [plant#948144], true, [quantityDenominator#948171]
(1356) Project
Output [1]: [plant#948144]
Input [2]: [plant#948144, quantityDenominator#948171]
(1357) HashAggregate
Input [1]: [plant#948144]
Keys [1]: [plant#948144]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#948144]
(1358) Exchange
Input [1]: [plant#948144]
Arguments: hashpartitioning(plant#948144, 37), ENSURE_REQUIREMENTS, [plan_id=1465875]
(1359) HashAggregate
Input [1]: [plant#948144]
Keys [1]: [plant#948144]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#948144]
(1360) BroadcastHashJoin
Left keys [1]: [plantUuid#948140]
Right keys [1]: [plant#948144]
Join type: Inner
Join condition: None
(1361) Project
Output [3]: [plantUuid#948140, storageLocId#948141, storageLocUuid#948142]
Input [4]: [plantUuid#948140, storageLocId#948141, storageLocUuid#948142, plant#948144]
(1362) BroadcastHashJoin
Left keys [2]: [coalesce(plant#948113.internalRefUUID, ), isnull(plant#948113.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#948140, ), isnull(plantUuid#948140)]
Join type: Inner
Join condition: None
(1363) Generate
Input [9]: [systemId#948110, internalUUID#948111, product#948112, plant#948113, calculationDateTime#948114, stockQuantities#948115, plantUuid#948140, storageLocId#948141, storageLocUuid#948142]
Arguments: explode(filter(stockQuantities#948115, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#948142) AND (lambda x#944569.storageLocation.Id = storageLocId#948141)), lambda x#944569, false))), [systemId#948110, internalUUID#948111, product#948112, plant#948113, calculationDateTime#948114, plantUuid#948140], false, [stockQuantity#948174]
(1364) ObjectHashAggregate
Input [7]: [systemId#948110, internalUUID#948111, product#948112, plant#948113, calculationDateTime#948114, plantUuid#948140, stockQuantity#948174]
Keys [5]: [plantUuid#948140, internalUUID#948111, plant#948113, product#948112, systemId#948110]
Functions [2]: [partial_first(calculationDateTime#948114, false), partial_collect_list(stockQuantity#948174, 0, 0)]
Aggregate Attributes [3]: [first#953135, valueSet#953136, buf#953137]
Results [8]: [plantUuid#948140, internalUUID#948111, plant#948113, product#948112, systemId#948110, first#953138, valueSet#953139, buf#953140]
(1365) ObjectHashAggregate
Input [8]: [plantUuid#948140, internalUUID#948111, plant#948113, product#948112, systemId#948110, first#953138, valueSet#953139, buf#953140]
Keys [5]: [plantUuid#948140, internalUUID#948111, plant#948113, product#948112, systemId#948110]
Functions [2]: [first(calculationDateTime#948114, false), collect_list(stockQuantity#948174, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#948114)()#944584, collect_list(stockQuantity#948174, 0, 0)#944585]
Results [4]: [product#948112, plant#948113, first(calculationDateTime#948114)()#944584 AS calculationDateTime#948175, collect_list(stockQuantity#948174, 0, 0)#944585 AS stockQuantities#948176]
(1366) Filter
Input [4]: [product#948112, plant#948113, calculationDateTime#948175, stockQuantities#948176]
Condition : ((size(stockQuantities#948176, true) > 0) AND isnotnull(calculationDateTime#948175))
(1367) Generate
Input [4]: [product#948112, plant#948113, calculationDateTime#948175, stockQuantities#948176]
Arguments: explode(stockQuantities#948176), [product#948112, plant#948113, calculationDateTime#948175], false, [stockQuantity#948177]
(1368) Filter
Input [4]: [product#948112, plant#948113, calculationDateTime#948175, stockQuantity#948177]
Condition : (((isnotnull(stockQuantity#948177.specialStockIndicator.code) AND isnotnull(stockQuantity#948177.stockType.code)) AND (stockQuantity#948177.specialStockIndicator.code = )) AND (stockQuantity#948177.stockType.code = 01))
(1369) Project
Output [4]: [plant#948113.internalRefUUID AS plantUuid#948179, product#948112.internalRefUUID AS productUuid#948181, calculationDateTime#948175, stockQuantity#948177.storagelocation.id AS storageLocId#948182]
Input [4]: [product#948112, plant#948113, calculationDateTime#948175, stockQuantity#948177]
(1370) Exchange
Input [4]: [plantUuid#948179, productUuid#948181, calculationDateTime#948175, storageLocId#948182]
Arguments: hashpartitioning(productUuid#948181, plantUuid#948179, 37), ENSURE_REQUIREMENTS, [plan_id=1465904]
(1371) Sort
Input [4]: [plantUuid#948179, productUuid#948181, calculationDateTime#948175, storageLocId#948182]
Arguments: [productUuid#948181 ASC NULLS FIRST, plantUuid#948179 ASC NULLS FIRST], false, 0
(1372) Scan parquet
Output [3]: [product#948187, plant#948188, orderDateTime#948189]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1373) Filter
Input [3]: [product#948187, plant#948188, orderDateTime#948189]
Condition : ((isnotnull(orderDateTime#948189) AND isnotnull(plant#948188)) AND isnotnull(product#948187))
(1374) Exchange
Input [3]: [product#948187, plant#948188, orderDateTime#948189]
Arguments: hashpartitioning(product#948187, plant#948188, 37), REPARTITION_BY_NUM, [plan_id=1465077]
(1375) Scan parquet
Output [4]: [plant#948193, product#948194, productionAspect#948196, systemId#948191]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(1376) Project
Output [4]: [plant#948193.internalRefUUID AS _extract_internalRefUUID#952141, product#948194.internalRefUUID AS _extract_internalRefUUID#952142, productionAspect#948196.productMovementPlants.unitOfIssue.code AS _extract_code#952143, productionAspect#948196.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952144]
Input [4]: [plant#948193, product#948194, productionAspect#948196, systemId#948191]
(1377) Exchange
Input [4]: [_extract_internalRefUUID#952141, _extract_internalRefUUID#952142, _extract_code#952143, _extract_internalRefUUID#952144]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463944]
(1378) Project
Output [4]: [_extract_code#952143, _extract_internalRefUUID#952144, _extract_internalRefUUID#952142, _extract_internalRefUUID#952141]
Input [4]: [_extract_internalRefUUID#952141, _extract_internalRefUUID#952142, _extract_code#952143, _extract_internalRefUUID#952144]
(1379) BroadcastExchange
Input [4]: [_extract_code#952143, _extract_internalRefUUID#952144, _extract_internalRefUUID#952142, _extract_internalRefUUID#952141]
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=1465891]
(1380) BroadcastHashJoin
Left keys [4]: [coalesce(product#948187, ), isnull(product#948187), coalesce(plant#948188, ), isnull(plant#948188)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952142, ), isnull(_extract_internalRefUUID#952142), coalesce(_extract_internalRefUUID#952141, ), isnull(_extract_internalRefUUID#952141)]
Join type: LeftOuter
Join condition: None
(1381) Project
Output [5]: [product#948187, plant#948188, orderDateTime#948189, _extract_code#952143, _extract_internalRefUUID#952144]
Input [7]: [product#948187, plant#948188, orderDateTime#948189, _extract_code#952143, _extract_internalRefUUID#952144, _extract_internalRefUUID#952142, _extract_internalRefUUID#952141]
(1382) Scan parquet
Output [4]: [internalUUID#948202, baseUnitOfMeasure#948206, unitOfMeasureConversions#948208, systemId#948201]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1383) Filter
Input [4]: [internalUUID#948202, baseUnitOfMeasure#948206, unitOfMeasureConversions#948208, systemId#948201]
Condition : isnotnull(internalUUID#948202)
(1384) Project
Output [3]: [internalUUID#948202, baseUnitOfMeasure#948206, unitOfMeasureConversions#948208]
Input [4]: [internalUUID#948202, baseUnitOfMeasure#948206, unitOfMeasureConversions#948208, systemId#948201]
(1385) Exchange
Input [3]: [internalUUID#948202, baseUnitOfMeasure#948206, unitOfMeasureConversions#948208]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463951]
(1386) BroadcastExchange
Input [3]: [internalUUID#948202, baseUnitOfMeasure#948206, unitOfMeasureConversions#948208]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465895]
(1387) BroadcastHashJoin
Left keys [1]: [product#948187]
Right keys [1]: [internalUUID#948202]
Join type: LeftOuter
Join condition: None
(1388) Project
Output [4]: [product#948187, plant#948188, orderDateTime#948189, filter(unitOfMeasureConversions#948208, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952143) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952144)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948206.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948206.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948213]
Input [8]: [product#948187, plant#948188, orderDateTime#948189, _extract_code#952143, _extract_internalRefUUID#952144, internalUUID#948202, baseUnitOfMeasure#948206, unitOfMeasureConversions#948208]
(1389) Generate
Input [4]: [product#948187, plant#948188, orderDateTime#948189, filteredUnitOfMeasureConversions#948213]
Arguments: explode(filteredUnitOfMeasureConversions#948213.quantityNumerator), [product#948187, plant#948188, orderDateTime#948189, filteredUnitOfMeasureConversions#948213], true, [quantityNumerator#948214]
(1390) Project
Output [4]: [product#948187, plant#948188, orderDateTime#948189, filteredUnitOfMeasureConversions#948213.quantityDenominator AS _extract_quantityDenominator#951621]
Input [5]: [product#948187, plant#948188, orderDateTime#948189, filteredUnitOfMeasureConversions#948213, quantityNumerator#948214]
(1391) Generate
Input [4]: [product#948187, plant#948188, orderDateTime#948189, _extract_quantityDenominator#951621]
Arguments: explode(_extract_quantityDenominator#951621), [product#948187, plant#948188, orderDateTime#948189], true, [quantityDenominator#948215]
(1392) Project
Output [3]: [product#948187, plant#948188, orderDateTime#948189]
Input [4]: [product#948187, plant#948188, orderDateTime#948189, quantityDenominator#948215]
(1393) Sort
Input [3]: [product#948187, plant#948188, orderDateTime#948189]
Arguments: [product#948187 ASC NULLS FIRST, plant#948188 ASC NULLS FIRST], false, 0
(1394) SortMergeJoin
Left keys [2]: [productUuid#948181, plantUuid#948179]
Right keys [2]: [product#948187, plant#948188]
Join type: Inner
Join condition: (calculationDateTime#948175 <= orderDateTime#948189)
(1395) Project
Output [4]: [plantUuid#948179 AS plant#948218, productUuid#948181 AS product#948219, storageLocId#948182, calculationDateTime#948175]
Input [7]: [plantUuid#948179, productUuid#948181, calculationDateTime#948175, storageLocId#948182, product#948187, plant#948188, orderDateTime#948189]
(1396) HashAggregate
Input [4]: [plant#948218, product#948219, storageLocId#948182, calculationDateTime#948175]
Keys [3]: [plant#948218, product#948219, storageLocId#948182]
Functions [1]: [partial_max(calculationDateTime#948175)]
Aggregate Attributes [1]: [max#953133]
Results [4]: [plant#948218, product#948219, storageLocId#948182, max#953134]
(1397) HashAggregate
Input [4]: [plant#948218, product#948219, storageLocId#948182, max#953134]
Keys [3]: [plant#948218, product#948219, storageLocId#948182]
Functions [1]: [max(calculationDateTime#948175)]
Aggregate Attributes [1]: [max(calculationDateTime#948175)#944648]
Results [4]: [plant#948218, product#948219, storageLocId#948182, max(calculationDateTime#948175)#944648 AS max_calc_datetime#948220]
(1398) Exchange
Input [4]: [plant#948218, product#948219, storageLocId#948182, max_calc_datetime#948220]
Arguments: hashpartitioning(coalesce(plant#948218, ), isnull(plant#948218), coalesce(product#948219, ), isnull(product#948219), coalesce(storageLocId#948182, ), isnull(storageLocId#948182), coalesce(max_calc_datetime#948220, 1970-01-01 00:00:00), isnull(max_calc_datetime#948220), 37), ENSURE_REQUIREMENTS, [plan_id=1465914]
(1399) Sort
Input [4]: [plant#948218, product#948219, storageLocId#948182, max_calc_datetime#948220]
Arguments: [coalesce(plant#948218, ) ASC NULLS FIRST, isnull(plant#948218) ASC NULLS FIRST, coalesce(product#948219, ) ASC NULLS FIRST, isnull(product#948219) ASC NULLS FIRST, coalesce(storageLocId#948182, ) ASC NULLS FIRST, isnull(storageLocId#948182) ASC NULLS FIRST, coalesce(max_calc_datetime#948220, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#948220) ASC NULLS FIRST], false, 0
(1400) SortMergeJoin
Left keys [8]: [coalesce(plant#948108, ), isnull(plant#948108), coalesce(product#948109, ), isnull(product#948109), coalesce(storageLocId#948072, ), isnull(storageLocId#948072), coalesce(calculationDateTime#948065, 1970-01-01 00:00:00), isnull(calculationDateTime#948065)]
Right keys [8]: [coalesce(plant#948218, ), isnull(plant#948218), coalesce(product#948219, ), isnull(product#948219), coalesce(storageLocId#948182, ), isnull(storageLocId#948182), coalesce(max_calc_datetime#948220, 1970-01-01 00:00:00), isnull(max_calc_datetime#948220)]
Join type: Inner
Join condition: None
(1401) Project
Output [3]: [plant#948108, product#948109, calculationDateTime#948065]
Input [8]: [plant#948108, product#948109, storageLocId#948072, calculationDateTime#948065, plant#948218, product#948219, storageLocId#948182, max_calc_datetime#948220]
(1402) HashAggregate
Input [3]: [plant#948108, product#948109, calculationDateTime#948065]
Keys [2]: [product#948109, plant#948108]
Functions [1]: [partial_min(calculationDateTime#948065)]
Aggregate Attributes [1]: [min#953125]
Results [3]: [product#948109, plant#948108, min#953126]
(1403) Exchange
Input [3]: [product#948109, plant#948108, min#953126]
Arguments: hashpartitioning(product#948109, plant#948108, 37), ENSURE_REQUIREMENTS, [plan_id=1465921]
(1404) HashAggregate
Input [3]: [product#948109, plant#948108, min#953126]
Keys [2]: [product#948109, plant#948108]
Functions [1]: [min(calculationDateTime#948065)]
Aggregate Attributes [1]: [min(calculationDateTime#948065)#944775]
Results [3]: [product#948109, plant#948108, min(calculationDateTime#948065)#944775 AS minCalculationDateTime#948222]
(1405) Sort
Input [3]: [product#948109, plant#948108, minCalculationDateTime#948222]
Arguments: [product#948109 ASC NULLS FIRST, plant#948108 ASC NULLS FIRST], false, 0
(1406) SortMergeJoin
Left keys [2]: [product#947969, plant#947970]
Right keys [2]: [product#948109, plant#948108]
Join type: LeftOuter
Join condition: None
(1407) Project
Output [3]: [product#947969, plant#947970, CASE WHEN isnotnull(minCalculationDateTime#948222) THEN minCalculationDateTime#948222 ELSE orderDateTime#947971 END AS stockDatetime#948224]
Input [6]: [product#947969, plant#947970, orderDateTime#947971, product#948109, plant#948108, minCalculationDateTime#948222]
(1408) Exchange
Input [3]: [product#947969, plant#947970, stockDatetime#948224]
Arguments: hashpartitioning(coalesce(plant#947970, ), isnull(plant#947970), coalesce(product#947969, ), isnull(product#947969), 37), ENSURE_REQUIREMENTS, [plan_id=1466075]
(1409) Sort
Input [3]: [product#947969, plant#947970, stockDatetime#948224]
Arguments: [coalesce(plant#947970, ) ASC NULLS FIRST, isnull(plant#947970) ASC NULLS FIRST, coalesce(product#947969, ) ASC NULLS FIRST, isnull(product#947969) ASC NULLS FIRST], false, 0
(1410) Scan parquet
Output [3]: [product#948227, plant#948228, orderDateTime#948229]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1411) Exchange
Input [3]: [product#948227, plant#948228, orderDateTime#948229]
Arguments: hashpartitioning(product#948227, plant#948228, 37), REPARTITION_BY_NUM, [plan_id=1463969]
(1412) Scan parquet
Output [9]: [internalUUID#948232, plant#948233, product#948234, blockedForReplenishmentStartingFrom#948235, productionAspect#948236, salesPlant#948237, listing#948238, sourceOfSupplyCategory#948239, systemId#948231]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>
(1413) Project
Output [9]: [systemId#948231, internalUUID#948232, plant#948233, product#948234, blockedForReplenishmentStartingFrom#948235, productionAspect#948236, salesPlant#948237, listing#948238, sourceOfSupplyCategory#948239]
Input [9]: [internalUUID#948232, plant#948233, product#948234, blockedForReplenishmentStartingFrom#948235, productionAspect#948236, salesPlant#948237, listing#948238, sourceOfSupplyCategory#948239, systemId#948231]
(1414) Exchange
Input [9]: [systemId#948231, internalUUID#948232, plant#948233, product#948234, blockedForReplenishmentStartingFrom#948235, productionAspect#948236, salesPlant#948237, listing#948238, sourceOfSupplyCategory#948239]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463972]
(1415) Project
Output [1]: [struct(systemId, systemId#948231, internalUUID, internalUUID#948232, plant, plant#948233, product, product#948234, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#948235, productionAspect, productionAspect#948236, salesPlant, salesPlant#948237, listing, listing#948238, sourceOfSupplyCategory, sourceOfSupplyCategory#948239) AS productPlant#948240]
Input [9]: [systemId#948231, internalUUID#948232, plant#948233, product#948234, blockedForReplenishmentStartingFrom#948235, productionAspect#948236, salesPlant#948237, listing#948238, sourceOfSupplyCategory#948239]
(1416) BroadcastExchange
Input [1]: [productPlant#948240]
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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].plant.internalRefUUID)),false), [plan_id=1465929]
(1417) BroadcastHashJoin
Left keys [4]: [coalesce(product#948227, ), isnull(product#948227), coalesce(plant#948228, ), isnull(plant#948228)]
Right keys [4]: [coalesce(productPlant#948240.product.internalRefUUID, ), isnull(productPlant#948240.product.internalRefUUID), coalesce(productPlant#948240.plant.internalRefUUID, ), isnull(productPlant#948240.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1418) Scan parquet
Output [4]: [internalUUID#948242, baseUnitOfMeasure#948246, unitOfMeasureConversions#948248, systemId#948241]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1419) Filter
Input [4]: [internalUUID#948242, baseUnitOfMeasure#948246, unitOfMeasureConversions#948248, systemId#948241]
Condition : isnotnull(internalUUID#948242)
(1420) Project
Output [3]: [internalUUID#948242, baseUnitOfMeasure#948246, unitOfMeasureConversions#948248]
Input [4]: [internalUUID#948242, baseUnitOfMeasure#948246, unitOfMeasureConversions#948248, systemId#948241]
(1421) Exchange
Input [3]: [internalUUID#948242, baseUnitOfMeasure#948246, unitOfMeasureConversions#948248]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463978]
(1422) BroadcastExchange
Input [3]: [internalUUID#948242, baseUnitOfMeasure#948246, unitOfMeasureConversions#948248]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465932]
(1423) BroadcastHashJoin
Left keys [1]: [product#948227]
Right keys [1]: [internalUUID#948242]
Join type: LeftOuter
Join condition: None
(1424) Project
Output [5]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, filter(unitOfMeasureConversions#948248, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#948240.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#948240.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948246.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948246.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948253]
Input [7]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, internalUUID#948242, baseUnitOfMeasure#948246, unitOfMeasureConversions#948248]
(1425) Project
Output [6]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, filteredUnitOfMeasureConversions#948253.quantityDenominator AS _extract_quantityDenominator#952145, filteredUnitOfMeasureConversions#948253.quantityNumerator AS _extract_quantityNumerator#952146]
Input [5]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, filteredUnitOfMeasureConversions#948253]
(1426) Generate
Input [6]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, _extract_quantityDenominator#952145, _extract_quantityNumerator#952146]
Arguments: explode(_extract_quantityNumerator#952146), [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, _extract_quantityDenominator#952145], true, [quantityNumerator#948254]
(1427) Generate
Input [6]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, _extract_quantityDenominator#952145, quantityNumerator#948254]
Arguments: explode(_extract_quantityDenominator#952145), [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, quantityNumerator#948254], true, [quantityDenominator#948255]
(1428) Project
Output [5]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, (cast(quantityNumerator#948254 as double) / cast(quantityDenominator#948255 as double)) AS outboundUnit#948256]
Input [6]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, quantityNumerator#948254, quantityDenominator#948255]
(1429) Project
Output [5]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, CASE WHEN (isnull(outboundUnit#948256) OR (outboundUnit#948256 <= 0.0)) THEN 1.0 ELSE outboundUnit#948256 END AS outboundUnit#948257]
Input [5]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948256]
(1430) Sort
Input [5]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257]
Arguments: [product#948227 ASC NULLS FIRST, plant#948228 ASC NULLS FIRST], false, 0
(1431) Scan parquet
Output [6]: [internalUUID#948259, product#948260, plant#948261, calculationDateTime#948262, stockQuantities#948263, systemId#948258]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(1432) Filter
Input [6]: [internalUUID#948259, product#948260, plant#948261, calculationDateTime#948262, stockQuantities#948263, systemId#948258]
Condition : (isnotnull(plant#948261.internalRefUUID) AND isnotnull(product#948260.internalRefUUID))
(1433) Project
Output [6]: [systemId#948258, internalUUID#948259, product#948260, plant#948261, calculationDateTime#948262, stockQuantities#948263]
Input [6]: [internalUUID#948259, product#948260, plant#948261, calculationDateTime#948262, stockQuantities#948263, systemId#948258]
(1434) Exchange
Input [6]: [systemId#948258, internalUUID#948259, product#948260, plant#948261, calculationDateTime#948262, stockQuantities#948263]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463989]
(1435) BroadcastExchange
Input [6]: [systemId#948258, internalUUID#948259, product#948260, plant#948261, calculationDateTime#948262, stockQuantities#948263]
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=1465960]
(1436) Scan parquet
Output [2]: [marketUnit#948264, distributionCenters#948270]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1437) Filter
Input [2]: [marketUnit#948264, distributionCenters#948270]
Condition : (((marketUnit#948264 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#948270, true) > 0)) AND isnotnull(distributionCenters#948270))
(1438) Project
Output [1]: [distributionCenters#948270]
Input [2]: [marketUnit#948264, distributionCenters#948270]
(1439) Exchange
Input [1]: [distributionCenters#948270]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1463993]
(1440) Generate
Input [1]: [distributionCenters#948270]
Arguments: explode(distributionCenters#948270), false, [distributionCenters#948285]
(1441) Filter
Input [1]: [distributionCenters#948285]
Condition : (((size(distributionCenters#948285.storageLocations, true) > 0) AND isnotnull(distributionCenters#948285.storageLocations)) AND isnotnull(distributionCenters#948285.internalRefUUID))
(1442) Project
Output [2]: [distributionCenters#948285.internalRefUUID AS _extract_internalRefUUID#951629, distributionCenters#948285.storageLocations AS _extract_storageLocations#951630]
Input [1]: [distributionCenters#948285]
(1443) Generate
Input [2]: [_extract_internalRefUUID#951629, _extract_storageLocations#951630]
Arguments: explode(_extract_storageLocations#951630), [_extract_internalRefUUID#951629], false, [storageLocations#948286]
(1444) Project
Output [3]: [_extract_internalRefUUID#951629 AS plantUuid#948288, storageLocations#948286.id AS storageLocId#948289, storageLocations#948286.internalRefUUID AS storageLocUuid#948290]
Input [2]: [_extract_internalRefUUID#951629, storageLocations#948286]
(1445) BroadcastExchange
Input [3]: [plantUuid#948288, storageLocId#948289, storageLocUuid#948290]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465956]
(1446) Scan parquet
Output [2]: [product#948291, plant#948292]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1447) Filter
Input [2]: [product#948291, plant#948292]
Condition : isnotnull(plant#948292)
(1448) Exchange
Input [2]: [product#948291, plant#948292]
Arguments: hashpartitioning(product#948291, plant#948292, 37), REPARTITION_BY_NUM, [plan_id=1465096]
(1449) Scan parquet
Output [4]: [plant#948297, product#948298, productionAspect#948300, systemId#948295]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(1450) Project
Output [4]: [plant#948297.internalRefUUID AS _extract_internalRefUUID#952147, product#948298.internalRefUUID AS _extract_internalRefUUID#952150, productionAspect#948300.productMovementPlants.unitOfIssue.code AS _extract_code#952148, productionAspect#948300.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952149]
Input [4]: [plant#948297, product#948298, productionAspect#948300, systemId#948295]
(1451) Exchange
Input [4]: [_extract_internalRefUUID#952147, _extract_internalRefUUID#952150, _extract_code#952148, _extract_internalRefUUID#952149]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464005]
(1452) Project
Output [4]: [_extract_code#952148, _extract_internalRefUUID#952149, _extract_internalRefUUID#952150, _extract_internalRefUUID#952147]
Input [4]: [_extract_internalRefUUID#952147, _extract_internalRefUUID#952150, _extract_code#952148, _extract_internalRefUUID#952149]
(1453) BroadcastExchange
Input [4]: [_extract_code#952148, _extract_internalRefUUID#952149, _extract_internalRefUUID#952150, _extract_internalRefUUID#952147]
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=1465940]
(1454) BroadcastHashJoin
Left keys [4]: [coalesce(product#948291, ), isnull(product#948291), coalesce(plant#948292, ), isnull(plant#948292)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952150, ), isnull(_extract_internalRefUUID#952150), coalesce(_extract_internalRefUUID#952147, ), isnull(_extract_internalRefUUID#952147)]
Join type: LeftOuter
Join condition: None
(1455) Project
Output [4]: [product#948291, plant#948292, _extract_code#952148, _extract_internalRefUUID#952149]
Input [6]: [product#948291, plant#948292, _extract_code#952148, _extract_internalRefUUID#952149, _extract_internalRefUUID#952150, _extract_internalRefUUID#952147]
(1456) Scan parquet
Output [4]: [internalUUID#948306, baseUnitOfMeasure#948310, unitOfMeasureConversions#948312, systemId#948305]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1457) Filter
Input [4]: [internalUUID#948306, baseUnitOfMeasure#948310, unitOfMeasureConversions#948312, systemId#948305]
Condition : isnotnull(internalUUID#948306)
(1458) Project
Output [3]: [internalUUID#948306, baseUnitOfMeasure#948310, unitOfMeasureConversions#948312]
Input [4]: [internalUUID#948306, baseUnitOfMeasure#948310, unitOfMeasureConversions#948312, systemId#948305]
(1459) Exchange
Input [3]: [internalUUID#948306, baseUnitOfMeasure#948310, unitOfMeasureConversions#948312]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464012]
(1460) BroadcastExchange
Input [3]: [internalUUID#948306, baseUnitOfMeasure#948310, unitOfMeasureConversions#948312]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465944]
(1461) BroadcastHashJoin
Left keys [1]: [product#948291]
Right keys [1]: [internalUUID#948306]
Join type: LeftOuter
Join condition: None
(1462) Project
Output [2]: [plant#948292, filter(unitOfMeasureConversions#948312, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952148) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952149)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948310.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948310.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948317]
Input [7]: [product#948291, plant#948292, _extract_code#952148, _extract_internalRefUUID#952149, internalUUID#948306, baseUnitOfMeasure#948310, unitOfMeasureConversions#948312]
(1463) Generate
Input [2]: [plant#948292, filteredUnitOfMeasureConversions#948317]
Arguments: explode(filteredUnitOfMeasureConversions#948317.quantityNumerator), [plant#948292, filteredUnitOfMeasureConversions#948317], true, [quantityNumerator#948318]
(1464) Project
Output [2]: [plant#948292, filteredUnitOfMeasureConversions#948317.quantityDenominator AS _extract_quantityDenominator#951631]
Input [3]: [plant#948292, filteredUnitOfMeasureConversions#948317, quantityNumerator#948318]
(1465) Generate
Input [2]: [plant#948292, _extract_quantityDenominator#951631]
Arguments: explode(_extract_quantityDenominator#951631), [plant#948292], true, [quantityDenominator#948319]
(1466) Project
Output [1]: [plant#948292]
Input [2]: [plant#948292, quantityDenominator#948319]
(1467) HashAggregate
Input [1]: [plant#948292]
Keys [1]: [plant#948292]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#948292]
(1468) Exchange
Input [1]: [plant#948292]
Arguments: hashpartitioning(plant#948292, 37), ENSURE_REQUIREMENTS, [plan_id=1465953]
(1469) HashAggregate
Input [1]: [plant#948292]
Keys [1]: [plant#948292]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#948292]
(1470) BroadcastHashJoin
Left keys [1]: [plantUuid#948288]
Right keys [1]: [plant#948292]
Join type: Inner
Join condition: None
(1471) Project
Output [3]: [plantUuid#948288, storageLocId#948289, storageLocUuid#948290]
Input [4]: [plantUuid#948288, storageLocId#948289, storageLocUuid#948290, plant#948292]
(1472) BroadcastHashJoin
Left keys [2]: [coalesce(plant#948261.internalRefUUID, ), isnull(plant#948261.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#948288, ), isnull(plantUuid#948288)]
Join type: Inner
Join condition: None
(1473) Generate
Input [9]: [systemId#948258, internalUUID#948259, product#948260, plant#948261, calculationDateTime#948262, stockQuantities#948263, plantUuid#948288, storageLocId#948289, storageLocUuid#948290]
Arguments: explode(filter(stockQuantities#948263, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#948290) AND (lambda x#944569.storageLocation.Id = storageLocId#948289)), lambda x#944569, false))), [systemId#948258, internalUUID#948259, product#948260, plant#948261, calculationDateTime#948262, plantUuid#948288], false, [stockQuantity#948322]
(1474) ObjectHashAggregate
Input [7]: [systemId#948258, internalUUID#948259, product#948260, plant#948261, calculationDateTime#948262, plantUuid#948288, stockQuantity#948322]
Keys [5]: [plantUuid#948288, internalUUID#948259, plant#948261, product#948260, systemId#948258]
Functions [2]: [partial_first(calculationDateTime#948262, false), partial_collect_list(stockQuantity#948322, 0, 0)]
Aggregate Attributes [3]: [first#953149, valueSet#953150, buf#953151]
Results [8]: [plantUuid#948288, internalUUID#948259, plant#948261, product#948260, systemId#948258, first#953152, valueSet#953153, buf#953154]
(1475) ObjectHashAggregate
Input [8]: [plantUuid#948288, internalUUID#948259, plant#948261, product#948260, systemId#948258, first#953152, valueSet#953153, buf#953154]
Keys [5]: [plantUuid#948288, internalUUID#948259, plant#948261, product#948260, systemId#948258]
Functions [2]: [first(calculationDateTime#948262, false), collect_list(stockQuantity#948322, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#948262)()#944584, collect_list(stockQuantity#948322, 0, 0)#944585]
Results [4]: [product#948260, plant#948261, first(calculationDateTime#948262)()#944584 AS calculationDateTime#948323, collect_list(stockQuantity#948322, 0, 0)#944585 AS stockQuantities#948324]
(1476) Filter
Input [4]: [product#948260, plant#948261, calculationDateTime#948323, stockQuantities#948324]
Condition : ((size(stockQuantities#948324, true) > 0) AND isnotnull(calculationDateTime#948323))
(1477) Generate
Input [4]: [product#948260, plant#948261, calculationDateTime#948323, stockQuantities#948324]
Arguments: explode(stockQuantities#948324), [product#948260, plant#948261, calculationDateTime#948323], false, [stockQuantity#948325]
(1478) Filter
Input [4]: [product#948260, plant#948261, calculationDateTime#948323, stockQuantity#948325]
Condition : (((isnotnull(stockQuantity#948325.specialStockIndicator.code) AND isnotnull(stockQuantity#948325.stockType.code)) AND (stockQuantity#948325.specialStockIndicator.code = )) AND (stockQuantity#948325.stockType.code = 01))
(1479) Project
Output [5]: [plant#948261.internalRefUUID AS plantUuid#948327, product#948260.internalRefUUID AS productUuid#948329, calculationDateTime#948323, stockQuantity#948325.storagelocation.id AS storageLocId#948330, stockQuantity#948325.quantity.measure AS quantity#948332]
Input [4]: [product#948260, plant#948261, calculationDateTime#948323, stockQuantity#948325]
(1480) Exchange
Input [5]: [plantUuid#948327, productUuid#948329, calculationDateTime#948323, storageLocId#948330, quantity#948332]
Arguments: hashpartitioning(productUuid#948329, plantUuid#948327, 37), ENSURE_REQUIREMENTS, [plan_id=1465982]
(1481) Sort
Input [5]: [plantUuid#948327, productUuid#948329, calculationDateTime#948323, storageLocId#948330, quantity#948332]
Arguments: [productUuid#948329 ASC NULLS FIRST, plantUuid#948327 ASC NULLS FIRST], false, 0
(1482) Scan parquet
Output [3]: [product#948335, plant#948336, orderDateTime#948337]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1483) Filter
Input [3]: [product#948335, plant#948336, orderDateTime#948337]
Condition : ((isnotnull(orderDateTime#948337) AND isnotnull(plant#948336)) AND isnotnull(product#948335))
(1484) Exchange
Input [3]: [product#948335, plant#948336, orderDateTime#948337]
Arguments: hashpartitioning(product#948335, plant#948336, 37), REPARTITION_BY_NUM, [plan_id=1465117]
(1485) Scan parquet
Output [4]: [plant#948341, product#948342, productionAspect#948344, systemId#948339]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(1486) Project
Output [4]: [plant#948341.internalRefUUID AS _extract_internalRefUUID#952151, product#948342.internalRefUUID AS _extract_internalRefUUID#952154, productionAspect#948344.productMovementPlants.unitOfIssue.code AS _extract_code#952152, productionAspect#948344.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952153]
Input [4]: [plant#948341, product#948342, productionAspect#948344, systemId#948339]
(1487) Exchange
Input [4]: [_extract_internalRefUUID#952151, _extract_internalRefUUID#952154, _extract_code#952152, _extract_internalRefUUID#952153]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464037]
(1488) Project
Output [4]: [_extract_code#952152, _extract_internalRefUUID#952153, _extract_internalRefUUID#952154, _extract_internalRefUUID#952151]
Input [4]: [_extract_internalRefUUID#952151, _extract_internalRefUUID#952154, _extract_code#952152, _extract_internalRefUUID#952153]
(1489) BroadcastExchange
Input [4]: [_extract_code#952152, _extract_internalRefUUID#952153, _extract_internalRefUUID#952154, _extract_internalRefUUID#952151]
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=1465969]
(1490) BroadcastHashJoin
Left keys [4]: [coalesce(product#948335, ), isnull(product#948335), coalesce(plant#948336, ), isnull(plant#948336)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952154, ), isnull(_extract_internalRefUUID#952154), coalesce(_extract_internalRefUUID#952151, ), isnull(_extract_internalRefUUID#952151)]
Join type: LeftOuter
Join condition: None
(1491) Project
Output [5]: [product#948335, plant#948336, orderDateTime#948337, _extract_code#952152, _extract_internalRefUUID#952153]
Input [7]: [product#948335, plant#948336, orderDateTime#948337, _extract_code#952152, _extract_internalRefUUID#952153, _extract_internalRefUUID#952154, _extract_internalRefUUID#952151]
(1492) Scan parquet
Output [4]: [internalUUID#948350, baseUnitOfMeasure#948354, unitOfMeasureConversions#948356, systemId#948349]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1493) Filter
Input [4]: [internalUUID#948350, baseUnitOfMeasure#948354, unitOfMeasureConversions#948356, systemId#948349]
Condition : isnotnull(internalUUID#948350)
(1494) Project
Output [3]: [internalUUID#948350, baseUnitOfMeasure#948354, unitOfMeasureConversions#948356]
Input [4]: [internalUUID#948350, baseUnitOfMeasure#948354, unitOfMeasureConversions#948356, systemId#948349]
(1495) Exchange
Input [3]: [internalUUID#948350, baseUnitOfMeasure#948354, unitOfMeasureConversions#948356]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464044]
(1496) BroadcastExchange
Input [3]: [internalUUID#948350, baseUnitOfMeasure#948354, unitOfMeasureConversions#948356]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465973]
(1497) BroadcastHashJoin
Left keys [1]: [product#948335]
Right keys [1]: [internalUUID#948350]
Join type: LeftOuter
Join condition: None
(1498) Project
Output [4]: [product#948335, plant#948336, orderDateTime#948337, filter(unitOfMeasureConversions#948356, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952152) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952153)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948354.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948354.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948361]
Input [8]: [product#948335, plant#948336, orderDateTime#948337, _extract_code#952152, _extract_internalRefUUID#952153, internalUUID#948350, baseUnitOfMeasure#948354, unitOfMeasureConversions#948356]
(1499) Generate
Input [4]: [product#948335, plant#948336, orderDateTime#948337, filteredUnitOfMeasureConversions#948361]
Arguments: explode(filteredUnitOfMeasureConversions#948361.quantityNumerator), [product#948335, plant#948336, orderDateTime#948337, filteredUnitOfMeasureConversions#948361], true, [quantityNumerator#948362]
(1500) Project
Output [4]: [product#948335, plant#948336, orderDateTime#948337, filteredUnitOfMeasureConversions#948361.quantityDenominator AS _extract_quantityDenominator#951638]
Input [5]: [product#948335, plant#948336, orderDateTime#948337, filteredUnitOfMeasureConversions#948361, quantityNumerator#948362]
(1501) Generate
Input [4]: [product#948335, plant#948336, orderDateTime#948337, _extract_quantityDenominator#951638]
Arguments: explode(_extract_quantityDenominator#951638), [product#948335, plant#948336, orderDateTime#948337], true, [quantityDenominator#948363]
(1502) Project
Output [3]: [product#948335, plant#948336, orderDateTime#948337]
Input [4]: [product#948335, plant#948336, orderDateTime#948337, quantityDenominator#948363]
(1503) Sort
Input [3]: [product#948335, plant#948336, orderDateTime#948337]
Arguments: [product#948335 ASC NULLS FIRST, plant#948336 ASC NULLS FIRST], false, 0
(1504) SortMergeJoin
Left keys [2]: [productUuid#948329, plantUuid#948327]
Right keys [2]: [product#948335, plant#948336]
Join type: Inner
Join condition: (calculationDateTime#948323 <= orderDateTime#948337)
(1505) Project
Output [5]: [plantUuid#948327 AS plant#948366, productUuid#948329 AS product#948367, storageLocId#948330, calculationDateTime#948323, quantity#948332]
Input [8]: [plantUuid#948327, productUuid#948329, calculationDateTime#948323, storageLocId#948330, quantity#948332, product#948335, plant#948336, orderDateTime#948337]
(1506) Exchange
Input [5]: [plant#948366, product#948367, storageLocId#948330, calculationDateTime#948323, quantity#948332]
Arguments: hashpartitioning(coalesce(plant#948366, ), isnull(plant#948366), coalesce(product#948367, ), isnull(product#948367), coalesce(storageLocId#948330, ), isnull(storageLocId#948330), coalesce(calculationDateTime#948323, 1970-01-01 00:00:00), isnull(calculationDateTime#948323), 37), ENSURE_REQUIREMENTS, [plan_id=1466038]
(1507) Sort
Input [5]: [plant#948366, product#948367, storageLocId#948330, calculationDateTime#948323, quantity#948332]
Arguments: [coalesce(plant#948366, ) ASC NULLS FIRST, isnull(plant#948366) ASC NULLS FIRST, coalesce(product#948367, ) ASC NULLS FIRST, isnull(product#948367) ASC NULLS FIRST, coalesce(storageLocId#948330, ) ASC NULLS FIRST, isnull(storageLocId#948330) ASC NULLS FIRST, coalesce(calculationDateTime#948323, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#948323) ASC NULLS FIRST], false, 0
(1508) Scan parquet
Output [6]: [internalUUID#948369, product#948370, plant#948371, calculationDateTime#948372, stockQuantities#948373, systemId#948368]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(1509) Filter
Input [6]: [internalUUID#948369, product#948370, plant#948371, calculationDateTime#948372, stockQuantities#948373, systemId#948368]
Condition : (isnotnull(plant#948371.internalRefUUID) AND isnotnull(product#948370.internalRefUUID))
(1510) Project
Output [6]: [systemId#948368, internalUUID#948369, product#948370, plant#948371, calculationDateTime#948372, stockQuantities#948373]
Input [6]: [internalUUID#948369, product#948370, plant#948371, calculationDateTime#948372, stockQuantities#948373, systemId#948368]
(1511) Exchange
Input [6]: [systemId#948368, internalUUID#948369, product#948370, plant#948371, calculationDateTime#948372, stockQuantities#948373]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464056]
(1512) BroadcastExchange
Input [6]: [systemId#948368, internalUUID#948369, product#948370, plant#948371, calculationDateTime#948372, stockQuantities#948373]
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=1466007]
(1513) Scan parquet
Output [2]: [marketUnit#948374, distributionCenters#948380]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1514) Filter
Input [2]: [marketUnit#948374, distributionCenters#948380]
Condition : (((marketUnit#948374 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#948380, true) > 0)) AND isnotnull(distributionCenters#948380))
(1515) Project
Output [1]: [distributionCenters#948380]
Input [2]: [marketUnit#948374, distributionCenters#948380]
(1516) Exchange
Input [1]: [distributionCenters#948380]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464060]
(1517) Generate
Input [1]: [distributionCenters#948380]
Arguments: explode(distributionCenters#948380), false, [distributionCenters#948395]
(1518) Filter
Input [1]: [distributionCenters#948395]
Condition : (((size(distributionCenters#948395.storageLocations, true) > 0) AND isnotnull(distributionCenters#948395.storageLocations)) AND isnotnull(distributionCenters#948395.internalRefUUID))
(1519) Project
Output [2]: [distributionCenters#948395.internalRefUUID AS _extract_internalRefUUID#951645, distributionCenters#948395.storageLocations AS _extract_storageLocations#951646]
Input [1]: [distributionCenters#948395]
(1520) Generate
Input [2]: [_extract_internalRefUUID#951645, _extract_storageLocations#951646]
Arguments: explode(_extract_storageLocations#951646), [_extract_internalRefUUID#951645], false, [storageLocations#948396]
(1521) Project
Output [3]: [_extract_internalRefUUID#951645 AS plantUuid#948398, storageLocations#948396.id AS storageLocId#948399, storageLocations#948396.internalRefUUID AS storageLocUuid#948400]
Input [2]: [_extract_internalRefUUID#951645, storageLocations#948396]
(1522) BroadcastExchange
Input [3]: [plantUuid#948398, storageLocId#948399, storageLocUuid#948400]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466003]
(1523) Scan parquet
Output [2]: [product#948401, plant#948402]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1524) Filter
Input [2]: [product#948401, plant#948402]
Condition : isnotnull(plant#948402)
(1525) Exchange
Input [2]: [product#948401, plant#948402]
Arguments: hashpartitioning(product#948401, plant#948402, 37), REPARTITION_BY_NUM, [plan_id=1465128]
(1526) Scan parquet
Output [4]: [plant#948407, product#948408, productionAspect#948410, systemId#948405]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(1527) Project
Output [4]: [plant#948407.internalRefUUID AS _extract_internalRefUUID#952158, product#948408.internalRefUUID AS _extract_internalRefUUID#952155, productionAspect#948410.productMovementPlants.unitOfIssue.code AS _extract_code#952156, productionAspect#948410.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952157]
Input [4]: [plant#948407, product#948408, productionAspect#948410, systemId#948405]
(1528) Exchange
Input [4]: [_extract_internalRefUUID#952158, _extract_internalRefUUID#952155, _extract_code#952156, _extract_internalRefUUID#952157]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464072]
(1529) Project
Output [4]: [_extract_code#952156, _extract_internalRefUUID#952157, _extract_internalRefUUID#952155, _extract_internalRefUUID#952158]
Input [4]: [_extract_internalRefUUID#952158, _extract_internalRefUUID#952155, _extract_code#952156, _extract_internalRefUUID#952157]
(1530) BroadcastExchange
Input [4]: [_extract_code#952156, _extract_internalRefUUID#952157, _extract_internalRefUUID#952155, _extract_internalRefUUID#952158]
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=1465987]
(1531) BroadcastHashJoin
Left keys [4]: [coalesce(product#948401, ), isnull(product#948401), coalesce(plant#948402, ), isnull(plant#948402)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952155, ), isnull(_extract_internalRefUUID#952155), coalesce(_extract_internalRefUUID#952158, ), isnull(_extract_internalRefUUID#952158)]
Join type: LeftOuter
Join condition: None
(1532) Project
Output [4]: [product#948401, plant#948402, _extract_code#952156, _extract_internalRefUUID#952157]
Input [6]: [product#948401, plant#948402, _extract_code#952156, _extract_internalRefUUID#952157, _extract_internalRefUUID#952155, _extract_internalRefUUID#952158]
(1533) Scan parquet
Output [4]: [internalUUID#948416, baseUnitOfMeasure#948420, unitOfMeasureConversions#948422, systemId#948415]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1534) Filter
Input [4]: [internalUUID#948416, baseUnitOfMeasure#948420, unitOfMeasureConversions#948422, systemId#948415]
Condition : isnotnull(internalUUID#948416)
(1535) Project
Output [3]: [internalUUID#948416, baseUnitOfMeasure#948420, unitOfMeasureConversions#948422]
Input [4]: [internalUUID#948416, baseUnitOfMeasure#948420, unitOfMeasureConversions#948422, systemId#948415]
(1536) Exchange
Input [3]: [internalUUID#948416, baseUnitOfMeasure#948420, unitOfMeasureConversions#948422]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464079]
(1537) BroadcastExchange
Input [3]: [internalUUID#948416, baseUnitOfMeasure#948420, unitOfMeasureConversions#948422]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1465991]
(1538) BroadcastHashJoin
Left keys [1]: [product#948401]
Right keys [1]: [internalUUID#948416]
Join type: LeftOuter
Join condition: None
(1539) Project
Output [2]: [plant#948402, filter(unitOfMeasureConversions#948422, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952156) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952157)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948420.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948420.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948427]
Input [7]: [product#948401, plant#948402, _extract_code#952156, _extract_internalRefUUID#952157, internalUUID#948416, baseUnitOfMeasure#948420, unitOfMeasureConversions#948422]
(1540) Generate
Input [2]: [plant#948402, filteredUnitOfMeasureConversions#948427]
Arguments: explode(filteredUnitOfMeasureConversions#948427.quantityNumerator), [plant#948402, filteredUnitOfMeasureConversions#948427], true, [quantityNumerator#948428]
(1541) Project
Output [2]: [plant#948402, filteredUnitOfMeasureConversions#948427.quantityDenominator AS _extract_quantityDenominator#951647]
Input [3]: [plant#948402, filteredUnitOfMeasureConversions#948427, quantityNumerator#948428]
(1542) Generate
Input [2]: [plant#948402, _extract_quantityDenominator#951647]
Arguments: explode(_extract_quantityDenominator#951647), [plant#948402], true, [quantityDenominator#948429]
(1543) Project
Output [1]: [plant#948402]
Input [2]: [plant#948402, quantityDenominator#948429]
(1544) HashAggregate
Input [1]: [plant#948402]
Keys [1]: [plant#948402]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#948402]
(1545) Exchange
Input [1]: [plant#948402]
Arguments: hashpartitioning(plant#948402, 37), ENSURE_REQUIREMENTS, [plan_id=1466000]
(1546) HashAggregate
Input [1]: [plant#948402]
Keys [1]: [plant#948402]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#948402]
(1547) BroadcastHashJoin
Left keys [1]: [plantUuid#948398]
Right keys [1]: [plant#948402]
Join type: Inner
Join condition: None
(1548) Project
Output [3]: [plantUuid#948398, storageLocId#948399, storageLocUuid#948400]
Input [4]: [plantUuid#948398, storageLocId#948399, storageLocUuid#948400, plant#948402]
(1549) BroadcastHashJoin
Left keys [2]: [coalesce(plant#948371.internalRefUUID, ), isnull(plant#948371.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#948398, ), isnull(plantUuid#948398)]
Join type: Inner
Join condition: None
(1550) Generate
Input [9]: [systemId#948368, internalUUID#948369, product#948370, plant#948371, calculationDateTime#948372, stockQuantities#948373, plantUuid#948398, storageLocId#948399, storageLocUuid#948400]
Arguments: explode(filter(stockQuantities#948373, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#948400) AND (lambda x#944569.storageLocation.Id = storageLocId#948399)), lambda x#944569, false))), [systemId#948368, internalUUID#948369, product#948370, plant#948371, calculationDateTime#948372, plantUuid#948398], false, [stockQuantity#948432]
(1551) ObjectHashAggregate
Input [7]: [systemId#948368, internalUUID#948369, product#948370, plant#948371, calculationDateTime#948372, plantUuid#948398, stockQuantity#948432]
Keys [5]: [plantUuid#948398, internalUUID#948369, plant#948371, product#948370, systemId#948368]
Functions [2]: [partial_first(calculationDateTime#948372, false), partial_collect_list(stockQuantity#948432, 0, 0)]
Aggregate Attributes [3]: [first#953157, valueSet#953158, buf#953159]
Results [8]: [plantUuid#948398, internalUUID#948369, plant#948371, product#948370, systemId#948368, first#953160, valueSet#953161, buf#953162]
(1552) ObjectHashAggregate
Input [8]: [plantUuid#948398, internalUUID#948369, plant#948371, product#948370, systemId#948368, first#953160, valueSet#953161, buf#953162]
Keys [5]: [plantUuid#948398, internalUUID#948369, plant#948371, product#948370, systemId#948368]
Functions [2]: [first(calculationDateTime#948372, false), collect_list(stockQuantity#948432, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#948372)()#944584, collect_list(stockQuantity#948432, 0, 0)#944585]
Results [4]: [product#948370, plant#948371, first(calculationDateTime#948372)()#944584 AS calculationDateTime#948433, collect_list(stockQuantity#948432, 0, 0)#944585 AS stockQuantities#948434]
(1553) Filter
Input [4]: [product#948370, plant#948371, calculationDateTime#948433, stockQuantities#948434]
Condition : ((size(stockQuantities#948434, true) > 0) AND isnotnull(calculationDateTime#948433))
(1554) Generate
Input [4]: [product#948370, plant#948371, calculationDateTime#948433, stockQuantities#948434]
Arguments: explode(stockQuantities#948434), [product#948370, plant#948371, calculationDateTime#948433], false, [stockQuantity#948435]
(1555) Filter
Input [4]: [product#948370, plant#948371, calculationDateTime#948433, stockQuantity#948435]
Condition : (((isnotnull(stockQuantity#948435.specialStockIndicator.code) AND isnotnull(stockQuantity#948435.stockType.code)) AND (stockQuantity#948435.specialStockIndicator.code = )) AND (stockQuantity#948435.stockType.code = 01))
(1556) Project
Output [4]: [plant#948371.internalRefUUID AS plantUuid#948437, product#948370.internalRefUUID AS productUuid#948439, calculationDateTime#948433, stockQuantity#948435.storagelocation.id AS storageLocId#948440]
Input [4]: [product#948370, plant#948371, calculationDateTime#948433, stockQuantity#948435]
(1557) Exchange
Input [4]: [plantUuid#948437, productUuid#948439, calculationDateTime#948433, storageLocId#948440]
Arguments: hashpartitioning(productUuid#948439, plantUuid#948437, 37), ENSURE_REQUIREMENTS, [plan_id=1466029]
(1558) Sort
Input [4]: [plantUuid#948437, productUuid#948439, calculationDateTime#948433, storageLocId#948440]
Arguments: [productUuid#948439 ASC NULLS FIRST, plantUuid#948437 ASC NULLS FIRST], false, 0
(1559) Scan parquet
Output [3]: [product#948445, plant#948446, orderDateTime#948447]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1560) Filter
Input [3]: [product#948445, plant#948446, orderDateTime#948447]
Condition : ((isnotnull(orderDateTime#948447) AND isnotnull(plant#948446)) AND isnotnull(product#948445))
(1561) Exchange
Input [3]: [product#948445, plant#948446, orderDateTime#948447]
Arguments: hashpartitioning(product#948445, plant#948446, 37), REPARTITION_BY_NUM, [plan_id=1465149]
(1562) Scan parquet
Output [4]: [plant#948451, product#948452, productionAspect#948454, systemId#948449]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(1563) Project
Output [4]: [plant#948451.internalRefUUID AS _extract_internalRefUUID#952162, product#948452.internalRefUUID AS _extract_internalRefUUID#952159, productionAspect#948454.productMovementPlants.unitOfIssue.code AS _extract_code#952160, productionAspect#948454.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952161]
Input [4]: [plant#948451, product#948452, productionAspect#948454, systemId#948449]
(1564) Exchange
Input [4]: [_extract_internalRefUUID#952162, _extract_internalRefUUID#952159, _extract_code#952160, _extract_internalRefUUID#952161]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464104]
(1565) Project
Output [4]: [_extract_code#952160, _extract_internalRefUUID#952161, _extract_internalRefUUID#952159, _extract_internalRefUUID#952162]
Input [4]: [_extract_internalRefUUID#952162, _extract_internalRefUUID#952159, _extract_code#952160, _extract_internalRefUUID#952161]
(1566) BroadcastExchange
Input [4]: [_extract_code#952160, _extract_internalRefUUID#952161, _extract_internalRefUUID#952159, _extract_internalRefUUID#952162]
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=1466016]
(1567) BroadcastHashJoin
Left keys [4]: [coalesce(product#948445, ), isnull(product#948445), coalesce(plant#948446, ), isnull(plant#948446)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952159, ), isnull(_extract_internalRefUUID#952159), coalesce(_extract_internalRefUUID#952162, ), isnull(_extract_internalRefUUID#952162)]
Join type: LeftOuter
Join condition: None
(1568) Project
Output [5]: [product#948445, plant#948446, orderDateTime#948447, _extract_code#952160, _extract_internalRefUUID#952161]
Input [7]: [product#948445, plant#948446, orderDateTime#948447, _extract_code#952160, _extract_internalRefUUID#952161, _extract_internalRefUUID#952159, _extract_internalRefUUID#952162]
(1569) Scan parquet
Output [4]: [internalUUID#948460, baseUnitOfMeasure#948464, unitOfMeasureConversions#948466, systemId#948459]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1570) Filter
Input [4]: [internalUUID#948460, baseUnitOfMeasure#948464, unitOfMeasureConversions#948466, systemId#948459]
Condition : isnotnull(internalUUID#948460)
(1571) Project
Output [3]: [internalUUID#948460, baseUnitOfMeasure#948464, unitOfMeasureConversions#948466]
Input [4]: [internalUUID#948460, baseUnitOfMeasure#948464, unitOfMeasureConversions#948466, systemId#948459]
(1572) Exchange
Input [3]: [internalUUID#948460, baseUnitOfMeasure#948464, unitOfMeasureConversions#948466]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464111]
(1573) BroadcastExchange
Input [3]: [internalUUID#948460, baseUnitOfMeasure#948464, unitOfMeasureConversions#948466]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466020]
(1574) BroadcastHashJoin
Left keys [1]: [product#948445]
Right keys [1]: [internalUUID#948460]
Join type: LeftOuter
Join condition: None
(1575) Project
Output [4]: [product#948445, plant#948446, orderDateTime#948447, filter(unitOfMeasureConversions#948466, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952160) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952161)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948464.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948464.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948471]
Input [8]: [product#948445, plant#948446, orderDateTime#948447, _extract_code#952160, _extract_internalRefUUID#952161, internalUUID#948460, baseUnitOfMeasure#948464, unitOfMeasureConversions#948466]
(1576) Generate
Input [4]: [product#948445, plant#948446, orderDateTime#948447, filteredUnitOfMeasureConversions#948471]
Arguments: explode(filteredUnitOfMeasureConversions#948471.quantityNumerator), [product#948445, plant#948446, orderDateTime#948447, filteredUnitOfMeasureConversions#948471], true, [quantityNumerator#948472]
(1577) Project
Output [4]: [product#948445, plant#948446, orderDateTime#948447, filteredUnitOfMeasureConversions#948471.quantityDenominator AS _extract_quantityDenominator#951654]
Input [5]: [product#948445, plant#948446, orderDateTime#948447, filteredUnitOfMeasureConversions#948471, quantityNumerator#948472]
(1578) Generate
Input [4]: [product#948445, plant#948446, orderDateTime#948447, _extract_quantityDenominator#951654]
Arguments: explode(_extract_quantityDenominator#951654), [product#948445, plant#948446, orderDateTime#948447], true, [quantityDenominator#948473]
(1579) Project
Output [3]: [product#948445, plant#948446, orderDateTime#948447]
Input [4]: [product#948445, plant#948446, orderDateTime#948447, quantityDenominator#948473]
(1580) Sort
Input [3]: [product#948445, plant#948446, orderDateTime#948447]
Arguments: [product#948445 ASC NULLS FIRST, plant#948446 ASC NULLS FIRST], false, 0
(1581) SortMergeJoin
Left keys [2]: [productUuid#948439, plantUuid#948437]
Right keys [2]: [product#948445, plant#948446]
Join type: Inner
Join condition: (calculationDateTime#948433 <= orderDateTime#948447)
(1582) Project
Output [4]: [plantUuid#948437 AS plant#948476, productUuid#948439 AS product#948477, storageLocId#948440, calculationDateTime#948433]
Input [7]: [plantUuid#948437, productUuid#948439, calculationDateTime#948433, storageLocId#948440, product#948445, plant#948446, orderDateTime#948447]
(1583) HashAggregate
Input [4]: [plant#948476, product#948477, storageLocId#948440, calculationDateTime#948433]
Keys [3]: [plant#948476, product#948477, storageLocId#948440]
Functions [1]: [partial_max(calculationDateTime#948433)]
Aggregate Attributes [1]: [max#953155]
Results [4]: [plant#948476, product#948477, storageLocId#948440, max#953156]
(1584) HashAggregate
Input [4]: [plant#948476, product#948477, storageLocId#948440, max#953156]
Keys [3]: [plant#948476, product#948477, storageLocId#948440]
Functions [1]: [max(calculationDateTime#948433)]
Aggregate Attributes [1]: [max(calculationDateTime#948433)#944648]
Results [4]: [plant#948476, product#948477, storageLocId#948440, max(calculationDateTime#948433)#944648 AS max_calc_datetime#948478]
(1585) Exchange
Input [4]: [plant#948476, product#948477, storageLocId#948440, max_calc_datetime#948478]
Arguments: hashpartitioning(coalesce(plant#948476, ), isnull(plant#948476), coalesce(product#948477, ), isnull(product#948477), coalesce(storageLocId#948440, ), isnull(storageLocId#948440), coalesce(max_calc_datetime#948478, 1970-01-01 00:00:00), isnull(max_calc_datetime#948478), 37), ENSURE_REQUIREMENTS, [plan_id=1466039]
(1586) Sort
Input [4]: [plant#948476, product#948477, storageLocId#948440, max_calc_datetime#948478]
Arguments: [coalesce(plant#948476, ) ASC NULLS FIRST, isnull(plant#948476) ASC NULLS FIRST, coalesce(product#948477, ) ASC NULLS FIRST, isnull(product#948477) ASC NULLS FIRST, coalesce(storageLocId#948440, ) ASC NULLS FIRST, isnull(storageLocId#948440) ASC NULLS FIRST, coalesce(max_calc_datetime#948478, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#948478) ASC NULLS FIRST], false, 0
(1587) SortMergeJoin
Left keys [8]: [coalesce(plant#948366, ), isnull(plant#948366), coalesce(product#948367, ), isnull(product#948367), coalesce(storageLocId#948330, ), isnull(storageLocId#948330), coalesce(calculationDateTime#948323, 1970-01-01 00:00:00), isnull(calculationDateTime#948323)]
Right keys [8]: [coalesce(plant#948476, ), isnull(plant#948476), coalesce(product#948477, ), isnull(product#948477), coalesce(storageLocId#948440, ), isnull(storageLocId#948440), coalesce(max_calc_datetime#948478, 1970-01-01 00:00:00), isnull(max_calc_datetime#948478)]
Join type: Inner
Join condition: None
(1588) Project
Output [4]: [plant#948366, product#948367, calculationDateTime#948323, quantity#948332]
Input [9]: [plant#948366, product#948367, storageLocId#948330, calculationDateTime#948323, quantity#948332, plant#948476, product#948477, storageLocId#948440, max_calc_datetime#948478]
(1589) HashAggregate
Input [4]: [plant#948366, product#948367, calculationDateTime#948323, quantity#948332]
Keys [2]: [product#948367, plant#948366]
Functions [2]: [partial_min(calculationDateTime#948323), partial_sum(quantity#948332)]
Aggregate Attributes [2]: [min#953145, sum#953146]
Results [4]: [product#948367, plant#948366, min#953147, sum#953148]
(1590) Exchange
Input [4]: [product#948367, plant#948366, min#953147, sum#953148]
Arguments: hashpartitioning(product#948367, plant#948366, 37), ENSURE_REQUIREMENTS, [plan_id=1466046]
(1591) HashAggregate
Input [4]: [product#948367, plant#948366, min#953147, sum#953148]
Keys [2]: [product#948367, plant#948366]
Functions [2]: [min(calculationDateTime#948323), sum(quantity#948332)]
Aggregate Attributes [2]: [min(calculationDateTime#948323)#944775, sum(quantity#948332)#944774]
Results [4]: [product#948367, plant#948366, min(calculationDateTime#948323)#944775 AS minCalculationDateTime#948480, round(sum(quantity#948332)#944774, 0) AS roundedQuantitySum#948481]
(1592) Sort
Input [4]: [product#948367, plant#948366, minCalculationDateTime#948480, roundedQuantitySum#948481]
Arguments: [product#948367 ASC NULLS FIRST, plant#948366 ASC NULLS FIRST], false, 0
(1593) SortMergeJoin
Left keys [2]: [product#948227, plant#948228]
Right keys [2]: [product#948367, plant#948366]
Join type: LeftOuter
Join condition: None
(1594) Project
Output [7]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, CASE WHEN isnotnull(minCalculationDateTime#948480) THEN minCalculationDateTime#948480 ELSE orderDateTime#948229 END AS stockDatetime#948482, CASE WHEN isnotnull(roundedQuantitySum#948481) THEN array(roundedQuantitySum#948481) ELSE [0.0] END AS stockBatchQuantities#948483]
Input [9]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, product#948367, plant#948366, minCalculationDateTime#948480, roundedQuantitySum#948481]
(1595) Exchange
Input [7]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, stockDatetime#948482, stockBatchQuantities#948483]
Arguments: hashpartitioning(coalesce(plant#948228, ), isnull(plant#948228), coalesce(product#948227, ), isnull(product#948227), 37), ENSURE_REQUIREMENTS, [plan_id=1466056]
(1596) Sort
Input [7]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, stockDatetime#948482, stockBatchQuantities#948483]
Arguments: [coalesce(plant#948228, ) ASC NULLS FIRST, isnull(plant#948228) ASC NULLS FIRST, coalesce(product#948227, ) ASC NULLS FIRST, isnull(product#948227) ASC NULLS FIRST], false, 0
(1597) Scan parquet
Output [9]: [product#948485, plant#948486, demandChannel#948487, demandStream#948488, considerVariance#948489, demandTimeBuckets#948490, demandPointInTimeStart#948491, demandPointInTimeEnd#948492, demandPointInTime#948493]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000678/0_1_10000000678]
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>>>
(1598) Exchange
Input [9]: [product#948485, plant#948486, demandChannel#948487, demandStream#948488, considerVariance#948489, demandTimeBuckets#948490, demandPointInTimeStart#948491, demandPointInTimeEnd#948492, demandPointInTime#948493]
Arguments: hashpartitioning(coalesce(plant#948486, ), isnull(plant#948486), coalesce(product#948485, ), isnull(product#948485), 37), ENSURE_REQUIREMENTS, [plan_id=1466057]
(1599) Sort
Input [9]: [product#948485, plant#948486, demandChannel#948487, demandStream#948488, considerVariance#948489, demandTimeBuckets#948490, demandPointInTimeStart#948491, demandPointInTimeEnd#948492, demandPointInTime#948493]
Arguments: [coalesce(plant#948486, ) ASC NULLS FIRST, isnull(plant#948486) ASC NULLS FIRST, coalesce(product#948485, ) ASC NULLS FIRST, isnull(product#948485) ASC NULLS FIRST], false, 0
(1600) SortMergeJoin
Left keys [4]: [coalesce(plant#948228, ), isnull(plant#948228), coalesce(product#948227, ), isnull(product#948227)]
Right keys [4]: [coalesce(plant#948486, ), isnull(plant#948486), coalesce(product#948485, ), isnull(product#948485)]
Join type: LeftOuter
Join condition: None
(1601) Project
Output [8]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, stockDatetime#948482, stockBatchQuantities#948483, CASE WHEN isnotnull(product#948485) THEN struct(demandChannel, demandChannel#948487, demandStream, demandStream#948488, considerVariance, considerVariance#948489, demandTimeBuckets, demandTimeBuckets#948490, demandPointInTimeStart, demandPointInTimeStart#948491, demandPointInTimeEnd, demandPointInTimeEnd#948492, demandPointInTime, demandPointInTime#948493) END AS rawDemands#948494]
Input [16]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, stockDatetime#948482, stockBatchQuantities#948483, product#948485, plant#948486, demandChannel#948487, demandStream#948488, considerVariance#948489, demandTimeBuckets#948490, demandPointInTimeStart#948491, demandPointInTimeEnd#948492, demandPointInTime#948493]
(1602) ObjectHashAggregate
Input [8]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, stockDatetime#948482, stockBatchQuantities#948483, rawDemands#948494]
Keys [8]: [product#948227, plant#948228, orderDateTime#948229, knownfloatingpointnormalized(if (isnull(productPlant#948240)) null else named_struct(systemId, productPlant#948240.systemId, internalUUID, productPlant#948240.internalUUID, plant, productPlant#948240.plant, product, productPlant#948240.product, blockedForReplenishmentStartingFrom, productPlant#948240.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#948240.productionAspect)) null else named_struct(productMovementPlants, productPlant#948240.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#948240.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#948240.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#948240.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#948240.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#948240.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#948240.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#948240.salesPlant, listing, productPlant#948240.listing, sourceOfSupplyCategory, productPlant#948240.sourceOfSupplyCategory)) AS productPlant#948240, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#948257)) AS outboundUnit#948257, stockDatetime#948482, knownfloatingpointnormalized(transform(stockBatchQuantities#948483, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#953142)), lambda arg#953142, false))) AS stockBatchQuantities#948483, [7226582400000000] AS [7226582400000000]#953141]
Functions [1]: [partial_collect_list(rawDemands#948494, 0, 0)]
Aggregate Attributes [1]: [buf#953143]
Results [9]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, stockDatetime#948482, stockBatchQuantities#948483, [7226582400000000]#953141, buf#953144]
(1603) Exchange
Input [9]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, stockDatetime#948482, stockBatchQuantities#948483, [7226582400000000]#953141, buf#953144]
Arguments: hashpartitioning(product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, stockDatetime#948482, stockBatchQuantities#948483, [7226582400000000]#953141, 37), ENSURE_REQUIREMENTS, [plan_id=1466064]
(1604) ObjectHashAggregate
Input [9]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, stockDatetime#948482, stockBatchQuantities#948483, [7226582400000000]#953141, buf#953144]
Keys [8]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, stockDatetime#948482, stockBatchQuantities#948483, [7226582400000000]#953141]
Functions [1]: [collect_list(rawDemands#948494, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#948494, 0, 0)#944844]
Results [8]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, stockDatetime#948482, stockBatchQuantities#948483, collect_list(rawDemands#948494, 0, 0)#944844 AS rawDemands#948495]
(1605) Scan parquet
Output [3]: [internalUUID#948497, address#948503, systemId#948496]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1606) Project
Output [2]: [internalUUID#948497, address#948503.timeZone.code AS timezonecode#948508]
Input [3]: [internalUUID#948497, address#948503, systemId#948496]
(1607) Exchange
Input [2]: [internalUUID#948497, timezonecode#948508]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464135]
(1608) BroadcastExchange
Input [2]: [internalUUID#948497, timezonecode#948508]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1466067]
(1609) BroadcastHashJoin
Left keys [2]: [coalesce(plant#948228, ), isnull(plant#948228)]
Right keys [2]: [coalesce(internalUUID#948497, ), isnull(internalUUID#948497)]
Join type: LeftOuter
Join condition: None
(1610) Project
Output [10]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, stockDatetime#948482, stockBatchQuantities#948483, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#948484, rawDemands#948495, CASE WHEN isnotnull(timezonecode#948508) THEN timezonecode#948508 ELSE UTC END AS timezonecode#948509]
Input [10]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, stockDatetime#948482, stockBatchQuantities#948483, rawDemands#948495, internalUUID#948497, timezonecode#948508]
(1611) DeserializeToObject
Input [10]: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, stockDatetime#948482, stockBatchQuantities#948483, stockBatchShelfLifeEndDatetimes#948484, rawDemands#948495, timezonecode#948509]
Arguments: createexternalrow(invoke(product#948227.toString()), invoke(plant#948228.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#948229)), if (isnull(productPlant#948240)) null else createexternalrow(invoke(productPlant#948240.systemId.toString()), invoke(productPlant#948240.internalUUID.toString()), if (isnull(productPlant#948240.plant)) null else createexternalrow(invoke(productPlant#948240.plant.internalRefUUID.toString()), invoke(productPlant#948240.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#948240.product)) null else createexternalrow(invoke(productPlant#948240.product.internalRefUUID.toString()), invoke(productPlant#948240.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#948240.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#948240.productionAspect)) null else createexternalrow(if (isnull(productPlant#948240.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#948240.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#948240.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#948240.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#948240.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#948240.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#948240.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#948240.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#948240.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#948240.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#948240.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#948240.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#948240.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#948240.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#948240.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#948240.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#948240.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#948240.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)), if (isnull(productPlant#948240.salesPlant)) null else createexternalrow(if (isnull(productPlant#948240.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#948240.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#948240.salesPlant.loadingGroup.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#948240.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#948240.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#948240.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#948240.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), 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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#948257)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#948482)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#948483, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#948484, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14), createexternalrow(invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandChannel.toString()), invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).demandVariance)), StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandTimeBuckets, Some(class scala.collection.mutable.ArraySeq)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandPointInTimeStart)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).demandVariance)), StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandPointInTime, Some(class scala.collection.mutable.ArraySeq)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)), rawDemands#948495, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#948509.toString()), 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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),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), StructField(timezonecode,StringType,true)), obj#945940: org.apache.spark.sql.Row
(1612) MapElements
Input [1]: [obj#945940]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@353c8b73, obj#945945: org.apache.spark.sql.Row
(1613) SerializeFromObject
Input [1]: [obj#945945]
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#948510, 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#948511]
(1614) Exchange
Input [2]: [product#948510, plant#948511]
Arguments: hashpartitioning(coalesce(plant#948511, ), isnull(plant#948511), coalesce(product#948510, ), isnull(product#948510), 37), ENSURE_REQUIREMENTS, [plan_id=1466076]
(1615) Sort
Input [2]: [product#948510, plant#948511]
Arguments: [coalesce(plant#948511, ) ASC NULLS FIRST, isnull(plant#948511) ASC NULLS FIRST, coalesce(product#948510, ) ASC NULLS FIRST, isnull(product#948510) ASC NULLS FIRST], false, 0
(1616) SortMergeJoin
Left keys [4]: [coalesce(plant#947970, ), isnull(plant#947970), coalesce(product#947969, ), isnull(product#947969)]
Right keys [4]: [coalesce(plant#948511, ), isnull(plant#948511), coalesce(product#948510, ), isnull(product#948510)]
Join type: LeftOuter
Join condition: None
(1617) Project
Output [3]: [product#947969, plant#947970, stockDatetime#948224]
Input [5]: [product#947969, plant#947970, stockDatetime#948224, product#948510, plant#948511]
(1618) Scan parquet
Output [6]: [internalUUID#948515, id#948516, supplier#948518, isMarkedForDeletion#948521, items#948522, systemId#948514]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(1619) Filter
Input [6]: [internalUUID#948515, id#948516, supplier#948518, isMarkedForDeletion#948521, items#948522, systemId#948514]
Condition : (((isnotnull(isMarkedForDeletion#948521) AND NOT isMarkedForDeletion#948521) AND (size(items#948522, true) > 0)) AND isnotnull(items#948522))
(1620) Project
Output [4]: [internalUUID#948515, id#948516, supplier#948518, items#948522]
Input [6]: [internalUUID#948515, id#948516, supplier#948518, isMarkedForDeletion#948521, items#948522, systemId#948514]
(1621) Exchange
Input [4]: [internalUUID#948515, id#948516, supplier#948518, items#948522]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464146]
(1622) Generate
Input [4]: [internalUUID#948515, id#948516, supplier#948518, items#948522]
Arguments: explode(items#948522), [internalUUID#948515, id#948516, supplier#948518], false, [item#948523]
(1623) Filter
Input [4]: [internalUUID#948515, id#948516, supplier#948518, item#948523]
Condition : ((((isnotnull(item#948523.deletionIndicator) AND isnotnull(item#948523.completeIndicator)) AND isnotnull(item#948523.returnIndicator)) AND ((NOT item#948523.deletionIndicator AND NOT item#948523.completeIndicator) AND NOT item#948523.returnIndicator)) AND isnotnull(item#948523.product.internalRefUUID))
(1624) Project
Output [9]: [id#948516, internalUUID#948515, supplier#948518.internalRefUUID AS supplierUuid#948524, item#948523.product.internalRefUUID AS product#948526, item#948523.quantityUnit.code AS quantityUom#948528, item#948523.quantityUnit.internalRefUUID AS quantityUomUuid#948529, item#948523.quantityNumerator AS quantityNumerator#948530, item#948523.quantityDenominator AS quantityDenominator#948531, item#948523.scheduleLines AS scheduleLines#948532]
Input [4]: [internalUUID#948515, id#948516, supplier#948518, item#948523]
(1625) BroadcastExchange
Input [9]: [id#948516, internalUUID#948515, supplierUuid#948524, product#948526, quantityUom#948528, quantityUomUuid#948529, quantityNumerator#948530, quantityDenominator#948531, scheduleLines#948532]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, string, true], ), isnull(input[3, string, true]), coalesce(input[2, string, true], ), isnull(input[2, string, true])),false), [plan_id=1466082]
(1626) BroadcastHashJoin
Left keys [4]: [coalesce(product#947969, ), isnull(product#947969), coalesce(plant#947970, ), isnull(plant#947970)]
Right keys [4]: [coalesce(product#948526, ), isnull(product#948526), coalesce(supplierUuid#948524, ), isnull(supplierUuid#948524)]
Join type: Inner
Join condition: None
(1627) Project
Output [3]: [product#948526, plant#947970, filter(transform(filter(transform(scheduleLines#948532, lambdafunction(struct(openQty, (greatest((lambda x_144#947949.quantity - coalesce(lambda x_144#947949.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_144#947949.productAvailabilityDateTime, lambda x_144#947949.deliveryAt)), lambda x_144#947949, false)), lambdafunction((lambda x_145#947950.availabilityDatetime < stockDatetime#948224), lambda x_145#947950, false)), lambdafunction(struct(documentId, id#948516, documentUuid, internalUUID#948515, openQty, lambda x_146#947951.openQty, openQtyInBaseUnit, ((lambda x_146#947951.openQty * quantityNumerator#948530) / quantityDenominator#948531), qtyUom, quantityUom#948528, qtyUomUuid, quantityUomUuid#948529, availabilityDatetime, lambda x_146#947951.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_146#947951, false)), lambdafunction(NOT (lambda x_147#947952.openQty = 0.0), lambda x_147#947952, false)) AS openGoodsMovements#947948]
Input [12]: [product#947969, plant#947970, stockDatetime#948224, id#948516, internalUUID#948515, supplierUuid#948524, product#948526, quantityUom#948528, quantityUomUuid#948529, quantityNumerator#948530, quantityDenominator#948531, scheduleLines#948532]
(1628) ObjectHashAggregate
Input [3]: [product#948526, plant#947970, openGoodsMovements#947948]
Keys [2]: [product#948526, plant#947970]
Functions [1]: [partial_collect_list(openGoodsMovements#947948, 0, 0)]
Aggregate Attributes [1]: [buf#953123]
Results [3]: [product#948526, plant#947970, buf#953124]
(1629) Exchange
Input [3]: [product#948526, plant#947970, buf#953124]
Arguments: hashpartitioning(product#948526, plant#947970, 37), ENSURE_REQUIREMENTS, [plan_id=1466087]
(1630) ObjectHashAggregate
Input [3]: [product#948526, plant#947970, buf#953124]
Keys [2]: [product#948526, plant#947970]
Functions [1]: [collect_list(openGoodsMovements#947948, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#947948, 0, 0)#947968]
Results [3]: [product#948526, plant#947970, flatten(collect_list(openGoodsMovements#947948, 0, 0)#947968) AS openGoodsMovements#947953]
(1631) Filter
Input [3]: [product#948526, plant#947970, openGoodsMovements#947953]
Condition : (size(openGoodsMovements#947953, false) > 0)
(1632) Union
(1633) ObjectHashAggregate
Input [3]: [product#946271, plant#946270, openGoodsMovements#946371]
Keys [2]: [product#946271, plant#946270]
Functions [1]: [partial_collect_list(openGoodsMovements#946371, 0, 0)]
Aggregate Attributes [1]: [buf#953121]
Results [3]: [product#946271, plant#946270, buf#953122]
(1634) Exchange
Input [3]: [product#946271, plant#946270, buf#953122]
Arguments: hashpartitioning(product#946271, plant#946270, 37), ENSURE_REQUIREMENTS, [plan_id=1466093]
(1635) ObjectHashAggregate
Input [3]: [product#946271, plant#946270, buf#953122]
Keys [2]: [product#946271, plant#946270]
Functions [1]: [collect_list(openGoodsMovements#946371, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#946371, 0, 0)#948579]
Results [3]: [product#946271, plant#946270, flatten(collect_list(openGoodsMovements#946371, 0, 0)#948579) AS openGoodsMovements#948575]
(1636) Project
Output [5]: [product#946271, plant#946270, openGoodsMovements#948575.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#952082, openGoodsMovements#948575.availabilityDatetime AS _extract_availabilityDatetime#952083, openGoodsMovements#948575.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#952084]
Input [3]: [product#946271, plant#946270, openGoodsMovements#948575]
(1637) Sort
Input [5]: [product#946271, plant#946270, _extract_openQtyInBaseUnit#952082, _extract_availabilityDatetime#952083, _extract_shelfLifeEndDatetime#952084]
Arguments: [product#946271 ASC NULLS FIRST, plant#946270 ASC NULLS FIRST], false, 0
(1638) SortMergeJoin
Left keys [2]: [product#944305, plant#944306]
Right keys [2]: [product#946271, plant#946270]
Join type: LeftOuter
Join condition: None
(1639) Project
Output [10]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, dayBucketDemands#945952, pointInTimeDemands#945953, coalesce(_extract_openQtyInBaseUnit#952082, []) AS openGoodsMovementQuantities#949165, coalesce(_extract_availabilityDatetime#952083, []) AS openGoodsMovementAvailabilityDatetimes#949166, coalesce(_extract_shelfLifeEndDatetime#952084, []) AS openGoodsMovementShelfLifeEndDatetimes#949167]
Input [12]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, dayBucketDemands#945952, pointInTimeDemands#945953, product#946271, plant#946270, _extract_openQtyInBaseUnit#952082, _extract_availabilityDatetime#952083, _extract_shelfLifeEndDatetime#952084]
(1640) Scan parquet
Output [3]: [product#949464, plant#949465, orderDateTime#949466]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1641) Exchange
Input [3]: [product#949464, plant#949465, orderDateTime#949466]
Arguments: hashpartitioning(product#949464, plant#949465, 37), REPARTITION_BY_NUM, [plan_id=1464162]
(1642) Scan parquet
Output [9]: [internalUUID#949469, plant#949470, product#949471, blockedForReplenishmentStartingFrom#949472, productionAspect#949473, salesPlant#949474, listing#949475, sourceOfSupplyCategory#949476, systemId#949468]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>
(1643) Project
Output [9]: [systemId#949468, internalUUID#949469, plant#949470, product#949471, blockedForReplenishmentStartingFrom#949472, productionAspect#949473, salesPlant#949474, listing#949475, sourceOfSupplyCategory#949476]
Input [9]: [internalUUID#949469, plant#949470, product#949471, blockedForReplenishmentStartingFrom#949472, productionAspect#949473, salesPlant#949474, listing#949475, sourceOfSupplyCategory#949476, systemId#949468]
(1644) Exchange
Input [9]: [systemId#949468, internalUUID#949469, plant#949470, product#949471, blockedForReplenishmentStartingFrom#949472, productionAspect#949473, salesPlant#949474, listing#949475, sourceOfSupplyCategory#949476]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464165]
(1645) Project
Output [1]: [struct(systemId, systemId#949468, internalUUID, internalUUID#949469, plant, plant#949470, product, product#949471, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#949472, productionAspect, productionAspect#949473, salesPlant, salesPlant#949474, listing, listing#949475, sourceOfSupplyCategory, sourceOfSupplyCategory#949476) AS productPlant#949477]
Input [9]: [systemId#949468, internalUUID#949469, plant#949470, product#949471, blockedForReplenishmentStartingFrom#949472, productionAspect#949473, salesPlant#949474, listing#949475, sourceOfSupplyCategory#949476]
(1646) BroadcastExchange
Input [1]: [productPlant#949477]
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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].plant.internalRefUUID)),false), [plan_id=1466103]
(1647) BroadcastHashJoin
Left keys [4]: [coalesce(product#949464, ), isnull(product#949464), coalesce(plant#949465, ), isnull(plant#949465)]
Right keys [4]: [coalesce(productPlant#949477.product.internalRefUUID, ), isnull(productPlant#949477.product.internalRefUUID), coalesce(productPlant#949477.plant.internalRefUUID, ), isnull(productPlant#949477.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1648) Scan parquet
Output [4]: [internalUUID#949479, baseUnitOfMeasure#949483, unitOfMeasureConversions#949485, systemId#949478]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1649) Filter
Input [4]: [internalUUID#949479, baseUnitOfMeasure#949483, unitOfMeasureConversions#949485, systemId#949478]
Condition : isnotnull(internalUUID#949479)
(1650) Project
Output [3]: [internalUUID#949479, baseUnitOfMeasure#949483, unitOfMeasureConversions#949485]
Input [4]: [internalUUID#949479, baseUnitOfMeasure#949483, unitOfMeasureConversions#949485, systemId#949478]
(1651) Exchange
Input [3]: [internalUUID#949479, baseUnitOfMeasure#949483, unitOfMeasureConversions#949485]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464171]
(1652) BroadcastExchange
Input [3]: [internalUUID#949479, baseUnitOfMeasure#949483, unitOfMeasureConversions#949485]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466106]
(1653) BroadcastHashJoin
Left keys [1]: [product#949464]
Right keys [1]: [internalUUID#949479]
Join type: LeftOuter
Join condition: None
(1654) Project
Output [5]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, filter(unitOfMeasureConversions#949485, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#949477.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#949477.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#949483.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#949483.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#949490]
Input [7]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, internalUUID#949479, baseUnitOfMeasure#949483, unitOfMeasureConversions#949485]
(1655) Project
Output [6]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, filteredUnitOfMeasureConversions#949490.quantityDenominator AS _extract_quantityDenominator#952166, filteredUnitOfMeasureConversions#949490.quantityNumerator AS _extract_quantityNumerator#952167]
Input [5]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, filteredUnitOfMeasureConversions#949490]
(1656) Generate
Input [6]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, _extract_quantityDenominator#952166, _extract_quantityNumerator#952167]
Arguments: explode(_extract_quantityNumerator#952167), [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, _extract_quantityDenominator#952166], true, [quantityNumerator#949491]
(1657) Generate
Input [6]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, _extract_quantityDenominator#952166, quantityNumerator#949491]
Arguments: explode(_extract_quantityDenominator#952166), [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, quantityNumerator#949491], true, [quantityDenominator#949492]
(1658) Project
Output [5]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, (cast(quantityNumerator#949491 as double) / cast(quantityDenominator#949492 as double)) AS outboundUnit#949493]
Input [6]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, quantityNumerator#949491, quantityDenominator#949492]
(1659) Project
Output [5]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, CASE WHEN (isnull(outboundUnit#949493) OR (outboundUnit#949493 <= 0.0)) THEN 1.0 ELSE outboundUnit#949493 END AS outboundUnit#949494]
Input [5]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949493]
(1660) Sort
Input [5]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494]
Arguments: [product#949464 ASC NULLS FIRST, plant#949465 ASC NULLS FIRST], false, 0
(1661) Scan parquet
Output [6]: [internalUUID#949496, product#949497, plant#949498, calculationDateTime#949499, stockQuantities#949500, systemId#949495]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(1662) Filter
Input [6]: [internalUUID#949496, product#949497, plant#949498, calculationDateTime#949499, stockQuantities#949500, systemId#949495]
Condition : (isnotnull(plant#949498.internalRefUUID) AND isnotnull(product#949497.internalRefUUID))
(1663) Project
Output [6]: [systemId#949495, internalUUID#949496, product#949497, plant#949498, calculationDateTime#949499, stockQuantities#949500]
Input [6]: [internalUUID#949496, product#949497, plant#949498, calculationDateTime#949499, stockQuantities#949500, systemId#949495]
(1664) Exchange
Input [6]: [systemId#949495, internalUUID#949496, product#949497, plant#949498, calculationDateTime#949499, stockQuantities#949500]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464182]
(1665) BroadcastExchange
Input [6]: [systemId#949495, internalUUID#949496, product#949497, plant#949498, calculationDateTime#949499, stockQuantities#949500]
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=1466134]
(1666) Scan parquet
Output [2]: [marketUnit#949501, distributionCenters#949507]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1667) Filter
Input [2]: [marketUnit#949501, distributionCenters#949507]
Condition : (((marketUnit#949501 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#949507, true) > 0)) AND isnotnull(distributionCenters#949507))
(1668) Project
Output [1]: [distributionCenters#949507]
Input [2]: [marketUnit#949501, distributionCenters#949507]
(1669) Exchange
Input [1]: [distributionCenters#949507]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464186]
(1670) Generate
Input [1]: [distributionCenters#949507]
Arguments: explode(distributionCenters#949507), false, [distributionCenters#949522]
(1671) Filter
Input [1]: [distributionCenters#949522]
Condition : (((size(distributionCenters#949522.storageLocations, true) > 0) AND isnotnull(distributionCenters#949522.storageLocations)) AND isnotnull(distributionCenters#949522.internalRefUUID))
(1672) Project
Output [2]: [distributionCenters#949522.internalRefUUID AS _extract_internalRefUUID#951663, distributionCenters#949522.storageLocations AS _extract_storageLocations#951664]
Input [1]: [distributionCenters#949522]
(1673) Generate
Input [2]: [_extract_internalRefUUID#951663, _extract_storageLocations#951664]
Arguments: explode(_extract_storageLocations#951664), [_extract_internalRefUUID#951663], false, [storageLocations#949523]
(1674) Project
Output [3]: [_extract_internalRefUUID#951663 AS plantUuid#949525, storageLocations#949523.id AS storageLocId#949526, storageLocations#949523.internalRefUUID AS storageLocUuid#949527]
Input [2]: [_extract_internalRefUUID#951663, storageLocations#949523]
(1675) BroadcastExchange
Input [3]: [plantUuid#949525, storageLocId#949526, storageLocUuid#949527]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466130]
(1676) Scan parquet
Output [2]: [product#949528, plant#949529]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1677) Filter
Input [2]: [product#949528, plant#949529]
Condition : isnotnull(plant#949529)
(1678) Exchange
Input [2]: [product#949528, plant#949529]
Arguments: hashpartitioning(product#949528, plant#949529, 37), REPARTITION_BY_NUM, [plan_id=1465190]
(1679) Scan parquet
Output [4]: [plant#949534, product#949535, productionAspect#949537, systemId#949532]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(1680) Project
Output [4]: [plant#949534.internalRefUUID AS _extract_internalRefUUID#952170, product#949535.internalRefUUID AS _extract_internalRefUUID#952171, productionAspect#949537.productMovementPlants.unitOfIssue.code AS _extract_code#952168, productionAspect#949537.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952169]
Input [4]: [plant#949534, product#949535, productionAspect#949537, systemId#949532]
(1681) Exchange
Input [4]: [_extract_internalRefUUID#952170, _extract_internalRefUUID#952171, _extract_code#952168, _extract_internalRefUUID#952169]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464198]
(1682) Project
Output [4]: [_extract_code#952168, _extract_internalRefUUID#952169, _extract_internalRefUUID#952171, _extract_internalRefUUID#952170]
Input [4]: [_extract_internalRefUUID#952170, _extract_internalRefUUID#952171, _extract_code#952168, _extract_internalRefUUID#952169]
(1683) BroadcastExchange
Input [4]: [_extract_code#952168, _extract_internalRefUUID#952169, _extract_internalRefUUID#952171, _extract_internalRefUUID#952170]
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=1466114]
(1684) BroadcastHashJoin
Left keys [4]: [coalesce(product#949528, ), isnull(product#949528), coalesce(plant#949529, ), isnull(plant#949529)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952171, ), isnull(_extract_internalRefUUID#952171), coalesce(_extract_internalRefUUID#952170, ), isnull(_extract_internalRefUUID#952170)]
Join type: LeftOuter
Join condition: None
(1685) Project
Output [4]: [product#949528, plant#949529, _extract_code#952168, _extract_internalRefUUID#952169]
Input [6]: [product#949528, plant#949529, _extract_code#952168, _extract_internalRefUUID#952169, _extract_internalRefUUID#952171, _extract_internalRefUUID#952170]
(1686) Scan parquet
Output [4]: [internalUUID#949543, baseUnitOfMeasure#949547, unitOfMeasureConversions#949549, systemId#949542]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1687) Filter
Input [4]: [internalUUID#949543, baseUnitOfMeasure#949547, unitOfMeasureConversions#949549, systemId#949542]
Condition : isnotnull(internalUUID#949543)
(1688) Project
Output [3]: [internalUUID#949543, baseUnitOfMeasure#949547, unitOfMeasureConversions#949549]
Input [4]: [internalUUID#949543, baseUnitOfMeasure#949547, unitOfMeasureConversions#949549, systemId#949542]
(1689) Exchange
Input [3]: [internalUUID#949543, baseUnitOfMeasure#949547, unitOfMeasureConversions#949549]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464205]
(1690) BroadcastExchange
Input [3]: [internalUUID#949543, baseUnitOfMeasure#949547, unitOfMeasureConversions#949549]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466118]
(1691) BroadcastHashJoin
Left keys [1]: [product#949528]
Right keys [1]: [internalUUID#949543]
Join type: LeftOuter
Join condition: None
(1692) Project
Output [2]: [plant#949529, filter(unitOfMeasureConversions#949549, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952168) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952169)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#949547.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#949547.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#949554]
Input [7]: [product#949528, plant#949529, _extract_code#952168, _extract_internalRefUUID#952169, internalUUID#949543, baseUnitOfMeasure#949547, unitOfMeasureConversions#949549]
(1693) Generate
Input [2]: [plant#949529, filteredUnitOfMeasureConversions#949554]
Arguments: explode(filteredUnitOfMeasureConversions#949554.quantityNumerator), [plant#949529, filteredUnitOfMeasureConversions#949554], true, [quantityNumerator#949555]
(1694) Project
Output [2]: [plant#949529, filteredUnitOfMeasureConversions#949554.quantityDenominator AS _extract_quantityDenominator#951665]
Input [3]: [plant#949529, filteredUnitOfMeasureConversions#949554, quantityNumerator#949555]
(1695) Generate
Input [2]: [plant#949529, _extract_quantityDenominator#951665]
Arguments: explode(_extract_quantityDenominator#951665), [plant#949529], true, [quantityDenominator#949556]
(1696) Project
Output [1]: [plant#949529]
Input [2]: [plant#949529, quantityDenominator#949556]
(1697) HashAggregate
Input [1]: [plant#949529]
Keys [1]: [plant#949529]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#949529]
(1698) Exchange
Input [1]: [plant#949529]
Arguments: hashpartitioning(plant#949529, 37), ENSURE_REQUIREMENTS, [plan_id=1466127]
(1699) HashAggregate
Input [1]: [plant#949529]
Keys [1]: [plant#949529]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#949529]
(1700) BroadcastHashJoin
Left keys [1]: [plantUuid#949525]
Right keys [1]: [plant#949529]
Join type: Inner
Join condition: None
(1701) Project
Output [3]: [plantUuid#949525, storageLocId#949526, storageLocUuid#949527]
Input [4]: [plantUuid#949525, storageLocId#949526, storageLocUuid#949527, plant#949529]
(1702) BroadcastHashJoin
Left keys [2]: [coalesce(plant#949498.internalRefUUID, ), isnull(plant#949498.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#949525, ), isnull(plantUuid#949525)]
Join type: Inner
Join condition: None
(1703) Generate
Input [9]: [systemId#949495, internalUUID#949496, product#949497, plant#949498, calculationDateTime#949499, stockQuantities#949500, plantUuid#949525, storageLocId#949526, storageLocUuid#949527]
Arguments: explode(filter(stockQuantities#949500, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#949527) AND (lambda x#944569.storageLocation.Id = storageLocId#949526)), lambda x#944569, false))), [systemId#949495, internalUUID#949496, product#949497, plant#949498, calculationDateTime#949499, plantUuid#949525], false, [stockQuantity#949559]
(1704) ObjectHashAggregate
Input [7]: [systemId#949495, internalUUID#949496, product#949497, plant#949498, calculationDateTime#949499, plantUuid#949525, stockQuantity#949559]
Keys [5]: [plantUuid#949525, internalUUID#949496, plant#949498, product#949497, systemId#949495]
Functions [2]: [partial_first(calculationDateTime#949499, false), partial_collect_list(stockQuantity#949559, 0, 0)]
Aggregate Attributes [3]: [first#953167, valueSet#953168, buf#953169]
Results [8]: [plantUuid#949525, internalUUID#949496, plant#949498, product#949497, systemId#949495, first#953170, valueSet#953171, buf#953172]
(1705) ObjectHashAggregate
Input [8]: [plantUuid#949525, internalUUID#949496, plant#949498, product#949497, systemId#949495, first#953170, valueSet#953171, buf#953172]
Keys [5]: [plantUuid#949525, internalUUID#949496, plant#949498, product#949497, systemId#949495]
Functions [2]: [first(calculationDateTime#949499, false), collect_list(stockQuantity#949559, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#949499)()#944584, collect_list(stockQuantity#949559, 0, 0)#944585]
Results [4]: [product#949497, plant#949498, first(calculationDateTime#949499)()#944584 AS calculationDateTime#949560, collect_list(stockQuantity#949559, 0, 0)#944585 AS stockQuantities#949561]
(1706) Filter
Input [4]: [product#949497, plant#949498, calculationDateTime#949560, stockQuantities#949561]
Condition : ((size(stockQuantities#949561, true) > 0) AND isnotnull(calculationDateTime#949560))
(1707) Generate
Input [4]: [product#949497, plant#949498, calculationDateTime#949560, stockQuantities#949561]
Arguments: explode(stockQuantities#949561), [product#949497, plant#949498, calculationDateTime#949560], false, [stockQuantity#949562]
(1708) Filter
Input [4]: [product#949497, plant#949498, calculationDateTime#949560, stockQuantity#949562]
Condition : (((isnotnull(stockQuantity#949562.specialStockIndicator.code) AND isnotnull(stockQuantity#949562.stockType.code)) AND (stockQuantity#949562.specialStockIndicator.code = )) AND (stockQuantity#949562.stockType.code = 01))
(1709) Project
Output [5]: [plant#949498.internalRefUUID AS plantUuid#949564, product#949497.internalRefUUID AS productUuid#949566, calculationDateTime#949560, stockQuantity#949562.storagelocation.id AS storageLocId#949567, stockQuantity#949562.quantity.measure AS quantity#949569]
Input [4]: [product#949497, plant#949498, calculationDateTime#949560, stockQuantity#949562]
(1710) Exchange
Input [5]: [plantUuid#949564, productUuid#949566, calculationDateTime#949560, storageLocId#949567, quantity#949569]
Arguments: hashpartitioning(productUuid#949566, plantUuid#949564, 37), ENSURE_REQUIREMENTS, [plan_id=1466156]
(1711) Sort
Input [5]: [plantUuid#949564, productUuid#949566, calculationDateTime#949560, storageLocId#949567, quantity#949569]
Arguments: [productUuid#949566 ASC NULLS FIRST, plantUuid#949564 ASC NULLS FIRST], false, 0
(1712) Scan parquet
Output [3]: [product#949572, plant#949573, orderDateTime#949574]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1713) Filter
Input [3]: [product#949572, plant#949573, orderDateTime#949574]
Condition : ((isnotnull(orderDateTime#949574) AND isnotnull(plant#949573)) AND isnotnull(product#949572))
(1714) Exchange
Input [3]: [product#949572, plant#949573, orderDateTime#949574]
Arguments: hashpartitioning(product#949572, plant#949573, 37), REPARTITION_BY_NUM, [plan_id=1465211]
(1715) Scan parquet
Output [4]: [plant#949578, product#949579, productionAspect#949581, systemId#949576]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(1716) Project
Output [4]: [plant#949578.internalRefUUID AS _extract_internalRefUUID#952175, product#949579.internalRefUUID AS _extract_internalRefUUID#952174, productionAspect#949581.productMovementPlants.unitOfIssue.code AS _extract_code#952172, productionAspect#949581.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952173]
Input [4]: [plant#949578, product#949579, productionAspect#949581, systemId#949576]
(1717) Exchange
Input [4]: [_extract_internalRefUUID#952175, _extract_internalRefUUID#952174, _extract_code#952172, _extract_internalRefUUID#952173]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464230]
(1718) Project
Output [4]: [_extract_code#952172, _extract_internalRefUUID#952173, _extract_internalRefUUID#952174, _extract_internalRefUUID#952175]
Input [4]: [_extract_internalRefUUID#952175, _extract_internalRefUUID#952174, _extract_code#952172, _extract_internalRefUUID#952173]
(1719) BroadcastExchange
Input [4]: [_extract_code#952172, _extract_internalRefUUID#952173, _extract_internalRefUUID#952174, _extract_internalRefUUID#952175]
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=1466143]
(1720) BroadcastHashJoin
Left keys [4]: [coalesce(product#949572, ), isnull(product#949572), coalesce(plant#949573, ), isnull(plant#949573)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952174, ), isnull(_extract_internalRefUUID#952174), coalesce(_extract_internalRefUUID#952175, ), isnull(_extract_internalRefUUID#952175)]
Join type: LeftOuter
Join condition: None
(1721) Project
Output [5]: [product#949572, plant#949573, orderDateTime#949574, _extract_code#952172, _extract_internalRefUUID#952173]
Input [7]: [product#949572, plant#949573, orderDateTime#949574, _extract_code#952172, _extract_internalRefUUID#952173, _extract_internalRefUUID#952174, _extract_internalRefUUID#952175]
(1722) Scan parquet
Output [4]: [internalUUID#949587, baseUnitOfMeasure#949591, unitOfMeasureConversions#949593, systemId#949586]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1723) Filter
Input [4]: [internalUUID#949587, baseUnitOfMeasure#949591, unitOfMeasureConversions#949593, systemId#949586]
Condition : isnotnull(internalUUID#949587)
(1724) Project
Output [3]: [internalUUID#949587, baseUnitOfMeasure#949591, unitOfMeasureConversions#949593]
Input [4]: [internalUUID#949587, baseUnitOfMeasure#949591, unitOfMeasureConversions#949593, systemId#949586]
(1725) Exchange
Input [3]: [internalUUID#949587, baseUnitOfMeasure#949591, unitOfMeasureConversions#949593]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464237]
(1726) BroadcastExchange
Input [3]: [internalUUID#949587, baseUnitOfMeasure#949591, unitOfMeasureConversions#949593]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466147]
(1727) BroadcastHashJoin
Left keys [1]: [product#949572]
Right keys [1]: [internalUUID#949587]
Join type: LeftOuter
Join condition: None
(1728) Project
Output [4]: [product#949572, plant#949573, orderDateTime#949574, filter(unitOfMeasureConversions#949593, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952172) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952173)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#949591.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#949591.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#949598]
Input [8]: [product#949572, plant#949573, orderDateTime#949574, _extract_code#952172, _extract_internalRefUUID#952173, internalUUID#949587, baseUnitOfMeasure#949591, unitOfMeasureConversions#949593]
(1729) Generate
Input [4]: [product#949572, plant#949573, orderDateTime#949574, filteredUnitOfMeasureConversions#949598]
Arguments: explode(filteredUnitOfMeasureConversions#949598.quantityNumerator), [product#949572, plant#949573, orderDateTime#949574, filteredUnitOfMeasureConversions#949598], true, [quantityNumerator#949599]
(1730) Project
Output [4]: [product#949572, plant#949573, orderDateTime#949574, filteredUnitOfMeasureConversions#949598.quantityDenominator AS _extract_quantityDenominator#951672]
Input [5]: [product#949572, plant#949573, orderDateTime#949574, filteredUnitOfMeasureConversions#949598, quantityNumerator#949599]
(1731) Generate
Input [4]: [product#949572, plant#949573, orderDateTime#949574, _extract_quantityDenominator#951672]
Arguments: explode(_extract_quantityDenominator#951672), [product#949572, plant#949573, orderDateTime#949574], true, [quantityDenominator#949600]
(1732) Project
Output [3]: [product#949572, plant#949573, orderDateTime#949574]
Input [4]: [product#949572, plant#949573, orderDateTime#949574, quantityDenominator#949600]
(1733) Sort
Input [3]: [product#949572, plant#949573, orderDateTime#949574]
Arguments: [product#949572 ASC NULLS FIRST, plant#949573 ASC NULLS FIRST], false, 0
(1734) SortMergeJoin
Left keys [2]: [productUuid#949566, plantUuid#949564]
Right keys [2]: [product#949572, plant#949573]
Join type: Inner
Join condition: (calculationDateTime#949560 <= orderDateTime#949574)
(1735) Project
Output [5]: [plantUuid#949564 AS plant#949603, productUuid#949566 AS product#949604, storageLocId#949567, calculationDateTime#949560, quantity#949569]
Input [8]: [plantUuid#949564, productUuid#949566, calculationDateTime#949560, storageLocId#949567, quantity#949569, product#949572, plant#949573, orderDateTime#949574]
(1736) Exchange
Input [5]: [plant#949603, product#949604, storageLocId#949567, calculationDateTime#949560, quantity#949569]
Arguments: hashpartitioning(coalesce(plant#949603, ), isnull(plant#949603), coalesce(product#949604, ), isnull(product#949604), coalesce(storageLocId#949567, ), isnull(storageLocId#949567), coalesce(calculationDateTime#949560, 1970-01-01 00:00:00), isnull(calculationDateTime#949560), 37), ENSURE_REQUIREMENTS, [plan_id=1466212]
(1737) Sort
Input [5]: [plant#949603, product#949604, storageLocId#949567, calculationDateTime#949560, quantity#949569]
Arguments: [coalesce(plant#949603, ) ASC NULLS FIRST, isnull(plant#949603) ASC NULLS FIRST, coalesce(product#949604, ) ASC NULLS FIRST, isnull(product#949604) ASC NULLS FIRST, coalesce(storageLocId#949567, ) ASC NULLS FIRST, isnull(storageLocId#949567) ASC NULLS FIRST, coalesce(calculationDateTime#949560, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#949560) ASC NULLS FIRST], false, 0
(1738) Scan parquet
Output [6]: [internalUUID#949606, product#949607, plant#949608, calculationDateTime#949609, stockQuantities#949610, systemId#949605]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(1739) Filter
Input [6]: [internalUUID#949606, product#949607, plant#949608, calculationDateTime#949609, stockQuantities#949610, systemId#949605]
Condition : (isnotnull(plant#949608.internalRefUUID) AND isnotnull(product#949607.internalRefUUID))
(1740) Project
Output [6]: [systemId#949605, internalUUID#949606, product#949607, plant#949608, calculationDateTime#949609, stockQuantities#949610]
Input [6]: [internalUUID#949606, product#949607, plant#949608, calculationDateTime#949609, stockQuantities#949610, systemId#949605]
(1741) Exchange
Input [6]: [systemId#949605, internalUUID#949606, product#949607, plant#949608, calculationDateTime#949609, stockQuantities#949610]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464249]
(1742) BroadcastExchange
Input [6]: [systemId#949605, internalUUID#949606, product#949607, plant#949608, calculationDateTime#949609, stockQuantities#949610]
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=1466181]
(1743) Scan parquet
Output [2]: [marketUnit#949611, distributionCenters#949617]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1744) Filter
Input [2]: [marketUnit#949611, distributionCenters#949617]
Condition : (((marketUnit#949611 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#949617, true) > 0)) AND isnotnull(distributionCenters#949617))
(1745) Project
Output [1]: [distributionCenters#949617]
Input [2]: [marketUnit#949611, distributionCenters#949617]
(1746) Exchange
Input [1]: [distributionCenters#949617]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464253]
(1747) Generate
Input [1]: [distributionCenters#949617]
Arguments: explode(distributionCenters#949617), false, [distributionCenters#949632]
(1748) Filter
Input [1]: [distributionCenters#949632]
Condition : (((size(distributionCenters#949632.storageLocations, true) > 0) AND isnotnull(distributionCenters#949632.storageLocations)) AND isnotnull(distributionCenters#949632.internalRefUUID))
(1749) Project
Output [2]: [distributionCenters#949632.internalRefUUID AS _extract_internalRefUUID#951679, distributionCenters#949632.storageLocations AS _extract_storageLocations#951680]
Input [1]: [distributionCenters#949632]
(1750) Generate
Input [2]: [_extract_internalRefUUID#951679, _extract_storageLocations#951680]
Arguments: explode(_extract_storageLocations#951680), [_extract_internalRefUUID#951679], false, [storageLocations#949633]
(1751) Project
Output [3]: [_extract_internalRefUUID#951679 AS plantUuid#949635, storageLocations#949633.id AS storageLocId#949636, storageLocations#949633.internalRefUUID AS storageLocUuid#949637]
Input [2]: [_extract_internalRefUUID#951679, storageLocations#949633]
(1752) BroadcastExchange
Input [3]: [plantUuid#949635, storageLocId#949636, storageLocUuid#949637]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466177]
(1753) Scan parquet
Output [2]: [product#949638, plant#949639]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1754) Filter
Input [2]: [product#949638, plant#949639]
Condition : isnotnull(plant#949639)
(1755) Exchange
Input [2]: [product#949638, plant#949639]
Arguments: hashpartitioning(product#949638, plant#949639, 37), REPARTITION_BY_NUM, [plan_id=1465222]
(1756) Scan parquet
Output [4]: [plant#949644, product#949645, productionAspect#949647, systemId#949642]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(1757) Project
Output [4]: [plant#949644.internalRefUUID AS _extract_internalRefUUID#952179, product#949645.internalRefUUID AS _extract_internalRefUUID#952176, productionAspect#949647.productMovementPlants.unitOfIssue.code AS _extract_code#952177, productionAspect#949647.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952178]
Input [4]: [plant#949644, product#949645, productionAspect#949647, systemId#949642]
(1758) Exchange
Input [4]: [_extract_internalRefUUID#952179, _extract_internalRefUUID#952176, _extract_code#952177, _extract_internalRefUUID#952178]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464265]
(1759) Project
Output [4]: [_extract_code#952177, _extract_internalRefUUID#952178, _extract_internalRefUUID#952176, _extract_internalRefUUID#952179]
Input [4]: [_extract_internalRefUUID#952179, _extract_internalRefUUID#952176, _extract_code#952177, _extract_internalRefUUID#952178]
(1760) BroadcastExchange
Input [4]: [_extract_code#952177, _extract_internalRefUUID#952178, _extract_internalRefUUID#952176, _extract_internalRefUUID#952179]
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=1466161]
(1761) BroadcastHashJoin
Left keys [4]: [coalesce(product#949638, ), isnull(product#949638), coalesce(plant#949639, ), isnull(plant#949639)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952176, ), isnull(_extract_internalRefUUID#952176), coalesce(_extract_internalRefUUID#952179, ), isnull(_extract_internalRefUUID#952179)]
Join type: LeftOuter
Join condition: None
(1762) Project
Output [4]: [product#949638, plant#949639, _extract_code#952177, _extract_internalRefUUID#952178]
Input [6]: [product#949638, plant#949639, _extract_code#952177, _extract_internalRefUUID#952178, _extract_internalRefUUID#952176, _extract_internalRefUUID#952179]
(1763) Scan parquet
Output [4]: [internalUUID#949653, baseUnitOfMeasure#949657, unitOfMeasureConversions#949659, systemId#949652]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1764) Filter
Input [4]: [internalUUID#949653, baseUnitOfMeasure#949657, unitOfMeasureConversions#949659, systemId#949652]
Condition : isnotnull(internalUUID#949653)
(1765) Project
Output [3]: [internalUUID#949653, baseUnitOfMeasure#949657, unitOfMeasureConversions#949659]
Input [4]: [internalUUID#949653, baseUnitOfMeasure#949657, unitOfMeasureConversions#949659, systemId#949652]
(1766) Exchange
Input [3]: [internalUUID#949653, baseUnitOfMeasure#949657, unitOfMeasureConversions#949659]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464272]
(1767) BroadcastExchange
Input [3]: [internalUUID#949653, baseUnitOfMeasure#949657, unitOfMeasureConversions#949659]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466165]
(1768) BroadcastHashJoin
Left keys [1]: [product#949638]
Right keys [1]: [internalUUID#949653]
Join type: LeftOuter
Join condition: None
(1769) Project
Output [2]: [plant#949639, filter(unitOfMeasureConversions#949659, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952177) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952178)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#949657.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#949657.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#949664]
Input [7]: [product#949638, plant#949639, _extract_code#952177, _extract_internalRefUUID#952178, internalUUID#949653, baseUnitOfMeasure#949657, unitOfMeasureConversions#949659]
(1770) Generate
Input [2]: [plant#949639, filteredUnitOfMeasureConversions#949664]
Arguments: explode(filteredUnitOfMeasureConversions#949664.quantityNumerator), [plant#949639, filteredUnitOfMeasureConversions#949664], true, [quantityNumerator#949665]
(1771) Project
Output [2]: [plant#949639, filteredUnitOfMeasureConversions#949664.quantityDenominator AS _extract_quantityDenominator#951681]
Input [3]: [plant#949639, filteredUnitOfMeasureConversions#949664, quantityNumerator#949665]
(1772) Generate
Input [2]: [plant#949639, _extract_quantityDenominator#951681]
Arguments: explode(_extract_quantityDenominator#951681), [plant#949639], true, [quantityDenominator#949666]
(1773) Project
Output [1]: [plant#949639]
Input [2]: [plant#949639, quantityDenominator#949666]
(1774) HashAggregate
Input [1]: [plant#949639]
Keys [1]: [plant#949639]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#949639]
(1775) Exchange
Input [1]: [plant#949639]
Arguments: hashpartitioning(plant#949639, 37), ENSURE_REQUIREMENTS, [plan_id=1466174]
(1776) HashAggregate
Input [1]: [plant#949639]
Keys [1]: [plant#949639]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#949639]
(1777) BroadcastHashJoin
Left keys [1]: [plantUuid#949635]
Right keys [1]: [plant#949639]
Join type: Inner
Join condition: None
(1778) Project
Output [3]: [plantUuid#949635, storageLocId#949636, storageLocUuid#949637]
Input [4]: [plantUuid#949635, storageLocId#949636, storageLocUuid#949637, plant#949639]
(1779) BroadcastHashJoin
Left keys [2]: [coalesce(plant#949608.internalRefUUID, ), isnull(plant#949608.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#949635, ), isnull(plantUuid#949635)]
Join type: Inner
Join condition: None
(1780) Generate
Input [9]: [systemId#949605, internalUUID#949606, product#949607, plant#949608, calculationDateTime#949609, stockQuantities#949610, plantUuid#949635, storageLocId#949636, storageLocUuid#949637]
Arguments: explode(filter(stockQuantities#949610, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#949637) AND (lambda x#944569.storageLocation.Id = storageLocId#949636)), lambda x#944569, false))), [systemId#949605, internalUUID#949606, product#949607, plant#949608, calculationDateTime#949609, plantUuid#949635], false, [stockQuantity#949669]
(1781) ObjectHashAggregate
Input [7]: [systemId#949605, internalUUID#949606, product#949607, plant#949608, calculationDateTime#949609, plantUuid#949635, stockQuantity#949669]
Keys [5]: [plantUuid#949635, internalUUID#949606, plant#949608, product#949607, systemId#949605]
Functions [2]: [partial_first(calculationDateTime#949609, false), partial_collect_list(stockQuantity#949669, 0, 0)]
Aggregate Attributes [3]: [first#953175, valueSet#953176, buf#953177]
Results [8]: [plantUuid#949635, internalUUID#949606, plant#949608, product#949607, systemId#949605, first#953178, valueSet#953179, buf#953180]
(1782) ObjectHashAggregate
Input [8]: [plantUuid#949635, internalUUID#949606, plant#949608, product#949607, systemId#949605, first#953178, valueSet#953179, buf#953180]
Keys [5]: [plantUuid#949635, internalUUID#949606, plant#949608, product#949607, systemId#949605]
Functions [2]: [first(calculationDateTime#949609, false), collect_list(stockQuantity#949669, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#949609)()#944584, collect_list(stockQuantity#949669, 0, 0)#944585]
Results [4]: [product#949607, plant#949608, first(calculationDateTime#949609)()#944584 AS calculationDateTime#949670, collect_list(stockQuantity#949669, 0, 0)#944585 AS stockQuantities#949671]
(1783) Filter
Input [4]: [product#949607, plant#949608, calculationDateTime#949670, stockQuantities#949671]
Condition : ((size(stockQuantities#949671, true) > 0) AND isnotnull(calculationDateTime#949670))
(1784) Generate
Input [4]: [product#949607, plant#949608, calculationDateTime#949670, stockQuantities#949671]
Arguments: explode(stockQuantities#949671), [product#949607, plant#949608, calculationDateTime#949670], false, [stockQuantity#949672]
(1785) Filter
Input [4]: [product#949607, plant#949608, calculationDateTime#949670, stockQuantity#949672]
Condition : (((isnotnull(stockQuantity#949672.specialStockIndicator.code) AND isnotnull(stockQuantity#949672.stockType.code)) AND (stockQuantity#949672.specialStockIndicator.code = )) AND (stockQuantity#949672.stockType.code = 01))
(1786) Project
Output [4]: [plant#949608.internalRefUUID AS plantUuid#949674, product#949607.internalRefUUID AS productUuid#949676, calculationDateTime#949670, stockQuantity#949672.storagelocation.id AS storageLocId#949677]
Input [4]: [product#949607, plant#949608, calculationDateTime#949670, stockQuantity#949672]
(1787) Exchange
Input [4]: [plantUuid#949674, productUuid#949676, calculationDateTime#949670, storageLocId#949677]
Arguments: hashpartitioning(productUuid#949676, plantUuid#949674, 37), ENSURE_REQUIREMENTS, [plan_id=1466203]
(1788) Sort
Input [4]: [plantUuid#949674, productUuid#949676, calculationDateTime#949670, storageLocId#949677]
Arguments: [productUuid#949676 ASC NULLS FIRST, plantUuid#949674 ASC NULLS FIRST], false, 0
(1789) Scan parquet
Output [3]: [product#949682, plant#949683, orderDateTime#949684]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1790) Filter
Input [3]: [product#949682, plant#949683, orderDateTime#949684]
Condition : ((isnotnull(orderDateTime#949684) AND isnotnull(plant#949683)) AND isnotnull(product#949682))
(1791) Exchange
Input [3]: [product#949682, plant#949683, orderDateTime#949684]
Arguments: hashpartitioning(product#949682, plant#949683, 37), REPARTITION_BY_NUM, [plan_id=1465243]
(1792) Scan parquet
Output [4]: [plant#949688, product#949689, productionAspect#949691, systemId#949686]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(1793) Project
Output [4]: [plant#949688.internalRefUUID AS _extract_internalRefUUID#952180, product#949689.internalRefUUID AS _extract_internalRefUUID#952183, productionAspect#949691.productMovementPlants.unitOfIssue.code AS _extract_code#952181, productionAspect#949691.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952182]
Input [4]: [plant#949688, product#949689, productionAspect#949691, systemId#949686]
(1794) Exchange
Input [4]: [_extract_internalRefUUID#952180, _extract_internalRefUUID#952183, _extract_code#952181, _extract_internalRefUUID#952182]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464297]
(1795) Project
Output [4]: [_extract_code#952181, _extract_internalRefUUID#952182, _extract_internalRefUUID#952183, _extract_internalRefUUID#952180]
Input [4]: [_extract_internalRefUUID#952180, _extract_internalRefUUID#952183, _extract_code#952181, _extract_internalRefUUID#952182]
(1796) BroadcastExchange
Input [4]: [_extract_code#952181, _extract_internalRefUUID#952182, _extract_internalRefUUID#952183, _extract_internalRefUUID#952180]
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=1466190]
(1797) BroadcastHashJoin
Left keys [4]: [coalesce(product#949682, ), isnull(product#949682), coalesce(plant#949683, ), isnull(plant#949683)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952183, ), isnull(_extract_internalRefUUID#952183), coalesce(_extract_internalRefUUID#952180, ), isnull(_extract_internalRefUUID#952180)]
Join type: LeftOuter
Join condition: None
(1798) Project
Output [5]: [product#949682, plant#949683, orderDateTime#949684, _extract_code#952181, _extract_internalRefUUID#952182]
Input [7]: [product#949682, plant#949683, orderDateTime#949684, _extract_code#952181, _extract_internalRefUUID#952182, _extract_internalRefUUID#952183, _extract_internalRefUUID#952180]
(1799) Scan parquet
Output [4]: [internalUUID#949697, baseUnitOfMeasure#949701, unitOfMeasureConversions#949703, systemId#949696]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1800) Filter
Input [4]: [internalUUID#949697, baseUnitOfMeasure#949701, unitOfMeasureConversions#949703, systemId#949696]
Condition : isnotnull(internalUUID#949697)
(1801) Project
Output [3]: [internalUUID#949697, baseUnitOfMeasure#949701, unitOfMeasureConversions#949703]
Input [4]: [internalUUID#949697, baseUnitOfMeasure#949701, unitOfMeasureConversions#949703, systemId#949696]
(1802) Exchange
Input [3]: [internalUUID#949697, baseUnitOfMeasure#949701, unitOfMeasureConversions#949703]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464304]
(1803) BroadcastExchange
Input [3]: [internalUUID#949697, baseUnitOfMeasure#949701, unitOfMeasureConversions#949703]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466194]
(1804) BroadcastHashJoin
Left keys [1]: [product#949682]
Right keys [1]: [internalUUID#949697]
Join type: LeftOuter
Join condition: None
(1805) Project
Output [4]: [product#949682, plant#949683, orderDateTime#949684, filter(unitOfMeasureConversions#949703, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952181) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952182)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#949701.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#949701.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#949708]
Input [8]: [product#949682, plant#949683, orderDateTime#949684, _extract_code#952181, _extract_internalRefUUID#952182, internalUUID#949697, baseUnitOfMeasure#949701, unitOfMeasureConversions#949703]
(1806) Generate
Input [4]: [product#949682, plant#949683, orderDateTime#949684, filteredUnitOfMeasureConversions#949708]
Arguments: explode(filteredUnitOfMeasureConversions#949708.quantityNumerator), [product#949682, plant#949683, orderDateTime#949684, filteredUnitOfMeasureConversions#949708], true, [quantityNumerator#949709]
(1807) Project
Output [4]: [product#949682, plant#949683, orderDateTime#949684, filteredUnitOfMeasureConversions#949708.quantityDenominator AS _extract_quantityDenominator#951688]
Input [5]: [product#949682, plant#949683, orderDateTime#949684, filteredUnitOfMeasureConversions#949708, quantityNumerator#949709]
(1808) Generate
Input [4]: [product#949682, plant#949683, orderDateTime#949684, _extract_quantityDenominator#951688]
Arguments: explode(_extract_quantityDenominator#951688), [product#949682, plant#949683, orderDateTime#949684], true, [quantityDenominator#949710]
(1809) Project
Output [3]: [product#949682, plant#949683, orderDateTime#949684]
Input [4]: [product#949682, plant#949683, orderDateTime#949684, quantityDenominator#949710]
(1810) Sort
Input [3]: [product#949682, plant#949683, orderDateTime#949684]
Arguments: [product#949682 ASC NULLS FIRST, plant#949683 ASC NULLS FIRST], false, 0
(1811) SortMergeJoin
Left keys [2]: [productUuid#949676, plantUuid#949674]
Right keys [2]: [product#949682, plant#949683]
Join type: Inner
Join condition: (calculationDateTime#949670 <= orderDateTime#949684)
(1812) Project
Output [4]: [plantUuid#949674 AS plant#949713, productUuid#949676 AS product#949714, storageLocId#949677, calculationDateTime#949670]
Input [7]: [plantUuid#949674, productUuid#949676, calculationDateTime#949670, storageLocId#949677, product#949682, plant#949683, orderDateTime#949684]
(1813) HashAggregate
Input [4]: [plant#949713, product#949714, storageLocId#949677, calculationDateTime#949670]
Keys [3]: [plant#949713, product#949714, storageLocId#949677]
Functions [1]: [partial_max(calculationDateTime#949670)]
Aggregate Attributes [1]: [max#953173]
Results [4]: [plant#949713, product#949714, storageLocId#949677, max#953174]
(1814) HashAggregate
Input [4]: [plant#949713, product#949714, storageLocId#949677, max#953174]
Keys [3]: [plant#949713, product#949714, storageLocId#949677]
Functions [1]: [max(calculationDateTime#949670)]
Aggregate Attributes [1]: [max(calculationDateTime#949670)#944648]
Results [4]: [plant#949713, product#949714, storageLocId#949677, max(calculationDateTime#949670)#944648 AS max_calc_datetime#949715]
(1815) Exchange
Input [4]: [plant#949713, product#949714, storageLocId#949677, max_calc_datetime#949715]
Arguments: hashpartitioning(coalesce(plant#949713, ), isnull(plant#949713), coalesce(product#949714, ), isnull(product#949714), coalesce(storageLocId#949677, ), isnull(storageLocId#949677), coalesce(max_calc_datetime#949715, 1970-01-01 00:00:00), isnull(max_calc_datetime#949715), 37), ENSURE_REQUIREMENTS, [plan_id=1466213]
(1816) Sort
Input [4]: [plant#949713, product#949714, storageLocId#949677, max_calc_datetime#949715]
Arguments: [coalesce(plant#949713, ) ASC NULLS FIRST, isnull(plant#949713) ASC NULLS FIRST, coalesce(product#949714, ) ASC NULLS FIRST, isnull(product#949714) ASC NULLS FIRST, coalesce(storageLocId#949677, ) ASC NULLS FIRST, isnull(storageLocId#949677) ASC NULLS FIRST, coalesce(max_calc_datetime#949715, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#949715) ASC NULLS FIRST], false, 0
(1817) SortMergeJoin
Left keys [8]: [coalesce(plant#949603, ), isnull(plant#949603), coalesce(product#949604, ), isnull(product#949604), coalesce(storageLocId#949567, ), isnull(storageLocId#949567), coalesce(calculationDateTime#949560, 1970-01-01 00:00:00), isnull(calculationDateTime#949560)]
Right keys [8]: [coalesce(plant#949713, ), isnull(plant#949713), coalesce(product#949714, ), isnull(product#949714), coalesce(storageLocId#949677, ), isnull(storageLocId#949677), coalesce(max_calc_datetime#949715, 1970-01-01 00:00:00), isnull(max_calc_datetime#949715)]
Join type: Inner
Join condition: None
(1818) Project
Output [4]: [plant#949603, product#949604, calculationDateTime#949560, quantity#949569]
Input [9]: [plant#949603, product#949604, storageLocId#949567, calculationDateTime#949560, quantity#949569, plant#949713, product#949714, storageLocId#949677, max_calc_datetime#949715]
(1819) HashAggregate
Input [4]: [plant#949603, product#949604, calculationDateTime#949560, quantity#949569]
Keys [2]: [product#949604, plant#949603]
Functions [2]: [partial_min(calculationDateTime#949560), partial_sum(quantity#949569)]
Aggregate Attributes [2]: [min#953163, sum#953164]
Results [4]: [product#949604, plant#949603, min#953165, sum#953166]
(1820) Exchange
Input [4]: [product#949604, plant#949603, min#953165, sum#953166]
Arguments: hashpartitioning(product#949604, plant#949603, 37), ENSURE_REQUIREMENTS, [plan_id=1466220]
(1821) HashAggregate
Input [4]: [product#949604, plant#949603, min#953165, sum#953166]
Keys [2]: [product#949604, plant#949603]
Functions [2]: [min(calculationDateTime#949560), sum(quantity#949569)]
Aggregate Attributes [2]: [min(calculationDateTime#949560)#944775, sum(quantity#949569)#944774]
Results [4]: [product#949604, plant#949603, min(calculationDateTime#949560)#944775 AS minCalculationDateTime#949717, round(sum(quantity#949569)#944774, 0) AS roundedQuantitySum#949718]
(1822) Sort
Input [4]: [product#949604, plant#949603, minCalculationDateTime#949717, roundedQuantitySum#949718]
Arguments: [product#949604 ASC NULLS FIRST, plant#949603 ASC NULLS FIRST], false, 0
(1823) SortMergeJoin
Left keys [2]: [product#949464, plant#949465]
Right keys [2]: [product#949604, plant#949603]
Join type: LeftOuter
Join condition: None
(1824) Project
Output [7]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, CASE WHEN isnotnull(minCalculationDateTime#949717) THEN minCalculationDateTime#949717 ELSE orderDateTime#949466 END AS stockDatetime#949719, CASE WHEN isnotnull(roundedQuantitySum#949718) THEN array(roundedQuantitySum#949718) ELSE [0.0] END AS stockBatchQuantities#949720]
Input [9]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, product#949604, plant#949603, minCalculationDateTime#949717, roundedQuantitySum#949718]
(1825) Exchange
Input [7]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720]
Arguments: hashpartitioning(coalesce(plant#949465, ), isnull(plant#949465), coalesce(product#949464, ), isnull(product#949464), 37), ENSURE_REQUIREMENTS, [plan_id=1466374]
(1826) Sort
Input [7]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720]
Arguments: [coalesce(plant#949465, ) ASC NULLS FIRST, isnull(plant#949465) ASC NULLS FIRST, coalesce(product#949464, ) ASC NULLS FIRST, isnull(product#949464) ASC NULLS FIRST], false, 0
(1827) Scan parquet
Output [3]: [product#949722, plant#949723, orderDateTime#949724]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1828) Exchange
Input [3]: [product#949722, plant#949723, orderDateTime#949724]
Arguments: hashpartitioning(product#949722, plant#949723, 37), REPARTITION_BY_NUM, [plan_id=1464322]
(1829) Scan parquet
Output [9]: [internalUUID#949727, plant#949728, product#949729, blockedForReplenishmentStartingFrom#949730, productionAspect#949731, salesPlant#949732, listing#949733, sourceOfSupplyCategory#949734, systemId#949726]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>
(1830) Project
Output [9]: [systemId#949726, internalUUID#949727, plant#949728, product#949729, blockedForReplenishmentStartingFrom#949730, productionAspect#949731, salesPlant#949732, listing#949733, sourceOfSupplyCategory#949734]
Input [9]: [internalUUID#949727, plant#949728, product#949729, blockedForReplenishmentStartingFrom#949730, productionAspect#949731, salesPlant#949732, listing#949733, sourceOfSupplyCategory#949734, systemId#949726]
(1831) Exchange
Input [9]: [systemId#949726, internalUUID#949727, plant#949728, product#949729, blockedForReplenishmentStartingFrom#949730, productionAspect#949731, salesPlant#949732, listing#949733, sourceOfSupplyCategory#949734]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464325]
(1832) Project
Output [1]: [struct(systemId, systemId#949726, internalUUID, internalUUID#949727, plant, plant#949728, product, product#949729, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#949730, productionAspect, productionAspect#949731, salesPlant, salesPlant#949732, listing, listing#949733, sourceOfSupplyCategory, sourceOfSupplyCategory#949734) AS productPlant#949735]
Input [9]: [systemId#949726, internalUUID#949727, plant#949728, product#949729, blockedForReplenishmentStartingFrom#949730, productionAspect#949731, salesPlant#949732, listing#949733, sourceOfSupplyCategory#949734]
(1833) BroadcastExchange
Input [1]: [productPlant#949735]
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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].plant.internalRefUUID)),false), [plan_id=1466228]
(1834) BroadcastHashJoin
Left keys [4]: [coalesce(product#949722, ), isnull(product#949722), coalesce(plant#949723, ), isnull(plant#949723)]
Right keys [4]: [coalesce(productPlant#949735.product.internalRefUUID, ), isnull(productPlant#949735.product.internalRefUUID), coalesce(productPlant#949735.plant.internalRefUUID, ), isnull(productPlant#949735.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1835) Scan parquet
Output [4]: [internalUUID#949737, baseUnitOfMeasure#949741, unitOfMeasureConversions#949743, systemId#949736]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1836) Filter
Input [4]: [internalUUID#949737, baseUnitOfMeasure#949741, unitOfMeasureConversions#949743, systemId#949736]
Condition : isnotnull(internalUUID#949737)
(1837) Project
Output [3]: [internalUUID#949737, baseUnitOfMeasure#949741, unitOfMeasureConversions#949743]
Input [4]: [internalUUID#949737, baseUnitOfMeasure#949741, unitOfMeasureConversions#949743, systemId#949736]
(1838) Exchange
Input [3]: [internalUUID#949737, baseUnitOfMeasure#949741, unitOfMeasureConversions#949743]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464331]
(1839) BroadcastExchange
Input [3]: [internalUUID#949737, baseUnitOfMeasure#949741, unitOfMeasureConversions#949743]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466231]
(1840) BroadcastHashJoin
Left keys [1]: [product#949722]
Right keys [1]: [internalUUID#949737]
Join type: LeftOuter
Join condition: None
(1841) Project
Output [5]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, filter(unitOfMeasureConversions#949743, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#949735.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#949735.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#949741.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#949741.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#949748]
Input [7]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, internalUUID#949737, baseUnitOfMeasure#949741, unitOfMeasureConversions#949743]
(1842) Project
Output [6]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, filteredUnitOfMeasureConversions#949748.quantityDenominator AS _extract_quantityDenominator#952184, filteredUnitOfMeasureConversions#949748.quantityNumerator AS _extract_quantityNumerator#952185]
Input [5]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, filteredUnitOfMeasureConversions#949748]
(1843) Generate
Input [6]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, _extract_quantityDenominator#952184, _extract_quantityNumerator#952185]
Arguments: explode(_extract_quantityNumerator#952185), [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, _extract_quantityDenominator#952184], true, [quantityNumerator#949749]
(1844) Generate
Input [6]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, _extract_quantityDenominator#952184, quantityNumerator#949749]
Arguments: explode(_extract_quantityDenominator#952184), [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, quantityNumerator#949749], true, [quantityDenominator#949750]
(1845) Project
Output [5]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, (cast(quantityNumerator#949749 as double) / cast(quantityDenominator#949750 as double)) AS outboundUnit#949751]
Input [6]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, quantityNumerator#949749, quantityDenominator#949750]
(1846) Project
Output [5]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, CASE WHEN (isnull(outboundUnit#949751) OR (outboundUnit#949751 <= 0.0)) THEN 1.0 ELSE outboundUnit#949751 END AS outboundUnit#949752]
Input [5]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949751]
(1847) Sort
Input [5]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752]
Arguments: [product#949722 ASC NULLS FIRST, plant#949723 ASC NULLS FIRST], false, 0
(1848) Scan parquet
Output [6]: [internalUUID#949754, product#949755, plant#949756, calculationDateTime#949757, stockQuantities#949758, systemId#949753]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(1849) Filter
Input [6]: [internalUUID#949754, product#949755, plant#949756, calculationDateTime#949757, stockQuantities#949758, systemId#949753]
Condition : (isnotnull(plant#949756.internalRefUUID) AND isnotnull(product#949755.internalRefUUID))
(1850) Project
Output [6]: [systemId#949753, internalUUID#949754, product#949755, plant#949756, calculationDateTime#949757, stockQuantities#949758]
Input [6]: [internalUUID#949754, product#949755, plant#949756, calculationDateTime#949757, stockQuantities#949758, systemId#949753]
(1851) Exchange
Input [6]: [systemId#949753, internalUUID#949754, product#949755, plant#949756, calculationDateTime#949757, stockQuantities#949758]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464342]
(1852) BroadcastExchange
Input [6]: [systemId#949753, internalUUID#949754, product#949755, plant#949756, calculationDateTime#949757, stockQuantities#949758]
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=1466259]
(1853) Scan parquet
Output [2]: [marketUnit#949759, distributionCenters#949765]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1854) Filter
Input [2]: [marketUnit#949759, distributionCenters#949765]
Condition : (((marketUnit#949759 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#949765, true) > 0)) AND isnotnull(distributionCenters#949765))
(1855) Project
Output [1]: [distributionCenters#949765]
Input [2]: [marketUnit#949759, distributionCenters#949765]
(1856) Exchange
Input [1]: [distributionCenters#949765]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464346]
(1857) Generate
Input [1]: [distributionCenters#949765]
Arguments: explode(distributionCenters#949765), false, [distributionCenters#949780]
(1858) Filter
Input [1]: [distributionCenters#949780]
Condition : (((size(distributionCenters#949780.storageLocations, true) > 0) AND isnotnull(distributionCenters#949780.storageLocations)) AND isnotnull(distributionCenters#949780.internalRefUUID))
(1859) Project
Output [2]: [distributionCenters#949780.internalRefUUID AS _extract_internalRefUUID#951696, distributionCenters#949780.storageLocations AS _extract_storageLocations#951697]
Input [1]: [distributionCenters#949780]
(1860) Generate
Input [2]: [_extract_internalRefUUID#951696, _extract_storageLocations#951697]
Arguments: explode(_extract_storageLocations#951697), [_extract_internalRefUUID#951696], false, [storageLocations#949781]
(1861) Project
Output [3]: [_extract_internalRefUUID#951696 AS plantUuid#949783, storageLocations#949781.id AS storageLocId#949784, storageLocations#949781.internalRefUUID AS storageLocUuid#949785]
Input [2]: [_extract_internalRefUUID#951696, storageLocations#949781]
(1862) BroadcastExchange
Input [3]: [plantUuid#949783, storageLocId#949784, storageLocUuid#949785]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466255]
(1863) Scan parquet
Output [2]: [product#949786, plant#949787]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1864) Filter
Input [2]: [product#949786, plant#949787]
Condition : isnotnull(plant#949787)
(1865) Exchange
Input [2]: [product#949786, plant#949787]
Arguments: hashpartitioning(product#949786, plant#949787, 37), REPARTITION_BY_NUM, [plan_id=1465262]
(1866) Scan parquet
Output [4]: [plant#949792, product#949793, productionAspect#949795, systemId#949790]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(1867) Project
Output [4]: [plant#949792.internalRefUUID AS _extract_internalRefUUID#952188, product#949793.internalRefUUID AS _extract_internalRefUUID#952189, productionAspect#949795.productMovementPlants.unitOfIssue.code AS _extract_code#952186, productionAspect#949795.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952187]
Input [4]: [plant#949792, product#949793, productionAspect#949795, systemId#949790]
(1868) Exchange
Input [4]: [_extract_internalRefUUID#952188, _extract_internalRefUUID#952189, _extract_code#952186, _extract_internalRefUUID#952187]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464358]
(1869) Project
Output [4]: [_extract_code#952186, _extract_internalRefUUID#952187, _extract_internalRefUUID#952189, _extract_internalRefUUID#952188]
Input [4]: [_extract_internalRefUUID#952188, _extract_internalRefUUID#952189, _extract_code#952186, _extract_internalRefUUID#952187]
(1870) BroadcastExchange
Input [4]: [_extract_code#952186, _extract_internalRefUUID#952187, _extract_internalRefUUID#952189, _extract_internalRefUUID#952188]
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=1466239]
(1871) BroadcastHashJoin
Left keys [4]: [coalesce(product#949786, ), isnull(product#949786), coalesce(plant#949787, ), isnull(plant#949787)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952189, ), isnull(_extract_internalRefUUID#952189), coalesce(_extract_internalRefUUID#952188, ), isnull(_extract_internalRefUUID#952188)]
Join type: LeftOuter
Join condition: None
(1872) Project
Output [4]: [product#949786, plant#949787, _extract_code#952186, _extract_internalRefUUID#952187]
Input [6]: [product#949786, plant#949787, _extract_code#952186, _extract_internalRefUUID#952187, _extract_internalRefUUID#952189, _extract_internalRefUUID#952188]
(1873) Scan parquet
Output [4]: [internalUUID#949801, baseUnitOfMeasure#949805, unitOfMeasureConversions#949807, systemId#949800]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1874) Filter
Input [4]: [internalUUID#949801, baseUnitOfMeasure#949805, unitOfMeasureConversions#949807, systemId#949800]
Condition : isnotnull(internalUUID#949801)
(1875) Project
Output [3]: [internalUUID#949801, baseUnitOfMeasure#949805, unitOfMeasureConversions#949807]
Input [4]: [internalUUID#949801, baseUnitOfMeasure#949805, unitOfMeasureConversions#949807, systemId#949800]
(1876) Exchange
Input [3]: [internalUUID#949801, baseUnitOfMeasure#949805, unitOfMeasureConversions#949807]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464365]
(1877) BroadcastExchange
Input [3]: [internalUUID#949801, baseUnitOfMeasure#949805, unitOfMeasureConversions#949807]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466243]
(1878) BroadcastHashJoin
Left keys [1]: [product#949786]
Right keys [1]: [internalUUID#949801]
Join type: LeftOuter
Join condition: None
(1879) Project
Output [2]: [plant#949787, filter(unitOfMeasureConversions#949807, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952186) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952187)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#949805.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#949805.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#949812]
Input [7]: [product#949786, plant#949787, _extract_code#952186, _extract_internalRefUUID#952187, internalUUID#949801, baseUnitOfMeasure#949805, unitOfMeasureConversions#949807]
(1880) Generate
Input [2]: [plant#949787, filteredUnitOfMeasureConversions#949812]
Arguments: explode(filteredUnitOfMeasureConversions#949812.quantityNumerator), [plant#949787, filteredUnitOfMeasureConversions#949812], true, [quantityNumerator#949813]
(1881) Project
Output [2]: [plant#949787, filteredUnitOfMeasureConversions#949812.quantityDenominator AS _extract_quantityDenominator#951698]
Input [3]: [plant#949787, filteredUnitOfMeasureConversions#949812, quantityNumerator#949813]
(1882) Generate
Input [2]: [plant#949787, _extract_quantityDenominator#951698]
Arguments: explode(_extract_quantityDenominator#951698), [plant#949787], true, [quantityDenominator#949814]
(1883) Project
Output [1]: [plant#949787]
Input [2]: [plant#949787, quantityDenominator#949814]
(1884) HashAggregate
Input [1]: [plant#949787]
Keys [1]: [plant#949787]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#949787]
(1885) Exchange
Input [1]: [plant#949787]
Arguments: hashpartitioning(plant#949787, 37), ENSURE_REQUIREMENTS, [plan_id=1466252]
(1886) HashAggregate
Input [1]: [plant#949787]
Keys [1]: [plant#949787]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#949787]
(1887) BroadcastHashJoin
Left keys [1]: [plantUuid#949783]
Right keys [1]: [plant#949787]
Join type: Inner
Join condition: None
(1888) Project
Output [3]: [plantUuid#949783, storageLocId#949784, storageLocUuid#949785]
Input [4]: [plantUuid#949783, storageLocId#949784, storageLocUuid#949785, plant#949787]
(1889) BroadcastHashJoin
Left keys [2]: [coalesce(plant#949756.internalRefUUID, ), isnull(plant#949756.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#949783, ), isnull(plantUuid#949783)]
Join type: Inner
Join condition: None
(1890) Generate
Input [9]: [systemId#949753, internalUUID#949754, product#949755, plant#949756, calculationDateTime#949757, stockQuantities#949758, plantUuid#949783, storageLocId#949784, storageLocUuid#949785]
Arguments: explode(filter(stockQuantities#949758, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#949785) AND (lambda x#944569.storageLocation.Id = storageLocId#949784)), lambda x#944569, false))), [systemId#949753, internalUUID#949754, product#949755, plant#949756, calculationDateTime#949757, plantUuid#949783], false, [stockQuantity#949817]
(1891) ObjectHashAggregate
Input [7]: [systemId#949753, internalUUID#949754, product#949755, plant#949756, calculationDateTime#949757, plantUuid#949783, stockQuantity#949817]
Keys [5]: [plantUuid#949783, internalUUID#949754, plant#949756, product#949755, systemId#949753]
Functions [2]: [partial_first(calculationDateTime#949757, false), partial_collect_list(stockQuantity#949817, 0, 0)]
Aggregate Attributes [3]: [first#953189, valueSet#953190, buf#953191]
Results [8]: [plantUuid#949783, internalUUID#949754, plant#949756, product#949755, systemId#949753, first#953192, valueSet#953193, buf#953194]
(1892) ObjectHashAggregate
Input [8]: [plantUuid#949783, internalUUID#949754, plant#949756, product#949755, systemId#949753, first#953192, valueSet#953193, buf#953194]
Keys [5]: [plantUuid#949783, internalUUID#949754, plant#949756, product#949755, systemId#949753]
Functions [2]: [first(calculationDateTime#949757, false), collect_list(stockQuantity#949817, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#949757)()#944584, collect_list(stockQuantity#949817, 0, 0)#944585]
Results [4]: [product#949755, plant#949756, first(calculationDateTime#949757)()#944584 AS calculationDateTime#949818, collect_list(stockQuantity#949817, 0, 0)#944585 AS stockQuantities#949819]
(1893) Filter
Input [4]: [product#949755, plant#949756, calculationDateTime#949818, stockQuantities#949819]
Condition : ((size(stockQuantities#949819, true) > 0) AND isnotnull(calculationDateTime#949818))
(1894) Generate
Input [4]: [product#949755, plant#949756, calculationDateTime#949818, stockQuantities#949819]
Arguments: explode(stockQuantities#949819), [product#949755, plant#949756, calculationDateTime#949818], false, [stockQuantity#949820]
(1895) Filter
Input [4]: [product#949755, plant#949756, calculationDateTime#949818, stockQuantity#949820]
Condition : (((isnotnull(stockQuantity#949820.specialStockIndicator.code) AND isnotnull(stockQuantity#949820.stockType.code)) AND (stockQuantity#949820.specialStockIndicator.code = )) AND (stockQuantity#949820.stockType.code = 01))
(1896) Project
Output [5]: [plant#949756.internalRefUUID AS plantUuid#949822, product#949755.internalRefUUID AS productUuid#949824, calculationDateTime#949818, stockQuantity#949820.storagelocation.id AS storageLocId#949825, stockQuantity#949820.quantity.measure AS quantity#949827]
Input [4]: [product#949755, plant#949756, calculationDateTime#949818, stockQuantity#949820]
(1897) Exchange
Input [5]: [plantUuid#949822, productUuid#949824, calculationDateTime#949818, storageLocId#949825, quantity#949827]
Arguments: hashpartitioning(productUuid#949824, plantUuid#949822, 37), ENSURE_REQUIREMENTS, [plan_id=1466281]
(1898) Sort
Input [5]: [plantUuid#949822, productUuid#949824, calculationDateTime#949818, storageLocId#949825, quantity#949827]
Arguments: [productUuid#949824 ASC NULLS FIRST, plantUuid#949822 ASC NULLS FIRST], false, 0
(1899) Scan parquet
Output [3]: [product#949830, plant#949831, orderDateTime#949832]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1900) Filter
Input [3]: [product#949830, plant#949831, orderDateTime#949832]
Condition : ((isnotnull(orderDateTime#949832) AND isnotnull(plant#949831)) AND isnotnull(product#949830))
(1901) Exchange
Input [3]: [product#949830, plant#949831, orderDateTime#949832]
Arguments: hashpartitioning(product#949830, plant#949831, 37), REPARTITION_BY_NUM, [plan_id=1465283]
(1902) Scan parquet
Output [4]: [plant#949836, product#949837, productionAspect#949839, systemId#949834]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(1903) Project
Output [4]: [plant#949836.internalRefUUID AS _extract_internalRefUUID#952191, product#949837.internalRefUUID AS _extract_internalRefUUID#952190, productionAspect#949839.productMovementPlants.unitOfIssue.code AS _extract_code#952192, productionAspect#949839.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952193]
Input [4]: [plant#949836, product#949837, productionAspect#949839, systemId#949834]
(1904) Exchange
Input [4]: [_extract_internalRefUUID#952191, _extract_internalRefUUID#952190, _extract_code#952192, _extract_internalRefUUID#952193]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464390]
(1905) Project
Output [4]: [_extract_code#952192, _extract_internalRefUUID#952193, _extract_internalRefUUID#952190, _extract_internalRefUUID#952191]
Input [4]: [_extract_internalRefUUID#952191, _extract_internalRefUUID#952190, _extract_code#952192, _extract_internalRefUUID#952193]
(1906) BroadcastExchange
Input [4]: [_extract_code#952192, _extract_internalRefUUID#952193, _extract_internalRefUUID#952190, _extract_internalRefUUID#952191]
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=1466268]
(1907) BroadcastHashJoin
Left keys [4]: [coalesce(product#949830, ), isnull(product#949830), coalesce(plant#949831, ), isnull(plant#949831)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952190, ), isnull(_extract_internalRefUUID#952190), coalesce(_extract_internalRefUUID#952191, ), isnull(_extract_internalRefUUID#952191)]
Join type: LeftOuter
Join condition: None
(1908) Project
Output [5]: [product#949830, plant#949831, orderDateTime#949832, _extract_code#952192, _extract_internalRefUUID#952193]
Input [7]: [product#949830, plant#949831, orderDateTime#949832, _extract_code#952192, _extract_internalRefUUID#952193, _extract_internalRefUUID#952190, _extract_internalRefUUID#952191]
(1909) Scan parquet
Output [4]: [internalUUID#949845, baseUnitOfMeasure#949849, unitOfMeasureConversions#949851, systemId#949844]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1910) Filter
Input [4]: [internalUUID#949845, baseUnitOfMeasure#949849, unitOfMeasureConversions#949851, systemId#949844]
Condition : isnotnull(internalUUID#949845)
(1911) Project
Output [3]: [internalUUID#949845, baseUnitOfMeasure#949849, unitOfMeasureConversions#949851]
Input [4]: [internalUUID#949845, baseUnitOfMeasure#949849, unitOfMeasureConversions#949851, systemId#949844]
(1912) Exchange
Input [3]: [internalUUID#949845, baseUnitOfMeasure#949849, unitOfMeasureConversions#949851]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464397]
(1913) BroadcastExchange
Input [3]: [internalUUID#949845, baseUnitOfMeasure#949849, unitOfMeasureConversions#949851]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466272]
(1914) BroadcastHashJoin
Left keys [1]: [product#949830]
Right keys [1]: [internalUUID#949845]
Join type: LeftOuter
Join condition: None
(1915) Project
Output [4]: [product#949830, plant#949831, orderDateTime#949832, filter(unitOfMeasureConversions#949851, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952192) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952193)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#949849.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#949849.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#949856]
Input [8]: [product#949830, plant#949831, orderDateTime#949832, _extract_code#952192, _extract_internalRefUUID#952193, internalUUID#949845, baseUnitOfMeasure#949849, unitOfMeasureConversions#949851]
(1916) Generate
Input [4]: [product#949830, plant#949831, orderDateTime#949832, filteredUnitOfMeasureConversions#949856]
Arguments: explode(filteredUnitOfMeasureConversions#949856.quantityNumerator), [product#949830, plant#949831, orderDateTime#949832, filteredUnitOfMeasureConversions#949856], true, [quantityNumerator#949857]
(1917) Project
Output [4]: [product#949830, plant#949831, orderDateTime#949832, filteredUnitOfMeasureConversions#949856.quantityDenominator AS _extract_quantityDenominator#951705]
Input [5]: [product#949830, plant#949831, orderDateTime#949832, filteredUnitOfMeasureConversions#949856, quantityNumerator#949857]
(1918) Generate
Input [4]: [product#949830, plant#949831, orderDateTime#949832, _extract_quantityDenominator#951705]
Arguments: explode(_extract_quantityDenominator#951705), [product#949830, plant#949831, orderDateTime#949832], true, [quantityDenominator#949858]
(1919) Project
Output [3]: [product#949830, plant#949831, orderDateTime#949832]
Input [4]: [product#949830, plant#949831, orderDateTime#949832, quantityDenominator#949858]
(1920) Sort
Input [3]: [product#949830, plant#949831, orderDateTime#949832]
Arguments: [product#949830 ASC NULLS FIRST, plant#949831 ASC NULLS FIRST], false, 0
(1921) SortMergeJoin
Left keys [2]: [productUuid#949824, plantUuid#949822]
Right keys [2]: [product#949830, plant#949831]
Join type: Inner
Join condition: (calculationDateTime#949818 <= orderDateTime#949832)
(1922) Project
Output [5]: [plantUuid#949822 AS plant#949861, productUuid#949824 AS product#949862, storageLocId#949825, calculationDateTime#949818, quantity#949827]
Input [8]: [plantUuid#949822, productUuid#949824, calculationDateTime#949818, storageLocId#949825, quantity#949827, product#949830, plant#949831, orderDateTime#949832]
(1923) Exchange
Input [5]: [plant#949861, product#949862, storageLocId#949825, calculationDateTime#949818, quantity#949827]
Arguments: hashpartitioning(coalesce(plant#949861, ), isnull(plant#949861), coalesce(product#949862, ), isnull(product#949862), coalesce(storageLocId#949825, ), isnull(storageLocId#949825), coalesce(calculationDateTime#949818, 1970-01-01 00:00:00), isnull(calculationDateTime#949818), 37), ENSURE_REQUIREMENTS, [plan_id=1466337]
(1924) Sort
Input [5]: [plant#949861, product#949862, storageLocId#949825, calculationDateTime#949818, quantity#949827]
Arguments: [coalesce(plant#949861, ) ASC NULLS FIRST, isnull(plant#949861) ASC NULLS FIRST, coalesce(product#949862, ) ASC NULLS FIRST, isnull(product#949862) ASC NULLS FIRST, coalesce(storageLocId#949825, ) ASC NULLS FIRST, isnull(storageLocId#949825) ASC NULLS FIRST, coalesce(calculationDateTime#949818, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#949818) ASC NULLS FIRST], false, 0
(1925) Scan parquet
Output [6]: [internalUUID#949864, product#949865, plant#949866, calculationDateTime#949867, stockQuantities#949868, systemId#949863]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(1926) Filter
Input [6]: [internalUUID#949864, product#949865, plant#949866, calculationDateTime#949867, stockQuantities#949868, systemId#949863]
Condition : (isnotnull(plant#949866.internalRefUUID) AND isnotnull(product#949865.internalRefUUID))
(1927) Project
Output [6]: [systemId#949863, internalUUID#949864, product#949865, plant#949866, calculationDateTime#949867, stockQuantities#949868]
Input [6]: [internalUUID#949864, product#949865, plant#949866, calculationDateTime#949867, stockQuantities#949868, systemId#949863]
(1928) Exchange
Input [6]: [systemId#949863, internalUUID#949864, product#949865, plant#949866, calculationDateTime#949867, stockQuantities#949868]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464409]
(1929) BroadcastExchange
Input [6]: [systemId#949863, internalUUID#949864, product#949865, plant#949866, calculationDateTime#949867, stockQuantities#949868]
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=1466306]
(1930) Scan parquet
Output [2]: [marketUnit#949869, distributionCenters#949875]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1931) Filter
Input [2]: [marketUnit#949869, distributionCenters#949875]
Condition : (((marketUnit#949869 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#949875, true) > 0)) AND isnotnull(distributionCenters#949875))
(1932) Project
Output [1]: [distributionCenters#949875]
Input [2]: [marketUnit#949869, distributionCenters#949875]
(1933) Exchange
Input [1]: [distributionCenters#949875]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464413]
(1934) Generate
Input [1]: [distributionCenters#949875]
Arguments: explode(distributionCenters#949875), false, [distributionCenters#949890]
(1935) Filter
Input [1]: [distributionCenters#949890]
Condition : (((size(distributionCenters#949890.storageLocations, true) > 0) AND isnotnull(distributionCenters#949890.storageLocations)) AND isnotnull(distributionCenters#949890.internalRefUUID))
(1936) Project
Output [2]: [distributionCenters#949890.internalRefUUID AS _extract_internalRefUUID#951712, distributionCenters#949890.storageLocations AS _extract_storageLocations#951713]
Input [1]: [distributionCenters#949890]
(1937) Generate
Input [2]: [_extract_internalRefUUID#951712, _extract_storageLocations#951713]
Arguments: explode(_extract_storageLocations#951713), [_extract_internalRefUUID#951712], false, [storageLocations#949891]
(1938) Project
Output [3]: [_extract_internalRefUUID#951712 AS plantUuid#949893, storageLocations#949891.id AS storageLocId#949894, storageLocations#949891.internalRefUUID AS storageLocUuid#949895]
Input [2]: [_extract_internalRefUUID#951712, storageLocations#949891]
(1939) BroadcastExchange
Input [3]: [plantUuid#949893, storageLocId#949894, storageLocUuid#949895]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466302]
(1940) Scan parquet
Output [2]: [product#949896, plant#949897]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1941) Filter
Input [2]: [product#949896, plant#949897]
Condition : isnotnull(plant#949897)
(1942) Exchange
Input [2]: [product#949896, plant#949897]
Arguments: hashpartitioning(product#949896, plant#949897, 37), REPARTITION_BY_NUM, [plan_id=1465294]
(1943) Scan parquet
Output [4]: [plant#949902, product#949903, productionAspect#949905, systemId#949900]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(1944) Project
Output [4]: [plant#949902.internalRefUUID AS _extract_internalRefUUID#952194, product#949903.internalRefUUID AS _extract_internalRefUUID#952197, productionAspect#949905.productMovementPlants.unitOfIssue.code AS _extract_code#952195, productionAspect#949905.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952196]
Input [4]: [plant#949902, product#949903, productionAspect#949905, systemId#949900]
(1945) Exchange
Input [4]: [_extract_internalRefUUID#952194, _extract_internalRefUUID#952197, _extract_code#952195, _extract_internalRefUUID#952196]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464425]
(1946) Project
Output [4]: [_extract_code#952195, _extract_internalRefUUID#952196, _extract_internalRefUUID#952197, _extract_internalRefUUID#952194]
Input [4]: [_extract_internalRefUUID#952194, _extract_internalRefUUID#952197, _extract_code#952195, _extract_internalRefUUID#952196]
(1947) BroadcastExchange
Input [4]: [_extract_code#952195, _extract_internalRefUUID#952196, _extract_internalRefUUID#952197, _extract_internalRefUUID#952194]
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=1466286]
(1948) BroadcastHashJoin
Left keys [4]: [coalesce(product#949896, ), isnull(product#949896), coalesce(plant#949897, ), isnull(plant#949897)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952197, ), isnull(_extract_internalRefUUID#952197), coalesce(_extract_internalRefUUID#952194, ), isnull(_extract_internalRefUUID#952194)]
Join type: LeftOuter
Join condition: None
(1949) Project
Output [4]: [product#949896, plant#949897, _extract_code#952195, _extract_internalRefUUID#952196]
Input [6]: [product#949896, plant#949897, _extract_code#952195, _extract_internalRefUUID#952196, _extract_internalRefUUID#952197, _extract_internalRefUUID#952194]
(1950) Scan parquet
Output [4]: [internalUUID#949911, baseUnitOfMeasure#949915, unitOfMeasureConversions#949917, systemId#949910]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1951) Filter
Input [4]: [internalUUID#949911, baseUnitOfMeasure#949915, unitOfMeasureConversions#949917, systemId#949910]
Condition : isnotnull(internalUUID#949911)
(1952) Project
Output [3]: [internalUUID#949911, baseUnitOfMeasure#949915, unitOfMeasureConversions#949917]
Input [4]: [internalUUID#949911, baseUnitOfMeasure#949915, unitOfMeasureConversions#949917, systemId#949910]
(1953) Exchange
Input [3]: [internalUUID#949911, baseUnitOfMeasure#949915, unitOfMeasureConversions#949917]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464432]
(1954) BroadcastExchange
Input [3]: [internalUUID#949911, baseUnitOfMeasure#949915, unitOfMeasureConversions#949917]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466290]
(1955) BroadcastHashJoin
Left keys [1]: [product#949896]
Right keys [1]: [internalUUID#949911]
Join type: LeftOuter
Join condition: None
(1956) Project
Output [2]: [plant#949897, filter(unitOfMeasureConversions#949917, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952195) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952196)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#949915.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#949915.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#949922]
Input [7]: [product#949896, plant#949897, _extract_code#952195, _extract_internalRefUUID#952196, internalUUID#949911, baseUnitOfMeasure#949915, unitOfMeasureConversions#949917]
(1957) Generate
Input [2]: [plant#949897, filteredUnitOfMeasureConversions#949922]
Arguments: explode(filteredUnitOfMeasureConversions#949922.quantityNumerator), [plant#949897, filteredUnitOfMeasureConversions#949922], true, [quantityNumerator#949923]
(1958) Project
Output [2]: [plant#949897, filteredUnitOfMeasureConversions#949922.quantityDenominator AS _extract_quantityDenominator#951714]
Input [3]: [plant#949897, filteredUnitOfMeasureConversions#949922, quantityNumerator#949923]
(1959) Generate
Input [2]: [plant#949897, _extract_quantityDenominator#951714]
Arguments: explode(_extract_quantityDenominator#951714), [plant#949897], true, [quantityDenominator#949924]
(1960) Project
Output [1]: [plant#949897]
Input [2]: [plant#949897, quantityDenominator#949924]
(1961) HashAggregate
Input [1]: [plant#949897]
Keys [1]: [plant#949897]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#949897]
(1962) Exchange
Input [1]: [plant#949897]
Arguments: hashpartitioning(plant#949897, 37), ENSURE_REQUIREMENTS, [plan_id=1466299]
(1963) HashAggregate
Input [1]: [plant#949897]
Keys [1]: [plant#949897]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#949897]
(1964) BroadcastHashJoin
Left keys [1]: [plantUuid#949893]
Right keys [1]: [plant#949897]
Join type: Inner
Join condition: None
(1965) Project
Output [3]: [plantUuid#949893, storageLocId#949894, storageLocUuid#949895]
Input [4]: [plantUuid#949893, storageLocId#949894, storageLocUuid#949895, plant#949897]
(1966) BroadcastHashJoin
Left keys [2]: [coalesce(plant#949866.internalRefUUID, ), isnull(plant#949866.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#949893, ), isnull(plantUuid#949893)]
Join type: Inner
Join condition: None
(1967) Generate
Input [9]: [systemId#949863, internalUUID#949864, product#949865, plant#949866, calculationDateTime#949867, stockQuantities#949868, plantUuid#949893, storageLocId#949894, storageLocUuid#949895]
Arguments: explode(filter(stockQuantities#949868, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#949895) AND (lambda x#944569.storageLocation.Id = storageLocId#949894)), lambda x#944569, false))), [systemId#949863, internalUUID#949864, product#949865, plant#949866, calculationDateTime#949867, plantUuid#949893], false, [stockQuantity#949927]
(1968) ObjectHashAggregate
Input [7]: [systemId#949863, internalUUID#949864, product#949865, plant#949866, calculationDateTime#949867, plantUuid#949893, stockQuantity#949927]
Keys [5]: [plantUuid#949893, internalUUID#949864, plant#949866, product#949865, systemId#949863]
Functions [2]: [partial_first(calculationDateTime#949867, false), partial_collect_list(stockQuantity#949927, 0, 0)]
Aggregate Attributes [3]: [first#953197, valueSet#953198, buf#953199]
Results [8]: [plantUuid#949893, internalUUID#949864, plant#949866, product#949865, systemId#949863, first#953200, valueSet#953201, buf#953202]
(1969) ObjectHashAggregate
Input [8]: [plantUuid#949893, internalUUID#949864, plant#949866, product#949865, systemId#949863, first#953200, valueSet#953201, buf#953202]
Keys [5]: [plantUuid#949893, internalUUID#949864, plant#949866, product#949865, systemId#949863]
Functions [2]: [first(calculationDateTime#949867, false), collect_list(stockQuantity#949927, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#949867)()#944584, collect_list(stockQuantity#949927, 0, 0)#944585]
Results [4]: [product#949865, plant#949866, first(calculationDateTime#949867)()#944584 AS calculationDateTime#949928, collect_list(stockQuantity#949927, 0, 0)#944585 AS stockQuantities#949929]
(1970) Filter
Input [4]: [product#949865, plant#949866, calculationDateTime#949928, stockQuantities#949929]
Condition : ((size(stockQuantities#949929, true) > 0) AND isnotnull(calculationDateTime#949928))
(1971) Generate
Input [4]: [product#949865, plant#949866, calculationDateTime#949928, stockQuantities#949929]
Arguments: explode(stockQuantities#949929), [product#949865, plant#949866, calculationDateTime#949928], false, [stockQuantity#949930]
(1972) Filter
Input [4]: [product#949865, plant#949866, calculationDateTime#949928, stockQuantity#949930]
Condition : (((isnotnull(stockQuantity#949930.specialStockIndicator.code) AND isnotnull(stockQuantity#949930.stockType.code)) AND (stockQuantity#949930.specialStockIndicator.code = )) AND (stockQuantity#949930.stockType.code = 01))
(1973) Project
Output [4]: [plant#949866.internalRefUUID AS plantUuid#949932, product#949865.internalRefUUID AS productUuid#949934, calculationDateTime#949928, stockQuantity#949930.storagelocation.id AS storageLocId#949935]
Input [4]: [product#949865, plant#949866, calculationDateTime#949928, stockQuantity#949930]
(1974) Exchange
Input [4]: [plantUuid#949932, productUuid#949934, calculationDateTime#949928, storageLocId#949935]
Arguments: hashpartitioning(productUuid#949934, plantUuid#949932, 37), ENSURE_REQUIREMENTS, [plan_id=1466328]
(1975) Sort
Input [4]: [plantUuid#949932, productUuid#949934, calculationDateTime#949928, storageLocId#949935]
Arguments: [productUuid#949934 ASC NULLS FIRST, plantUuid#949932 ASC NULLS FIRST], false, 0
(1976) Scan parquet
Output [3]: [product#949940, plant#949941, orderDateTime#949942]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1977) Filter
Input [3]: [product#949940, plant#949941, orderDateTime#949942]
Condition : ((isnotnull(orderDateTime#949942) AND isnotnull(plant#949941)) AND isnotnull(product#949940))
(1978) Exchange
Input [3]: [product#949940, plant#949941, orderDateTime#949942]
Arguments: hashpartitioning(product#949940, plant#949941, 37), REPARTITION_BY_NUM, [plan_id=1465315]
(1979) Scan parquet
Output [4]: [plant#949946, product#949947, productionAspect#949949, systemId#949944]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(1980) Project
Output [4]: [plant#949946.internalRefUUID AS _extract_internalRefUUID#952198, product#949947.internalRefUUID AS _extract_internalRefUUID#952201, productionAspect#949949.productMovementPlants.unitOfIssue.code AS _extract_code#952199, productionAspect#949949.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952200]
Input [4]: [plant#949946, product#949947, productionAspect#949949, systemId#949944]
(1981) Exchange
Input [4]: [_extract_internalRefUUID#952198, _extract_internalRefUUID#952201, _extract_code#952199, _extract_internalRefUUID#952200]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464457]
(1982) Project
Output [4]: [_extract_code#952199, _extract_internalRefUUID#952200, _extract_internalRefUUID#952201, _extract_internalRefUUID#952198]
Input [4]: [_extract_internalRefUUID#952198, _extract_internalRefUUID#952201, _extract_code#952199, _extract_internalRefUUID#952200]
(1983) BroadcastExchange
Input [4]: [_extract_code#952199, _extract_internalRefUUID#952200, _extract_internalRefUUID#952201, _extract_internalRefUUID#952198]
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=1466315]
(1984) BroadcastHashJoin
Left keys [4]: [coalesce(product#949940, ), isnull(product#949940), coalesce(plant#949941, ), isnull(plant#949941)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952201, ), isnull(_extract_internalRefUUID#952201), coalesce(_extract_internalRefUUID#952198, ), isnull(_extract_internalRefUUID#952198)]
Join type: LeftOuter
Join condition: None
(1985) Project
Output [5]: [product#949940, plant#949941, orderDateTime#949942, _extract_code#952199, _extract_internalRefUUID#952200]
Input [7]: [product#949940, plant#949941, orderDateTime#949942, _extract_code#952199, _extract_internalRefUUID#952200, _extract_internalRefUUID#952201, _extract_internalRefUUID#952198]
(1986) Scan parquet
Output [4]: [internalUUID#949955, baseUnitOfMeasure#949959, unitOfMeasureConversions#949961, systemId#949954]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(1987) Filter
Input [4]: [internalUUID#949955, baseUnitOfMeasure#949959, unitOfMeasureConversions#949961, systemId#949954]
Condition : isnotnull(internalUUID#949955)
(1988) Project
Output [3]: [internalUUID#949955, baseUnitOfMeasure#949959, unitOfMeasureConversions#949961]
Input [4]: [internalUUID#949955, baseUnitOfMeasure#949959, unitOfMeasureConversions#949961, systemId#949954]
(1989) Exchange
Input [3]: [internalUUID#949955, baseUnitOfMeasure#949959, unitOfMeasureConversions#949961]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464464]
(1990) BroadcastExchange
Input [3]: [internalUUID#949955, baseUnitOfMeasure#949959, unitOfMeasureConversions#949961]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466319]
(1991) BroadcastHashJoin
Left keys [1]: [product#949940]
Right keys [1]: [internalUUID#949955]
Join type: LeftOuter
Join condition: None
(1992) Project
Output [4]: [product#949940, plant#949941, orderDateTime#949942, filter(unitOfMeasureConversions#949961, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952199) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952200)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#949959.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#949959.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#949966]
Input [8]: [product#949940, plant#949941, orderDateTime#949942, _extract_code#952199, _extract_internalRefUUID#952200, internalUUID#949955, baseUnitOfMeasure#949959, unitOfMeasureConversions#949961]
(1993) Generate
Input [4]: [product#949940, plant#949941, orderDateTime#949942, filteredUnitOfMeasureConversions#949966]
Arguments: explode(filteredUnitOfMeasureConversions#949966.quantityNumerator), [product#949940, plant#949941, orderDateTime#949942, filteredUnitOfMeasureConversions#949966], true, [quantityNumerator#949967]
(1994) Project
Output [4]: [product#949940, plant#949941, orderDateTime#949942, filteredUnitOfMeasureConversions#949966.quantityDenominator AS _extract_quantityDenominator#951721]
Input [5]: [product#949940, plant#949941, orderDateTime#949942, filteredUnitOfMeasureConversions#949966, quantityNumerator#949967]
(1995) Generate
Input [4]: [product#949940, plant#949941, orderDateTime#949942, _extract_quantityDenominator#951721]
Arguments: explode(_extract_quantityDenominator#951721), [product#949940, plant#949941, orderDateTime#949942], true, [quantityDenominator#949968]
(1996) Project
Output [3]: [product#949940, plant#949941, orderDateTime#949942]
Input [4]: [product#949940, plant#949941, orderDateTime#949942, quantityDenominator#949968]
(1997) Sort
Input [3]: [product#949940, plant#949941, orderDateTime#949942]
Arguments: [product#949940 ASC NULLS FIRST, plant#949941 ASC NULLS FIRST], false, 0
(1998) SortMergeJoin
Left keys [2]: [productUuid#949934, plantUuid#949932]
Right keys [2]: [product#949940, plant#949941]
Join type: Inner
Join condition: (calculationDateTime#949928 <= orderDateTime#949942)
(1999) Project
Output [4]: [plantUuid#949932 AS plant#949971, productUuid#949934 AS product#949972, storageLocId#949935, calculationDateTime#949928]
Input [7]: [plantUuid#949932, productUuid#949934, calculationDateTime#949928, storageLocId#949935, product#949940, plant#949941, orderDateTime#949942]
(2000) HashAggregate
Input [4]: [plant#949971, product#949972, storageLocId#949935, calculationDateTime#949928]
Keys [3]: [plant#949971, product#949972, storageLocId#949935]
Functions [1]: [partial_max(calculationDateTime#949928)]
Aggregate Attributes [1]: [max#953195]
Results [4]: [plant#949971, product#949972, storageLocId#949935, max#953196]
(2001) HashAggregate
Input [4]: [plant#949971, product#949972, storageLocId#949935, max#953196]
Keys [3]: [plant#949971, product#949972, storageLocId#949935]
Functions [1]: [max(calculationDateTime#949928)]
Aggregate Attributes [1]: [max(calculationDateTime#949928)#944648]
Results [4]: [plant#949971, product#949972, storageLocId#949935, max(calculationDateTime#949928)#944648 AS max_calc_datetime#949973]
(2002) Exchange
Input [4]: [plant#949971, product#949972, storageLocId#949935, max_calc_datetime#949973]
Arguments: hashpartitioning(coalesce(plant#949971, ), isnull(plant#949971), coalesce(product#949972, ), isnull(product#949972), coalesce(storageLocId#949935, ), isnull(storageLocId#949935), coalesce(max_calc_datetime#949973, 1970-01-01 00:00:00), isnull(max_calc_datetime#949973), 37), ENSURE_REQUIREMENTS, [plan_id=1466338]
(2003) Sort
Input [4]: [plant#949971, product#949972, storageLocId#949935, max_calc_datetime#949973]
Arguments: [coalesce(plant#949971, ) ASC NULLS FIRST, isnull(plant#949971) ASC NULLS FIRST, coalesce(product#949972, ) ASC NULLS FIRST, isnull(product#949972) ASC NULLS FIRST, coalesce(storageLocId#949935, ) ASC NULLS FIRST, isnull(storageLocId#949935) ASC NULLS FIRST, coalesce(max_calc_datetime#949973, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#949973) ASC NULLS FIRST], false, 0
(2004) SortMergeJoin
Left keys [8]: [coalesce(plant#949861, ), isnull(plant#949861), coalesce(product#949862, ), isnull(product#949862), coalesce(storageLocId#949825, ), isnull(storageLocId#949825), coalesce(calculationDateTime#949818, 1970-01-01 00:00:00), isnull(calculationDateTime#949818)]
Right keys [8]: [coalesce(plant#949971, ), isnull(plant#949971), coalesce(product#949972, ), isnull(product#949972), coalesce(storageLocId#949935, ), isnull(storageLocId#949935), coalesce(max_calc_datetime#949973, 1970-01-01 00:00:00), isnull(max_calc_datetime#949973)]
Join type: Inner
Join condition: None
(2005) Project
Output [4]: [plant#949861, product#949862, calculationDateTime#949818, quantity#949827]
Input [9]: [plant#949861, product#949862, storageLocId#949825, calculationDateTime#949818, quantity#949827, plant#949971, product#949972, storageLocId#949935, max_calc_datetime#949973]
(2006) HashAggregate
Input [4]: [plant#949861, product#949862, calculationDateTime#949818, quantity#949827]
Keys [2]: [product#949862, plant#949861]
Functions [2]: [partial_min(calculationDateTime#949818), partial_sum(quantity#949827)]
Aggregate Attributes [2]: [min#953185, sum#953186]
Results [4]: [product#949862, plant#949861, min#953187, sum#953188]
(2007) Exchange
Input [4]: [product#949862, plant#949861, min#953187, sum#953188]
Arguments: hashpartitioning(product#949862, plant#949861, 37), ENSURE_REQUIREMENTS, [plan_id=1466345]
(2008) HashAggregate
Input [4]: [product#949862, plant#949861, min#953187, sum#953188]
Keys [2]: [product#949862, plant#949861]
Functions [2]: [min(calculationDateTime#949818), sum(quantity#949827)]
Aggregate Attributes [2]: [min(calculationDateTime#949818)#944775, sum(quantity#949827)#944774]
Results [4]: [product#949862, plant#949861, min(calculationDateTime#949818)#944775 AS minCalculationDateTime#949975, round(sum(quantity#949827)#944774, 0) AS roundedQuantitySum#949976]
(2009) Sort
Input [4]: [product#949862, plant#949861, minCalculationDateTime#949975, roundedQuantitySum#949976]
Arguments: [product#949862 ASC NULLS FIRST, plant#949861 ASC NULLS FIRST], false, 0
(2010) SortMergeJoin
Left keys [2]: [product#949722, plant#949723]
Right keys [2]: [product#949862, plant#949861]
Join type: LeftOuter
Join condition: None
(2011) Project
Output [7]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, CASE WHEN isnotnull(minCalculationDateTime#949975) THEN minCalculationDateTime#949975 ELSE orderDateTime#949724 END AS stockDatetime#949977, CASE WHEN isnotnull(roundedQuantitySum#949976) THEN array(roundedQuantitySum#949976) ELSE [0.0] END AS stockBatchQuantities#949978]
Input [9]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, product#949862, plant#949861, minCalculationDateTime#949975, roundedQuantitySum#949976]
(2012) Exchange
Input [7]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, stockDatetime#949977, stockBatchQuantities#949978]
Arguments: hashpartitioning(coalesce(plant#949723, ), isnull(plant#949723), coalesce(product#949722, ), isnull(product#949722), 37), ENSURE_REQUIREMENTS, [plan_id=1466355]
(2013) Sort
Input [7]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, stockDatetime#949977, stockBatchQuantities#949978]
Arguments: [coalesce(plant#949723, ) ASC NULLS FIRST, isnull(plant#949723) ASC NULLS FIRST, coalesce(product#949722, ) ASC NULLS FIRST, isnull(product#949722) ASC NULLS FIRST], false, 0
(2014) Scan parquet
Output [9]: [product#949980, plant#949981, demandChannel#949982, demandStream#949983, considerVariance#949984, demandTimeBuckets#949985, demandPointInTimeStart#949986, demandPointInTimeEnd#949987, demandPointInTime#949988]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000678/0_1_10000000678]
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>>>
(2015) Exchange
Input [9]: [product#949980, plant#949981, demandChannel#949982, demandStream#949983, considerVariance#949984, demandTimeBuckets#949985, demandPointInTimeStart#949986, demandPointInTimeEnd#949987, demandPointInTime#949988]
Arguments: hashpartitioning(coalesce(plant#949981, ), isnull(plant#949981), coalesce(product#949980, ), isnull(product#949980), 37), ENSURE_REQUIREMENTS, [plan_id=1466356]
(2016) Sort
Input [9]: [product#949980, plant#949981, demandChannel#949982, demandStream#949983, considerVariance#949984, demandTimeBuckets#949985, demandPointInTimeStart#949986, demandPointInTimeEnd#949987, demandPointInTime#949988]
Arguments: [coalesce(plant#949981, ) ASC NULLS FIRST, isnull(plant#949981) ASC NULLS FIRST, coalesce(product#949980, ) ASC NULLS FIRST, isnull(product#949980) ASC NULLS FIRST], false, 0
(2017) SortMergeJoin
Left keys [4]: [coalesce(plant#949723, ), isnull(plant#949723), coalesce(product#949722, ), isnull(product#949722)]
Right keys [4]: [coalesce(plant#949981, ), isnull(plant#949981), coalesce(product#949980, ), isnull(product#949980)]
Join type: LeftOuter
Join condition: None
(2018) Project
Output [8]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, stockDatetime#949977, stockBatchQuantities#949978, CASE WHEN isnotnull(product#949980) THEN struct(demandChannel, demandChannel#949982, demandStream, demandStream#949983, considerVariance, considerVariance#949984, demandTimeBuckets, demandTimeBuckets#949985, demandPointInTimeStart, demandPointInTimeStart#949986, demandPointInTimeEnd, demandPointInTimeEnd#949987, demandPointInTime, demandPointInTime#949988) END AS rawDemands#949989]
Input [16]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, stockDatetime#949977, stockBatchQuantities#949978, product#949980, plant#949981, demandChannel#949982, demandStream#949983, considerVariance#949984, demandTimeBuckets#949985, demandPointInTimeStart#949986, demandPointInTimeEnd#949987, demandPointInTime#949988]
(2019) ObjectHashAggregate
Input [8]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, stockDatetime#949977, stockBatchQuantities#949978, rawDemands#949989]
Keys [8]: [product#949722, plant#949723, orderDateTime#949724, knownfloatingpointnormalized(if (isnull(productPlant#949735)) null else named_struct(systemId, productPlant#949735.systemId, internalUUID, productPlant#949735.internalUUID, plant, productPlant#949735.plant, product, productPlant#949735.product, blockedForReplenishmentStartingFrom, productPlant#949735.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#949735.productionAspect)) null else named_struct(productMovementPlants, productPlant#949735.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#949735.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#949735.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#949735.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#949735.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#949735.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#949735.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#949735.salesPlant, listing, productPlant#949735.listing, sourceOfSupplyCategory, productPlant#949735.sourceOfSupplyCategory)) AS productPlant#949735, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#949752)) AS outboundUnit#949752, stockDatetime#949977, knownfloatingpointnormalized(transform(stockBatchQuantities#949978, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#953182)), lambda arg#953182, false))) AS stockBatchQuantities#949978, [7226582400000000] AS [7226582400000000]#953181]
Functions [1]: [partial_collect_list(rawDemands#949989, 0, 0)]
Aggregate Attributes [1]: [buf#953183]
Results [9]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, stockDatetime#949977, stockBatchQuantities#949978, [7226582400000000]#953181, buf#953184]
(2020) Exchange
Input [9]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, stockDatetime#949977, stockBatchQuantities#949978, [7226582400000000]#953181, buf#953184]
Arguments: hashpartitioning(product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, stockDatetime#949977, stockBatchQuantities#949978, [7226582400000000]#953181, 37), ENSURE_REQUIREMENTS, [plan_id=1466363]
(2021) ObjectHashAggregate
Input [9]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, stockDatetime#949977, stockBatchQuantities#949978, [7226582400000000]#953181, buf#953184]
Keys [8]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, stockDatetime#949977, stockBatchQuantities#949978, [7226582400000000]#953181]
Functions [1]: [collect_list(rawDemands#949989, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#949989, 0, 0)#944844]
Results [8]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, stockDatetime#949977, stockBatchQuantities#949978, collect_list(rawDemands#949989, 0, 0)#944844 AS rawDemands#949990]
(2022) Scan parquet
Output [3]: [internalUUID#949992, address#949998, systemId#949991]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(2023) Project
Output [2]: [internalUUID#949992, address#949998.timeZone.code AS timezonecode#950003]
Input [3]: [internalUUID#949992, address#949998, systemId#949991]
(2024) Exchange
Input [2]: [internalUUID#949992, timezonecode#950003]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464488]
(2025) BroadcastExchange
Input [2]: [internalUUID#949992, timezonecode#950003]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1466366]
(2026) BroadcastHashJoin
Left keys [2]: [coalesce(plant#949723, ), isnull(plant#949723)]
Right keys [2]: [coalesce(internalUUID#949992, ), isnull(internalUUID#949992)]
Join type: LeftOuter
Join condition: None
(2027) Project
Output [10]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, stockDatetime#949977, stockBatchQuantities#949978, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#949979, rawDemands#949990, CASE WHEN isnotnull(timezonecode#950003) THEN timezonecode#950003 ELSE UTC END AS timezonecode#950004]
Input [10]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, stockDatetime#949977, stockBatchQuantities#949978, rawDemands#949990, internalUUID#949992, timezonecode#950003]
(2028) DeserializeToObject
Input [10]: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, stockDatetime#949977, stockBatchQuantities#949978, stockBatchShelfLifeEndDatetimes#949979, rawDemands#949990, timezonecode#950004]
Arguments: createexternalrow(invoke(product#949722.toString()), invoke(plant#949723.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#949724)), if (isnull(productPlant#949735)) null else createexternalrow(invoke(productPlant#949735.systemId.toString()), invoke(productPlant#949735.internalUUID.toString()), if (isnull(productPlant#949735.plant)) null else createexternalrow(invoke(productPlant#949735.plant.internalRefUUID.toString()), invoke(productPlant#949735.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#949735.product)) null else createexternalrow(invoke(productPlant#949735.product.internalRefUUID.toString()), invoke(productPlant#949735.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#949735.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#949735.productionAspect)) null else createexternalrow(if (isnull(productPlant#949735.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#949735.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#949735.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#949735.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#949735.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#949735.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#949735.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#949735.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#949735.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#949735.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#949735.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#949735.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#949735.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#949735.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#949735.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#949735.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#949735.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#949735.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)), if (isnull(productPlant#949735.salesPlant)) null else createexternalrow(if (isnull(productPlant#949735.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#949735.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#949735.salesPlant.loadingGroup.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#949735.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#949735.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#949735.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#949735.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), 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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#949752)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#949977)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#949978, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#949979, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14), createexternalrow(invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandChannel.toString()), invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).demandVariance)), StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandTimeBuckets, Some(class scala.collection.mutable.ArraySeq)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandPointInTimeStart)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).demandVariance)), StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandPointInTime, Some(class scala.collection.mutable.ArraySeq)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)), rawDemands#949990, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#950004.toString()), 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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),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), StructField(timezonecode,StringType,true)), obj#945940: org.apache.spark.sql.Row
(2029) MapElements
Input [1]: [obj#945940]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@353c8b73, obj#945945: org.apache.spark.sql.Row
(2030) SerializeFromObject
Input [1]: [obj#945945]
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#950005, 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#950006, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)))) null else named_struct(demandChannel, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(0))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 0, demandChannel), StringType, ObjectType(class java.lang.String)))), demandStream, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(1))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 1, demandStream), StringType, ObjectType(class java.lang.String)))), considerVariance, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(2))) null else invoke(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 2, considerVariance), BooleanType, ObjectType(class java.lang.Boolean)).booleanValue()), demandValues, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(3))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -2), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -2), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)), None), demandVariances, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(4))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -3), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -3), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)), None), anchorDatetimes, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(5))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -4), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -4), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 5, anchorDatetimes), ArrayType(TimestampType,false), ObjectType(class java.lang.Object)), None), anchorWeekdays, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(6))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -5), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -5), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 6, anchorWeekdays), ArrayType(StringType,false), ObjectType(class java.lang.Object)), None), anchorIndices, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(7))) null else if (invoke(class [I.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 7, anchorIndices), ArrayType(IntegerType,false), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 7, anchorIndices), ArrayType(IntegerType,false), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -6), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -6), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -1), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 7, anchorIndices), ArrayType(IntegerType,false), ObjectType(class java.lang.Object)), None))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 2, dayBucketDemands), ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandValues,ArrayType(DoubleType,false),true),StructField(demandVariances,ArrayType(DoubleType,true),true),StructField(anchorDatetimes,ArrayType(TimestampType,false),true),StructField(anchorWeekdays,ArrayType(StringType,false),true),StructField(anchorIndices,ArrayType(IntegerType,false),true)),false), ObjectType(class java.lang.Object)), None) AS dayBucketDemands#950007, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)))) null else named_struct(demandChannel, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(0))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 0, demandChannel), StringType, ObjectType(class java.lang.String)))), demandStream, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(1))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 1, demandStream), StringType, ObjectType(class java.lang.String)))), considerVariance, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(2))) null else invoke(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 2, considerVariance), BooleanType, ObjectType(class java.lang.Boolean)).booleanValue()), demandDatetimes, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -8), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -8), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandDatetimes), ArrayType(TimestampType,false), ObjectType(class java.lang.Object)), None), demandValues, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(4))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -9), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -9), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)), None), demandVariances, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(5))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 5, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 5, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -10), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -10), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 5, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)), None), horizonStartDatetime, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(6))) null else static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 6, horizonStartDatetime), TimestampType, ObjectType(class java.sql.Timestamp)))), horizonEndDatetime, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(7))) null else static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -7), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 7, horizonEndDatetime), TimestampType, ObjectType(class java.sql.Timestamp)))))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 3, pointInTimeDemands), ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandDatetimes,ArrayType(TimestampType,false),true),StructField(demandValues,ArrayType(DoubleType,false),true),StructField(demandVariances,ArrayType(DoubleType,true),true),StructField(horizonStartDatetime,TimestampType,true),StructField(horizonEndDatetime,TimestampType,true)),false), ObjectType(class java.lang.Object)), None) AS pointInTimeDemands#950008]
(2031) Exchange
Input [4]: [product#950005, plant#950006, dayBucketDemands#950007, pointInTimeDemands#950008]
Arguments: hashpartitioning(coalesce(plant#950006, ), isnull(plant#950006), coalesce(product#950005, ), isnull(product#950005), 37), ENSURE_REQUIREMENTS, [plan_id=1466375]
(2032) Sort
Input [4]: [product#950005, plant#950006, dayBucketDemands#950007, pointInTimeDemands#950008]
Arguments: [coalesce(plant#950006, ) ASC NULLS FIRST, isnull(plant#950006) ASC NULLS FIRST, coalesce(product#950005, ) ASC NULLS FIRST, isnull(product#950005) ASC NULLS FIRST], false, 0
(2033) SortMergeJoin
Left keys [4]: [coalesce(plant#949465, ), isnull(plant#949465), coalesce(product#949464, ), isnull(product#949464)]
Right keys [4]: [coalesce(plant#950006, ), isnull(plant#950006), coalesce(product#950005, ), isnull(product#950005)]
Join type: LeftOuter
Join condition: None
(2034) Project
Output [9]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, dayBucketDemands#950007, pointInTimeDemands#950008]
Input [11]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, product#950005, plant#950006, dayBucketDemands#950007, pointInTimeDemands#950008]
(2035) Exchange
Input [9]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, dayBucketDemands#950007, pointInTimeDemands#950008]
Arguments: hashpartitioning(product#949464, plant#949465, 37), ENSURE_REQUIREMENTS, [plan_id=1466674]
(2036) Sort
Input [9]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, dayBucketDemands#950007, pointInTimeDemands#950008]
Arguments: [product#949464 ASC NULLS FIRST, plant#949465 ASC NULLS FIRST], false, 0
(2037) Filter
Input [3]: [product#950625, plant#950624, openGoodsMovements#950636]
Condition : (isnotnull(product#950625) AND isnotnull(plant#950624))
(2038) Scan parquet
Output [3]: [product#950637, plant#950638, orderDateTime#950639]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2039) Filter
Input [3]: [product#950637, plant#950638, orderDateTime#950639]
Condition : isnotnull(plant#950638)
(2040) Exchange
Input [3]: [product#950637, plant#950638, orderDateTime#950639]
Arguments: hashpartitioning(product#950637, plant#950638, 37), REPARTITION_BY_NUM, [plan_id=1465345]
(2041) Scan parquet
Output [4]: [plant#950643, product#950644, productionAspect#950646, systemId#950641]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(2042) Project
Output [4]: [plant#950643.internalRefUUID AS _extract_internalRefUUID#952205, product#950644.internalRefUUID AS _extract_internalRefUUID#952204, productionAspect#950646.productMovementPlants.unitOfIssue.code AS _extract_code#952202, productionAspect#950646.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952203]
Input [4]: [plant#950643, product#950644, productionAspect#950646, systemId#950641]
(2043) Exchange
Input [4]: [_extract_internalRefUUID#952205, _extract_internalRefUUID#952204, _extract_code#952202, _extract_internalRefUUID#952203]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464504]
(2044) Project
Output [4]: [_extract_code#952202, _extract_internalRefUUID#952203, _extract_internalRefUUID#952204, _extract_internalRefUUID#952205]
Input [4]: [_extract_internalRefUUID#952205, _extract_internalRefUUID#952204, _extract_code#952202, _extract_internalRefUUID#952203]
(2045) BroadcastExchange
Input [4]: [_extract_code#952202, _extract_internalRefUUID#952203, _extract_internalRefUUID#952204, _extract_internalRefUUID#952205]
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=1466380]
(2046) BroadcastHashJoin
Left keys [4]: [coalesce(product#950637, ), isnull(product#950637), coalesce(plant#950638, ), isnull(plant#950638)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952204, ), isnull(_extract_internalRefUUID#952204), coalesce(_extract_internalRefUUID#952205, ), isnull(_extract_internalRefUUID#952205)]
Join type: LeftOuter
Join condition: None
(2047) Project
Output [5]: [product#950637, plant#950638, orderDateTime#950639, _extract_code#952202, _extract_internalRefUUID#952203]
Input [7]: [product#950637, plant#950638, orderDateTime#950639, _extract_code#952202, _extract_internalRefUUID#952203, _extract_internalRefUUID#952204, _extract_internalRefUUID#952205]
(2048) Scan parquet
Output [4]: [internalUUID#950652, baseUnitOfMeasure#950656, unitOfMeasureConversions#950658, systemId#950651]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(2049) Filter
Input [4]: [internalUUID#950652, baseUnitOfMeasure#950656, unitOfMeasureConversions#950658, systemId#950651]
Condition : isnotnull(internalUUID#950652)
(2050) Project
Output [3]: [internalUUID#950652, baseUnitOfMeasure#950656, unitOfMeasureConversions#950658]
Input [4]: [internalUUID#950652, baseUnitOfMeasure#950656, unitOfMeasureConversions#950658, systemId#950651]
(2051) Exchange
Input [3]: [internalUUID#950652, baseUnitOfMeasure#950656, unitOfMeasureConversions#950658]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464511]
(2052) BroadcastExchange
Input [3]: [internalUUID#950652, baseUnitOfMeasure#950656, unitOfMeasureConversions#950658]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466384]
(2053) BroadcastHashJoin
Left keys [1]: [product#950637]
Right keys [1]: [internalUUID#950652]
Join type: LeftOuter
Join condition: None
(2054) Project
Output [4]: [product#950637, plant#950638, orderDateTime#950639, filter(unitOfMeasureConversions#950658, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952202) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952203)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950656.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950656.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950663]
Input [8]: [product#950637, plant#950638, orderDateTime#950639, _extract_code#952202, _extract_internalRefUUID#952203, internalUUID#950652, baseUnitOfMeasure#950656, unitOfMeasureConversions#950658]
(2055) Generate
Input [4]: [product#950637, plant#950638, orderDateTime#950639, filteredUnitOfMeasureConversions#950663]
Arguments: explode(filteredUnitOfMeasureConversions#950663.quantityNumerator), [product#950637, plant#950638, orderDateTime#950639, filteredUnitOfMeasureConversions#950663], true, [quantityNumerator#950664]
(2056) Project
Output [4]: [product#950637, plant#950638, orderDateTime#950639, filteredUnitOfMeasureConversions#950663.quantityDenominator AS _extract_quantityDenominator#951729]
Input [5]: [product#950637, plant#950638, orderDateTime#950639, filteredUnitOfMeasureConversions#950663, quantityNumerator#950664]
(2057) Generate
Input [4]: [product#950637, plant#950638, orderDateTime#950639, _extract_quantityDenominator#951729]
Arguments: explode(_extract_quantityDenominator#951729), [product#950637, plant#950638, orderDateTime#950639], true, [quantityDenominator#950665]
(2058) Project
Output [3]: [product#950637, plant#950638, orderDateTime#950639]
Input [4]: [product#950637, plant#950638, orderDateTime#950639, quantityDenominator#950665]
(2059) Sort
Input [3]: [product#950637, plant#950638, orderDateTime#950639]
Arguments: [product#950637 ASC NULLS FIRST, plant#950638 ASC NULLS FIRST], false, 0
(2060) Scan parquet
Output [6]: [internalUUID#950669, product#950670, plant#950671, calculationDateTime#950672, stockQuantities#950673, systemId#950668]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(2061) Filter
Input [6]: [internalUUID#950669, product#950670, plant#950671, calculationDateTime#950672, stockQuantities#950673, systemId#950668]
Condition : (isnotnull(plant#950671.internalRefUUID) AND isnotnull(product#950670.internalRefUUID))
(2062) Project
Output [6]: [systemId#950668, internalUUID#950669, product#950670, plant#950671, calculationDateTime#950672, stockQuantities#950673]
Input [6]: [internalUUID#950669, product#950670, plant#950671, calculationDateTime#950672, stockQuantities#950673, systemId#950668]
(2063) Exchange
Input [6]: [systemId#950668, internalUUID#950669, product#950670, plant#950671, calculationDateTime#950672, stockQuantities#950673]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464521]
(2064) BroadcastExchange
Input [6]: [systemId#950668, internalUUID#950669, product#950670, plant#950671, calculationDateTime#950672, stockQuantities#950673]
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=1466411]
(2065) Scan parquet
Output [2]: [marketUnit#950674, distributionCenters#950680]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(2066) Filter
Input [2]: [marketUnit#950674, distributionCenters#950680]
Condition : (((marketUnit#950674 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#950680, true) > 0)) AND isnotnull(distributionCenters#950680))
(2067) Project
Output [1]: [distributionCenters#950680]
Input [2]: [marketUnit#950674, distributionCenters#950680]
(2068) Exchange
Input [1]: [distributionCenters#950680]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464525]
(2069) Generate
Input [1]: [distributionCenters#950680]
Arguments: explode(distributionCenters#950680), false, [distributionCenters#950695]
(2070) Filter
Input [1]: [distributionCenters#950695]
Condition : (((size(distributionCenters#950695.storageLocations, true) > 0) AND isnotnull(distributionCenters#950695.storageLocations)) AND isnotnull(distributionCenters#950695.internalRefUUID))
(2071) Project
Output [2]: [distributionCenters#950695.internalRefUUID AS _extract_internalRefUUID#951736, distributionCenters#950695.storageLocations AS _extract_storageLocations#951737]
Input [1]: [distributionCenters#950695]
(2072) Generate
Input [2]: [_extract_internalRefUUID#951736, _extract_storageLocations#951737]
Arguments: explode(_extract_storageLocations#951737), [_extract_internalRefUUID#951736], false, [storageLocations#950696]
(2073) Project
Output [3]: [_extract_internalRefUUID#951736 AS plantUuid#950698, storageLocations#950696.id AS storageLocId#950699, storageLocations#950696.internalRefUUID AS storageLocUuid#950700]
Input [2]: [_extract_internalRefUUID#951736, storageLocations#950696]
(2074) BroadcastExchange
Input [3]: [plantUuid#950698, storageLocId#950699, storageLocUuid#950700]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466407]
(2075) Scan parquet
Output [2]: [product#950701, plant#950702]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(2076) Filter
Input [2]: [product#950701, plant#950702]
Condition : isnotnull(plant#950702)
(2077) Exchange
Input [2]: [product#950701, plant#950702]
Arguments: hashpartitioning(product#950701, plant#950702, 37), REPARTITION_BY_NUM, [plan_id=1465354]
(2078) Scan parquet
Output [4]: [plant#950707, product#950708, productionAspect#950710, systemId#950705]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(2079) Project
Output [4]: [plant#950707.internalRefUUID AS _extract_internalRefUUID#952209, product#950708.internalRefUUID AS _extract_internalRefUUID#952206, productionAspect#950710.productMovementPlants.unitOfIssue.code AS _extract_code#952207, productionAspect#950710.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952208]
Input [4]: [plant#950707, product#950708, productionAspect#950710, systemId#950705]
(2080) Exchange
Input [4]: [_extract_internalRefUUID#952209, _extract_internalRefUUID#952206, _extract_code#952207, _extract_internalRefUUID#952208]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464537]
(2081) Project
Output [4]: [_extract_code#952207, _extract_internalRefUUID#952208, _extract_internalRefUUID#952206, _extract_internalRefUUID#952209]
Input [4]: [_extract_internalRefUUID#952209, _extract_internalRefUUID#952206, _extract_code#952207, _extract_internalRefUUID#952208]
(2082) BroadcastExchange
Input [4]: [_extract_code#952207, _extract_internalRefUUID#952208, _extract_internalRefUUID#952206, _extract_internalRefUUID#952209]
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=1466391]
(2083) BroadcastHashJoin
Left keys [4]: [coalesce(product#950701, ), isnull(product#950701), coalesce(plant#950702, ), isnull(plant#950702)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952206, ), isnull(_extract_internalRefUUID#952206), coalesce(_extract_internalRefUUID#952209, ), isnull(_extract_internalRefUUID#952209)]
Join type: LeftOuter
Join condition: None
(2084) Project
Output [4]: [product#950701, plant#950702, _extract_code#952207, _extract_internalRefUUID#952208]
Input [6]: [product#950701, plant#950702, _extract_code#952207, _extract_internalRefUUID#952208, _extract_internalRefUUID#952206, _extract_internalRefUUID#952209]
(2085) Scan parquet
Output [4]: [internalUUID#950716, baseUnitOfMeasure#950720, unitOfMeasureConversions#950722, systemId#950715]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(2086) Filter
Input [4]: [internalUUID#950716, baseUnitOfMeasure#950720, unitOfMeasureConversions#950722, systemId#950715]
Condition : isnotnull(internalUUID#950716)
(2087) Project
Output [3]: [internalUUID#950716, baseUnitOfMeasure#950720, unitOfMeasureConversions#950722]
Input [4]: [internalUUID#950716, baseUnitOfMeasure#950720, unitOfMeasureConversions#950722, systemId#950715]
(2088) Exchange
Input [3]: [internalUUID#950716, baseUnitOfMeasure#950720, unitOfMeasureConversions#950722]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464544]
(2089) BroadcastExchange
Input [3]: [internalUUID#950716, baseUnitOfMeasure#950720, unitOfMeasureConversions#950722]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466395]
(2090) BroadcastHashJoin
Left keys [1]: [product#950701]
Right keys [1]: [internalUUID#950716]
Join type: LeftOuter
Join condition: None
(2091) Project
Output [2]: [plant#950702, filter(unitOfMeasureConversions#950722, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952207) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952208)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950720.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950720.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950727]
Input [7]: [product#950701, plant#950702, _extract_code#952207, _extract_internalRefUUID#952208, internalUUID#950716, baseUnitOfMeasure#950720, unitOfMeasureConversions#950722]
(2092) Generate
Input [2]: [plant#950702, filteredUnitOfMeasureConversions#950727]
Arguments: explode(filteredUnitOfMeasureConversions#950727.quantityNumerator), [plant#950702, filteredUnitOfMeasureConversions#950727], true, [quantityNumerator#950728]
(2093) Project
Output [2]: [plant#950702, filteredUnitOfMeasureConversions#950727.quantityDenominator AS _extract_quantityDenominator#951738]
Input [3]: [plant#950702, filteredUnitOfMeasureConversions#950727, quantityNumerator#950728]
(2094) Generate
Input [2]: [plant#950702, _extract_quantityDenominator#951738]
Arguments: explode(_extract_quantityDenominator#951738), [plant#950702], true, [quantityDenominator#950729]
(2095) Project
Output [1]: [plant#950702]
Input [2]: [plant#950702, quantityDenominator#950729]
(2096) HashAggregate
Input [1]: [plant#950702]
Keys [1]: [plant#950702]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#950702]
(2097) Exchange
Input [1]: [plant#950702]
Arguments: hashpartitioning(plant#950702, 37), ENSURE_REQUIREMENTS, [plan_id=1466404]
(2098) HashAggregate
Input [1]: [plant#950702]
Keys [1]: [plant#950702]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#950702]
(2099) BroadcastHashJoin
Left keys [1]: [plantUuid#950698]
Right keys [1]: [plant#950702]
Join type: Inner
Join condition: None
(2100) Project
Output [3]: [plantUuid#950698, storageLocId#950699, storageLocUuid#950700]
Input [4]: [plantUuid#950698, storageLocId#950699, storageLocUuid#950700, plant#950702]
(2101) BroadcastHashJoin
Left keys [2]: [coalesce(plant#950671.internalRefUUID, ), isnull(plant#950671.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#950698, ), isnull(plantUuid#950698)]
Join type: Inner
Join condition: None
(2102) Generate
Input [9]: [systemId#950668, internalUUID#950669, product#950670, plant#950671, calculationDateTime#950672, stockQuantities#950673, plantUuid#950698, storageLocId#950699, storageLocUuid#950700]
Arguments: explode(filter(stockQuantities#950673, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#950700) AND (lambda x#944569.storageLocation.Id = storageLocId#950699)), lambda x#944569, false))), [systemId#950668, internalUUID#950669, product#950670, plant#950671, calculationDateTime#950672, plantUuid#950698], false, [stockQuantity#950732]
(2103) ObjectHashAggregate
Input [7]: [systemId#950668, internalUUID#950669, product#950670, plant#950671, calculationDateTime#950672, plantUuid#950698, stockQuantity#950732]
Keys [5]: [plantUuid#950698, internalUUID#950669, plant#950671, product#950670, systemId#950668]
Functions [2]: [partial_first(calculationDateTime#950672, false), partial_collect_list(stockQuantity#950732, 0, 0)]
Aggregate Attributes [3]: [first#953209, valueSet#953210, buf#953211]
Results [8]: [plantUuid#950698, internalUUID#950669, plant#950671, product#950670, systemId#950668, first#953212, valueSet#953213, buf#953214]
(2104) ObjectHashAggregate
Input [8]: [plantUuid#950698, internalUUID#950669, plant#950671, product#950670, systemId#950668, first#953212, valueSet#953213, buf#953214]
Keys [5]: [plantUuid#950698, internalUUID#950669, plant#950671, product#950670, systemId#950668]
Functions [2]: [first(calculationDateTime#950672, false), collect_list(stockQuantity#950732, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#950672)()#944584, collect_list(stockQuantity#950732, 0, 0)#944585]
Results [4]: [product#950670, plant#950671, first(calculationDateTime#950672)()#944584 AS calculationDateTime#950733, collect_list(stockQuantity#950732, 0, 0)#944585 AS stockQuantities#950734]
(2105) Filter
Input [4]: [product#950670, plant#950671, calculationDateTime#950733, stockQuantities#950734]
Condition : ((size(stockQuantities#950734, true) > 0) AND isnotnull(calculationDateTime#950733))
(2106) Generate
Input [4]: [product#950670, plant#950671, calculationDateTime#950733, stockQuantities#950734]
Arguments: explode(stockQuantities#950734), [product#950670, plant#950671, calculationDateTime#950733], false, [stockQuantity#950735]
(2107) Filter
Input [4]: [product#950670, plant#950671, calculationDateTime#950733, stockQuantity#950735]
Condition : (((isnotnull(stockQuantity#950735.specialStockIndicator.code) AND isnotnull(stockQuantity#950735.stockType.code)) AND (stockQuantity#950735.specialStockIndicator.code = )) AND (stockQuantity#950735.stockType.code = 01))
(2108) Project
Output [4]: [plant#950671.internalRefUUID AS plantUuid#950737, product#950670.internalRefUUID AS productUuid#950739, calculationDateTime#950733, stockQuantity#950735.storagelocation.id AS storageLocId#950740]
Input [4]: [product#950670, plant#950671, calculationDateTime#950733, stockQuantity#950735]
(2109) Exchange
Input [4]: [plantUuid#950737, productUuid#950739, calculationDateTime#950733, storageLocId#950740]
Arguments: hashpartitioning(productUuid#950739, plantUuid#950737, 37), ENSURE_REQUIREMENTS, [plan_id=1466433]
(2110) Sort
Input [4]: [plantUuid#950737, productUuid#950739, calculationDateTime#950733, storageLocId#950740]
Arguments: [productUuid#950739 ASC NULLS FIRST, plantUuid#950737 ASC NULLS FIRST], false, 0
(2111) Scan parquet
Output [3]: [product#950745, plant#950746, orderDateTime#950747]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2112) Filter
Input [3]: [product#950745, plant#950746, orderDateTime#950747]
Condition : ((isnotnull(orderDateTime#950747) AND isnotnull(plant#950746)) AND isnotnull(product#950745))
(2113) Exchange
Input [3]: [product#950745, plant#950746, orderDateTime#950747]
Arguments: hashpartitioning(product#950745, plant#950746, 37), REPARTITION_BY_NUM, [plan_id=1465375]
(2114) Scan parquet
Output [4]: [plant#950751, product#950752, productionAspect#950754, systemId#950749]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(2115) Project
Output [4]: [plant#950751.internalRefUUID AS _extract_internalRefUUID#952212, product#950752.internalRefUUID AS _extract_internalRefUUID#952213, productionAspect#950754.productMovementPlants.unitOfIssue.code AS _extract_code#952210, productionAspect#950754.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952211]
Input [4]: [plant#950751, product#950752, productionAspect#950754, systemId#950749]
(2116) Exchange
Input [4]: [_extract_internalRefUUID#952212, _extract_internalRefUUID#952213, _extract_code#952210, _extract_internalRefUUID#952211]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464569]
(2117) Project
Output [4]: [_extract_code#952210, _extract_internalRefUUID#952211, _extract_internalRefUUID#952213, _extract_internalRefUUID#952212]
Input [4]: [_extract_internalRefUUID#952212, _extract_internalRefUUID#952213, _extract_code#952210, _extract_internalRefUUID#952211]
(2118) BroadcastExchange
Input [4]: [_extract_code#952210, _extract_internalRefUUID#952211, _extract_internalRefUUID#952213, _extract_internalRefUUID#952212]
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=1466420]
(2119) BroadcastHashJoin
Left keys [4]: [coalesce(product#950745, ), isnull(product#950745), coalesce(plant#950746, ), isnull(plant#950746)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952213, ), isnull(_extract_internalRefUUID#952213), coalesce(_extract_internalRefUUID#952212, ), isnull(_extract_internalRefUUID#952212)]
Join type: LeftOuter
Join condition: None
(2120) Project
Output [5]: [product#950745, plant#950746, orderDateTime#950747, _extract_code#952210, _extract_internalRefUUID#952211]
Input [7]: [product#950745, plant#950746, orderDateTime#950747, _extract_code#952210, _extract_internalRefUUID#952211, _extract_internalRefUUID#952213, _extract_internalRefUUID#952212]
(2121) Scan parquet
Output [4]: [internalUUID#950760, baseUnitOfMeasure#950764, unitOfMeasureConversions#950766, systemId#950759]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(2122) Filter
Input [4]: [internalUUID#950760, baseUnitOfMeasure#950764, unitOfMeasureConversions#950766, systemId#950759]
Condition : isnotnull(internalUUID#950760)
(2123) Project
Output [3]: [internalUUID#950760, baseUnitOfMeasure#950764, unitOfMeasureConversions#950766]
Input [4]: [internalUUID#950760, baseUnitOfMeasure#950764, unitOfMeasureConversions#950766, systemId#950759]
(2124) Exchange
Input [3]: [internalUUID#950760, baseUnitOfMeasure#950764, unitOfMeasureConversions#950766]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464576]
(2125) BroadcastExchange
Input [3]: [internalUUID#950760, baseUnitOfMeasure#950764, unitOfMeasureConversions#950766]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466424]
(2126) BroadcastHashJoin
Left keys [1]: [product#950745]
Right keys [1]: [internalUUID#950760]
Join type: LeftOuter
Join condition: None
(2127) Project
Output [4]: [product#950745, plant#950746, orderDateTime#950747, filter(unitOfMeasureConversions#950766, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952210) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952211)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950764.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950764.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950771]
Input [8]: [product#950745, plant#950746, orderDateTime#950747, _extract_code#952210, _extract_internalRefUUID#952211, internalUUID#950760, baseUnitOfMeasure#950764, unitOfMeasureConversions#950766]
(2128) Generate
Input [4]: [product#950745, plant#950746, orderDateTime#950747, filteredUnitOfMeasureConversions#950771]
Arguments: explode(filteredUnitOfMeasureConversions#950771.quantityNumerator), [product#950745, plant#950746, orderDateTime#950747, filteredUnitOfMeasureConversions#950771], true, [quantityNumerator#950772]
(2129) Project
Output [4]: [product#950745, plant#950746, orderDateTime#950747, filteredUnitOfMeasureConversions#950771.quantityDenominator AS _extract_quantityDenominator#951745]
Input [5]: [product#950745, plant#950746, orderDateTime#950747, filteredUnitOfMeasureConversions#950771, quantityNumerator#950772]
(2130) Generate
Input [4]: [product#950745, plant#950746, orderDateTime#950747, _extract_quantityDenominator#951745]
Arguments: explode(_extract_quantityDenominator#951745), [product#950745, plant#950746, orderDateTime#950747], true, [quantityDenominator#950773]
(2131) Project
Output [3]: [product#950745, plant#950746, orderDateTime#950747]
Input [4]: [product#950745, plant#950746, orderDateTime#950747, quantityDenominator#950773]
(2132) Sort
Input [3]: [product#950745, plant#950746, orderDateTime#950747]
Arguments: [product#950745 ASC NULLS FIRST, plant#950746 ASC NULLS FIRST], false, 0
(2133) SortMergeJoin
Left keys [2]: [productUuid#950739, plantUuid#950737]
Right keys [2]: [product#950745, plant#950746]
Join type: Inner
Join condition: (calculationDateTime#950733 <= orderDateTime#950747)
(2134) Project
Output [4]: [plantUuid#950737 AS plant#950776, productUuid#950739 AS product#950777, storageLocId#950740, calculationDateTime#950733]
Input [7]: [plantUuid#950737, productUuid#950739, calculationDateTime#950733, storageLocId#950740, product#950745, plant#950746, orderDateTime#950747]
(2135) Exchange
Input [4]: [plant#950776, product#950777, storageLocId#950740, calculationDateTime#950733]
Arguments: hashpartitioning(coalesce(plant#950776, ), isnull(plant#950776), coalesce(product#950777, ), isnull(product#950777), coalesce(storageLocId#950740, ), isnull(storageLocId#950740), coalesce(calculationDateTime#950733, 1970-01-01 00:00:00), isnull(calculationDateTime#950733), 37), ENSURE_REQUIREMENTS, [plan_id=1466489]
(2136) Sort
Input [4]: [plant#950776, product#950777, storageLocId#950740, calculationDateTime#950733]
Arguments: [coalesce(plant#950776, ) ASC NULLS FIRST, isnull(plant#950776) ASC NULLS FIRST, coalesce(product#950777, ) ASC NULLS FIRST, isnull(product#950777) ASC NULLS FIRST, coalesce(storageLocId#950740, ) ASC NULLS FIRST, isnull(storageLocId#950740) ASC NULLS FIRST, coalesce(calculationDateTime#950733, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#950733) ASC NULLS FIRST], false, 0
(2137) Scan parquet
Output [6]: [internalUUID#950779, product#950780, plant#950781, calculationDateTime#950782, stockQuantities#950783, systemId#950778]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(2138) Filter
Input [6]: [internalUUID#950779, product#950780, plant#950781, calculationDateTime#950782, stockQuantities#950783, systemId#950778]
Condition : (isnotnull(plant#950781.internalRefUUID) AND isnotnull(product#950780.internalRefUUID))
(2139) Project
Output [6]: [systemId#950778, internalUUID#950779, product#950780, plant#950781, calculationDateTime#950782, stockQuantities#950783]
Input [6]: [internalUUID#950779, product#950780, plant#950781, calculationDateTime#950782, stockQuantities#950783, systemId#950778]
(2140) Exchange
Input [6]: [systemId#950778, internalUUID#950779, product#950780, plant#950781, calculationDateTime#950782, stockQuantities#950783]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464588]
(2141) BroadcastExchange
Input [6]: [systemId#950778, internalUUID#950779, product#950780, plant#950781, calculationDateTime#950782, stockQuantities#950783]
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=1466458]
(2142) Scan parquet
Output [2]: [marketUnit#950784, distributionCenters#950790]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(2143) Filter
Input [2]: [marketUnit#950784, distributionCenters#950790]
Condition : (((marketUnit#950784 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#950790, true) > 0)) AND isnotnull(distributionCenters#950790))
(2144) Project
Output [1]: [distributionCenters#950790]
Input [2]: [marketUnit#950784, distributionCenters#950790]
(2145) Exchange
Input [1]: [distributionCenters#950790]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464592]
(2146) Generate
Input [1]: [distributionCenters#950790]
Arguments: explode(distributionCenters#950790), false, [distributionCenters#950805]
(2147) Filter
Input [1]: [distributionCenters#950805]
Condition : (((size(distributionCenters#950805.storageLocations, true) > 0) AND isnotnull(distributionCenters#950805.storageLocations)) AND isnotnull(distributionCenters#950805.internalRefUUID))
(2148) Project
Output [2]: [distributionCenters#950805.internalRefUUID AS _extract_internalRefUUID#951752, distributionCenters#950805.storageLocations AS _extract_storageLocations#951753]
Input [1]: [distributionCenters#950805]
(2149) Generate
Input [2]: [_extract_internalRefUUID#951752, _extract_storageLocations#951753]
Arguments: explode(_extract_storageLocations#951753), [_extract_internalRefUUID#951752], false, [storageLocations#950806]
(2150) Project
Output [3]: [_extract_internalRefUUID#951752 AS plantUuid#950808, storageLocations#950806.id AS storageLocId#950809, storageLocations#950806.internalRefUUID AS storageLocUuid#950810]
Input [2]: [_extract_internalRefUUID#951752, storageLocations#950806]
(2151) BroadcastExchange
Input [3]: [plantUuid#950808, storageLocId#950809, storageLocUuid#950810]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466454]
(2152) Scan parquet
Output [2]: [product#950811, plant#950812]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(2153) Filter
Input [2]: [product#950811, plant#950812]
Condition : isnotnull(plant#950812)
(2154) Exchange
Input [2]: [product#950811, plant#950812]
Arguments: hashpartitioning(product#950811, plant#950812, 37), REPARTITION_BY_NUM, [plan_id=1465386]
(2155) Scan parquet
Output [4]: [plant#950817, product#950818, productionAspect#950820, systemId#950815]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(2156) Project
Output [4]: [plant#950817.internalRefUUID AS _extract_internalRefUUID#952215, product#950818.internalRefUUID AS _extract_internalRefUUID#952214, productionAspect#950820.productMovementPlants.unitOfIssue.code AS _extract_code#952216, productionAspect#950820.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952217]
Input [4]: [plant#950817, product#950818, productionAspect#950820, systemId#950815]
(2157) Exchange
Input [4]: [_extract_internalRefUUID#952215, _extract_internalRefUUID#952214, _extract_code#952216, _extract_internalRefUUID#952217]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464604]
(2158) Project
Output [4]: [_extract_code#952216, _extract_internalRefUUID#952217, _extract_internalRefUUID#952214, _extract_internalRefUUID#952215]
Input [4]: [_extract_internalRefUUID#952215, _extract_internalRefUUID#952214, _extract_code#952216, _extract_internalRefUUID#952217]
(2159) BroadcastExchange
Input [4]: [_extract_code#952216, _extract_internalRefUUID#952217, _extract_internalRefUUID#952214, _extract_internalRefUUID#952215]
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=1466438]
(2160) BroadcastHashJoin
Left keys [4]: [coalesce(product#950811, ), isnull(product#950811), coalesce(plant#950812, ), isnull(plant#950812)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952214, ), isnull(_extract_internalRefUUID#952214), coalesce(_extract_internalRefUUID#952215, ), isnull(_extract_internalRefUUID#952215)]
Join type: LeftOuter
Join condition: None
(2161) Project
Output [4]: [product#950811, plant#950812, _extract_code#952216, _extract_internalRefUUID#952217]
Input [6]: [product#950811, plant#950812, _extract_code#952216, _extract_internalRefUUID#952217, _extract_internalRefUUID#952214, _extract_internalRefUUID#952215]
(2162) Scan parquet
Output [4]: [internalUUID#950826, baseUnitOfMeasure#950830, unitOfMeasureConversions#950832, systemId#950825]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(2163) Filter
Input [4]: [internalUUID#950826, baseUnitOfMeasure#950830, unitOfMeasureConversions#950832, systemId#950825]
Condition : isnotnull(internalUUID#950826)
(2164) Project
Output [3]: [internalUUID#950826, baseUnitOfMeasure#950830, unitOfMeasureConversions#950832]
Input [4]: [internalUUID#950826, baseUnitOfMeasure#950830, unitOfMeasureConversions#950832, systemId#950825]
(2165) Exchange
Input [3]: [internalUUID#950826, baseUnitOfMeasure#950830, unitOfMeasureConversions#950832]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464611]
(2166) BroadcastExchange
Input [3]: [internalUUID#950826, baseUnitOfMeasure#950830, unitOfMeasureConversions#950832]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466442]
(2167) BroadcastHashJoin
Left keys [1]: [product#950811]
Right keys [1]: [internalUUID#950826]
Join type: LeftOuter
Join condition: None
(2168) Project
Output [2]: [plant#950812, filter(unitOfMeasureConversions#950832, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952216) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952217)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950830.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950830.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950837]
Input [7]: [product#950811, plant#950812, _extract_code#952216, _extract_internalRefUUID#952217, internalUUID#950826, baseUnitOfMeasure#950830, unitOfMeasureConversions#950832]
(2169) Generate
Input [2]: [plant#950812, filteredUnitOfMeasureConversions#950837]
Arguments: explode(filteredUnitOfMeasureConversions#950837.quantityNumerator), [plant#950812, filteredUnitOfMeasureConversions#950837], true, [quantityNumerator#950838]
(2170) Project
Output [2]: [plant#950812, filteredUnitOfMeasureConversions#950837.quantityDenominator AS _extract_quantityDenominator#951754]
Input [3]: [plant#950812, filteredUnitOfMeasureConversions#950837, quantityNumerator#950838]
(2171) Generate
Input [2]: [plant#950812, _extract_quantityDenominator#951754]
Arguments: explode(_extract_quantityDenominator#951754), [plant#950812], true, [quantityDenominator#950839]
(2172) Project
Output [1]: [plant#950812]
Input [2]: [plant#950812, quantityDenominator#950839]
(2173) HashAggregate
Input [1]: [plant#950812]
Keys [1]: [plant#950812]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#950812]
(2174) Exchange
Input [1]: [plant#950812]
Arguments: hashpartitioning(plant#950812, 37), ENSURE_REQUIREMENTS, [plan_id=1466451]
(2175) HashAggregate
Input [1]: [plant#950812]
Keys [1]: [plant#950812]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#950812]
(2176) BroadcastHashJoin
Left keys [1]: [plantUuid#950808]
Right keys [1]: [plant#950812]
Join type: Inner
Join condition: None
(2177) Project
Output [3]: [plantUuid#950808, storageLocId#950809, storageLocUuid#950810]
Input [4]: [plantUuid#950808, storageLocId#950809, storageLocUuid#950810, plant#950812]
(2178) BroadcastHashJoin
Left keys [2]: [coalesce(plant#950781.internalRefUUID, ), isnull(plant#950781.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#950808, ), isnull(plantUuid#950808)]
Join type: Inner
Join condition: None
(2179) Generate
Input [9]: [systemId#950778, internalUUID#950779, product#950780, plant#950781, calculationDateTime#950782, stockQuantities#950783, plantUuid#950808, storageLocId#950809, storageLocUuid#950810]
Arguments: explode(filter(stockQuantities#950783, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#950810) AND (lambda x#944569.storageLocation.Id = storageLocId#950809)), lambda x#944569, false))), [systemId#950778, internalUUID#950779, product#950780, plant#950781, calculationDateTime#950782, plantUuid#950808], false, [stockQuantity#950842]
(2180) ObjectHashAggregate
Input [7]: [systemId#950778, internalUUID#950779, product#950780, plant#950781, calculationDateTime#950782, plantUuid#950808, stockQuantity#950842]
Keys [5]: [plantUuid#950808, internalUUID#950779, plant#950781, product#950780, systemId#950778]
Functions [2]: [partial_first(calculationDateTime#950782, false), partial_collect_list(stockQuantity#950842, 0, 0)]
Aggregate Attributes [3]: [first#953217, valueSet#953218, buf#953219]
Results [8]: [plantUuid#950808, internalUUID#950779, plant#950781, product#950780, systemId#950778, first#953220, valueSet#953221, buf#953222]
(2181) ObjectHashAggregate
Input [8]: [plantUuid#950808, internalUUID#950779, plant#950781, product#950780, systemId#950778, first#953220, valueSet#953221, buf#953222]
Keys [5]: [plantUuid#950808, internalUUID#950779, plant#950781, product#950780, systemId#950778]
Functions [2]: [first(calculationDateTime#950782, false), collect_list(stockQuantity#950842, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#950782)()#944584, collect_list(stockQuantity#950842, 0, 0)#944585]
Results [4]: [product#950780, plant#950781, first(calculationDateTime#950782)()#944584 AS calculationDateTime#950843, collect_list(stockQuantity#950842, 0, 0)#944585 AS stockQuantities#950844]
(2182) Filter
Input [4]: [product#950780, plant#950781, calculationDateTime#950843, stockQuantities#950844]
Condition : ((size(stockQuantities#950844, true) > 0) AND isnotnull(calculationDateTime#950843))
(2183) Generate
Input [4]: [product#950780, plant#950781, calculationDateTime#950843, stockQuantities#950844]
Arguments: explode(stockQuantities#950844), [product#950780, plant#950781, calculationDateTime#950843], false, [stockQuantity#950845]
(2184) Filter
Input [4]: [product#950780, plant#950781, calculationDateTime#950843, stockQuantity#950845]
Condition : (((isnotnull(stockQuantity#950845.specialStockIndicator.code) AND isnotnull(stockQuantity#950845.stockType.code)) AND (stockQuantity#950845.specialStockIndicator.code = )) AND (stockQuantity#950845.stockType.code = 01))
(2185) Project
Output [4]: [plant#950781.internalRefUUID AS plantUuid#950847, product#950780.internalRefUUID AS productUuid#950849, calculationDateTime#950843, stockQuantity#950845.storagelocation.id AS storageLocId#950850]
Input [4]: [product#950780, plant#950781, calculationDateTime#950843, stockQuantity#950845]
(2186) Exchange
Input [4]: [plantUuid#950847, productUuid#950849, calculationDateTime#950843, storageLocId#950850]
Arguments: hashpartitioning(productUuid#950849, plantUuid#950847, 37), ENSURE_REQUIREMENTS, [plan_id=1466480]
(2187) Sort
Input [4]: [plantUuid#950847, productUuid#950849, calculationDateTime#950843, storageLocId#950850]
Arguments: [productUuid#950849 ASC NULLS FIRST, plantUuid#950847 ASC NULLS FIRST], false, 0
(2188) Scan parquet
Output [3]: [product#950855, plant#950856, orderDateTime#950857]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2189) Filter
Input [3]: [product#950855, plant#950856, orderDateTime#950857]
Condition : ((isnotnull(orderDateTime#950857) AND isnotnull(plant#950856)) AND isnotnull(product#950855))
(2190) Exchange
Input [3]: [product#950855, plant#950856, orderDateTime#950857]
Arguments: hashpartitioning(product#950855, plant#950856, 37), REPARTITION_BY_NUM, [plan_id=1465407]
(2191) Scan parquet
Output [4]: [plant#950861, product#950862, productionAspect#950864, systemId#950859]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(2192) Project
Output [4]: [plant#950861.internalRefUUID AS _extract_internalRefUUID#952221, product#950862.internalRefUUID AS _extract_internalRefUUID#952218, productionAspect#950864.productMovementPlants.unitOfIssue.code AS _extract_code#952219, productionAspect#950864.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952220]
Input [4]: [plant#950861, product#950862, productionAspect#950864, systemId#950859]
(2193) Exchange
Input [4]: [_extract_internalRefUUID#952221, _extract_internalRefUUID#952218, _extract_code#952219, _extract_internalRefUUID#952220]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464636]
(2194) Project
Output [4]: [_extract_code#952219, _extract_internalRefUUID#952220, _extract_internalRefUUID#952218, _extract_internalRefUUID#952221]
Input [4]: [_extract_internalRefUUID#952221, _extract_internalRefUUID#952218, _extract_code#952219, _extract_internalRefUUID#952220]
(2195) BroadcastExchange
Input [4]: [_extract_code#952219, _extract_internalRefUUID#952220, _extract_internalRefUUID#952218, _extract_internalRefUUID#952221]
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=1466467]
(2196) BroadcastHashJoin
Left keys [4]: [coalesce(product#950855, ), isnull(product#950855), coalesce(plant#950856, ), isnull(plant#950856)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952218, ), isnull(_extract_internalRefUUID#952218), coalesce(_extract_internalRefUUID#952221, ), isnull(_extract_internalRefUUID#952221)]
Join type: LeftOuter
Join condition: None
(2197) Project
Output [5]: [product#950855, plant#950856, orderDateTime#950857, _extract_code#952219, _extract_internalRefUUID#952220]
Input [7]: [product#950855, plant#950856, orderDateTime#950857, _extract_code#952219, _extract_internalRefUUID#952220, _extract_internalRefUUID#952218, _extract_internalRefUUID#952221]
(2198) Scan parquet
Output [4]: [internalUUID#950870, baseUnitOfMeasure#950874, unitOfMeasureConversions#950876, systemId#950869]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(2199) Filter
Input [4]: [internalUUID#950870, baseUnitOfMeasure#950874, unitOfMeasureConversions#950876, systemId#950869]
Condition : isnotnull(internalUUID#950870)
(2200) Project
Output [3]: [internalUUID#950870, baseUnitOfMeasure#950874, unitOfMeasureConversions#950876]
Input [4]: [internalUUID#950870, baseUnitOfMeasure#950874, unitOfMeasureConversions#950876, systemId#950869]
(2201) Exchange
Input [3]: [internalUUID#950870, baseUnitOfMeasure#950874, unitOfMeasureConversions#950876]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464643]
(2202) BroadcastExchange
Input [3]: [internalUUID#950870, baseUnitOfMeasure#950874, unitOfMeasureConversions#950876]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466471]
(2203) BroadcastHashJoin
Left keys [1]: [product#950855]
Right keys [1]: [internalUUID#950870]
Join type: LeftOuter
Join condition: None
(2204) Project
Output [4]: [product#950855, plant#950856, orderDateTime#950857, filter(unitOfMeasureConversions#950876, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952219) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952220)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950874.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950874.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950881]
Input [8]: [product#950855, plant#950856, orderDateTime#950857, _extract_code#952219, _extract_internalRefUUID#952220, internalUUID#950870, baseUnitOfMeasure#950874, unitOfMeasureConversions#950876]
(2205) Generate
Input [4]: [product#950855, plant#950856, orderDateTime#950857, filteredUnitOfMeasureConversions#950881]
Arguments: explode(filteredUnitOfMeasureConversions#950881.quantityNumerator), [product#950855, plant#950856, orderDateTime#950857, filteredUnitOfMeasureConversions#950881], true, [quantityNumerator#950882]
(2206) Project
Output [4]: [product#950855, plant#950856, orderDateTime#950857, filteredUnitOfMeasureConversions#950881.quantityDenominator AS _extract_quantityDenominator#951761]
Input [5]: [product#950855, plant#950856, orderDateTime#950857, filteredUnitOfMeasureConversions#950881, quantityNumerator#950882]
(2207) Generate
Input [4]: [product#950855, plant#950856, orderDateTime#950857, _extract_quantityDenominator#951761]
Arguments: explode(_extract_quantityDenominator#951761), [product#950855, plant#950856, orderDateTime#950857], true, [quantityDenominator#950883]
(2208) Project
Output [3]: [product#950855, plant#950856, orderDateTime#950857]
Input [4]: [product#950855, plant#950856, orderDateTime#950857, quantityDenominator#950883]
(2209) Sort
Input [3]: [product#950855, plant#950856, orderDateTime#950857]
Arguments: [product#950855 ASC NULLS FIRST, plant#950856 ASC NULLS FIRST], false, 0
(2210) SortMergeJoin
Left keys [2]: [productUuid#950849, plantUuid#950847]
Right keys [2]: [product#950855, plant#950856]
Join type: Inner
Join condition: (calculationDateTime#950843 <= orderDateTime#950857)
(2211) Project
Output [4]: [plantUuid#950847 AS plant#950886, productUuid#950849 AS product#950887, storageLocId#950850, calculationDateTime#950843]
Input [7]: [plantUuid#950847, productUuid#950849, calculationDateTime#950843, storageLocId#950850, product#950855, plant#950856, orderDateTime#950857]
(2212) HashAggregate
Input [4]: [plant#950886, product#950887, storageLocId#950850, calculationDateTime#950843]
Keys [3]: [plant#950886, product#950887, storageLocId#950850]
Functions [1]: [partial_max(calculationDateTime#950843)]
Aggregate Attributes [1]: [max#953215]
Results [4]: [plant#950886, product#950887, storageLocId#950850, max#953216]
(2213) HashAggregate
Input [4]: [plant#950886, product#950887, storageLocId#950850, max#953216]
Keys [3]: [plant#950886, product#950887, storageLocId#950850]
Functions [1]: [max(calculationDateTime#950843)]
Aggregate Attributes [1]: [max(calculationDateTime#950843)#944648]
Results [4]: [plant#950886, product#950887, storageLocId#950850, max(calculationDateTime#950843)#944648 AS max_calc_datetime#950888]
(2214) Exchange
Input [4]: [plant#950886, product#950887, storageLocId#950850, max_calc_datetime#950888]
Arguments: hashpartitioning(coalesce(plant#950886, ), isnull(plant#950886), coalesce(product#950887, ), isnull(product#950887), coalesce(storageLocId#950850, ), isnull(storageLocId#950850), coalesce(max_calc_datetime#950888, 1970-01-01 00:00:00), isnull(max_calc_datetime#950888), 37), ENSURE_REQUIREMENTS, [plan_id=1466490]
(2215) Sort
Input [4]: [plant#950886, product#950887, storageLocId#950850, max_calc_datetime#950888]
Arguments: [coalesce(plant#950886, ) ASC NULLS FIRST, isnull(plant#950886) ASC NULLS FIRST, coalesce(product#950887, ) ASC NULLS FIRST, isnull(product#950887) ASC NULLS FIRST, coalesce(storageLocId#950850, ) ASC NULLS FIRST, isnull(storageLocId#950850) ASC NULLS FIRST, coalesce(max_calc_datetime#950888, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#950888) ASC NULLS FIRST], false, 0
(2216) SortMergeJoin
Left keys [8]: [coalesce(plant#950776, ), isnull(plant#950776), coalesce(product#950777, ), isnull(product#950777), coalesce(storageLocId#950740, ), isnull(storageLocId#950740), coalesce(calculationDateTime#950733, 1970-01-01 00:00:00), isnull(calculationDateTime#950733)]
Right keys [8]: [coalesce(plant#950886, ), isnull(plant#950886), coalesce(product#950887, ), isnull(product#950887), coalesce(storageLocId#950850, ), isnull(storageLocId#950850), coalesce(max_calc_datetime#950888, 1970-01-01 00:00:00), isnull(max_calc_datetime#950888)]
Join type: Inner
Join condition: None
(2217) Project
Output [3]: [plant#950776, product#950777, calculationDateTime#950733]
Input [8]: [plant#950776, product#950777, storageLocId#950740, calculationDateTime#950733, plant#950886, product#950887, storageLocId#950850, max_calc_datetime#950888]
(2218) HashAggregate
Input [3]: [plant#950776, product#950777, calculationDateTime#950733]
Keys [2]: [product#950777, plant#950776]
Functions [1]: [partial_min(calculationDateTime#950733)]
Aggregate Attributes [1]: [min#953207]
Results [3]: [product#950777, plant#950776, min#953208]
(2219) Exchange
Input [3]: [product#950777, plant#950776, min#953208]
Arguments: hashpartitioning(product#950777, plant#950776, 37), ENSURE_REQUIREMENTS, [plan_id=1466497]
(2220) HashAggregate
Input [3]: [product#950777, plant#950776, min#953208]
Keys [2]: [product#950777, plant#950776]
Functions [1]: [min(calculationDateTime#950733)]
Aggregate Attributes [1]: [min(calculationDateTime#950733)#944775]
Results [3]: [product#950777, plant#950776, min(calculationDateTime#950733)#944775 AS minCalculationDateTime#950890]
(2221) Sort
Input [3]: [product#950777, plant#950776, minCalculationDateTime#950890]
Arguments: [product#950777 ASC NULLS FIRST, plant#950776 ASC NULLS FIRST], false, 0
(2222) SortMergeJoin
Left keys [2]: [product#950637, plant#950638]
Right keys [2]: [product#950777, plant#950776]
Join type: LeftOuter
Join condition: None
(2223) Project
Output [3]: [product#950637, plant#950638, CASE WHEN isnotnull(minCalculationDateTime#950890) THEN minCalculationDateTime#950890 ELSE orderDateTime#950639 END AS stockDatetime#950892]
Input [6]: [product#950637, plant#950638, orderDateTime#950639, product#950777, plant#950776, minCalculationDateTime#950890]
(2224) Exchange
Input [3]: [product#950637, plant#950638, stockDatetime#950892]
Arguments: hashpartitioning(coalesce(plant#950638, ), isnull(plant#950638), coalesce(product#950637, ), isnull(product#950637), 37), ENSURE_REQUIREMENTS, [plan_id=1466651]
(2225) Sort
Input [3]: [product#950637, plant#950638, stockDatetime#950892]
Arguments: [coalesce(plant#950638, ) ASC NULLS FIRST, isnull(plant#950638) ASC NULLS FIRST, coalesce(product#950637, ) ASC NULLS FIRST, isnull(product#950637) ASC NULLS FIRST], false, 0
(2226) Scan parquet
Output [3]: [product#950895, plant#950896, orderDateTime#950897]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2227) Exchange
Input [3]: [product#950895, plant#950896, orderDateTime#950897]
Arguments: hashpartitioning(product#950895, plant#950896, 37), REPARTITION_BY_NUM, [plan_id=1464661]
(2228) Scan parquet
Output [9]: [internalUUID#950900, plant#950901, product#950902, blockedForReplenishmentStartingFrom#950903, productionAspect#950904, salesPlant#950905, listing#950906, sourceOfSupplyCategory#950907, systemId#950899]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>
(2229) Project
Output [9]: [systemId#950899, internalUUID#950900, plant#950901, product#950902, blockedForReplenishmentStartingFrom#950903, productionAspect#950904, salesPlant#950905, listing#950906, sourceOfSupplyCategory#950907]
Input [9]: [internalUUID#950900, plant#950901, product#950902, blockedForReplenishmentStartingFrom#950903, productionAspect#950904, salesPlant#950905, listing#950906, sourceOfSupplyCategory#950907, systemId#950899]
(2230) Exchange
Input [9]: [systemId#950899, internalUUID#950900, plant#950901, product#950902, blockedForReplenishmentStartingFrom#950903, productionAspect#950904, salesPlant#950905, listing#950906, sourceOfSupplyCategory#950907]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464664]
(2231) Project
Output [1]: [struct(systemId, systemId#950899, internalUUID, internalUUID#950900, plant, plant#950901, product, product#950902, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#950903, productionAspect, productionAspect#950904, salesPlant, salesPlant#950905, listing, listing#950906, sourceOfSupplyCategory, sourceOfSupplyCategory#950907) AS productPlant#950908]
Input [9]: [systemId#950899, internalUUID#950900, plant#950901, product#950902, blockedForReplenishmentStartingFrom#950903, productionAspect#950904, salesPlant#950905, listing#950906, sourceOfSupplyCategory#950907]
(2232) BroadcastExchange
Input [1]: [productPlant#950908]
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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].plant.internalRefUUID)),false), [plan_id=1466505]
(2233) BroadcastHashJoin
Left keys [4]: [coalesce(product#950895, ), isnull(product#950895), coalesce(plant#950896, ), isnull(plant#950896)]
Right keys [4]: [coalesce(productPlant#950908.product.internalRefUUID, ), isnull(productPlant#950908.product.internalRefUUID), coalesce(productPlant#950908.plant.internalRefUUID, ), isnull(productPlant#950908.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(2234) Scan parquet
Output [4]: [internalUUID#950910, baseUnitOfMeasure#950914, unitOfMeasureConversions#950916, systemId#950909]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(2235) Filter
Input [4]: [internalUUID#950910, baseUnitOfMeasure#950914, unitOfMeasureConversions#950916, systemId#950909]
Condition : isnotnull(internalUUID#950910)
(2236) Project
Output [3]: [internalUUID#950910, baseUnitOfMeasure#950914, unitOfMeasureConversions#950916]
Input [4]: [internalUUID#950910, baseUnitOfMeasure#950914, unitOfMeasureConversions#950916, systemId#950909]
(2237) Exchange
Input [3]: [internalUUID#950910, baseUnitOfMeasure#950914, unitOfMeasureConversions#950916]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464670]
(2238) BroadcastExchange
Input [3]: [internalUUID#950910, baseUnitOfMeasure#950914, unitOfMeasureConversions#950916]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466508]
(2239) BroadcastHashJoin
Left keys [1]: [product#950895]
Right keys [1]: [internalUUID#950910]
Join type: LeftOuter
Join condition: None
(2240) Project
Output [5]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, filter(unitOfMeasureConversions#950916, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#950908.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#950908.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950914.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950914.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950921]
Input [7]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, internalUUID#950910, baseUnitOfMeasure#950914, unitOfMeasureConversions#950916]
(2241) Project
Output [6]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, filteredUnitOfMeasureConversions#950921.quantityDenominator AS _extract_quantityDenominator#952222, filteredUnitOfMeasureConversions#950921.quantityNumerator AS _extract_quantityNumerator#952223]
Input [5]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, filteredUnitOfMeasureConversions#950921]
(2242) Generate
Input [6]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, _extract_quantityDenominator#952222, _extract_quantityNumerator#952223]
Arguments: explode(_extract_quantityNumerator#952223), [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, _extract_quantityDenominator#952222], true, [quantityNumerator#950922]
(2243) Generate
Input [6]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, _extract_quantityDenominator#952222, quantityNumerator#950922]
Arguments: explode(_extract_quantityDenominator#952222), [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, quantityNumerator#950922], true, [quantityDenominator#950923]
(2244) Project
Output [5]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, (cast(quantityNumerator#950922 as double) / cast(quantityDenominator#950923 as double)) AS outboundUnit#950924]
Input [6]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, quantityNumerator#950922, quantityDenominator#950923]
(2245) Project
Output [5]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, CASE WHEN (isnull(outboundUnit#950924) OR (outboundUnit#950924 <= 0.0)) THEN 1.0 ELSE outboundUnit#950924 END AS outboundUnit#950925]
Input [5]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950924]
(2246) Sort
Input [5]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925]
Arguments: [product#950895 ASC NULLS FIRST, plant#950896 ASC NULLS FIRST], false, 0
(2247) Scan parquet
Output [6]: [internalUUID#950927, product#950928, plant#950929, calculationDateTime#950930, stockQuantities#950931, systemId#950926]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(2248) Filter
Input [6]: [internalUUID#950927, product#950928, plant#950929, calculationDateTime#950930, stockQuantities#950931, systemId#950926]
Condition : (isnotnull(plant#950929.internalRefUUID) AND isnotnull(product#950928.internalRefUUID))
(2249) Project
Output [6]: [systemId#950926, internalUUID#950927, product#950928, plant#950929, calculationDateTime#950930, stockQuantities#950931]
Input [6]: [internalUUID#950927, product#950928, plant#950929, calculationDateTime#950930, stockQuantities#950931, systemId#950926]
(2250) Exchange
Input [6]: [systemId#950926, internalUUID#950927, product#950928, plant#950929, calculationDateTime#950930, stockQuantities#950931]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464681]
(2251) BroadcastExchange
Input [6]: [systemId#950926, internalUUID#950927, product#950928, plant#950929, calculationDateTime#950930, stockQuantities#950931]
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=1466536]
(2252) Scan parquet
Output [2]: [marketUnit#950932, distributionCenters#950938]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(2253) Filter
Input [2]: [marketUnit#950932, distributionCenters#950938]
Condition : (((marketUnit#950932 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#950938, true) > 0)) AND isnotnull(distributionCenters#950938))
(2254) Project
Output [1]: [distributionCenters#950938]
Input [2]: [marketUnit#950932, distributionCenters#950938]
(2255) Exchange
Input [1]: [distributionCenters#950938]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464685]
(2256) Generate
Input [1]: [distributionCenters#950938]
Arguments: explode(distributionCenters#950938), false, [distributionCenters#950953]
(2257) Filter
Input [1]: [distributionCenters#950953]
Condition : (((size(distributionCenters#950953.storageLocations, true) > 0) AND isnotnull(distributionCenters#950953.storageLocations)) AND isnotnull(distributionCenters#950953.internalRefUUID))
(2258) Project
Output [2]: [distributionCenters#950953.internalRefUUID AS _extract_internalRefUUID#951769, distributionCenters#950953.storageLocations AS _extract_storageLocations#951770]
Input [1]: [distributionCenters#950953]
(2259) Generate
Input [2]: [_extract_internalRefUUID#951769, _extract_storageLocations#951770]
Arguments: explode(_extract_storageLocations#951770), [_extract_internalRefUUID#951769], false, [storageLocations#950954]
(2260) Project
Output [3]: [_extract_internalRefUUID#951769 AS plantUuid#950956, storageLocations#950954.id AS storageLocId#950957, storageLocations#950954.internalRefUUID AS storageLocUuid#950958]
Input [2]: [_extract_internalRefUUID#951769, storageLocations#950954]
(2261) BroadcastExchange
Input [3]: [plantUuid#950956, storageLocId#950957, storageLocUuid#950958]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466532]
(2262) Scan parquet
Output [2]: [product#950959, plant#950960]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(2263) Filter
Input [2]: [product#950959, plant#950960]
Condition : isnotnull(plant#950960)
(2264) Exchange
Input [2]: [product#950959, plant#950960]
Arguments: hashpartitioning(product#950959, plant#950960, 37), REPARTITION_BY_NUM, [plan_id=1465426]
(2265) Scan parquet
Output [4]: [plant#950965, product#950966, productionAspect#950968, systemId#950963]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(2266) Project
Output [4]: [plant#950965.internalRefUUID AS _extract_internalRefUUID#952227, product#950966.internalRefUUID AS _extract_internalRefUUID#952224, productionAspect#950968.productMovementPlants.unitOfIssue.code AS _extract_code#952225, productionAspect#950968.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952226]
Input [4]: [plant#950965, product#950966, productionAspect#950968, systemId#950963]
(2267) Exchange
Input [4]: [_extract_internalRefUUID#952227, _extract_internalRefUUID#952224, _extract_code#952225, _extract_internalRefUUID#952226]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464697]
(2268) Project
Output [4]: [_extract_code#952225, _extract_internalRefUUID#952226, _extract_internalRefUUID#952224, _extract_internalRefUUID#952227]
Input [4]: [_extract_internalRefUUID#952227, _extract_internalRefUUID#952224, _extract_code#952225, _extract_internalRefUUID#952226]
(2269) BroadcastExchange
Input [4]: [_extract_code#952225, _extract_internalRefUUID#952226, _extract_internalRefUUID#952224, _extract_internalRefUUID#952227]
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=1466516]
(2270) BroadcastHashJoin
Left keys [4]: [coalesce(product#950959, ), isnull(product#950959), coalesce(plant#950960, ), isnull(plant#950960)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952224, ), isnull(_extract_internalRefUUID#952224), coalesce(_extract_internalRefUUID#952227, ), isnull(_extract_internalRefUUID#952227)]
Join type: LeftOuter
Join condition: None
(2271) Project
Output [4]: [product#950959, plant#950960, _extract_code#952225, _extract_internalRefUUID#952226]
Input [6]: [product#950959, plant#950960, _extract_code#952225, _extract_internalRefUUID#952226, _extract_internalRefUUID#952224, _extract_internalRefUUID#952227]
(2272) Scan parquet
Output [4]: [internalUUID#950974, baseUnitOfMeasure#950978, unitOfMeasureConversions#950980, systemId#950973]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(2273) Filter
Input [4]: [internalUUID#950974, baseUnitOfMeasure#950978, unitOfMeasureConversions#950980, systemId#950973]
Condition : isnotnull(internalUUID#950974)
(2274) Project
Output [3]: [internalUUID#950974, baseUnitOfMeasure#950978, unitOfMeasureConversions#950980]
Input [4]: [internalUUID#950974, baseUnitOfMeasure#950978, unitOfMeasureConversions#950980, systemId#950973]
(2275) Exchange
Input [3]: [internalUUID#950974, baseUnitOfMeasure#950978, unitOfMeasureConversions#950980]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464704]
(2276) BroadcastExchange
Input [3]: [internalUUID#950974, baseUnitOfMeasure#950978, unitOfMeasureConversions#950980]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466520]
(2277) BroadcastHashJoin
Left keys [1]: [product#950959]
Right keys [1]: [internalUUID#950974]
Join type: LeftOuter
Join condition: None
(2278) Project
Output [2]: [plant#950960, filter(unitOfMeasureConversions#950980, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952225) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952226)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950978.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950978.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950985]
Input [7]: [product#950959, plant#950960, _extract_code#952225, _extract_internalRefUUID#952226, internalUUID#950974, baseUnitOfMeasure#950978, unitOfMeasureConversions#950980]
(2279) Generate
Input [2]: [plant#950960, filteredUnitOfMeasureConversions#950985]
Arguments: explode(filteredUnitOfMeasureConversions#950985.quantityNumerator), [plant#950960, filteredUnitOfMeasureConversions#950985], true, [quantityNumerator#950986]
(2280) Project
Output [2]: [plant#950960, filteredUnitOfMeasureConversions#950985.quantityDenominator AS _extract_quantityDenominator#951771]
Input [3]: [plant#950960, filteredUnitOfMeasureConversions#950985, quantityNumerator#950986]
(2281) Generate
Input [2]: [plant#950960, _extract_quantityDenominator#951771]
Arguments: explode(_extract_quantityDenominator#951771), [plant#950960], true, [quantityDenominator#950987]
(2282) Project
Output [1]: [plant#950960]
Input [2]: [plant#950960, quantityDenominator#950987]
(2283) HashAggregate
Input [1]: [plant#950960]
Keys [1]: [plant#950960]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#950960]
(2284) Exchange
Input [1]: [plant#950960]
Arguments: hashpartitioning(plant#950960, 37), ENSURE_REQUIREMENTS, [plan_id=1466529]
(2285) HashAggregate
Input [1]: [plant#950960]
Keys [1]: [plant#950960]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#950960]
(2286) BroadcastHashJoin
Left keys [1]: [plantUuid#950956]
Right keys [1]: [plant#950960]
Join type: Inner
Join condition: None
(2287) Project
Output [3]: [plantUuid#950956, storageLocId#950957, storageLocUuid#950958]
Input [4]: [plantUuid#950956, storageLocId#950957, storageLocUuid#950958, plant#950960]
(2288) BroadcastHashJoin
Left keys [2]: [coalesce(plant#950929.internalRefUUID, ), isnull(plant#950929.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#950956, ), isnull(plantUuid#950956)]
Join type: Inner
Join condition: None
(2289) Generate
Input [9]: [systemId#950926, internalUUID#950927, product#950928, plant#950929, calculationDateTime#950930, stockQuantities#950931, plantUuid#950956, storageLocId#950957, storageLocUuid#950958]
Arguments: explode(filter(stockQuantities#950931, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#950958) AND (lambda x#944569.storageLocation.Id = storageLocId#950957)), lambda x#944569, false))), [systemId#950926, internalUUID#950927, product#950928, plant#950929, calculationDateTime#950930, plantUuid#950956], false, [stockQuantity#950990]
(2290) ObjectHashAggregate
Input [7]: [systemId#950926, internalUUID#950927, product#950928, plant#950929, calculationDateTime#950930, plantUuid#950956, stockQuantity#950990]
Keys [5]: [plantUuid#950956, internalUUID#950927, plant#950929, product#950928, systemId#950926]
Functions [2]: [partial_first(calculationDateTime#950930, false), partial_collect_list(stockQuantity#950990, 0, 0)]
Aggregate Attributes [3]: [first#953231, valueSet#953232, buf#953233]
Results [8]: [plantUuid#950956, internalUUID#950927, plant#950929, product#950928, systemId#950926, first#953234, valueSet#953235, buf#953236]
(2291) ObjectHashAggregate
Input [8]: [plantUuid#950956, internalUUID#950927, plant#950929, product#950928, systemId#950926, first#953234, valueSet#953235, buf#953236]
Keys [5]: [plantUuid#950956, internalUUID#950927, plant#950929, product#950928, systemId#950926]
Functions [2]: [first(calculationDateTime#950930, false), collect_list(stockQuantity#950990, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#950930)()#944584, collect_list(stockQuantity#950990, 0, 0)#944585]
Results [4]: [product#950928, plant#950929, first(calculationDateTime#950930)()#944584 AS calculationDateTime#950991, collect_list(stockQuantity#950990, 0, 0)#944585 AS stockQuantities#950992]
(2292) Filter
Input [4]: [product#950928, plant#950929, calculationDateTime#950991, stockQuantities#950992]
Condition : ((size(stockQuantities#950992, true) > 0) AND isnotnull(calculationDateTime#950991))
(2293) Generate
Input [4]: [product#950928, plant#950929, calculationDateTime#950991, stockQuantities#950992]
Arguments: explode(stockQuantities#950992), [product#950928, plant#950929, calculationDateTime#950991], false, [stockQuantity#950993]
(2294) Filter
Input [4]: [product#950928, plant#950929, calculationDateTime#950991, stockQuantity#950993]
Condition : (((isnotnull(stockQuantity#950993.specialStockIndicator.code) AND isnotnull(stockQuantity#950993.stockType.code)) AND (stockQuantity#950993.specialStockIndicator.code = )) AND (stockQuantity#950993.stockType.code = 01))
(2295) Project
Output [5]: [plant#950929.internalRefUUID AS plantUuid#950995, product#950928.internalRefUUID AS productUuid#950997, calculationDateTime#950991, stockQuantity#950993.storagelocation.id AS storageLocId#950998, stockQuantity#950993.quantity.measure AS quantity#951000]
Input [4]: [product#950928, plant#950929, calculationDateTime#950991, stockQuantity#950993]
(2296) Exchange
Input [5]: [plantUuid#950995, productUuid#950997, calculationDateTime#950991, storageLocId#950998, quantity#951000]
Arguments: hashpartitioning(productUuid#950997, plantUuid#950995, 37), ENSURE_REQUIREMENTS, [plan_id=1466558]
(2297) Sort
Input [5]: [plantUuid#950995, productUuid#950997, calculationDateTime#950991, storageLocId#950998, quantity#951000]
Arguments: [productUuid#950997 ASC NULLS FIRST, plantUuid#950995 ASC NULLS FIRST], false, 0
(2298) Scan parquet
Output [3]: [product#951003, plant#951004, orderDateTime#951005]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2299) Filter
Input [3]: [product#951003, plant#951004, orderDateTime#951005]
Condition : ((isnotnull(orderDateTime#951005) AND isnotnull(plant#951004)) AND isnotnull(product#951003))
(2300) Exchange
Input [3]: [product#951003, plant#951004, orderDateTime#951005]
Arguments: hashpartitioning(product#951003, plant#951004, 37), REPARTITION_BY_NUM, [plan_id=1465447]
(2301) Scan parquet
Output [4]: [plant#951009, product#951010, productionAspect#951012, systemId#951007]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(2302) Project
Output [4]: [plant#951009.internalRefUUID AS _extract_internalRefUUID#952230, product#951010.internalRefUUID AS _extract_internalRefUUID#952231, productionAspect#951012.productMovementPlants.unitOfIssue.code AS _extract_code#952228, productionAspect#951012.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952229]
Input [4]: [plant#951009, product#951010, productionAspect#951012, systemId#951007]
(2303) Exchange
Input [4]: [_extract_internalRefUUID#952230, _extract_internalRefUUID#952231, _extract_code#952228, _extract_internalRefUUID#952229]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464729]
(2304) Project
Output [4]: [_extract_code#952228, _extract_internalRefUUID#952229, _extract_internalRefUUID#952231, _extract_internalRefUUID#952230]
Input [4]: [_extract_internalRefUUID#952230, _extract_internalRefUUID#952231, _extract_code#952228, _extract_internalRefUUID#952229]
(2305) BroadcastExchange
Input [4]: [_extract_code#952228, _extract_internalRefUUID#952229, _extract_internalRefUUID#952231, _extract_internalRefUUID#952230]
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=1466545]
(2306) BroadcastHashJoin
Left keys [4]: [coalesce(product#951003, ), isnull(product#951003), coalesce(plant#951004, ), isnull(plant#951004)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952231, ), isnull(_extract_internalRefUUID#952231), coalesce(_extract_internalRefUUID#952230, ), isnull(_extract_internalRefUUID#952230)]
Join type: LeftOuter
Join condition: None
(2307) Project
Output [5]: [product#951003, plant#951004, orderDateTime#951005, _extract_code#952228, _extract_internalRefUUID#952229]
Input [7]: [product#951003, plant#951004, orderDateTime#951005, _extract_code#952228, _extract_internalRefUUID#952229, _extract_internalRefUUID#952231, _extract_internalRefUUID#952230]
(2308) Scan parquet
Output [4]: [internalUUID#951018, baseUnitOfMeasure#951022, unitOfMeasureConversions#951024, systemId#951017]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(2309) Filter
Input [4]: [internalUUID#951018, baseUnitOfMeasure#951022, unitOfMeasureConversions#951024, systemId#951017]
Condition : isnotnull(internalUUID#951018)
(2310) Project
Output [3]: [internalUUID#951018, baseUnitOfMeasure#951022, unitOfMeasureConversions#951024]
Input [4]: [internalUUID#951018, baseUnitOfMeasure#951022, unitOfMeasureConversions#951024, systemId#951017]
(2311) Exchange
Input [3]: [internalUUID#951018, baseUnitOfMeasure#951022, unitOfMeasureConversions#951024]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464736]
(2312) BroadcastExchange
Input [3]: [internalUUID#951018, baseUnitOfMeasure#951022, unitOfMeasureConversions#951024]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466549]
(2313) BroadcastHashJoin
Left keys [1]: [product#951003]
Right keys [1]: [internalUUID#951018]
Join type: LeftOuter
Join condition: None
(2314) Project
Output [4]: [product#951003, plant#951004, orderDateTime#951005, filter(unitOfMeasureConversions#951024, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952228) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952229)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#951022.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#951022.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#951029]
Input [8]: [product#951003, plant#951004, orderDateTime#951005, _extract_code#952228, _extract_internalRefUUID#952229, internalUUID#951018, baseUnitOfMeasure#951022, unitOfMeasureConversions#951024]
(2315) Generate
Input [4]: [product#951003, plant#951004, orderDateTime#951005, filteredUnitOfMeasureConversions#951029]
Arguments: explode(filteredUnitOfMeasureConversions#951029.quantityNumerator), [product#951003, plant#951004, orderDateTime#951005, filteredUnitOfMeasureConversions#951029], true, [quantityNumerator#951030]
(2316) Project
Output [4]: [product#951003, plant#951004, orderDateTime#951005, filteredUnitOfMeasureConversions#951029.quantityDenominator AS _extract_quantityDenominator#951778]
Input [5]: [product#951003, plant#951004, orderDateTime#951005, filteredUnitOfMeasureConversions#951029, quantityNumerator#951030]
(2317) Generate
Input [4]: [product#951003, plant#951004, orderDateTime#951005, _extract_quantityDenominator#951778]
Arguments: explode(_extract_quantityDenominator#951778), [product#951003, plant#951004, orderDateTime#951005], true, [quantityDenominator#951031]
(2318) Project
Output [3]: [product#951003, plant#951004, orderDateTime#951005]
Input [4]: [product#951003, plant#951004, orderDateTime#951005, quantityDenominator#951031]
(2319) Sort
Input [3]: [product#951003, plant#951004, orderDateTime#951005]
Arguments: [product#951003 ASC NULLS FIRST, plant#951004 ASC NULLS FIRST], false, 0
(2320) SortMergeJoin
Left keys [2]: [productUuid#950997, plantUuid#950995]
Right keys [2]: [product#951003, plant#951004]
Join type: Inner
Join condition: (calculationDateTime#950991 <= orderDateTime#951005)
(2321) Project
Output [5]: [plantUuid#950995 AS plant#951034, productUuid#950997 AS product#951035, storageLocId#950998, calculationDateTime#950991, quantity#951000]
Input [8]: [plantUuid#950995, productUuid#950997, calculationDateTime#950991, storageLocId#950998, quantity#951000, product#951003, plant#951004, orderDateTime#951005]
(2322) Exchange
Input [5]: [plant#951034, product#951035, storageLocId#950998, calculationDateTime#950991, quantity#951000]
Arguments: hashpartitioning(coalesce(plant#951034, ), isnull(plant#951034), coalesce(product#951035, ), isnull(product#951035), coalesce(storageLocId#950998, ), isnull(storageLocId#950998), coalesce(calculationDateTime#950991, 1970-01-01 00:00:00), isnull(calculationDateTime#950991), 37), ENSURE_REQUIREMENTS, [plan_id=1466614]
(2323) Sort
Input [5]: [plant#951034, product#951035, storageLocId#950998, calculationDateTime#950991, quantity#951000]
Arguments: [coalesce(plant#951034, ) ASC NULLS FIRST, isnull(plant#951034) ASC NULLS FIRST, coalesce(product#951035, ) ASC NULLS FIRST, isnull(product#951035) ASC NULLS FIRST, coalesce(storageLocId#950998, ) ASC NULLS FIRST, isnull(storageLocId#950998) ASC NULLS FIRST, coalesce(calculationDateTime#950991, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#950991) ASC NULLS FIRST], false, 0
(2324) Scan parquet
Output [6]: [internalUUID#951037, product#951038, plant#951039, calculationDateTime#951040, stockQuantities#951041, systemId#951036]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(2325) Filter
Input [6]: [internalUUID#951037, product#951038, plant#951039, calculationDateTime#951040, stockQuantities#951041, systemId#951036]
Condition : (isnotnull(plant#951039.internalRefUUID) AND isnotnull(product#951038.internalRefUUID))
(2326) Project
Output [6]: [systemId#951036, internalUUID#951037, product#951038, plant#951039, calculationDateTime#951040, stockQuantities#951041]
Input [6]: [internalUUID#951037, product#951038, plant#951039, calculationDateTime#951040, stockQuantities#951041, systemId#951036]
(2327) Exchange
Input [6]: [systemId#951036, internalUUID#951037, product#951038, plant#951039, calculationDateTime#951040, stockQuantities#951041]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464748]
(2328) BroadcastExchange
Input [6]: [systemId#951036, internalUUID#951037, product#951038, plant#951039, calculationDateTime#951040, stockQuantities#951041]
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=1466583]
(2329) Scan parquet
Output [2]: [marketUnit#951042, distributionCenters#951048]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(2330) Filter
Input [2]: [marketUnit#951042, distributionCenters#951048]
Condition : (((marketUnit#951042 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#951048, true) > 0)) AND isnotnull(distributionCenters#951048))
(2331) Project
Output [1]: [distributionCenters#951048]
Input [2]: [marketUnit#951042, distributionCenters#951048]
(2332) Exchange
Input [1]: [distributionCenters#951048]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464752]
(2333) Generate
Input [1]: [distributionCenters#951048]
Arguments: explode(distributionCenters#951048), false, [distributionCenters#951063]
(2334) Filter
Input [1]: [distributionCenters#951063]
Condition : (((size(distributionCenters#951063.storageLocations, true) > 0) AND isnotnull(distributionCenters#951063.storageLocations)) AND isnotnull(distributionCenters#951063.internalRefUUID))
(2335) Project
Output [2]: [distributionCenters#951063.internalRefUUID AS _extract_internalRefUUID#951785, distributionCenters#951063.storageLocations AS _extract_storageLocations#951786]
Input [1]: [distributionCenters#951063]
(2336) Generate
Input [2]: [_extract_internalRefUUID#951785, _extract_storageLocations#951786]
Arguments: explode(_extract_storageLocations#951786), [_extract_internalRefUUID#951785], false, [storageLocations#951064]
(2337) Project
Output [3]: [_extract_internalRefUUID#951785 AS plantUuid#951066, storageLocations#951064.id AS storageLocId#951067, storageLocations#951064.internalRefUUID AS storageLocUuid#951068]
Input [2]: [_extract_internalRefUUID#951785, storageLocations#951064]
(2338) BroadcastExchange
Input [3]: [plantUuid#951066, storageLocId#951067, storageLocUuid#951068]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466579]
(2339) Scan parquet
Output [2]: [product#951069, plant#951070]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(2340) Filter
Input [2]: [product#951069, plant#951070]
Condition : isnotnull(plant#951070)
(2341) Exchange
Input [2]: [product#951069, plant#951070]
Arguments: hashpartitioning(product#951069, plant#951070, 37), REPARTITION_BY_NUM, [plan_id=1465458]
(2342) Scan parquet
Output [4]: [plant#951075, product#951076, productionAspect#951078, systemId#951073]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(2343) Project
Output [4]: [plant#951075.internalRefUUID AS _extract_internalRefUUID#952232, product#951076.internalRefUUID AS _extract_internalRefUUID#952233, productionAspect#951078.productMovementPlants.unitOfIssue.code AS _extract_code#952234, productionAspect#951078.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952235]
Input [4]: [plant#951075, product#951076, productionAspect#951078, systemId#951073]
(2344) Exchange
Input [4]: [_extract_internalRefUUID#952232, _extract_internalRefUUID#952233, _extract_code#952234, _extract_internalRefUUID#952235]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464764]
(2345) Project
Output [4]: [_extract_code#952234, _extract_internalRefUUID#952235, _extract_internalRefUUID#952233, _extract_internalRefUUID#952232]
Input [4]: [_extract_internalRefUUID#952232, _extract_internalRefUUID#952233, _extract_code#952234, _extract_internalRefUUID#952235]
(2346) BroadcastExchange
Input [4]: [_extract_code#952234, _extract_internalRefUUID#952235, _extract_internalRefUUID#952233, _extract_internalRefUUID#952232]
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=1466563]
(2347) BroadcastHashJoin
Left keys [4]: [coalesce(product#951069, ), isnull(product#951069), coalesce(plant#951070, ), isnull(plant#951070)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952233, ), isnull(_extract_internalRefUUID#952233), coalesce(_extract_internalRefUUID#952232, ), isnull(_extract_internalRefUUID#952232)]
Join type: LeftOuter
Join condition: None
(2348) Project
Output [4]: [product#951069, plant#951070, _extract_code#952234, _extract_internalRefUUID#952235]
Input [6]: [product#951069, plant#951070, _extract_code#952234, _extract_internalRefUUID#952235, _extract_internalRefUUID#952233, _extract_internalRefUUID#952232]
(2349) Scan parquet
Output [4]: [internalUUID#951084, baseUnitOfMeasure#951088, unitOfMeasureConversions#951090, systemId#951083]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(2350) Filter
Input [4]: [internalUUID#951084, baseUnitOfMeasure#951088, unitOfMeasureConversions#951090, systemId#951083]
Condition : isnotnull(internalUUID#951084)
(2351) Project
Output [3]: [internalUUID#951084, baseUnitOfMeasure#951088, unitOfMeasureConversions#951090]
Input [4]: [internalUUID#951084, baseUnitOfMeasure#951088, unitOfMeasureConversions#951090, systemId#951083]
(2352) Exchange
Input [3]: [internalUUID#951084, baseUnitOfMeasure#951088, unitOfMeasureConversions#951090]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464771]
(2353) BroadcastExchange
Input [3]: [internalUUID#951084, baseUnitOfMeasure#951088, unitOfMeasureConversions#951090]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466567]
(2354) BroadcastHashJoin
Left keys [1]: [product#951069]
Right keys [1]: [internalUUID#951084]
Join type: LeftOuter
Join condition: None
(2355) Project
Output [2]: [plant#951070, filter(unitOfMeasureConversions#951090, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952234) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952235)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#951088.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#951088.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#951095]
Input [7]: [product#951069, plant#951070, _extract_code#952234, _extract_internalRefUUID#952235, internalUUID#951084, baseUnitOfMeasure#951088, unitOfMeasureConversions#951090]
(2356) Generate
Input [2]: [plant#951070, filteredUnitOfMeasureConversions#951095]
Arguments: explode(filteredUnitOfMeasureConversions#951095.quantityNumerator), [plant#951070, filteredUnitOfMeasureConversions#951095], true, [quantityNumerator#951096]
(2357) Project
Output [2]: [plant#951070, filteredUnitOfMeasureConversions#951095.quantityDenominator AS _extract_quantityDenominator#951787]
Input [3]: [plant#951070, filteredUnitOfMeasureConversions#951095, quantityNumerator#951096]
(2358) Generate
Input [2]: [plant#951070, _extract_quantityDenominator#951787]
Arguments: explode(_extract_quantityDenominator#951787), [plant#951070], true, [quantityDenominator#951097]
(2359) Project
Output [1]: [plant#951070]
Input [2]: [plant#951070, quantityDenominator#951097]
(2360) HashAggregate
Input [1]: [plant#951070]
Keys [1]: [plant#951070]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#951070]
(2361) Exchange
Input [1]: [plant#951070]
Arguments: hashpartitioning(plant#951070, 37), ENSURE_REQUIREMENTS, [plan_id=1466576]
(2362) HashAggregate
Input [1]: [plant#951070]
Keys [1]: [plant#951070]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#951070]
(2363) BroadcastHashJoin
Left keys [1]: [plantUuid#951066]
Right keys [1]: [plant#951070]
Join type: Inner
Join condition: None
(2364) Project
Output [3]: [plantUuid#951066, storageLocId#951067, storageLocUuid#951068]
Input [4]: [plantUuid#951066, storageLocId#951067, storageLocUuid#951068, plant#951070]
(2365) BroadcastHashJoin
Left keys [2]: [coalesce(plant#951039.internalRefUUID, ), isnull(plant#951039.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#951066, ), isnull(plantUuid#951066)]
Join type: Inner
Join condition: None
(2366) Generate
Input [9]: [systemId#951036, internalUUID#951037, product#951038, plant#951039, calculationDateTime#951040, stockQuantities#951041, plantUuid#951066, storageLocId#951067, storageLocUuid#951068]
Arguments: explode(filter(stockQuantities#951041, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#951068) AND (lambda x#944569.storageLocation.Id = storageLocId#951067)), lambda x#944569, false))), [systemId#951036, internalUUID#951037, product#951038, plant#951039, calculationDateTime#951040, plantUuid#951066], false, [stockQuantity#951100]
(2367) ObjectHashAggregate
Input [7]: [systemId#951036, internalUUID#951037, product#951038, plant#951039, calculationDateTime#951040, plantUuid#951066, stockQuantity#951100]
Keys [5]: [plantUuid#951066, internalUUID#951037, plant#951039, product#951038, systemId#951036]
Functions [2]: [partial_first(calculationDateTime#951040, false), partial_collect_list(stockQuantity#951100, 0, 0)]
Aggregate Attributes [3]: [first#953239, valueSet#953240, buf#953241]
Results [8]: [plantUuid#951066, internalUUID#951037, plant#951039, product#951038, systemId#951036, first#953242, valueSet#953243, buf#953244]
(2368) ObjectHashAggregate
Input [8]: [plantUuid#951066, internalUUID#951037, plant#951039, product#951038, systemId#951036, first#953242, valueSet#953243, buf#953244]
Keys [5]: [plantUuid#951066, internalUUID#951037, plant#951039, product#951038, systemId#951036]
Functions [2]: [first(calculationDateTime#951040, false), collect_list(stockQuantity#951100, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#951040)()#944584, collect_list(stockQuantity#951100, 0, 0)#944585]
Results [4]: [product#951038, plant#951039, first(calculationDateTime#951040)()#944584 AS calculationDateTime#951101, collect_list(stockQuantity#951100, 0, 0)#944585 AS stockQuantities#951102]
(2369) Filter
Input [4]: [product#951038, plant#951039, calculationDateTime#951101, stockQuantities#951102]
Condition : ((size(stockQuantities#951102, true) > 0) AND isnotnull(calculationDateTime#951101))
(2370) Generate
Input [4]: [product#951038, plant#951039, calculationDateTime#951101, stockQuantities#951102]
Arguments: explode(stockQuantities#951102), [product#951038, plant#951039, calculationDateTime#951101], false, [stockQuantity#951103]
(2371) Filter
Input [4]: [product#951038, plant#951039, calculationDateTime#951101, stockQuantity#951103]
Condition : (((isnotnull(stockQuantity#951103.specialStockIndicator.code) AND isnotnull(stockQuantity#951103.stockType.code)) AND (stockQuantity#951103.specialStockIndicator.code = )) AND (stockQuantity#951103.stockType.code = 01))
(2372) Project
Output [4]: [plant#951039.internalRefUUID AS plantUuid#951105, product#951038.internalRefUUID AS productUuid#951107, calculationDateTime#951101, stockQuantity#951103.storagelocation.id AS storageLocId#951108]
Input [4]: [product#951038, plant#951039, calculationDateTime#951101, stockQuantity#951103]
(2373) Exchange
Input [4]: [plantUuid#951105, productUuid#951107, calculationDateTime#951101, storageLocId#951108]
Arguments: hashpartitioning(productUuid#951107, plantUuid#951105, 37), ENSURE_REQUIREMENTS, [plan_id=1466605]
(2374) Sort
Input [4]: [plantUuid#951105, productUuid#951107, calculationDateTime#951101, storageLocId#951108]
Arguments: [productUuid#951107 ASC NULLS FIRST, plantUuid#951105 ASC NULLS FIRST], false, 0
(2375) Scan parquet
Output [3]: [product#951113, plant#951114, orderDateTime#951115]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2376) Filter
Input [3]: [product#951113, plant#951114, orderDateTime#951115]
Condition : ((isnotnull(orderDateTime#951115) AND isnotnull(plant#951114)) AND isnotnull(product#951113))
(2377) Exchange
Input [3]: [product#951113, plant#951114, orderDateTime#951115]
Arguments: hashpartitioning(product#951113, plant#951114, 37), REPARTITION_BY_NUM, [plan_id=1465479]
(2378) Scan parquet
Output [4]: [plant#951119, product#951120, productionAspect#951122, systemId#951117]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(2379) Project
Output [4]: [plant#951119.internalRefUUID AS _extract_internalRefUUID#952239, product#951120.internalRefUUID AS _extract_internalRefUUID#952236, productionAspect#951122.productMovementPlants.unitOfIssue.code AS _extract_code#952237, productionAspect#951122.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#952238]
Input [4]: [plant#951119, product#951120, productionAspect#951122, systemId#951117]
(2380) Exchange
Input [4]: [_extract_internalRefUUID#952239, _extract_internalRefUUID#952236, _extract_code#952237, _extract_internalRefUUID#952238]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464796]
(2381) Project
Output [4]: [_extract_code#952237, _extract_internalRefUUID#952238, _extract_internalRefUUID#952236, _extract_internalRefUUID#952239]
Input [4]: [_extract_internalRefUUID#952239, _extract_internalRefUUID#952236, _extract_code#952237, _extract_internalRefUUID#952238]
(2382) BroadcastExchange
Input [4]: [_extract_code#952237, _extract_internalRefUUID#952238, _extract_internalRefUUID#952236, _extract_internalRefUUID#952239]
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=1466592]
(2383) BroadcastHashJoin
Left keys [4]: [coalesce(product#951113, ), isnull(product#951113), coalesce(plant#951114, ), isnull(plant#951114)]
Right keys [4]: [coalesce(_extract_internalRefUUID#952236, ), isnull(_extract_internalRefUUID#952236), coalesce(_extract_internalRefUUID#952239, ), isnull(_extract_internalRefUUID#952239)]
Join type: LeftOuter
Join condition: None
(2384) Project
Output [5]: [product#951113, plant#951114, orderDateTime#951115, _extract_code#952237, _extract_internalRefUUID#952238]
Input [7]: [product#951113, plant#951114, orderDateTime#951115, _extract_code#952237, _extract_internalRefUUID#952238, _extract_internalRefUUID#952236, _extract_internalRefUUID#952239]
(2385) Scan parquet
Output [4]: [internalUUID#951128, baseUnitOfMeasure#951132, unitOfMeasureConversions#951134, systemId#951127]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(2386) Filter
Input [4]: [internalUUID#951128, baseUnitOfMeasure#951132, unitOfMeasureConversions#951134, systemId#951127]
Condition : isnotnull(internalUUID#951128)
(2387) Project
Output [3]: [internalUUID#951128, baseUnitOfMeasure#951132, unitOfMeasureConversions#951134]
Input [4]: [internalUUID#951128, baseUnitOfMeasure#951132, unitOfMeasureConversions#951134, systemId#951127]
(2388) Exchange
Input [3]: [internalUUID#951128, baseUnitOfMeasure#951132, unitOfMeasureConversions#951134]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464803]
(2389) BroadcastExchange
Input [3]: [internalUUID#951128, baseUnitOfMeasure#951132, unitOfMeasureConversions#951134]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1466596]
(2390) BroadcastHashJoin
Left keys [1]: [product#951113]
Right keys [1]: [internalUUID#951128]
Join type: LeftOuter
Join condition: None
(2391) Project
Output [4]: [product#951113, plant#951114, orderDateTime#951115, filter(unitOfMeasureConversions#951134, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#952237) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#952238)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#951132.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#951132.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#951139]
Input [8]: [product#951113, plant#951114, orderDateTime#951115, _extract_code#952237, _extract_internalRefUUID#952238, internalUUID#951128, baseUnitOfMeasure#951132, unitOfMeasureConversions#951134]
(2392) Generate
Input [4]: [product#951113, plant#951114, orderDateTime#951115, filteredUnitOfMeasureConversions#951139]
Arguments: explode(filteredUnitOfMeasureConversions#951139.quantityNumerator), [product#951113, plant#951114, orderDateTime#951115, filteredUnitOfMeasureConversions#951139], true, [quantityNumerator#951140]
(2393) Project
Output [4]: [product#951113, plant#951114, orderDateTime#951115, filteredUnitOfMeasureConversions#951139.quantityDenominator AS _extract_quantityDenominator#951794]
Input [5]: [product#951113, plant#951114, orderDateTime#951115, filteredUnitOfMeasureConversions#951139, quantityNumerator#951140]
(2394) Generate
Input [4]: [product#951113, plant#951114, orderDateTime#951115, _extract_quantityDenominator#951794]
Arguments: explode(_extract_quantityDenominator#951794), [product#951113, plant#951114, orderDateTime#951115], true, [quantityDenominator#951141]
(2395) Project
Output [3]: [product#951113, plant#951114, orderDateTime#951115]
Input [4]: [product#951113, plant#951114, orderDateTime#951115, quantityDenominator#951141]
(2396) Sort
Input [3]: [product#951113, plant#951114, orderDateTime#951115]
Arguments: [product#951113 ASC NULLS FIRST, plant#951114 ASC NULLS FIRST], false, 0
(2397) SortMergeJoin
Left keys [2]: [productUuid#951107, plantUuid#951105]
Right keys [2]: [product#951113, plant#951114]
Join type: Inner
Join condition: (calculationDateTime#951101 <= orderDateTime#951115)
(2398) Project
Output [4]: [plantUuid#951105 AS plant#951144, productUuid#951107 AS product#951145, storageLocId#951108, calculationDateTime#951101]
Input [7]: [plantUuid#951105, productUuid#951107, calculationDateTime#951101, storageLocId#951108, product#951113, plant#951114, orderDateTime#951115]
(2399) HashAggregate
Input [4]: [plant#951144, product#951145, storageLocId#951108, calculationDateTime#951101]
Keys [3]: [plant#951144, product#951145, storageLocId#951108]
Functions [1]: [partial_max(calculationDateTime#951101)]
Aggregate Attributes [1]: [max#953237]
Results [4]: [plant#951144, product#951145, storageLocId#951108, max#953238]
(2400) HashAggregate
Input [4]: [plant#951144, product#951145, storageLocId#951108, max#953238]
Keys [3]: [plant#951144, product#951145, storageLocId#951108]
Functions [1]: [max(calculationDateTime#951101)]
Aggregate Attributes [1]: [max(calculationDateTime#951101)#944648]
Results [4]: [plant#951144, product#951145, storageLocId#951108, max(calculationDateTime#951101)#944648 AS max_calc_datetime#951146]
(2401) Exchange
Input [4]: [plant#951144, product#951145, storageLocId#951108, max_calc_datetime#951146]
Arguments: hashpartitioning(coalesce(plant#951144, ), isnull(plant#951144), coalesce(product#951145, ), isnull(product#951145), coalesce(storageLocId#951108, ), isnull(storageLocId#951108), coalesce(max_calc_datetime#951146, 1970-01-01 00:00:00), isnull(max_calc_datetime#951146), 37), ENSURE_REQUIREMENTS, [plan_id=1466615]
(2402) Sort
Input [4]: [plant#951144, product#951145, storageLocId#951108, max_calc_datetime#951146]
Arguments: [coalesce(plant#951144, ) ASC NULLS FIRST, isnull(plant#951144) ASC NULLS FIRST, coalesce(product#951145, ) ASC NULLS FIRST, isnull(product#951145) ASC NULLS FIRST, coalesce(storageLocId#951108, ) ASC NULLS FIRST, isnull(storageLocId#951108) ASC NULLS FIRST, coalesce(max_calc_datetime#951146, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#951146) ASC NULLS FIRST], false, 0
(2403) SortMergeJoin
Left keys [8]: [coalesce(plant#951034, ), isnull(plant#951034), coalesce(product#951035, ), isnull(product#951035), coalesce(storageLocId#950998, ), isnull(storageLocId#950998), coalesce(calculationDateTime#950991, 1970-01-01 00:00:00), isnull(calculationDateTime#950991)]
Right keys [8]: [coalesce(plant#951144, ), isnull(plant#951144), coalesce(product#951145, ), isnull(product#951145), coalesce(storageLocId#951108, ), isnull(storageLocId#951108), coalesce(max_calc_datetime#951146, 1970-01-01 00:00:00), isnull(max_calc_datetime#951146)]
Join type: Inner
Join condition: None
(2404) Project
Output [4]: [plant#951034, product#951035, calculationDateTime#950991, quantity#951000]
Input [9]: [plant#951034, product#951035, storageLocId#950998, calculationDateTime#950991, quantity#951000, plant#951144, product#951145, storageLocId#951108, max_calc_datetime#951146]
(2405) HashAggregate
Input [4]: [plant#951034, product#951035, calculationDateTime#950991, quantity#951000]
Keys [2]: [product#951035, plant#951034]
Functions [2]: [partial_min(calculationDateTime#950991), partial_sum(quantity#951000)]
Aggregate Attributes [2]: [min#953227, sum#953228]
Results [4]: [product#951035, plant#951034, min#953229, sum#953230]
(2406) Exchange
Input [4]: [product#951035, plant#951034, min#953229, sum#953230]
Arguments: hashpartitioning(product#951035, plant#951034, 37), ENSURE_REQUIREMENTS, [plan_id=1466622]
(2407) HashAggregate
Input [4]: [product#951035, plant#951034, min#953229, sum#953230]
Keys [2]: [product#951035, plant#951034]
Functions [2]: [min(calculationDateTime#950991), sum(quantity#951000)]
Aggregate Attributes [2]: [min(calculationDateTime#950991)#944775, sum(quantity#951000)#944774]
Results [4]: [product#951035, plant#951034, min(calculationDateTime#950991)#944775 AS minCalculationDateTime#951148, round(sum(quantity#951000)#944774, 0) AS roundedQuantitySum#951149]
(2408) Sort
Input [4]: [product#951035, plant#951034, minCalculationDateTime#951148, roundedQuantitySum#951149]
Arguments: [product#951035 ASC NULLS FIRST, plant#951034 ASC NULLS FIRST], false, 0
(2409) SortMergeJoin
Left keys [2]: [product#950895, plant#950896]
Right keys [2]: [product#951035, plant#951034]
Join type: LeftOuter
Join condition: None
(2410) Project
Output [7]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, CASE WHEN isnotnull(minCalculationDateTime#951148) THEN minCalculationDateTime#951148 ELSE orderDateTime#950897 END AS stockDatetime#951150, CASE WHEN isnotnull(roundedQuantitySum#951149) THEN array(roundedQuantitySum#951149) ELSE [0.0] END AS stockBatchQuantities#951151]
Input [9]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, product#951035, plant#951034, minCalculationDateTime#951148, roundedQuantitySum#951149]
(2411) Exchange
Input [7]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, stockDatetime#951150, stockBatchQuantities#951151]
Arguments: hashpartitioning(coalesce(plant#950896, ), isnull(plant#950896), coalesce(product#950895, ), isnull(product#950895), 37), ENSURE_REQUIREMENTS, [plan_id=1466632]
(2412) Sort
Input [7]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, stockDatetime#951150, stockBatchQuantities#951151]
Arguments: [coalesce(plant#950896, ) ASC NULLS FIRST, isnull(plant#950896) ASC NULLS FIRST, coalesce(product#950895, ) ASC NULLS FIRST, isnull(product#950895) ASC NULLS FIRST], false, 0
(2413) Scan parquet
Output [9]: [product#951153, plant#951154, demandChannel#951155, demandStream#951156, considerVariance#951157, demandTimeBuckets#951158, demandPointInTimeStart#951159, demandPointInTimeEnd#951160, demandPointInTime#951161]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000678/0_1_10000000678]
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>>>
(2414) Exchange
Input [9]: [product#951153, plant#951154, demandChannel#951155, demandStream#951156, considerVariance#951157, demandTimeBuckets#951158, demandPointInTimeStart#951159, demandPointInTimeEnd#951160, demandPointInTime#951161]
Arguments: hashpartitioning(coalesce(plant#951154, ), isnull(plant#951154), coalesce(product#951153, ), isnull(product#951153), 37), ENSURE_REQUIREMENTS, [plan_id=1466633]
(2415) Sort
Input [9]: [product#951153, plant#951154, demandChannel#951155, demandStream#951156, considerVariance#951157, demandTimeBuckets#951158, demandPointInTimeStart#951159, demandPointInTimeEnd#951160, demandPointInTime#951161]
Arguments: [coalesce(plant#951154, ) ASC NULLS FIRST, isnull(plant#951154) ASC NULLS FIRST, coalesce(product#951153, ) ASC NULLS FIRST, isnull(product#951153) ASC NULLS FIRST], false, 0
(2416) SortMergeJoin
Left keys [4]: [coalesce(plant#950896, ), isnull(plant#950896), coalesce(product#950895, ), isnull(product#950895)]
Right keys [4]: [coalesce(plant#951154, ), isnull(plant#951154), coalesce(product#951153, ), isnull(product#951153)]
Join type: LeftOuter
Join condition: None
(2417) Project
Output [8]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, stockDatetime#951150, stockBatchQuantities#951151, CASE WHEN isnotnull(product#951153) THEN struct(demandChannel, demandChannel#951155, demandStream, demandStream#951156, considerVariance, considerVariance#951157, demandTimeBuckets, demandTimeBuckets#951158, demandPointInTimeStart, demandPointInTimeStart#951159, demandPointInTimeEnd, demandPointInTimeEnd#951160, demandPointInTime, demandPointInTime#951161) END AS rawDemands#951162]
Input [16]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, stockDatetime#951150, stockBatchQuantities#951151, product#951153, plant#951154, demandChannel#951155, demandStream#951156, considerVariance#951157, demandTimeBuckets#951158, demandPointInTimeStart#951159, demandPointInTimeEnd#951160, demandPointInTime#951161]
(2418) ObjectHashAggregate
Input [8]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, stockDatetime#951150, stockBatchQuantities#951151, rawDemands#951162]
Keys [8]: [product#950895, plant#950896, orderDateTime#950897, knownfloatingpointnormalized(if (isnull(productPlant#950908)) null else named_struct(systemId, productPlant#950908.systemId, internalUUID, productPlant#950908.internalUUID, plant, productPlant#950908.plant, product, productPlant#950908.product, blockedForReplenishmentStartingFrom, productPlant#950908.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#950908.productionAspect)) null else named_struct(productMovementPlants, productPlant#950908.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#950908.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#950908.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#950908.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#950908.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#950908.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#950908.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#950908.salesPlant, listing, productPlant#950908.listing, sourceOfSupplyCategory, productPlant#950908.sourceOfSupplyCategory)) AS productPlant#950908, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#950925)) AS outboundUnit#950925, stockDatetime#951150, knownfloatingpointnormalized(transform(stockBatchQuantities#951151, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#953224)), lambda arg#953224, false))) AS stockBatchQuantities#951151, [7226582400000000] AS [7226582400000000]#953223]
Functions [1]: [partial_collect_list(rawDemands#951162, 0, 0)]
Aggregate Attributes [1]: [buf#953225]
Results [9]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, stockDatetime#951150, stockBatchQuantities#951151, [7226582400000000]#953223, buf#953226]
(2419) Exchange
Input [9]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, stockDatetime#951150, stockBatchQuantities#951151, [7226582400000000]#953223, buf#953226]
Arguments: hashpartitioning(product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, stockDatetime#951150, stockBatchQuantities#951151, [7226582400000000]#953223, 37), ENSURE_REQUIREMENTS, [plan_id=1466640]
(2420) ObjectHashAggregate
Input [9]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, stockDatetime#951150, stockBatchQuantities#951151, [7226582400000000]#953223, buf#953226]
Keys [8]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, stockDatetime#951150, stockBatchQuantities#951151, [7226582400000000]#953223]
Functions [1]: [collect_list(rawDemands#951162, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#951162, 0, 0)#944844]
Results [8]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, stockDatetime#951150, stockBatchQuantities#951151, collect_list(rawDemands#951162, 0, 0)#944844 AS rawDemands#951163]
(2421) Scan parquet
Output [3]: [internalUUID#951165, address#951171, systemId#951164]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(2422) Project
Output [2]: [internalUUID#951165, address#951171.timeZone.code AS timezonecode#951176]
Input [3]: [internalUUID#951165, address#951171, systemId#951164]
(2423) Exchange
Input [2]: [internalUUID#951165, timezonecode#951176]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464827]
(2424) BroadcastExchange
Input [2]: [internalUUID#951165, timezonecode#951176]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1466643]
(2425) BroadcastHashJoin
Left keys [2]: [coalesce(plant#950896, ), isnull(plant#950896)]
Right keys [2]: [coalesce(internalUUID#951165, ), isnull(internalUUID#951165)]
Join type: LeftOuter
Join condition: None
(2426) Project
Output [10]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, stockDatetime#951150, stockBatchQuantities#951151, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#951152, rawDemands#951163, CASE WHEN isnotnull(timezonecode#951176) THEN timezonecode#951176 ELSE UTC END AS timezonecode#951177]
Input [10]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, stockDatetime#951150, stockBatchQuantities#951151, rawDemands#951163, internalUUID#951165, timezonecode#951176]
(2427) DeserializeToObject
Input [10]: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, stockDatetime#951150, stockBatchQuantities#951151, stockBatchShelfLifeEndDatetimes#951152, rawDemands#951163, timezonecode#951177]
Arguments: createexternalrow(invoke(product#950895.toString()), invoke(plant#950896.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#950897)), if (isnull(productPlant#950908)) null else createexternalrow(invoke(productPlant#950908.systemId.toString()), invoke(productPlant#950908.internalUUID.toString()), if (isnull(productPlant#950908.plant)) null else createexternalrow(invoke(productPlant#950908.plant.internalRefUUID.toString()), invoke(productPlant#950908.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#950908.product)) null else createexternalrow(invoke(productPlant#950908.product.internalRefUUID.toString()), invoke(productPlant#950908.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#950908.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#950908.productionAspect)) null else createexternalrow(if (isnull(productPlant#950908.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#950908.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#950908.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#950908.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#950908.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#950908.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#950908.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#950908.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#950908.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#950908.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#950908.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#950908.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#950908.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#950908.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#950908.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#950908.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#950908.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#950908.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)), if (isnull(productPlant#950908.salesPlant)) null else createexternalrow(if (isnull(productPlant#950908.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#950908.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#950908.salesPlant.loadingGroup.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -11).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#950908.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#950908.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#950908.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#950908.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), 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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#950925)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#951150)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#951151, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#951152, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14), createexternalrow(invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandChannel.toString()), invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -15).demandVariance)), StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandTimeBuckets, Some(class scala.collection.mutable.ArraySeq)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandPointInTimeStart)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -16).demandVariance)), StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -14).demandPointInTime, Some(class scala.collection.mutable.ArraySeq)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)), rawDemands#951163, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#951177.toString()), 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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),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), StructField(timezonecode,StringType,true)), obj#945940: org.apache.spark.sql.Row
(2428) MapElements
Input [1]: [obj#945940]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@353c8b73, obj#945945: org.apache.spark.sql.Row
(2429) SerializeFromObject
Input [1]: [obj#945945]
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#951178, 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#951179]
(2430) Exchange
Input [2]: [product#951178, plant#951179]
Arguments: hashpartitioning(coalesce(plant#951179, ), isnull(plant#951179), coalesce(product#951178, ), isnull(product#951178), 37), ENSURE_REQUIREMENTS, [plan_id=1466652]
(2431) Sort
Input [2]: [product#951178, plant#951179]
Arguments: [coalesce(plant#951179, ) ASC NULLS FIRST, isnull(plant#951179) ASC NULLS FIRST, coalesce(product#951178, ) ASC NULLS FIRST, isnull(product#951178) ASC NULLS FIRST], false, 0
(2432) SortMergeJoin
Left keys [4]: [coalesce(plant#950638, ), isnull(plant#950638), coalesce(product#950637, ), isnull(product#950637)]
Right keys [4]: [coalesce(plant#951179, ), isnull(plant#951179), coalesce(product#951178, ), isnull(product#951178)]
Join type: LeftOuter
Join condition: None
(2433) Project
Output [3]: [product#950637, plant#950638, stockDatetime#950892]
Input [5]: [product#950637, plant#950638, stockDatetime#950892, product#951178, plant#951179]
(2434) Scan parquet
Output [6]: [internalUUID#951183, id#951184, supplier#951186, isMarkedForDeletion#951189, items#951190, systemId#951182]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(2435) Filter
Input [6]: [internalUUID#951183, id#951184, supplier#951186, isMarkedForDeletion#951189, items#951190, systemId#951182]
Condition : (((isnotnull(isMarkedForDeletion#951189) AND NOT isMarkedForDeletion#951189) AND (size(items#951190, true) > 0)) AND isnotnull(items#951190))
(2436) Project
Output [4]: [internalUUID#951183, id#951184, supplier#951186, items#951190]
Input [6]: [internalUUID#951183, id#951184, supplier#951186, isMarkedForDeletion#951189, items#951190, systemId#951182]
(2437) Exchange
Input [4]: [internalUUID#951183, id#951184, supplier#951186, items#951190]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1464838]
(2438) Generate
Input [4]: [internalUUID#951183, id#951184, supplier#951186, items#951190]
Arguments: explode(items#951190), [internalUUID#951183, id#951184, supplier#951186], false, [item#951191]
(2439) Filter
Input [4]: [internalUUID#951183, id#951184, supplier#951186, item#951191]
Condition : ((((isnotnull(item#951191.deletionIndicator) AND isnotnull(item#951191.completeIndicator)) AND isnotnull(item#951191.returnIndicator)) AND ((NOT item#951191.deletionIndicator AND NOT item#951191.completeIndicator) AND NOT item#951191.returnIndicator)) AND isnotnull(item#951191.product.internalRefUUID))
(2440) Project
Output [9]: [id#951184, internalUUID#951183, supplier#951186.internalRefUUID AS supplierUuid#951192, item#951191.product.internalRefUUID AS product#951194, item#951191.quantityUnit.code AS quantityUom#951196, item#951191.quantityUnit.internalRefUUID AS quantityUomUuid#951197, item#951191.quantityNumerator AS quantityNumerator#951198, item#951191.quantityDenominator AS quantityDenominator#951199, item#951191.scheduleLines AS scheduleLines#951200]
Input [4]: [internalUUID#951183, id#951184, supplier#951186, item#951191]
(2441) BroadcastExchange
Input [9]: [id#951184, internalUUID#951183, supplierUuid#951192, product#951194, quantityUom#951196, quantityUomUuid#951197, quantityNumerator#951198, quantityDenominator#951199, scheduleLines#951200]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, string, true], ), isnull(input[3, string, true]), coalesce(input[2, string, true], ), isnull(input[2, string, true])),false), [plan_id=1466658]
(2442) BroadcastHashJoin
Left keys [4]: [coalesce(product#950637, ), isnull(product#950637), coalesce(plant#950638, ), isnull(plant#950638)]
Right keys [4]: [coalesce(product#951194, ), isnull(product#951194), coalesce(supplierUuid#951192, ), isnull(supplierUuid#951192)]
Join type: Inner
Join condition: None
(2443) Project
Output [3]: [product#951194, plant#950638, filter(transform(filter(transform(scheduleLines#951200, lambdafunction(struct(openQty, (greatest((lambda x_144#947949.quantity - coalesce(lambda x_144#947949.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_144#947949.productAvailabilityDateTime, lambda x_144#947949.deliveryAt)), lambda x_144#947949, false)), lambdafunction((lambda x_145#947950.availabilityDatetime < stockDatetime#950892), lambda x_145#947950, false)), lambdafunction(struct(documentId, id#951184, documentUuid, internalUUID#951183, openQty, lambda x_146#947951.openQty, openQtyInBaseUnit, ((lambda x_146#947951.openQty * quantityNumerator#951198) / quantityDenominator#951199), qtyUom, quantityUom#951196, qtyUomUuid, quantityUomUuid#951197, availabilityDatetime, lambda x_146#947951.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_146#947951, false)), lambdafunction(NOT (lambda x_147#947952.openQty = 0.0), lambda x_147#947952, false)) AS openGoodsMovements#951202]
Input [12]: [product#950637, plant#950638, stockDatetime#950892, id#951184, internalUUID#951183, supplierUuid#951192, product#951194, quantityUom#951196, quantityUomUuid#951197, quantityNumerator#951198, quantityDenominator#951199, scheduleLines#951200]
(2444) ObjectHashAggregate
Input [3]: [product#951194, plant#950638, openGoodsMovements#951202]
Keys [2]: [product#951194, plant#950638]
Functions [1]: [partial_collect_list(openGoodsMovements#951202, 0, 0)]
Aggregate Attributes [1]: [buf#953205]
Results [3]: [product#951194, plant#950638, buf#953206]
(2445) Exchange
Input [3]: [product#951194, plant#950638, buf#953206]
Arguments: hashpartitioning(product#951194, plant#950638, 37), ENSURE_REQUIREMENTS, [plan_id=1466663]
(2446) ObjectHashAggregate
Input [3]: [product#951194, plant#950638, buf#953206]
Keys [2]: [product#951194, plant#950638]
Functions [1]: [collect_list(openGoodsMovements#951202, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#951202, 0, 0)#947968]
Results [3]: [product#951194, plant#950638, flatten(collect_list(openGoodsMovements#951202, 0, 0)#947968) AS openGoodsMovements#951203]
(2447) Filter
Input [3]: [product#951194, plant#950638, openGoodsMovements#951203]
Condition : (size(openGoodsMovements#951203, false) > 0)
(2448) Union
(2449) ObjectHashAggregate
Input [3]: [product#950625, plant#950624, openGoodsMovements#950636]
Keys [2]: [product#950625, plant#950624]
Functions [1]: [partial_collect_list(openGoodsMovements#950636, 0, 0)]
Aggregate Attributes [1]: [buf#953203]
Results [3]: [product#950625, plant#950624, buf#953204]
(2450) Exchange
Input [3]: [product#950625, plant#950624, buf#953204]
Arguments: hashpartitioning(product#950625, plant#950624, 37), ENSURE_REQUIREMENTS, [plan_id=1466669]
(2451) ObjectHashAggregate
Input [3]: [product#950625, plant#950624, buf#953204]
Keys [2]: [product#950625, plant#950624]
Functions [1]: [collect_list(openGoodsMovements#950636, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#950636, 0, 0)#948579]
Results [3]: [product#950625, plant#950624, flatten(collect_list(openGoodsMovements#950636, 0, 0)#948579) AS openGoodsMovements#951204]
(2452) Project
Output [5]: [product#950625, plant#950624, openGoodsMovements#951204.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#952163, openGoodsMovements#951204.availabilityDatetime AS _extract_availabilityDatetime#952164, openGoodsMovements#951204.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#952165]
Input [3]: [product#950625, plant#950624, openGoodsMovements#951204]
(2453) Sort
Input [5]: [product#950625, plant#950624, _extract_openQtyInBaseUnit#952163, _extract_availabilityDatetime#952164, _extract_shelfLifeEndDatetime#952165]
Arguments: [product#950625 ASC NULLS FIRST, plant#950624 ASC NULLS FIRST], false, 0
(2454) SortMergeJoin
Left keys [2]: [product#949464, plant#949465]
Right keys [2]: [product#950625, plant#950624]
Join type: LeftOuter
Join condition: None
(2455) Project
Output [15]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#949721, dayBucketDemands#950007, pointInTimeDemands#950008, coalesce(_extract_openQtyInBaseUnit#952163, []) AS openGoodsMovementQuantities#951205, coalesce(_extract_availabilityDatetime#952164, []) AS openGoodsMovementAvailabilityDatetimes#951206, coalesce(_extract_shelfLifeEndDatetime#952165, []) AS openGoodsMovementShelfLifeEndDatetimes#951207, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#951208, array_sort(filter(CASE WHEN isnotnull(productPlant#949477.listing) THEN productPlant#949477.listing ELSE [] END, lambdafunction(lambda listing#949410.isListed, lambda listing#949410, false)), lambdafunction(if ((isnull(lambda left#949412) AND isnull(lambda right#949413))) 0 else if (isnull(lambda left#949412)) 1 else if (isnull(lambda right#949413)) -1 else if ((lambda left#949412 < lambda right#949413)) -1 else if ((lambda left#949412 > lambda right#949413)) 1 else 0, lambda left#949412, lambda right#949413, false), false) AS listing#949411]
Input [14]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, dayBucketDemands#950007, pointInTimeDemands#950008, product#950625, plant#950624, _extract_openQtyInBaseUnit#952163, _extract_availabilityDatetime#952164, _extract_shelfLifeEndDatetime#952165]
(2456) DeserializeToObject
Input [15]: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, stockBatchShelfLifeEndDatetimes#949721, dayBucketDemands#950007, pointInTimeDemands#950008, openGoodsMovementQuantities#951205, openGoodsMovementAvailabilityDatetimes#951206, openGoodsMovementShelfLifeEndDatetimes#951207, configuration#951208, listing#949411]
Arguments: createexternalrow(invoke(product#949464.toString()), invoke(plant#949465.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#949466)), if (isnull(productPlant#949477)) null else createexternalrow(invoke(productPlant#949477.systemId.toString()), invoke(productPlant#949477.internalUUID.toString()), if (isnull(productPlant#949477.plant)) null else createexternalrow(invoke(productPlant#949477.plant.internalRefUUID.toString()), invoke(productPlant#949477.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#949477.product)) null else createexternalrow(invoke(productPlant#949477.product.internalRefUUID.toString()), invoke(productPlant#949477.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#949477.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#949477.productionAspect)) null else createexternalrow(if (isnull(productPlant#949477.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#949477.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#949477.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#949477.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#949477.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#949477.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#949477.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#949477.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#949477.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#949477.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#949477.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#949477.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#949477.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#949477.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#949477.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#949477.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#949477.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#949477.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)), if (isnull(productPlant#949477.salesPlant)) null else createexternalrow(if (isnull(productPlant#949477.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#949477.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#949477.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, -21), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#949477.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#949477.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#949477.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#949477.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), 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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#949494)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#949719)), mapobjects(lambdavariable(MapObject, DoubleType, true, -22), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -22))), stockBatchQuantities#949720, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -23), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -23))), stockBatchShelfLifeEndDatetimes#949721, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24), createexternalrow(invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).demandChannel.toString()), invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).considerVariance)), mapobjects(lambdavariable(MapObject, DoubleType, false, -25), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, false, -25))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -26), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -26))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).demandVariances, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -27), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -27))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).anchorDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StringType, false, -28), invoke(lambdavariable(MapObject, StringType, false, -28).toString()), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).anchorWeekdays, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, IntegerType, false, -29), static_invoke(java.lang.Integer.valueOf(lambdavariable(MapObject, IntegerType, false, -29))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).anchorIndices, Some(class scala.collection.mutable.ArraySeq)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true)), dayBucketDemands#950007, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30), createexternalrow(invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).demandChannel.toString()), invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).considerVariance)), mapobjects(lambdavariable(MapObject, TimestampType, false, -31), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -31))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).demandDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, false, -32), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, false, -32))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -33), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -33))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).demandVariances, 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(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).horizonStartDatetime)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).horizonEndDatetime)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true)), pointInTimeDemands#950008, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -34), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -34))), openGoodsMovementQuantities#951205, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, -35), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, true, -35))), openGoodsMovementAvailabilityDatetimes#951206, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -36), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -36))), openGoodsMovementShelfLifeEndDatetimes#951207, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37), createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37).configurationValidityDatetime)), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37).configurationName.toString()), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37).configurationValue.toString()), StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false)), configuration#951208, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), listing#949411, 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(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,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),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(dayBucketDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandValues,ArrayType(DoubleType,false),true),StructField(demandVariances,ArrayType(DoubleType,true),true),StructField(anchorDatetimes,ArrayType(TimestampType,false),true),StructField(anchorWeekdays,ArrayType(StringType,false),true),StructField(anchorIndices,ArrayType(IntegerType,false),true)),false),true), StructField(pointInTimeDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandDatetimes,ArrayType(TimestampType,false),true),StructField(demandValues,ArrayType(DoubleType,false),true),StructField(demandVariances,ArrayType(DoubleType,true),true),StructField(horizonStartDatetime,TimestampType,true),StructField(horizonEndDatetime,TimestampType,true)),false),true), ... 5 more fields), obj#949444: org.apache.spark.sql.Row
(2457) MapElements
Input [1]: [obj#949444]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.ListingSnapshotEnhancementImpl$$Lambda/0x0000000801ff9ec8@c142349, obj#949451: org.apache.spark.sql.Row
(2458) SerializeFromObject
Input [1]: [obj#949451]
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#949458, 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#949459, mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -17), static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -17), StringType, ObjectType(class java.lang.String)))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 2, timeDependentSettingsName), ArrayType(StringType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsName#949460, mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -18), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -18), TimestampType, ObjectType(class java.sql.Timestamp)))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 3, timeDependentSettingsStartDatetime), ArrayType(TimestampType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsStartDatetime#949461, mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -19), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -19), TimestampType, ObjectType(class java.sql.Timestamp)))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 4, timeDependentSettingsEndDatetime), ArrayType(TimestampType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsEndDatetime#949462, if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, timeDependentSettingsValue), ArrayType(DoubleType,true), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, timeDependentSettingsValue), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -20), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -20), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, timeDependentSettingsValue), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsValue#949463]
(2459) Filter
Input [6]: [product#949458, plant#949459, timeDependentSettingsName#949460, timeDependentSettingsStartDatetime#949461, timeDependentSettingsEndDatetime#949462, timeDependentSettingsValue#949463]
Condition : (isnotnull(product#949458) AND isnotnull(plant#949459))
(2460) Exchange
Input [6]: [product#949458, plant#949459, timeDependentSettingsName#949460, timeDependentSettingsStartDatetime#949461, timeDependentSettingsEndDatetime#949462, timeDependentSettingsValue#949463]
Arguments: hashpartitioning(product#949458, plant#949459, 37), ENSURE_REQUIREMENTS, [plan_id=1466685]
(2461) Sort
Input [6]: [product#949458, plant#949459, timeDependentSettingsName#949460, timeDependentSettingsStartDatetime#949461, timeDependentSettingsEndDatetime#949462, timeDependentSettingsValue#949463]
Arguments: [product#949458 ASC NULLS FIRST, plant#949459 ASC NULLS FIRST], false, 0
(2462) SortMergeJoin
Left keys [2]: [product#944305, plant#944306]
Right keys [2]: [product#949458, plant#949459]
Join type: LeftOuter
Join condition: None
(2463) Project
Output [16]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#944813, dayBucketDemands#945952, pointInTimeDemands#945953, openGoodsMovementQuantities#949165, openGoodsMovementAvailabilityDatetimes#949166, openGoodsMovementShelfLifeEndDatetimes#949167, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#949267, CASE WHEN isnotnull(timeDependentSettingsName#949460) THEN timeDependentSettingsName#949460 ELSE [] END AS timeDependentSettingsName#951335, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#949461) THEN timeDependentSettingsStartDatetime#949461 ELSE [] END AS timeDependentSettingsStartDatetime#951336, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#949462) THEN timeDependentSettingsEndDatetime#949462 ELSE [] END AS timeDependentSettingsEndDatetime#951337, CASE WHEN isnotnull(timeDependentSettingsValue#949463) THEN timeDependentSettingsValue#949463 ELSE [] END AS timeDependentSettingsValue#951338]
Input [16]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, dayBucketDemands#945952, pointInTimeDemands#945953, openGoodsMovementQuantities#949165, openGoodsMovementAvailabilityDatetimes#949166, openGoodsMovementShelfLifeEndDatetimes#949167, product#949458, plant#949459, timeDependentSettingsName#949460, timeDependentSettingsStartDatetime#949461, timeDependentSettingsEndDatetime#949462, timeDependentSettingsValue#949463]
(2464) AdaptiveSparkPlan
Output [16]: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, stockBatchShelfLifeEndDatetimes#944813, dayBucketDemands#945952, pointInTimeDemands#945953, openGoodsMovementQuantities#949165, openGoodsMovementAvailabilityDatetimes#949166, openGoodsMovementShelfLifeEndDatetimes#949167, configuration#949267, timeDependentSettingsName#951335, timeDependentSettingsStartDatetime#951336, timeDependentSettingsEndDatetime#951337, timeDependentSettingsValue#951338]
Arguments: isFinalPlan=false